{"version":3,"file":"vendor.4929bfe98431e90e.js","mappings":"mRASA,MAAMA,EACFC,YAAYC,GAAOC,IACfC,KAAKF,MAAQA,GACbE,KAAKD,UAAYA,EACrB,CACAE,KAAKC,GAAYC,IACb,OAAOA,GAAOC,UAAU,IAAIC,EAAgBH,GAAYF,KAAKF,MAAOE,KAAKD,WAC7E,EAEJ,MAAMM,UAAwBC,IAC1BT,YAAYU,GAAaT,GAAOC,IAC5BS,MAAMD,IACNP,KAAKF,MAAQA,GACbE,KAAKD,UAAYA,GACjBC,KAAKS,MAAQ,GACbT,KAAKU,QAAS,EACdV,KAAKW,SAAU,CACnB,CACAC,gBAAgBC,IACZ,MAAMV,GAASU,GAAMV,OACfM,GAAQN,GAAOM,MACfV,GAAYc,GAAMd,UAClBQ,GAAcM,GAAMN,YAC1B,KAAOE,GAAMK,OAAS,GAAML,GAAM,GAAGM,KAAOhB,GAAUiB,OAAU,GAC5DP,GAAMQ,QAAQC,aAAaC,QAAQZ,IAEvC,GAAIE,GAAMK,OAAS,EAAG,CAClB,MAAMhB,GAAQsB,KAAKC,IAAI,EAAGZ,GAAM,GAAGM,KAAOhB,GAAUiB,OACpDhB,KAAKsB,SAAST,GAAOf,GAAK,MAG1BE,KAAKuB,cACLpB,GAAOO,QAAS,CAExB,CACAc,UAAUzB,IACNC,KAAKU,QAAS,EACMV,KAAKO,YACbkB,IAAI1B,GAAUuB,SAASjB,EAAgBqB,SAAU1B,KAAKF,MAAO,CACrEK,OAAQH,KAAMO,YAAaP,KAAKO,YAAaR,UAAWA,KAEhE,CACA4B,qBAAqBT,IACjB,IAAqB,IAAjBlB,KAAKW,QACL,OAEJ,MAAMZ,GAAYC,KAAKD,UACjB6B,GAAU,IAAIC,EAAa9B,GAAUiB,MAAQhB,KAAKF,MAAOoB,IAC/DlB,KAAKS,MAAMqB,KAAKF,KACI,IAAhB5B,KAAKU,QACLV,KAAKwB,UAAUzB,GAEvB,CACAgC,MAAMC,IACFhC,KAAK2B,qBAAqBM,eAAwBD,IACtD,CACAE,OAAOC,IACHnC,KAAKW,SAAU,EACfX,KAAKS,MAAQ,GACbT,KAAKO,YAAY6B,MAAMD,IACvBnC,KAAKuB,aACT,CACAc,YACIrC,KAAK2B,qBAAqBM,sBAC1BjC,KAAKuB,aACT,EAEJ,MAAMM,EACFhC,YAAYkB,GAAMG,IACdlB,KAAKe,KAAOA,GACZf,KAAKkB,aAAeA,EACxB,gHC3EJ,MAAMoB,GAAgB,CAClBC,KAAM,KACNC,UAAW,KACXC,MAAM,EACNC,QAAS,MAEb,IAAIC,IAAqB,EAKzB,SAASC,GAAUL,GAAMC,GAAWE,IAChCG,GAAUN,GAAMC,GAAWE,IAC3BC,IAAqB,CACzB,CACA,SAASE,GAAUN,GAAMC,GAAWE,KACL,IAAvBC,KACAL,GAAcC,KAAOA,GACrBD,GAAcE,UAAYA,GAC1BF,GAAcI,QAAUA,GAEhC,CAgBA,SAASI,GAAUC,GAAUC,IACzB,OAAOD,GAASE,eAAeD,GACnC,CAGA,SAASE,GAAQlB,IACb,OAAOmB,MAAMD,QAAQlB,GACzB,CAGA,SAASoB,GAAevC,IACpB,OAAOA,GAAMoC,eAAe,SAChC,CAEA,SAASI,GAAmB3C,IACxB,OAAOwC,GAAQxC,GACnB,CAEA,SAAS4C,IAAsB5C,UAAQ6C,OAAKR,cACxC,OAAIM,GAAmB3C,IAS3B,SAAS8C,GAAkBC,GAAmBC,IAC1C,MAAMC,GAAWF,GAAkBG,OAAOZ,IAAMU,GAAOG,QAAQb,KAAM,GAErE,OAAIW,GAAS7C,SAAW2C,GAAkB3C,OAC/B2C,GAEJE,EACX,CAfeH,CAAkB9C,GAAQ6C,KAED,IAAhCT,GAAUC,GAAUrC,IACb,KAEJA,EACX,CAsCA,SAASoD,GAAMC,IACX,OAAa,MAANA,EACX,CAGA,SAASC,GAAYhC,IACjB,OAAI8B,GAAM9B,IACC,GAEJmB,MAAMD,QAAQlB,IAASA,GAAQ,CAACA,GAC3C,CAmBA,MAAMiC,EAAiB,KAGvB,SAASC,GAAQC,IACb,QAAIjB,GAAQiB,KACc,IAAfA,GAAIrD,MAGnB,CAGA,SAASsD,GAAWpC,IAChB,MAAwB,mBAAVA,EAClB,CAuBA,SAASqC,KACL,SAAOC,KAAqB,CAACC,GAAgBC,KACrCD,KAAmBC,OAGlBtB,GAAQqB,MAAoBrB,GAAQsB,UAGrCN,GAAQK,MAAmBL,GAAQM,MAGnCD,GAAezD,SAAW0D,GAAkB1D,SAOT,IAJH0D,GAAkBC,KAAK,CAACC,GAAMC,KACvDJ,GAAeI,MAAOD,KAKzC,CAsBA,SAASE,GAAS5C,IACd,MAAMO,UAAcP,GACpB,OAAgB,MAATA,KAA0B,UAARO,IAA4B,YAARA,GACjD,CA2IA,IAAIsC,GAAS,CACTC,YAAY,EACZC,IAAK,KACLC,gBAAYC,GAMhB,SAASC,KACL,OAAOL,EACX,CAMA,SAASM,GAAUC,IACf,OAAsB,IAAftB,GAAMsB,GACjB,CAGA,MAAMC,GAAgB,IAAIC,KAEpBC,GAAa,IAAIC,KAAc,GAAI,KAEnCC,GAAgB,IAAIH,KAc1B,MAAMI,UAAmBC,OAAW,IAqB9BC,GAAa,CAAC,EAEdC,GAAc,CAAC,EACjBH,KACAC,OAAOG,SAAWF,GAClBD,OAAOI,UAAYF,IAiHvB,IAAIG,GACOA,GAyFPC,GAjEJ,SAASC,GAAgBrF,GAAOsF,IAC5B,IAAIhC,GAAM,GACV,MAAQZ,OAAKR,aAAalC,IAClBuF,YAAUC,WAASC,UAAQC,gBAAgBJ,GACnD,QAASxB,GAAI,EAAGA,GAAIpB,GAAIzC,OAAQ6D,KAAK,CACjC,MAAM6B,GAASzD,GAASQ,GAAIoB,KACvByB,GAIWpC,GAAYoC,IACJK,MAAMC,IAAMA,GAAGF,GAAQ7B,MAE3CR,GAAIrC,KAAK0E,IANTrC,GAAIrC,KAAK0E,GAMM,CAGvB,GAAIF,GAAQ,CACR,IAAIK,GAAUvC,GAAWkC,IAAUA,GApC3C,SAASM,GAAcC,GAAKC,GAAQd,GAAMe,KACtC,OAAO,SAAUC,GAAGC,IAChB,IAAKD,GAAE/D,eAAe4D,MAASI,GAAEhE,eAAe4D,IAC5C,OAAO,EAEX,MAAMK,GAAyB,iBAAXF,GAAEH,IAAoBG,GAAEH,IAAKM,cAAgBH,GAAEH,IAC7DO,GAAyB,iBAAXH,GAAEJ,IAAoBI,GAAEJ,IAAKM,cAAgBF,GAAEJ,IACnE,IAAIQ,GAAa,EACjB,OAAIH,GAAOE,GACPC,GAAa,EAERH,GAAOE,KACZC,IAAa,GAEVP,IAASd,GAAMsB,MAAoB,EAAbD,GAAkBA,EACnD,CACJ,CAoBoDT,CAAcN,GAAQC,IAClEpC,GAAMA,GAAIoD,KAAK,CAACP,GAAGC,KAAMN,GAAQK,GAAGC,GAAGpG,IAAM,CAEjD,MAAMC,GAASM,KAAKoG,IAAInB,IAAWlC,GAAIrD,OAAQqD,GAAIrD,QACnD,OAAOA,KAAWqD,GAAIrD,OAASqD,GAAMA,GAAIsD,MAAM,EAAG3G,GACtD,EA9CWkF,GAGRA,KAAUA,GAAQ,CAAC,IAFZe,IAAS,MACff,GAAMsB,KAAU,OAwFpB,SAAWrB,IACPA,GAAcyB,IAAS,MACvBzB,GAAc0B,IAAS,MACvB1B,GAAc2B,OAAY,SAC1B3B,GAAc4B,OAAY,QAC9B,CALA,CAKG5B,KAAkBA,GAAgB,CAAC,IAKtC,IAAI6B,IAAU,EASd,SAASC,KACL,OAAOD,EACX,CA6CA,SAASE,GAAYhG,IACjB,YAAiBiD,IAAVjD,EACX,CAGA,SAASiG,IAAiBpH,SAAO0C,SAC7B,GAAIO,GAAMP,IACN,OAeR,SAAS2E,GAAkBrH,IACvB,OAAOsH,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAEkC,SAAU,CAAC,EAAGQ,IAAK,GAAI7C,OAAQ2C,GAAmBxC,GAAMH,QAAU,GAAK,MAC5H,CAjBewH,CAAkBrH,IAC7B,MAAMkC,GAAWlC,GAAMkC,SACvB,IAAIsF,GAAc,CAAC,EACnB,UAAWrF,MAAMnC,GAAM0C,KACM,IAArBA,GAAI+E,SAAStF,MACbqF,GAAYrF,IAAMD,GAASC,KAGnC,MAAMuF,GAAWJ,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAEkC,SAAUsF,GAAa9E,IAAK1C,GAAM0C,IAAIK,OAAO4E,KAAqC,IAA1BjF,GAAI+E,SAASE,OAChI,OAAIpF,GAAevC,MACf0H,GAAS7H,OAAS4C,GAAoBiF,KAEnCA,EACX,CA0BA,SAASE,GAAgB1F,GAAU2F,IAC/B,IAAIC,GAAS,CAAC,EACd,UAAW3F,MAAMmF,OAAOS,KAAK7F,IACzB4F,GAAO3F,IAAM0F,GAAa3F,GAASC,KAEvC,OAAO2F,EACX,CA2BA,SAASE,GAAWC,IAChBX,OAAOY,OAAOD,IACd,MAAME,GAA2B,mBAANF,GACrBG,GAAad,OAAOe,UAAUjG,eACpCkF,cAAOgB,oBAAoBL,IAAGM,QAAQ,SAAUC,IACxCJ,GAAWhJ,KAAK6I,GAAGO,OAClBL,IAAuB,WAATK,IAA8B,WAATA,IAA8B,cAATA,KAC7C,OAAZP,GAAEO,MACkB,iBAAZP,GAAEO,KAAyC,mBAAZP,GAAEO,OACxClB,OAAOmB,SAASR,GAAEO,MACnBR,GAAWC,GAAEO,IAErB,GACOP,EACX,CAGA,MAAMS,WAAmBC,MACrB3J,YAAY+B,IACRpB,MAAMoB,GACV,EAUJ,SAAS6H,GAAUzH,IACf,OAAgB,MAATA,IAAgC,SAAd,GAAEA,IAC/B,CAGA,SAAS0H,GAAc1H,IACnB,OAAOyH,GAAUzH,KAAqC,WAA3BA,GAAMnC,YAAY8J,IACjD,CAEA,MAAMC,GAAY,cAClB,SAASC,GAAYC,IACjB,OAAO,SAAUjK,IACbA,GAAY+J,IAAa,CAAEG,MAAO,MAClC,QAASpF,GAAI,EAAGiE,GAAOT,OAAOS,KAAKkB,IAAWnF,GAAIiE,GAAK9H,OAAQ6D,KAAK,CAChE,MAAMkC,GAAM+B,GAAKjE,IAEL,SAARkC,GACAhH,GAAY+J,IAAWI,UAAeF,GAASjD,IAG/ChH,GAAY+J,IAAW/C,IAAOiD,GAASjD,GAAG,CAGtD,CACJ,CAGA,MAAMoD,GAAsB,IAAI3E,KAE1B4E,GAAuB,IAAIC,MAAgB,GAE3CC,GAAqB,CACvBC,mBAAoB,EACpBC,iBAAkB,MAoBtB,SAASC,KACL,OAAOH,GAAmBC,mBAAqB,CACnD,CAiBA,SAASG,GAAiBC,GAAQC,KApClC,SAASC,KACAJ,OACDH,GAAmBE,iBAAmB,IAAIhF,MAE9C8E,GAAmBC,qBACnBH,GAAqBU,MAAK,EAC9B,CA+BID,GACA,IACI,OAAOF,GAAOI,MAAMH,GAKxB,CAJA,QAEI9H,GAAU,gBAlClB,SAASkI,KAC2C,KAA1CV,GAAmBC,qBACrBD,GAAmBE,iBAAiBM,MAAK,GACzCR,GAAmBE,iBAAiBS,WACpCb,GAAqBU,MAAK,GAC1BX,GAAoBW,MAAK,GAEjC,CA4BQE,EACJ,CACJ,CAgBA,SAASE,KACL,OAAO,SAAUC,GAAQC,GAAaC,IAClC,MAAMC,GAAiBD,GAAWnJ,MAClCmJ,UAAWnJ,MAAQ,YAAaqJ,IAC5B,OAAOb,GAAiB,IACbY,GAAeP,MAAM7K,KAAMqL,IACnCrL,KACP,EACOmL,EACX,CACJ,CA+CA,MAAMG,GACFzL,YAAY0L,GAAcpF,GAAU,CAAC,GACjCnG,KAAKmG,QAAUA,GACfnG,KAAKwL,eAAgB,EACrBxL,KAAKyL,MAAQ,CACT/K,OAAQ,IAAIyJ,MAAgB,GAC5BpF,IAAK,MAET/E,KAAK0L,OAAOH,GAChB,CASAI,WAAWC,IAAU,GACbA,KAAY5L,KAAK6L,SAASD,UAC1B7D,MAAWlF,GAAU,eACrB7C,KAAK8L,UAAWjL,IAAWsH,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAE+K,cAE7E,CAYAG,YAAYC,GAAU7F,GAAU,CAAE8F,YAAY,IAI1C,GAHID,KAAahM,KAAKyL,MAAM/K,OAAOsB,OAC/BhC,KAAKyL,MAAM/K,OAAOkK,KAAKoB,IAEvB7F,GAAQ8F,WAAY,CACpB,MAAMC,GAAYlM,KAAKmM,cACnBD,KACuB,OAAnBlM,KAAKyL,MAAM1G,KACXqH,aAAapM,KAAKyL,MAAM1G,KAE5B/E,KAAKyL,MAAM1G,IAAMsH,WAAW,IAAMrM,KAAK+L,aAAY,GAAQG,IAAS,CAGhF,CAQAI,WACI,OAAOtM,KAAKuM,UAChB,CASAC,SAASpK,IACDA,KAAUpC,KAAK6L,SAASzJ,QACxB2F,MAAWlF,GAAU,aACrB7C,KAAK8L,UAAWjL,IAAWsH,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAEuB,YAE7E,CAEAqK,QAAQC,IACJ,OAAO1M,KAAK2M,MAAMC,eAAeC,QAAKC,KAAKC,IAAaL,GAAQK,GAASlM,SAAM,EAAGyD,OACtF,CAEAuH,SACI,OAAO7L,KAAKuM,UAChB,CAEAS,SACI,OAAOhN,KAAKyL,MAAM/K,MACtB,CAEIuM,aACA,OAAOjN,KAAKH,YAAY+J,KAAc,CAAC,CAC3C,CAEII,gBACA,OAAOhK,KAAKiN,OAAOjD,WAAahK,KAAKmG,QAAQ6D,WAAahK,KAAKmG,QAAQwD,IAC3E,CAEId,iBACA,OAAO7I,KAAKiN,OAAOC,cAAgBlN,KAAKmG,QAAQ+G,cAAgBrE,EACpE,CAEIsE,kBACA,OAAOnN,KAAKiN,OAAOxB,OAASzL,KAAKmG,QAAQsF,KAC7C,CACI2B,kBACA,OAAOpN,KAAKiN,OAAOjI,YAAchF,KAAKmG,QAAQnB,YAjrBtD,SAASqI,KACL,OAAOxI,GAAOG,UAClB,CA+qBoEqI,EAChE,CAEIvI,iBACA,OAAOK,GAAUnF,KAAKiN,OAAOnI,YAAc9E,KAAKiN,OAAOnI,WAAa9E,KAAKmG,QAAQrB,UACrF,CAEAgH,UAAUvD,GAAU+E,IAAkB,GAClC,GAAIlJ,GAAWmE,IAAW,CACtB,MAAMgF,GAAYhF,GAASvI,KAAK6L,UAChC7L,KAAKuM,WAAazE,GAAU9H,KAAK6I,WAAW0E,IAAaA,QAGzDvN,KAAKuM,WAAahE,GAEtB,IAAKvI,KAAK2M,MASN,OARA3M,KAAK2M,MAAQ,IAAIxC,KAAgB,CAAEtJ,MAAOb,KAAKuM,kBAC3CxE,MACA/H,KAAK2M,MAAMvM,UAAU,EAAGqK,cAChBA,IA5qBxB,SAAS+C,GAAexD,GAAWS,IAC/BhF,GAAcmF,KAAK,CAAEZ,aAAWS,WACpC,CA2qBwB+C,CAAexN,KAAKgK,UAAWS,GAAM,IAMjDF,KACAvK,KAAKyN,oBAGTzN,KAAK0B,SAAS1B,KAAKuM,WAAYe,GACnC,CAUAI,QACQ1N,KAAK2N,gBACL5F,MAAWlF,GAAU,SACrB7C,KAAK8L,UAAU,IAAM3D,OAAOC,OAAO,CAAC,EAAGpI,KAAK4N,gBAC5C5N,KAAK+L,aAAY,IAGjBhE,MAAW8F,QAAQC,KAAM,6CAEjC,CACAC,OAAOC,IAEH,IAAIzF,GADJR,MAAWlF,GAAU,UAErB,MAAMoL,GAAejO,KAAK6L,SAEtBtD,GADAnE,GAAW4J,IACA5J,GAAWpE,KAAKoN,aAAepN,KAAKoN,YAAYa,GAAcD,IAAmBA,GAAgBC,IAGjGD,GAEf,MAAME,GAAWlO,KAAKmO,eAAeF,GAAc9F,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG6F,IAAe1F,KAC5F6F,GAAW1E,GAAcuE,IAAgBC,GAAW,IAAID,GAAapO,YAAYqO,IACvFlO,KAAK8L,UAAUsC,GACnB,CACAC,kBAAkBC,IACdtO,KAAKmG,QAAUgC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGpI,KAAKmG,SAAUmI,GAClE,CAEAH,eAAeI,GAAGC,IACd,OAAOA,EACX,CAWAC,cACIzO,KAAK0O,SACT,CAUAA,YACuBhJ,KAAYC,OAAOgJ,aACnB3O,OAAS4F,GAAW5F,KAAKgK,oBACjCpE,GAAW5F,KAAKgK,WAlwBnC,SAAS4E,GAAgB5E,IACrB3E,GAAcuF,KAAKZ,GACvB,CAiwBY4E,CAAgB5O,KAAKgK,WACrBhK,KAAK+L,aAAY,GACjB/L,KAAKyL,MAAM/K,OAAOqK,WAClB/K,KAAK2M,MAAM5B,WAEnB,CACAW,OAAOH,IACH3F,GAAW5F,KAAKgK,WAAahK,KAC7BA,KAAK8L,UAAU,IAAMP,IAvwB7B,SAASsD,GAAc7E,IACnBzE,GAAWqF,KAAKZ,GACpB,CAswBQ6E,CAAc7O,KAAKgK,WACfhK,KAAK2N,iBACL3N,KAAK4N,cAAgBrC,IAEzBxD,MAtXR,SAAS+G,GAAmBnF,GAAMoF,IACzBpF,IACDkE,QAAQzL,MAAO,wCAAuC2M,KAE9D,CAkXmBD,CAAmB9O,KAAKgK,UAAWhK,KAAKH,YAAY8J,KACnE,CACAjI,SAASb,GAAOyM,IAAkB,GAC9B,IAAI7C,GACA6C,KACA7C,GAASnI,GAxoCrB,SAAS0M,KACLrM,IAAqB,CACzB,CAuoCYqM,IAEJhP,KAAK2M,MAAM/B,KAAK,CAAE/J,SAAO4J,WAC7B,CACAwE,oBAhUJ,SAASC,KACL,OAAO9E,GAAmBE,iBAAmBF,GAAmBE,iBAAiBsC,gBAAY,EAAKuC,QAAG,EACzG,EA+TQD,GAAS9O,UAAU,KACfJ,KAAKwL,eAAgB,EACrBxL,KAAK0B,SAAS1B,KAAK6L,SAAQ,EAEnC,CACA8B,eACI,OAAwB,IAApB3N,KAAK8E,aAGF9E,KAAK8E,YAAcI,KAAiBJ,WAC/C,CACA2I,oBACSzN,KAAKwL,gBACNxL,KAAKiP,mBACLjP,KAAKwL,eAAgB,EAE7B,CACAW,cACI,OAAQnM,KAAKmN,aAAenN,KAAKmN,YAAYpI,KAAQG,KAAiBH,GAC1E,EAkEJ,IAAQqK,GAhER9D,GAAM+D,UAAO,SAAuBC,IAAKC,OAA2B,EACpEjE,GAAMkE,UAAqBD,OAAyB,CAAEhN,KAAM+I,KAiF5D,MAAMmE,WAAoBnE,GACtBzL,YAAY0L,GAAe,CAAC,EAAGpF,GAAU,CAAC,GACtC3F,MAAM2H,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAxlBX,CAC5BrF,SAAU,CAAC,EACXQ,IAAK,GACLqI,SAAS,EACTxJ,MAAO,OAolB+DmJ,IAAepF,IACjFnG,KAAKmG,QAAUA,GACfnG,KAAK0P,cAAgB,IAAIpK,KACzBtF,KAAK2P,gBAAkB,IAAIrK,IAC/B,CAEIsK,0BACA,OAAO5P,KAAK0P,cAAc9C,cAC9B,CAEIiD,6BACA,OAAO7P,KAAK2P,gBAAgB/C,cAChC,CAEI7C,YACA,OAAO/J,KAAKiN,OAAOlD,OAAS/J,KAAKmG,QAAQ4D,OAAS9F,CACtD,CAYA6L,IAAI/M,GAAUoD,GAAU,CAAC,GACrB,GAAIrC,GAAMf,IACN,OACJgF,MAAWlF,GAAU,cACrB,MAAMkN,GAAiB/P,KAAKgQ,oBAAsBP,GAAYvG,UAAU8G,kBACxEhQ,KAAK+L,aAAY,EAAM,CAAEE,YAAY,IACrCjM,KAAK8L,UAAWjL,KACZ,MAAM0H,GA7jBlB,SAAS0H,IAAcpP,SAAOkC,YAAUgH,SAAOrB,gBAAcqH,oBACzD,IAAI1H,GACA3E,GACJ,GAAIR,GAAQH,IAAW,CACnB,MAAMmN,GA/Bd,SAASC,GAAiBpN,GAAUgH,GAAOrB,IACvC,MAAM0H,GAAM,CACRrN,SAAU,CAAC,EACXQ,IAAK,IAET,UAAWiD,MAAUzD,GAAU,CAE3B,MAAMyF,GAAUE,GAAalC,IAC7B4J,GAAIrN,SAASyF,GAAQuB,KAAUvB,GAC/B4H,GAAI7M,IAAIzB,KAAK0G,GAAQuB,IAAM,CAE/B,OAAOqG,EACX,CAmBwBD,CAAiBpN,GAAUgH,GAAOrB,IAClDL,GAAc6H,GAAQnN,SACtBW,GAASwM,GAAQ3M,SAlBzB,SAAS8M,GAAcxP,IACnB,OAAOA,GAAMkC,UAAYlC,GAAM0C,GACnC,CAkBa8M,CAActN,KAMnBsF,GAAc0H,GAAiBhN,GAAW0F,GAAgB1F,GAAU2F,IACpEhF,GAASyE,OAAOS,KAAKP,IAAayE,IAAI9J,IAAOsN,MAAMtN,IAAMA,GAAKuN,OAAOvN,OANrEqF,GAAc0H,GAAiBhN,GAASA,SAAW0F,GAAgB1F,GAASA,SAAU2F,IACtFhF,GAASX,GAASQ,KAOtB,MAAMgF,GAAWJ,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAEkC,SAAUsF,GAAa9E,IAAKG,GAAQkI,SAAS,IACxG,OAAIxI,GAAevC,MACf0H,GAAS7H,OAAS4C,GAAoBiF,KAEnCA,EACX,CAuiB6B0H,CAAY,CACzBpP,SACAkC,YACAgH,MAAO/J,KAAK+J,MACZrB,aAAc1I,KAAKgQ,kBACnBD,oBAEJ,OAAsC,IAAlC/H,GAAY7B,GAAQqK,YACpBjI,GAAS7H,OAASyF,GAAQqK,UAEvBjI,KAEPvI,KAAKyQ,qBACLzQ,KAAK0Q,mBAET1Q,KAAK0P,cAAc9E,KAAK,CAAErI,KAAM0D,GAAcyB,IAAKnE,IAAKvD,KAAKuD,KACjE,CAYA9B,IAAIsB,GAAUoD,GAAU,CAAEyF,SAAS,IAC/B,MAAM+E,GAAa3M,GAAYjB,IAC/B,GAAImB,GAAQyM,IACR,OACJ,MAAMC,GAtvCd,SAASC,IAAchQ,SAAOkC,YAAUgH,SAAO5D,WAAU,CAAC,EAAGuC,kBACzD,IAAIL,GAAc,CAAC,EACf3E,GAAS,GACToN,IAAiB,EACrB,UAAWtK,MAAUzD,GACjB,IAAiD,IAA7CD,GAAUjC,GAAMkC,SAAUyD,GAAOuD,KAAmB,CAEpD,MAAMvB,GAAUE,GAAalC,IACvBuK,GAAWvI,GAAQuB,IACzB1B,GAAY0I,IAAYvI,GACpBrC,GAAQ6K,QACRtN,GAAOuN,QAAQF,IAEfrN,GAAO5B,KAAKiP,IAChBD,IAAiB,EAGzB,OAAOA,GACD,CACEvI,SAAUJ,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAEkC,SAAUoF,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,GAAMkC,UAAWsF,IAAc9E,IAAK4C,GAAQ6K,QAAU,IAAItN,MAAW7C,GAAM0C,KAAO,IAAI1C,GAAM0C,OAAQG,MAClMA,WAEF,IACV,CA+tCqBmN,CAAY,CACrBhQ,MAAOb,KAAK6L,SACZnD,aAAc1I,KAAKgQ,kBACnBjN,SAAU4N,GACV5G,MAAO/J,KAAK+J,MACZ5D,aAEAyK,KACA7I,MAAWlF,GAAU,cACrB+N,GAAKrI,SAASqD,QAAUzF,GAAQyF,QAChC5L,KAAK8L,UAAU,IAAM8E,GAAKrI,UACtBvI,KAAKyQ,qBACLzQ,KAAK0Q,kBAAiB,GAE1B1Q,KAAK0P,cAAc9E,KAAK,CAAErI,KAAM0D,GAAc0B,IAAKpE,IAAKqN,GAAKlN,SAErE,CACAqK,OAAOmD,GAAgBC,IACnB,GAAInJ,GAAYmJ,IAEZ,YADA3Q,MAAMuN,OAAOmD,IAGjB,IAYIE,GAZA7N,GAAM,GAGNA,GAFAa,GAAW8M,IAELlR,KAAKuD,IAAIK,OAAQZ,IAAOkO,GAAelR,KAAK+C,SAASC,MAIrDc,GAAMoN,IAAkBlR,KAAKuD,IAAMS,GAAYkN,IAErDhN,GAAQX,MAEZwE,MAAWlF,GAAU,gBAAiBU,IAEtCvD,KAAK8L,UAAWjL,IAtLxB,SAASwQ,IAAiBxQ,SAAO0C,OAAKwG,SAAOoH,gBAAcG,mBAAiBtM,cAAYuM,uBACpF,MAAMC,GAAkB,CAAC,EACzB,IACIC,GADAC,IAAkB,EAEtB,UAAW1O,MAAMO,GAAK,CAElB,IAAsC,IAAlCT,GAAUjC,GAAMkC,SAAUC,IAC1B,SAEJ,MAAM2O,GAAY9Q,GAAMkC,SAASC,IACjC,IAAIuF,GAEAA,GADAnE,GAAW+M,IACA/M,GAAWY,IAAcA,GAAW2M,GAAWR,IAAgBA,GAAaQ,IAG5ER,GAEf,MAAMS,GAAcrJ,GAAStF,eAAe8G,KAAUxB,GAASwB,MAAW4H,GAAU5H,IACpF,IAAI8H,GACJJ,GAAazO,GACT4O,KACAF,IAAkB,EAClBD,GAAalJ,GAASwB,KAE1B,MAAM+H,GAAS3J,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGuJ,IAAYpJ,IAEvDsJ,GADAnI,GAAciI,IACFG,GAaRpI,GAAcnB,IACF,IAAIoJ,GAAU9R,YAAYiS,IAG1B,IAAIvJ,GAAS1I,YAAYiS,IAG7CN,GAAgBC,IAAcH,GAAgBK,GAAWE,GAAS,CAEtE,IAAIE,GAAalR,GAAM0C,IACnByO,GAAgBnR,GAAMkC,SAC1B,GAAI2O,GAAiB,CACjB,MAAO1O,IAAMO,GACP0O,GAAKpR,GAAMkC,SAAUqM,GAAKpM,GAAoBiP,GAAG7C,IACvD4C,MADmEE,OAAOD,GAAI,CAAe,iBAAP7C,GAAkBA,GAAKA,GAAK,KAElH2C,GAAalR,GAAM0C,IAAIuJ,IAAKtE,IAAaA,KAAYxF,GAAKyO,GAAajJ,IACvE+I,GAAkBvO,GAAIyO,GAAU,CAEpC,OAAOtJ,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAEkC,SAAUoF,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG4J,IAAgBR,IAAkBjO,IAAKwO,IACtI,CA4HkCV,CAAe,CACrCtH,MAAO/J,KAAK+J,MACZxG,OACA+N,gBAAiBtR,KAAKmS,qBACtBtR,SACAsQ,gBACAnM,WAAYhF,KAAKoN,YACjBmE,kBAAmB,CAACa,GAAOC,MACvBjB,GAAkB,CAAEgB,SAAOC,UAC3BrS,KAAK2P,gBAAgB/E,KAAKzC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGgJ,IAAkB,CAAEkB,SAAS,IAAO,KAGlGlB,IACApR,KAAK2P,gBAAgB/E,KAAKzC,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGgJ,IAAkB,CAAEkB,SAAS,KAE3FtS,KAAK0P,cAAc9E,KAAK,CAAErI,KAAM0D,GAAc2B,OAAQrE,SAC1D,CACAgP,OAAOhP,GAAKgF,GAAUiK,GAAUrM,GAAU,CAAC,GACvC,MAAMsM,GAAUzO,GAAYT,IACtBmP,GAAaC,IAAc3P,IAAOF,GAAU9C,KAAK+C,SAAUC,MAAQ2P,GACnEC,GAAYxO,GAAWoO,IAAYrM,GAAQyM,UAAYJ,GAAWA,GAASI,eAAY3N,EACvF4N,GAAezO,GAAWwO,IAC1BE,GAAYL,GAAQ7O,OAAO8O,IAAU,IACrCrK,GAAcoK,GAAQ7O,OAAO8O,IAAU,IAAQ5F,IAAK9J,KACtD,MAAM+P,GAAkC,mBAAbxK,GAA0BA,GAAS,CAAC,GAAKA,GAC9D/B,GAASpC,GAAWoO,IAAYA,GAASxP,GAAI+P,IAAeA,GAC5DC,GAAS7K,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG5B,IAAS,CAAE,CAACxG,KAAK+J,OAAQ/G,KACxE,OAAI6P,GACO,IAAID,GAAUI,IAElBA,KAGXhT,KAAK+N,OAAO+E,GAAWvK,IACvBvI,KAAKyB,IAAI4G,IACTN,MAAWnF,GAAU,gBACzB,CAaAqQ,WAAWlQ,GAAUoD,GAAU,CAAC,GAC5B,MAAM+M,GAAW,GACXnB,GAAa,GACbP,GAAkB,CAAC,EAEzB,UAAWhL,MAAUzD,GAAU,CAC3B,MAAMoQ,GAAmBnT,KAAKoT,oBAAoB5M,IAC5CxD,GAAKmQ,GAAiBnT,KAAK+J,OACjC,GAAIjH,GAAU9C,KAAK+C,SAAUC,IAAK,CAC9B,MAAMqQ,GAAOrT,KAAK6L,SAAS9I,SAASC,IAC9B8O,GAAS3J,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGpI,KAAK6L,SAAS9I,SAASC,KAAMmQ,IACtEvI,GAAOzE,GAAQyM,UAAY,IAAIzM,GAAQyM,UAAUd,IAAUA,GAC3D5D,GAAWlO,KAAKmS,qBAAqBkB,GAAMzI,IAC3C0I,GAASpF,GAASlO,KAAK+J,OAC7ByH,GAAgB8B,IAAUpF,GAC1B6D,GAAWjQ,KAAKwR,GAAM,KAErB,CACD,MAAMzB,GAAY1L,GAAQyM,UAAY,IAAIzM,GAAQyM,UAAUO,IAAoBA,GAC1EjF,GAAWlO,KAAKgQ,kBAAkB6B,IAClCyB,GAASpF,GAASlO,KAAK+J,OAC7BmJ,GAASpR,KAAKwR,IACd9B,GAAgB8B,IAAUpF,IAGlCnG,MAAWnF,GAAU,eACrB5C,KAAK8L,UAAWjL,IAAWsH,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAE0C,IAAK2P,GAASpS,OAAS,IAAID,GAAM0C,OAAQ2P,IAAYrS,GAAM0C,IAAKR,SAAUoF,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,GAAMkC,UAAWyO,IAAkB5F,UAAWzF,GAAQyF,WACrOmG,GAAWjR,QAAUd,KAAK0P,cAAc9E,KAAK,CAAErI,KAAM0D,GAAc2B,OAAQrE,IAAKwO,KAChFmB,GAASpS,QAAUd,KAAK0P,cAAc9E,KAAK,CAAErI,KAAM0D,GAAc0B,IAAKpE,IAAK2P,KACvEA,GAASpS,QAAUd,KAAKuT,cACxBvT,KAAK0Q,kBAAiB,EAE9B,CAWA8C,QAAQjQ,GAAKgF,IACT,MAAMkK,GAAUzO,GAAYT,IAC5B,GAAIW,GAAQuO,IACR,OACJ,MAAMgB,GAAW,CAAC,EAClB,UAAWzQ,MAAMyP,GACbgB,GAASzQ,IAAMmF,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGG,IAAW,CAAE,CAACvI,KAAK+J,OAAQ/G,KAE9E+E,MAAWlF,GAAU,iBAAkBU,IACvCvD,KAAK8L,UAAWjL,IAAWsH,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAEkC,SAAUoF,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,GAAMkC,UAAW0Q,MACpI,CAUAC,KAAKC,GAAMC,IACP,MAAMrQ,GAAMvD,KAAKuD,IAAIkE,QACrBlE,GAAIsQ,OAAOD,GAAK,EAAIrQ,GAAIzC,OAAS8S,GAAKA,GAAI,EAAGrQ,GAAIsQ,OAAOF,GAAM,GAAG,IACjE5L,MAAWlF,GAAU,eACrB7C,KAAK8L,UAAWjL,IAAWsH,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAE/DkC,SAAUoF,OAAOC,OAAO,CAAC,EAAGvH,GAAMkC,UAAWQ,SACrD,CACAuQ,OAAOC,IACH,GAAI7P,GAAQlE,KAAKuD,KACb,OACJ,MAAMyQ,GAAW7O,GAAU4O,IAE3B,IAAIxQ,GAAM,GAENA,GADAa,GAAW2P,IACL/T,KAAKuD,IAAIK,OAAQmN,IAAagD,GAAQ/T,KAAK+C,SAASgO,MAGpDiD,GAAWhQ,GAAY+P,IAAW/T,KAAKuD,KAE7CW,GAAQX,MAEZwE,MAAWlF,GAAU,gBAAiBU,IACtCvD,KAAK8L,UAAWjL,IAAUoH,GAAe,CAAEpH,SAAO0C,UAC7CyQ,IACDhU,KAAK+L,aAAY,GAErB/L,KAAKiU,eAAe1Q,IACpBvD,KAAK0P,cAAc9E,KAAK,CAAErI,KAAM0D,GAAc4B,OAAQtE,SAC1D,CAiBA2Q,aAAaC,IACT,MAAM5Q,GAAMS,GAAYhE,KAAKU,QAC7BqH,MAAWlF,GAAU,gBAAiBU,IACtCvD,KAAK+N,OAAOxK,GAAK4Q,GACrB,CACAC,UAAUC,IACN,MAAM3T,GAp4Bd,SAAS4T,GAAkBD,GAAa9Q,GAAKgR,IACzC,IAAIC,GACJ,GAAItR,GAAQmR,IACRG,GAASH,WAGLzP,GAASyP,IAAc,CACvB,GAAIvQ,GAAMyQ,IACN,OACJF,GAAclM,OAAOC,OAAO,CAAEqM,MAAM,GAAQJ,IAC5C,MAAMK,GAAiBnR,GAAIM,QAAQ0Q,IACnC,GAAIF,GAAYhB,KAAM,CAClB,MAAMsB,GAA6B,IAAnBD,GAChB,GAAIC,KAAYN,GAAYI,KACxB,OACJD,GAASG,GAAUpR,GAAIA,GAAIzC,OAAS,GAAKyC,GAAImR,GAAiB,EAAC,SAE1DL,GAAYzJ,KAAM,CACvB,MAAMgK,GAASrR,GAAIzC,SAAW4T,GAAiB,EAC/C,GAAIE,KAAWP,GAAYI,KACvB,OACJD,GAASI,GAASrR,GAAI,GAAKA,GAAImR,GAAiB,EAAC,MAGpD,CACD,GAAIL,KAAgBE,GAChB,OACJC,GAASH,GAGjB,OAAOG,EACX,CAq2BuBF,CAAkBD,GAAarU,KAAKuD,IAAKvD,KAAKU,aAC9CuE,IAAXvE,KAGJqH,MAAWlF,GAAU,aAAcnC,IACnCV,KAAK6U,WAAWnU,IACpB,CASAoU,UAAUvR,IACN,MAAMkP,GAAUzO,GAAYT,IACxBW,GAAQuO,KAEOA,GAAQhM,MAAOzD,IAAOhD,KAAKU,OAAOmD,QAAQb,KAAM,KAGnE+E,MAAWlF,GAAU,aAAcU,IACnCvD,KAAK8L,UAAWjL,KAEZ,MAAMkU,GAAU5R,MAAMwQ,KAAK,IAAIjM,IAAI,IAAI7G,GAAMH,UAAW+R,MACxD,OAAOtK,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAEH,OAAQqU,IAAS,GAE1E,CASAC,aAAazR,IACT,MAAMkP,GAAUzO,GAAYT,IACxBW,GAAQuO,MAEMA,GAAQhO,KAAMzB,IAAOhD,KAAKU,OAAOmD,QAAQb,KAAM,KAGjE+E,MAAWlF,GAAU,gBAAiBU,IACtCvD,KAAK8L,UAAWjL,IACLsH,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAEH,OAAQyC,MAAMD,QAAQrC,GAAMH,QAAUG,GAAMH,OAAOkD,OAAQqR,KAA6C,IAA/BxC,GAAQ5O,QAAQoR,KAAqB,QAEvK,CASAC,aAAa3R,IACT,MAAMkP,GAAUzO,GAAYT,IACtB4R,GAAgBrB,IAAY9Q,IAAOhD,KAAKU,OAAO4H,SAAStF,MAAQ8Q,GAChEA,GAASrB,GAAQ7O,OAAOuR,IAAa,IACrC1T,GAAMgR,GAAQ7O,OAAOuR,IAAa,IACxCnV,KAAKgV,aAAalB,IAClB9T,KAAK8U,UAAUrT,IACfsG,MAAWnF,GAAU,gBACzB,CAwBAwS,cAAc7J,GAAe,CAAC,EAAG8J,GAAc,CAAC,GAC5C,MAAMC,GAAW,CAAE3L,KAAO,MAAK3J,KAAKgK,YAAaD,MAAO/J,KAAK+J,OAC7D,YAAKwL,GAAK,IAAIC,GAAcjK,GAAcpD,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGkN,IAAWD,KAC9ErV,KAAKuV,EAChB,CAEA7G,UACIlO,MAAMkO,UACF1O,KAAKuV,cAAc9F,IACnBzP,KAAKuV,GAAG7G,UAEZ1O,KAAK0P,cAAc3E,UACvB,CAEAoH,qBAAqB5D,GAAGkH,IACpB,OAAOA,EACX,CAEAzF,kBAAkB6B,IACd,OAAOA,EACX,CAEAuB,oBAAoBvB,IAChB,OAAOA,EACX,CACItO,UACA,OAAOvD,KAAK6L,SAAStI,GACzB,CACIR,eACA,OAAO/C,KAAK6L,SAAS9I,QACzB,CACIrC,aACA,OAAOV,KAAK6L,SAASnL,MACzB,CACAmU,WAAWtR,IACPvD,KAAK8L,UAAWjL,IACLsH,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ,CAAEH,OAAQ6C,KAEjE,CACAmN,iBAAiBjP,IAAM,GACnB,MAAM8B,GAAMvD,KAAKuD,IACXmS,GAAStR,GAAWpE,KAAKuV,GAAGI,sBAClC,IAAIC,GACJ,MAAMC,GAAY7S,KACd,MAAMwF,GAAUxI,KAAK+C,SAASC,IACxBuS,GAAKG,GAAS1V,KAAKuV,GAAGI,qBAAqBnN,IAAWxI,KAAKuV,GAAGI,qBACpE,OAAOxN,OAAOC,OAAO,CAAE,CAACpI,KAAK+J,OAAQvB,GAAQxI,KAAK+J,QAAUwL,GAAE,EAG9DK,GADAnU,GACazB,KAAKuD,IAAIK,OAAQZ,IAAOgF,GAAYhI,KAAKuV,GAAGxS,SAASC,MAAM8J,IAAI+I,IAG/DtS,GAAIuJ,IAAI+I,IAEzBpU,GAAMzB,KAAKuV,GAAG9T,IAAImU,IAAc5V,KAAKuV,GAAGzF,IAAI8F,GAChD,CACAnF,oBACI,OAAOzQ,KAAKuT,eAA8D,IAA9CvL,GAAYhI,KAAKuV,GAAGI,qBACpD,CACA1B,eAAe1Q,IACPvD,KAAKuT,cACLvT,KAAKuV,GAAGzB,OAAOvQ,GAEvB,CACAgQ,aACI,OAAOvT,KAAKuV,cAAcC,EAC9B,GAEJM,SAAW,CACP9K,MAAW,EACX+K,OAAW,cAAeC,WAAQ,EAClCD,OAAW,oBAAqB,CAAC5N,OAAQA,OAAQA,OAAQA,UAAO,EAChE4N,OAAW,yBAAqB,IACjCtG,GAAYvG,UAAW,SAAU,OAAI,EACxC4M,OAAW,CACP9K,MAAW,EACX+K,OAAW,cAAeC,WAAQ,EAClCD,OAAW,oBAAqB,CAAiD,mBAAxC3G,UAAY6G,EAAM,KAAeA,GAAoB7G,GAAKjH,UAAO,EAC1G4N,OAAW,yBAAqB,IACjCtG,GAAYvG,UAAW,eAAgB,MAE1C,MAAMsM,WAAsB/F,GACxB5P,YAAY0L,GAAe,CAAC,EAAG8J,GAAc,CAAC,GAC1C7U,MAAM+K,GAAc8J,GACxB,CAeAa,sBAAsBL,IAClB7V,KAAK2V,qBAAuBE,EAChC,EAmBJ,MAAMM,GAAiB,mBAYvB,SAASC,GAASpU,IACd,MAAwB,iBAAVA,EAClB,CAeA,MAAMqU,GACFxW,YAAY8M,IACR3M,KAAK2M,MAAQA,GACb3M,KAAKsW,UAAY3J,GACb5E,OAEAlC,GAAY8G,GAAM3C,WAAahK,KAEvC,CACAuW,OAAO7J,IACH,IAAI8J,GACJ,GAAIpS,GAAWsI,IACX8J,GAAQ9J,WAEH0J,GAAS1J,IACd8J,GAAQ3V,IAASA,GAAM6L,QAEtB,IAAIvJ,MAAMD,QAAQwJ,IACnB,OAAO1M,KAAK2M,MACPF,QAAQ5L,IAASA,IACjBgM,QAAKvI,KAjCtB,SAASmS,GAAYC,IACjB,OAAO,SAAUC,GAAWC,IACxB,MAAMC,GAAQzS,GAAWsS,GAAY,IAErC,OAKO,IALAA,GAAYjS,KAAKqS,IAChBD,GACOC,GAAUH,MAAeG,GAAUF,IAEvCD,GAAUG,MAAeF,GAAUE,IAElD,CACJ,CAsB2CL,CAAY/J,MAAQ,EAAGI,KAAIjM,IAClDuD,GAAWsI,GAAQ,IACZA,GAAQI,IAAIiK,IAAQA,GAAKlW,KAE7B6L,GAAQsK,OAAO,CAAC5G,GAAK6G,MACxB7G,GAAI6G,IAAKpW,GAAMoW,IACR7G,IACR,CAAC,KAIRoG,GAAQ3V,IAASA,GAErB,OAAOb,KAAK2M,MAAMF,QAAQ+J,GAC9B,CAQAU,gBACI,OAAOlX,KAAKuW,OAAO1V,IAASA,GAAM+K,QACtC,CAQAuL,cACI,OAAOnX,KAAKuW,OAAO1V,IAASA,GAAMuB,MACtC,CASAkK,WACI,OAAOtM,KAAK2M,MAAMd,QACtB,CAYAuL,iBACI,OAAOpX,KAAK2M,MAAMK,SAASJ,cAC/B,CASAyK,cACI,OAAOrX,KAAK2M,MAAMK,SAAShL,KAC/B,CAEIiL,aACA,OAAOjN,KAAKH,YAAYsW,GAC5B,EAaJ,SAASmB,GAAUtU,GAAI0J,IACnB,OAAO,SAAU3J,IACb,MAAMyD,GAASzD,GAASC,IACxB,IAAIgF,GAAYxB,IAGhB,OAAKkG,GAGD0J,GAAS1J,IACFlG,GAAOkG,IAEXA,GAAQlG,IALJA,EAMf,CACJ,CAgCA,MAAM+Q,WAAoBlB,GACtBxW,YAAY8M,GAAOxG,GAAU,CAAC,GAC1B3F,MAAMmM,IACN3M,KAAKmG,QAAUA,GACfnG,KAAKsW,UAAY3J,EACrB,CACA6K,UAAUrR,GAAU,CAChBsR,UAAU,IAEV,OAAOzX,KAAKuW,OAAQ1V,IAAUA,GAAMkC,UAAU8J,QAAKC,KAAI,IAAM9M,KAAK0X,OAAOvR,KAC7E,CACAuR,OAAOvR,GAAU,CAAEsR,UAAU,EAAOrR,cAAUnB,EAAWoB,aAASpB,IAC9D,OAAIkB,GAAQsR,SAx1CpB,SAASE,GAAc9W,GAAOsF,IAC1B,MAAM2G,GAAM,CAAC,GACL1G,YAAUC,YAAYF,IACtB5C,OAAKR,aAAalC,GAC1B,IAAKuF,KAAaC,GACd,OAAOtD,GAEX,MAAM6U,IAA8B,IAAnB9T,GAAMuC,IACvB,GAAID,IAAYwR,GAAU,CACtB,IAAIC,GAAQ,EACZ,QAASlT,GAAI,EAAG7D,GAASyC,GAAIzC,OAAQ6D,GAAI7D,IACjC+W,KAAUxR,GAD+B1B,KAAK,CAGlD,MAAM3B,GAAKO,GAAIoB,IACT6B,GAASzD,GAASC,IACRgB,GAAYoC,IAAUK,MAAMC,IAAMA,GAAGF,GAAQ7B,OAEzDmI,GAAI9J,IAAMwD,GACVqR,WAIP,CACD,MAAMC,GAAc1W,KAAKoG,IAAInB,IAAW9C,GAAIzC,OAAQyC,GAAIzC,QACxD,QAAS6D,GAAI,EAAGA,GAAImT,GAAanT,KAAK,CAClC,MAAM3B,GAAKO,GAAIoB,IACT6B,GAASzD,GAASC,IACnBoD,GAIWpC,GAAYoC,IAAUK,MAAMC,IAAMA,GAAGF,GAAQ7B,OAEzDmI,GAAI9J,IAAMwD,IALVsG,GAAI9J,IAAMwD,EAKAA,EAItB,OAAOsG,EACX,CAmzCmB6K,CAAc3X,KAAKsM,WAAYnG,KA/BlD,SAAS4R,GAAc5R,GAAS8G,IAC5B9G,GAAQG,OAASH,GAAQG,QAAW2G,IAAUA,GAAO3G,OACrDH,GAAQI,YAAcJ,GAAQI,aAAgB0G,IAAUA,GAAO1G,WACnE,CA8BQwR,CAAc5R,GAASnG,KAAKiN,QAAUjN,KAAKmG,SACpCD,GAAgBlG,KAAKsM,WAAYnG,IAC5C,CACA6R,WAAWzU,GAAKmJ,IACZ,OAAKnJ,IAAQA,GAAIzC,OAEVd,KAAKuW,OAAQ1V,IAAUA,GAAMkC,UAAU8J,QAAKC,KAAK/J,IAlDhE,SAASkV,GAAiB9T,GAAK+T,IAC3B,OAAO/T,GAAI6S,OAAO,CAACxC,GAAQxS,GAAOmW,GAAOC,MACrC,MAAMhT,GAAM8S,GAAWlW,GAAOmW,GAAOC,IACrC,YAAYnT,IAARG,IACAoP,GAAO1S,KAAKsD,IAEToP,IACR,GACP,CA0C6EyD,CAAiB1U,GAAMP,IAAOsU,GAAUtU,GAAI0J,GAAd4K,CAAuBvU,MAAasB,OAFtHvD,EACNqO,OAAG,GAElB,CACAkJ,aAAaC,GAAe5L,IACxB,IAAI1J,GAAKsV,GACT,OAAIlU,GAAWkU,MAEXtV,GAlFZ,SAASuV,GAAsB7F,GAAW3P,IACtC,UAAWgO,MAAY5I,OAAOS,KAAK7F,IAC/B,IAAsC,IAAlC2P,GAAU3P,GAASgO,KACnB,OAAOA,EAInB,CA2EiBwH,CAAsBD,GAAetY,KAAKsM,WAAWvJ,WAEvD/C,KAAKuW,OAAQ1V,IAAUA,GAAMkC,UAAU8J,QAAKC,KAAIwK,GAAUtU,GAAI0J,MAAQ,EAAGpI,OACpF,CAQAgT,UAAUtU,IACN,OAAOhD,KAAKsM,WAAWvJ,SAASC,GACpC,CAQAwV,iBACI,OAAOxY,KAAKuW,OAAQ1V,IAAUA,GAAMH,OACxC,CAQA+X,cACI,OAAOzY,KAAKsM,WAAW5L,MAC3B,CACAgY,aAAahM,IACT,OAAIxJ,GAAQlD,KAAK2Y,aACN3Y,KAAKwY,iBAAiB3L,QAAK+L,KAAWrV,IAAQvD,KAAKgY,WAAWzU,GAAKmJ,MAEvE1M,KAAKwY,iBAAiB3L,QAAK+L,KAAWrV,IAAQvD,KAAKqY,aAAa9U,GAAKmJ,KAChF,CACAiM,YACI,MAAMnI,GAAWxQ,KAAKyY,cACtB,OAAIvV,GAAQsN,IACDA,GAAS1D,IAAK9J,IAAOhD,KAAKsM,WAAWvJ,SAASC,KAElDyG,GAAU+G,IAAYxQ,KAAKsX,UAAU9G,SAAYvL,CAC5D,CASA4T,YAAYnG,IACR,OAAO1S,KAAKuW,OAAQ1V,IAAUA,GAAMkC,UAAU8J,QAAKC,KAAI,IAAM9M,KAAK8Y,SAASpG,KAC/E,CASAoG,SAASpG,IACL,OAAItO,GAAWsO,IACJ1S,KAAK0X,SAAS9T,OAAO8O,IAAW5R,OAEpCd,KAAKsM,WAAW/I,IAAIzC,MAC/B,CACAiY,WAAWrM,IACP,OAAO1M,KAAKgZ,SAAUzV,IAAQA,GAAIA,GAAIzC,OAAS,GAAI4L,GACvD,CACAuM,YAAYvM,IACR,OAAO1M,KAAKgZ,SAAUzV,IAAQA,GAAI,GAAImJ,GAC1C,CACAwM,mBAAmBC,IACf,GAAIrV,GAAMqV,IACN,OAAOnZ,KAAK2M,MAAMiD,oBAEtB,MAAMlD,GAAUxJ,GAAQiW,IAAoB1O,IAAWA,GAAS,EAAGlH,UAAUA,GACvE6V,GAAUpV,GAAYmV,IAC5B,OAAOnZ,KAAK2M,MAAMiD,oBAAoB/C,QAAKjJ,KAAO,EAAGrB,WAAW6W,GAAQ9Q,SAAS/F,MAAK,EAAGuK,KAAKrC,IAAWiC,GAAQjC,KACrH,CACA3H,UAAUuW,IACN,OAAIvV,GAAMuV,IACCrZ,KAAKsM,WAAW/I,IAAIzC,OAAS,EAEpCsD,GAAWiV,IACJrZ,KAAK0X,SAASjT,KAAK4U,IAE1BnW,GAAQmW,IACDA,GAAa5S,MAAOzD,IAAOA,MAAMhD,KAAKsM,WAAWvJ,UAErDsW,MAAgBrZ,KAAKsM,WAAWvJ,QAC3C,CAUAuW,UAAUtW,IACN,MAAMtC,GAASV,KAAKsM,WAAW5L,OACzB6Y,GAAepU,GAAUnC,IAC/B,OAAIG,MAAMD,QAAQxC,IACV6Y,GACO7Y,GAAO4H,SAAStF,IAEpBtC,GAAOI,OAAS,EAEpByY,GAAe7Y,KAAWsC,GAAKmC,GAAUzE,GACpD,CAkBA8Y,gBACIxZ,KAAKuV,GAAK,IAAIkE,GAAczZ,KAAKsW,UAAUf,GAC/C,CACAyD,SAASxC,GAAO9J,IACZ,OAAO1M,KAAKuW,OAAQ1V,IAAUA,GAAM0C,KAAKsJ,QAAKC,KAAI0J,KAAK,EAAGlS,QAAoB,EAAIsU,KAAW5V,IAAOhD,KAAKqY,aAAarV,GAAI0J,KAC9H,EAGJ,MAAM+M,WAAsBlC,GACxB1X,YAAY8M,IACRnM,MAAMmM,GACV,EAwBJ,SAASL,GAASoN,GAAKrQ,IAEnB,OAA+B,IAA3BA,GAAKsQ,MAAM,KAAK7Y,OACT4Y,GAEarQ,GACnBsQ,MAAM,KACNlS,MAAM,GACNmS,KAAK,KACaD,MAAM,KAAK3C,OAAO,CAAC5G,GAAKyJ,KAASzJ,IAAOA,GAAIyJ,IAAOH,GAC9E,CA8BA,SAASI,GAASJ,GAAKrQ,GAAMjE,GAAKoO,IAAU,GACxC,MAAMmG,GAAQtQ,GAAKsQ,MAAM,KACzB,GAAqB,IAAjBA,GAAM7Y,OACN,OAAOqH,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGsR,IAAMtU,IAEjDsU,GAAMvR,OAAOC,OAAO,CAAC,EAAGsR,IACxB,MAAMK,GAAYJ,GAAM7Y,OAAS,EAEjCkZ,OADwB3Q,GAAKsQ,MAAM,KAAKlS,MAAM,GAC9BuP,OAAO,CAAC5G,GAAKyJ,GAAM1B,KAC3BA,KAAU4B,IACV3J,GAAIyJ,IAAQ1R,OAAOC,OAAO,CAAC,EAAGgI,GAAIyJ,KAC3BzJ,IAAOA,GAAIyJ,MAEtBzJ,GAAIyJ,IAAQrG,IAAWrQ,MAAMD,QAAQkN,GAAIyJ,OAAWjV,GAASwL,GAAIyJ,KAASzU,GAAM+C,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGgI,GAAIyJ,KAAQzU,IACrHgL,IAAOA,GAAIyJ,KACnBH,IACIA,EACX,CAEA,IAAIO,IAAoB,EACE,IAAIzU,KAAc,GAI5C,SAAS0U,GAAqBzX,IAC1BwX,GAAoBxX,EACxB,CAuKA,MAAM0X,GACFta,YAAYua,GAAOnN,IACfjN,KAAKoa,MAAQA,GACTnN,IAAUA,GAAOoN,SACbnV,KAAiBJ,YACjB9E,KAAKsa,QAAQrN,GAAOoN,QAGhC,CAEAE,WACI,OAAOva,KAAKoa,KAChB,CAEAI,WACI,OAAOxa,KAAKua,WAAWjE,SAC3B,CAEAmE,cAAc1J,IACV,OAAOtH,GAAUsH,GACrB,CAEA2J,aAAa3J,GAAU4J,IACnB,OAAI3a,KAAKya,cAAc1J,IACZ/Q,KAAKua,WAAWlC,aAAatH,IAAUlE,KAhoB1D,SAAS+N,KACL,SAAOhX,KAAQ5B,IAAoB,MAAVA,GAC7B,CA8nB+D4Y,IAEnDD,GACO3a,KAAKua,WAAWhE,OAAQ1V,IAAUyL,GAASzL,GAAOb,KAAK6a,cAAcF,MAEzE3a,KAAKua,WAAWhE,QAC3B,CACAuE,UAAU/J,GAAU4J,IAChB,GAAI3a,KAAKya,cAAc1J,IACnB,OAAO/Q,KAAKua,WAAWjD,UAAUvG,IAErC,MAAMlQ,GAAQb,KAAKua,WAAWjO,WAC9B,OAAIqO,GACOrO,GAASzL,GAAOb,KAAK6a,cAAcF,KAEvC9Z,EACX,CACAga,cAAcxR,IACV,MAAQ,GAAErJ,KAAKgK,aAAaX,IAChC,CACIW,gBACA,OAAOhK,KAAKwa,WAAWxQ,SAC3B,CAEA+Q,YAAYxS,GAAUwI,GAAU4J,GAAUnH,IAAU,GAChD,GAAIxT,KAAKya,cAAc1J,IAAW,CAC9B,MAAMpE,GAAQ3M,KAAKwa,WACnBhH,GAAU7G,GAAM6G,QAAQzC,GAAUxI,IAAYoE,GAAMoB,OAAOgD,GAAUxI,GAAQ,KAE5E,CACD,GAAIoS,GAIA,YAHA3a,KAAKwa,WAAW1O,UAAWjL,IAChBiZ,GAASjZ,GAAOb,KAAK6a,cAAcF,IAAWpS,IAAU,IAIvE,MAAMiG,GAAYgF,GAAUjL,GAAY1H,IAAWsH,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGvH,IAAQ0H,IAC3FvI,KAAKwa,WAAW1O,UAAU0C,GAAS,CAE3C,CAIA8L,QAAQ5T,IACJ,MAAMsU,GAAWhb,KAAKwa,WAAW9M,MACjC1N,KAAKwa,WAAW9M,MAAQ,IAAIuN,MAExB5O,WAAW,KACP2O,GAASnQ,MAAM7K,KAAKwa,WAAYS,IAChCvU,IAAE,EACL,CAET,EAsVJ,MAAMwU,GAAoB,CACtBC,eAAe,EACfC,OAAO,EACPC,UAAW,EACXC,kBAAcrW,EACdsW,qBAAqB,IAwPzBzF,SAAW,CAn8FX,SAASrL,GAAOA,GAAQjI,IACpB,OAAO,SAAUyI,GAAQC,GAAaC,IAClC,MAAMC,GAAiBD,GAAWnJ,MAClCmJ,UAAWnJ,MAAQ,YAAaqJ,IAC5BzI,UAAU6H,GAAQjI,IACX4I,GAAeP,MAAM7K,KAAMqL,GACtC,EACOF,EACX,CACJ,CA27FIV,CAAO,2BAAwB,EAC/BsL,OAAW,cAAeC,WAAQ,EAClCD,OAAW,oBAAqB,CAAC5N,UAAO,EACxC4N,OAAW,yBAAqB,IA1PpC,MAAMyF,WAAwBrB,GAC1Bta,YAAYua,GAAOnN,GAAS,CAAC,GACzBzM,MAAM4Z,GAAO,CACTC,QAAS,KACLra,KAAKyb,SAAU,EACfzb,KAAK0O,QAAQ,CAAEgN,YAAY,EAAMC,YAAa,GAAG,IAGzD3b,KAAKoa,MAAQA,GACbpa,KAAKiN,OAASA,GAEdjN,KAAK8J,SAAW,IAAI8R,IACpB5b,KAAK6b,MAAQ,IAAID,IACjB5b,KAAK8b,WAAa,CACdH,YAAa,EACbI,QAAS,EACTC,MAAO,EACPC,SAAU,EACVrL,KAAM,IAMV5Q,KAAKyb,SAAU,EAIfzb,KAAKkc,WAAalc,KAAKoa,MAAMlD,gBAAgBrK,KDnwF9C,SAAS/M,EAAMA,GAAOC,GAAYoc,KAErC,MAAMC,MADgBC,KAAOvc,KACMA,GAAQC,GAAUiB,MAASI,KAAKkb,IAAIxc,IACvE,OAAQK,IAAWA,GAAOoc,KAAK,IAAI3c,EAAcwc,GAAUrc,IAC/D,CC+vF0DD,CAAM,IACxDE,KAAKiN,OAAS9E,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAG8S,IAAoBjO,IAClE,MAAQoO,aAAWC,iBAAiBtb,KAAKiN,OACzCjN,KAAKwc,KAAO,IAAIrS,KAAgBkR,KAAS,EACrCoB,MAAanB,MACbtb,KAAK0c,uBAAyBpB,GAAalb,UAAU,IAAMJ,KAAK0b,cAExE,CAIIiB,kBACA,OAAO3c,KAAKwc,KAAK5P,cACrB,CAII+O,kBACA,OAAO3b,KAAK8b,WAAWH,WAC3B,CAIIhH,cACA,OAA4B,IAArB3U,KAAK2b,WAChB,CAII/G,aACA,OAAO5U,KAAK2b,cAAgB3b,KAAK8b,WAAWG,QAChD,CAKAW,eACI,YAAK3P,OAAOkO,eAAgB,EACrBnb,IACX,CAKA6c,YACI,YAAK5P,OAAOmO,OAAQ,EACbpb,IACX,CAIA2L,WAAW3J,IAAQ,GACfhC,KAAKwa,WAAW7O,WAAW3J,GAC/B,CAIA+L,OAAO+O,IACH9c,KAAK8b,WAAagB,GAClB9c,KAAK+c,QAAQD,GAASlM,KAC1B,CAKAmM,QAAQnM,IACJ5Q,KAAK6b,MAAM/L,IAAI9P,KAAK2b,YAAa,CAAEpY,IAAKqN,GAAK9D,IAAKtG,IAAWA,GAAOxG,KAAKwa,WAAWzQ,UACpF/J,KAAKwa,WAAWvH,WAAWrC,GAC/B,CAIA8K,WAAWvV,GAAU,CAAC,GACbnG,KAAKyb,UACN7Y,GAAU,8BACiB,IAAvBuD,GAAQ6W,aAAyBhd,KAAKiN,OAAOsO,qBAAuBpV,GAAQ6W,aAC5Ehd,KAAKwa,WAAW1G,SAEpB9T,KAAK6b,MAAQ,IAAID,IACjB5b,KAAK8J,SAAW,IAAI8R,KAExB5b,KAAKyb,SAAU,CACnB,CACAwB,UAAUT,IACNxc,KAAK6b,MAAMqB,OAAOV,GACtB,CAIA9N,SAAUgN,cAAYC,gBAAgB,CAAC,GAC/B3b,KAAK0c,wBACL1c,KAAK0c,uBAAuBnb,cAE5Bma,IACA1b,KAAK0b,aAEJ1T,GAAY2T,KACb3b,KAAKmd,QAAQxB,IAEjB3b,KAAKyb,SAAU,CACnB,CAIA2B,aAAaZ,IACT,OAAOxc,KAAK2b,cAAgBa,EAChC,CAIAW,QAAQX,KACAA,KAASxc,KAAK2b,cAAgB3b,KAAKqd,QAAQb,MAC3Cxc,KAAKwc,KAAK5R,KAAM5K,KAAK8b,WAAWH,YAAca,GAEtD,CAIAc,WACQtd,KAAK2b,cAAgB3b,KAAK8b,WAAWG,UACrCjc,KAAKmd,QAAQnd,KAAK8b,WAAWH,YAAc,EAEnD,CAIA4B,WACQvd,KAAK8b,WAAWH,YAAc,GAC9B3b,KAAKmd,QAAQnd,KAAK8b,WAAWH,YAAc,EAEnD,CAIA6B,cACIxd,KAAKmd,QAAQnd,KAAK8b,WAAWG,SACjC,CAIAwB,eACIzd,KAAKmd,QAAQ,EACjB,CAIAE,QAAQb,IACJ,OAAOxc,KAAK6b,MAAM6B,IAAIlB,GAC1B,CAIAmB,QAAQC,IACJ,IAAIpB,GAAOxc,KAAK8b,WAAWH,YAC3B,OAAI3b,KAAKqd,QAAQb,IACNxc,KAAK6d,WAAWrB,KAGvBxc,KAAK2L,YAAW,IAAI,EACbgI,MAAKiK,MAAO/Q,QAAK+L,KAAW3L,KAC/BuP,GAAOvP,GAAO0O,YACdnR,GAAiB,KACbxK,KAAK2L,YAAW,GAChB3L,KAAK+N,OAAOd,GAAM,GAEfjN,KAAK6d,WAAWrB,OAGnC,CACAjC,WACI,OAAOva,KAAKoa,KAChB,CACA0D,sBACoC,IAA5Bha,GAAM9D,KAAK2b,eACX3b,KAAKid,UAAUjd,KAAK2b,aACpB3b,KAAKmd,QAAQnd,KAAK2b,aAE1B,CACAoC,UACI,OAAI/d,KAAK2U,QACE,GAEH3U,KAAK2b,YAAc,GAAK3b,KAAK8b,WAAWC,QAAU,CAC9D,CACAiC,QACI,OAAIhe,KAAK4U,OACE5U,KAAK8b,WAAWE,MAEpBhc,KAAK2b,YAAc3b,KAAK8b,WAAWC,OAC9C,CAIA8B,WAAWrB,IACP,OAAOxc,KAAKoa,MAAM5C,UAAU,CAAEC,UAAU,IAAQ5K,QAAKoR,KAAK,IAAC,EAAGnR,KAAK/J,KAC/D,MAAM+Z,GAAW3U,OAAOC,OAAOD,OAAOC,OAAO,CAAC,EAAGpI,KAAK8b,YAAa,CAAElL,KAAM5Q,KAAK6b,MAAMqC,IAAI1B,IAAMjZ,IAAIuJ,IAAK9J,IAAOD,GAASC,QACjHoY,SAAOD,kBAAkBnb,KAAKiN,OAEtC,OAAIqD,MAAMtQ,KAAK8b,WAAWE,SACI,IAAtBc,GAASb,SACTa,GAASd,MAAQc,GAASlM,KAAOkM,GAASlM,KAAK9P,OAAS,EAGxDgc,GAASd,MAAQc,GAASf,QAAUe,GAASb,SAEjDjc,KAAK8b,WAAWE,MAAQc,GAASd,OAEjCZ,KACA0B,GAASnJ,KAAO3T,KAAK+d,UACrBjB,GAASlJ,GAAK5T,KAAKge,SAEnB7C,KACA2B,GAASqB,aAgBzB,SAASC,GAAcpC,GAAOD,IAC1B,MAAMsC,GAAMjd,KAAKkd,KAAKtC,GAAQD,IACxB5X,GAAM,GACZ,QAASQ,GAAI,EAAGA,GAAI0Z,GAAK1Z,KACrBR,GAAIrC,KAAK6C,GAAI,GAEjB,OAAOR,EACX,CAvBwCia,CAAcpe,KAAK8b,WAAWE,MAAOhc,KAAK8b,WAAWC,UAE1Ee,KAEf,GAOe5T,UAAW,SAAU,MAiZxC,IAAIqV,IACJ,SAAWA,IACPA,GAAY3W,OAAY,QAC5B,CAFA,CAEG2W,KAAgBA,GAAc,CAAC,IAE7BA,GAAY3W,OAEjB,IAAI4W,IACJ,SAAWA,IACPA,GAAkB5W,OAAY,SAC9B4W,GAAkBC,YAAiB,eACnCD,GAAkBE,YAAiB,eACnCF,GAAkBG,eAAoB,kBACtCH,GAAkBI,eAAoB,kBACtCJ,GAAkBK,eAAoB,kBACtCL,GAAkBM,mBAAwB,sBAC9C,CARA,CAQGN,KAAsBA,GAAoB,CAAC,IAEzCA,GAAkB5W,OAClB4W,GAAkBC,YAClBD,GAAkBE,YAClBF,GAAkBG,eAClBH,GAAkBI,eAClBJ,GAAkBK,eAClBL,GAAkBM,mBA+GC,IAzCxB,MAAMC,GAKFC,kBAAkBC,GAAS,IACvB,IAAI7O,GAAM,CAAC,EAEX,MAAMxH,GADaqW,GAAOne,OAAS,EACTme,GAAS9W,OAAOS,KAAKhD,IAC/C,QAASjB,GAAI,EAAGA,GAAIiE,GAAK9H,OAAQ6D,KAAK,CAClC,IAAIqF,GAAYpB,GAAKjE,IACH,WAAdqF,KACAoG,GAAIpG,IAAapE,GAAWoE,IAAW6B,SAAM,CAGrD,OAAOuE,EACX,CACA8O,kBAAkBD,GAAQ9Y,IACtB,MAAMgZ,GAAgBhX,OAAOC,OAAO,CAAE6R,mBAAmB,EAAOmF,MAAM,GAASjZ,IAC/EgZ,GAAclF,mBAAqBC,IAAqB,GACxD,IAAImF,GAAmBJ,GACnB7I,GAAS6I,MACTI,GAAmBC,KAAKC,MAAMF,KAElC,MAAMG,GAAOrX,OAAOS,KAAKyW,IAAkBve,OAC3C,GAAIqe,GAAcC,KACd7Z,GACKsH,QAAKjJ,KAAO+F,IAAQ0V,GAAiBpc,eAAe0G,MAAK,EAAGsU,KAAKuB,KACjEpf,UAAUuJ,IAAQ/D,GAAW+D,IAAMmC,UAAU,IAAMuT,GAAiB1V,WAGzE,QAAShF,GAAI,EAAGiE,GAAOT,OAAOS,KAAKyW,IAAmB1a,GAAIiE,GAAK9H,OAAQ6D,KAAK,CACxE,MAAMqF,GAAYpB,GAAKjE,IACnBiB,GAAWoE,KACXpE,GAAWoE,IAAW8B,UAAU,IAAMuT,GAAiBrV,IAAU,CAI7EmV,GAAclF,mBAAqBC,IAAqB,EAC5D,iHCn/GJ,MAAMuF,EAAM,CAAC,gBACb,SAASC,EAAyDC,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACrF,MAAME,GAAOtQ,QACbA,MAAsB,EAAG,qBAAsB,IAC/CA,MAAkB,YAAa,WAA8GA,MAAqBsQ,IAAO,MAAMC,GAAUvQ,QAAwB,OAAOA,MAAmBuQ,GAAQC,WAAa,EAAhQxQ,CAAmQ,YAAa,WAA8GA,MAAqBsQ,IAAO,MAAMG,GAAUzQ,QAAwB,OAAOA,MAAmByQ,GAAQC,WAAa,GACjf1Q,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMO,GAAS3Q,QACfA,MAAkB,gBAAiB2Q,GAAOC,cAA1C5Q,CAAyD,gBAAiB2Q,GAAOE,cAAjF7Q,CAAgG,gBAAiB2Q,GAAOG,cAAxH9Q,CAAuI,gBAAiB2Q,GAAOI,cAAa,CAC9K,CACF,SAASC,EAAyDZ,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACrF,MAAMa,GAAOjR,QACbA,MAAsB,EAAG,qBAAsB,IAC/CA,MAAkB,aAAc,SAA2GkR,IAA0D,MAAMC,GAAlCnR,MAAqBiR,IAAsCG,UAAiBC,GAAUrR,QAAwB,OAAOA,MAAmBmR,GAAWG,QAAQJ,GAAQG,GAAQzI,OAAS,GAC7V5I,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMe,GAAad,GAAIe,UACvBpR,MAAkB,OAAQmR,GAAWI,KAArCvR,CAA2C,WAAYmR,GAAWK,SAAlExR,CAA4E,YAAamR,GAAWM,UAAS,CAC/G,CACF,SAASC,EAAwCtB,GAAIC,IAInD,GAJmE,EAALD,KAC5DpQ,MAAsB,EAAG,IAAK,IAC9BA,MAAiB,EAAG,KACpBA,SACO,EAALoQ,GAAQ,CACV,MAAMuB,GAAS3R,QACfA,MAAkB,OAAQ2R,GAAOC,IAAK5R,OACtCA,MAAiB,GACjBA,MAA8B,4BAA6B2R,GAAOE,aAAc,GAAE,CACpF,CACF,SAASC,EAAyD1B,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACrF,MAAM2B,GAAO/R,QACbA,MAAsB,EAAG,qBAAsB,IAC/CA,MAAkB,aAAc,WAA+GA,MAAqB+R,IAAO,MAAMC,GAAUhS,QAAwB,OAAOA,MAAmBgS,GAAQC,UAAY,GACjQjS,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAM8B,GAASlS,QACfA,MAAkB,OAAQkS,GAAOC,YAAjCnS,CAA8C,YAAakS,GAAOE,aAAY,CAChF,CACF,SAASC,EAAyDjC,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACrF,MAAMkC,GAAOtS,QACbA,MAAsB,EAAG,qBAAsB,IAC/CA,MAAkB,aAAc,WAA+GA,MAAqBsS,IAAO,MAAMC,GAAUvS,QAAwB,OAAOA,MAAmBuS,GAAQC,SAAW,GAChQxS,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMqC,GAASzS,QACfA,MAAkB,OAAQyS,GAAOC,WAAjC1S,CAA6C,YAAayS,GAAOE,YAAW,CAC9E,CACF,SAASC,EAAyDxC,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACrF,MAAMyC,GAAO7S,QACbA,MAAsB,EAAG,qBAAsB,GAC/CA,MAAkB,aAAc,WAA+GA,MAAqB6S,IAAO,MAAMC,GAAU9S,QAAwB,OAAOA,MAAmB8S,GAAQC,aAAe,GACpQ/S,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAM4C,GAAShT,QACfA,MAAkB,OAAQgT,GAAOC,eAAc,CACjD,CACF,SAASC,EAAyD9C,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACrF,MAAM+C,GAAOnT,QACbA,MAAsB,EAAG,qBAAsB,GAC/CA,MAAkB,aAAc,WAA+GA,MAAqBmT,IAAO,MAAMC,GAAUpT,QAAwB,OAAOA,MAAmBoT,GAAQC,cAAgB,GACrQrT,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMkD,GAAStT,QACfA,MAAkB,OAAQsT,GAAOC,gBAAe,CAClD,CACF,SAASC,EAAyDpD,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACrF,MAAMqD,GAAOzT,QACbA,MAAsB,EAAG,qBAAsB,GAC/CA,MAAkB,aAAc,WAA+GA,MAAqByT,IAAO,MAAMC,GAAU1T,QAAwB,OAAOA,MAAmB0T,GAAQC,mBAAqB,GAC1Q3T,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMwD,GAAS5T,QACfA,MAAkB,OAAQ,0BAA4B4T,GAAOC,eAAc,CAC7E,CACF,SAASC,EAA2C1D,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACvE,MAAM2D,GAAO/T,QACbA,MAAsB,EAAG,MAAO,GAAI,IACpCA,MAAkB,QAAS,SAAyEkR,IAAU,OAAOA,GAAO8C,iBAAmB,EAA/IhU,CAAkJ,aAAc,WAAkFA,MAAqB+T,IAAO,MAAME,GAAUjU,QAAwB,OAAOA,MAAmBiU,GAAQC,kBAAoB,EAA5WlU,CAA+W,aAAc,WAAkFA,MAAqB+T,IAAO,MAAMI,GAAUnU,QAAwB,OAAOA,MAAmBmU,GAAQC,kBAAoB,EAAzkBpU,CAA4kB,YAAa,SAA6EkR,IAAUlR,MAAqB+T,IAAO,MAAMM,GAAUrU,QAAwB,OAAOA,MAAmBqU,GAAQC,iBAAiBpD,IAAU,EAAjzBlR,CAAozB,aAAc,SAA8EkR,IAAUlR,MAAqB+T,IAAO,MAAMQ,GAAUvU,QAAwB,OAAOA,MAAmBuU,GAAQD,iBAAiBpD,IAAU,GAC3hClR,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMoE,GAASxU,QACfA,MAAmB,YAAawU,GAAOC,eAAvCzU,CAAuD,OAAQwU,GAAOE,aAAe,KAArF1U,CAA2F,MAAOwU,GAAOG,YAAc,MACvH3U,MAAmB,sBAAuBwU,GAAOnY,QAAjD2D,CAA0D,YAAawU,GAAOI,UAA9E5U,CAAyF,mBAAoBwU,GAAOK,iBACpH7U,MAAkB,MAAOwU,GAAO5C,IAAK5R,MAAoB,CAC3D,CACF,SAAS8U,GAA2D1E,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACvF,MAAM2E,GAAO/U,QACbA,MAAsB,EAAG,sBAAuB,IAChDA,MAAkB,eAAgB,SAAgHkR,IAAUlR,MAAqB+U,IAAO,MAAMC,GAAUhV,QAAwB,OAAOA,MAAmBgV,GAAQC,YAAY/D,IAAU,GACxRlR,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAM8E,GAASlV,QACfA,MAAkB,QAASkV,GAAOC,OAAO5jB,OAAzCyO,CAAiD,SAAUkV,GAAOtM,MAAK,CACzE,CACF,SAASwM,GAA2ChF,GAAIC,IAItD,GAJsE,EAALD,KAC/DpQ,MAAsB,EAAG,MAAO,IAChCA,MAAkB,QAAS,SAAyEkR,IAAU,OAAOA,GAAO8C,iBAAmB,GAC/IhU,SACO,EAALoQ,GAAQ,CACV,MAAMiF,GAAUrV,QAChBA,MAAkB,YAAaqV,GAAQC,YAAatV,MAAqB,CAC3E,CACF,SAASuV,GAA6DnF,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACzF,MAAMoF,GAAOxV,QACbA,MAAsB,EAAG,qBAAsB,GAC/CA,MAAkB,aAAc,SAA+GkR,IAA0D,MAAMuE,GAAlCzV,MAAqBwV,IAAqCpE,UAAiBsE,GAAW1V,QAAuBoR,UAAW,OAAOpR,MAAmByV,GAAUnE,QAAQJ,GAAQwE,GAAS9M,OAAS,GAC3W5I,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMqF,GAAYpF,GAAIe,UACtBpR,MAAkB,OAAQyV,GAAUlE,KAApCvR,CAA0C,WAAYyV,GAAUjE,SAAhExR,CAA0E,YAAayV,GAAUhE,UAAS,CAC5G,CACF,SAASkE,GAA8CvF,GAAIC,IAIzD,GAJyE,EAALD,KAClEpQ,MAAsB,EAAG,MAAO,GAChCA,MAAkB,QAAS,SAA4EkR,IAAU,OAAOA,GAAO8C,iBAAmB,GAClJhU,SACO,EAALoQ,GAAQ,CACV,MAAMsF,GAAW1V,QAAuBoR,UAClCkC,GAAStT,QACfA,MAAkB,YAAasT,GAAOsC,aAAaF,GAAS9M,OAAQ5I,MAAqB,CAC3F,CACF,MAAM6V,GAAM,SAAUC,GAAIC,GAAIC,GAAIC,IAAM,MAAO,CAAE,qBAAsBH,GAAI,4BAA6BC,GAAI,6BAA8BC,GAAI,wBAAyBC,GAAM,EAC7K,SAASC,GAAwC9F,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACpE,MAAM+F,GAAOnW,QACbA,MAAsB,EAAG,MAAO,GAChCA,MAAkB,QAAS,SAAsEkR,IAA0D,MAAMwE,GAAlC1V,MAAqBmW,IAAoC/E,UAAiBX,GAAUzQ,QAAwB,OAAOA,MAAmByQ,GAAQ2F,YAAYlF,GAAQwE,GAAS9M,OAAS,GACnT5I,MAAsB,EAAG,MAAO,GAChCA,MAAkB,EAAGuV,GAA8D,EAAG,EAAG,qBAAsB,GAC/GvV,QACAA,MAAkB,EAAG2V,GAA+C,EAAG,EAAG,MAAO,GACjF3V,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMsF,GAAWrF,GAAIe,UACfT,GAAS3Q,QACfA,MAAmB,mBAAoB2Q,GAAO0F,WAAWX,GAAS9D,MAClE5R,MAAkB,UAAWA,MAAuB,EAAG6V,GAAKlF,GAAO2F,eAAiBZ,GAAS9M,MAAO+H,GAAO2F,cAAgBZ,GAAS9M,MAAO+H,GAAO2F,cAAgBZ,GAAS9M,MAAO+H,GAAO4F,YACzLvW,MAAiB,GACjBA,MAAkB,UAAW2Q,GAAO9G,SACpC7J,MAAiB,GACjBA,MAAkB,OAAQ2Q,GAAO6F,iBAAmB7F,GAAOiF,aAAaF,GAAS9M,OAAM,CACzF,CACF,SAAS6N,GAAwDrG,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACpF,MAAMa,GAAOjR,QACbA,MAAsB,EAAG,sBAAuB,GAChDA,MAAkB,eAAgB,SAA6GkR,IAAUlR,MAAqBiR,IAAO,MAAMI,GAAUrR,QAAwB,OAAOA,MAAmBqR,GAAQqF,KAAKxF,IAAU,GAC9QlR,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMuG,GAAS3W,QACfA,MAAkB,QAAS2W,GAAOxB,OAAO5jB,OAAzCyO,CAAiD,SAAU2W,GAAOL,cAAa,CACjF,CACF,SAASM,GAAuDxG,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACnF,MAAM2B,GAAO/R,QACbA,MAAsB,EAAG,qBAAsB,IAC/CA,MAAkB,YAAa,WAA4GA,MAAqB+R,IAAO,MAAMC,GAAUhS,QAAwB,OAAOA,MAAmBgS,GAAQxB,WAAa,EAA9PxQ,CAAiQ,YAAa,WAA4GA,MAAqB+R,IAAO,MAAMQ,GAAUvS,QAAwB,OAAOA,MAAmBuS,GAAQ7B,WAAa,GAC7e1Q,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMuB,GAAS3R,QACfA,MAA8B,0BAA2B2R,GAAO1B,KAAM,IACtEjQ,MAAkB,gBAAiB2R,GAAOf,cAA1C5Q,CAAyD,gBAAiB2R,GAAOd,cAAjF7Q,CAAgG,gBAAiB2R,GAAOb,cAAxH9Q,CAAuI,gBAAiB2R,GAAOZ,cAAa,CAC9K,CACF,SAAS8F,GAAgEzG,GAAIC,IAAO,GAAS,EAALD,GAAQ,CAC5F,MAAM0G,GAAM9W,QACZA,MAAsB,EAAG,qBAAsB,GAC/CA,MAAkB,aAAc,SAAkHkR,IAAyD,MAAM6F,GAAjC/W,MAAqB8W,IAAoC1F,UAAiB4F,GAAOhX,QAAuB4I,MAAO,OAAO5I,MAAmB+W,GAAUzF,QAAQJ,GAAQ8F,IAAQ,GAC3VhX,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAM2G,GAAY1G,GAAIe,UACtBpR,MAAkB,OAAQ+W,GAAUxF,KAApCvR,CAA0C,WAAY+W,GAAUvF,SAAhExR,CAA0E,YAAa+W,GAAUtF,UAAS,CAC5G,CACF,SAASwF,GAAiD7G,GAAIC,IAI5D,GAJ4E,EAALD,KACrEpQ,MAAsB,EAAG,MAAO,EAAhCA,CAAmC,EAAG,OAAQ,GAC9CA,MAAc,GACdA,WACO,EAALoQ,GAAQ,CACV,MAAM4C,GAAShT,MAAqB,GACpCA,MAAiB,GACjBA,MAA0B,IAAKgT,GAAOkE,oBAAqB,GAAE,CAC/D,CACF,MAAMC,GAAM,SAAUrB,GAAIC,IAAM,MAAO,CAAE,qBAAsBD,GAAI,wBAAyBC,GAAM,EAClG,SAASqB,GAA2ChH,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACvE,MAAMiH,GAAOrX,QACbA,MAAsB,EAAG,IAAK,GAC9BA,MAAkB,QAAS,SAAuEkR,IAA0D,MAAM8F,GAAlChX,MAAqBqX,IAAgCzO,MAAayM,GAAUrV,QAAwB,OAAOA,MAAmBqV,GAAQe,YAAYlF,GAAQ8F,IAAQ,GAClShX,MAAsB,EAAG,MAAO,GAChCA,MAAkB,EAAG6W,GAAiE,EAAG,EAAG,qBAAsB,GAClH7W,QACAA,MAAkB,EAAGiX,GAAkD,EAAG,EAAG,MAAO,GACpFjX,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMkH,GAAWjH,GAAIe,UACf4F,GAAO3G,GAAIzH,MACX+H,GAAS3Q,QACfA,MAAmB,mBAAoB2Q,GAAO0F,WAAWiB,IAAzDtX,CAAoE,QAAS2Q,GAAO4G,oBAApFvX,CAAyG,SAAU2Q,GAAO6G,qBAA1HxX,CAAgJ,OAAQ2Q,GAAO8G,iBAAiBT,IAAhLhX,CAAuL,MAAO2Q,GAAO+G,gBAAgBV,KACrNhX,MAAkB,OAAQ2Q,GAAOgH,QAAQX,IAAQrG,GAAOiH,MAAMZ,IAAQ,IAAKhX,MAA3EA,CAAiG,SAAU2Q,GAAOkH,WAAlH7X,CAA8H,UAAWA,MAAuB,GAAImX,GAAKH,IAAQrG,GAAO2F,cAAe3F,GAAO4F,YAC9MvW,MAAmB,aAAc2Q,GAAOmH,OAAOd,KAC/ChX,MAAiB,GACjBA,MAAkB,UAAW2Q,GAAO9G,SACpC7J,MAAiB,GACjBA,MAAkB,OAAQ2Q,GAAOoH,gBAAkBpH,GAAOuG,qBAAuBF,IAAQrG,GAAOqH,KAAOrH,GAAOsH,QAAU,EAAC,CAC3H,CACF,SAASC,GAA4D9H,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACxF,MAAM+H,GAAOnY,QACbA,MAAsB,EAAG,qBAAsB,IAC/CA,MAAkB,YAAa,WAAiHA,MAAqBmY,IAAO,MAAMC,GAAUpY,QAAwB,OAAOA,MAAmBoY,GAAQC,WAAa,EAAnQrY,CAAsQ,YAAa,WAAiHA,MAAqBmY,IAAO,MAAMG,GAAUtY,QAAwB,OAAOA,MAAmBsY,GAAQC,YAAc,GACxfvY,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMuG,GAAS3W,QACfA,MAAkB,gBAAiB2W,GAAO6B,cAA1CxY,CAAyD,gBAAiB2W,GAAO8B,eAAjFzY,CAAiG,gBAAiB2W,GAAO7F,cAAzH9Q,CAAwI,gBAAiB2W,GAAO5F,cAAa,CAC/K,CACF,SAAS2H,GAAiDtI,GAAIC,IAAO,GAAS,EAALD,GAAQ,CAC7E,MAAMuI,GAAM3Y,QACZA,MAAsB,EAAG,oBAAqB,GAC9CA,MAAkB,aAAc,SAAkGkR,IAAUlR,MAAqB2Y,IAAM,MAAMhH,GAAS3R,QAAwB,OAAOA,MAAmB2R,GAAOiH,YAAY1H,IAAU,EAArQlR,CAAwQ,eAAgB,SAAoGkR,IAAUlR,MAAqB2Y,IAAM,MAAMlG,GAASzS,QAAwB,OAAOA,MAAmByS,GAAOoG,gBAAgB3H,IAAU,GACngBlR,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMO,GAAS3Q,QACfA,MAAmB,SAAU2Q,GAAOmI,kBACpC9Y,MAAkB,SAAU2Q,GAAOoI,aAAnC/Y,CAAiD,YAAsC,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeC,QAA3HjZ,CAAoI,gBAAiB2Q,GAAO2F,cAA5JtW,CAA2K,SAAmC,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeE,YAAlPlZ,CAA+P,iBAA2C,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeG,oBAA9UnZ,CAAmW,gBAA0C,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAelI,cAAjb9Q,CAAgc,gBAA0C,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAejI,cAA9gB/Q,CAA6hB,QAAkC,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeI,WAAnmBpZ,CAA+mB,YAAsC,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeK,eAAzrBrZ,CAAysB,OAAiC,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeM,UAA9wBtZ,CAAyxB,WAAqC,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeO,cAAl2BvZ,CAAi3B,mBAA6C,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeQ,sBAAl8BxZ,CAAy9B,uBAAiD,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeS,0BAA9iCzZ,CAAykC,eAAyC,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeU,kBAAtpC1Z,CAAyqC,cAAwC,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeW,YAArvC3Z,CAAkwC,UAAoC,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAeY,aAA10C5Z,CAAw1C,eAAgB2Q,GAAOiF,aAA/2C5V,CAA63C,kBAA4C,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAea,iBAA78C7Z,CAA+9C,UAAoC,MAAzB2Q,GAAOqI,eAAyB,KAAOrI,GAAOqI,eAAec,aAAY,CACrjD,CACF,MAAMC,GAAM,WAAc,MAAO,EAAI,EACrC,SAASC,GAAsD5J,GAAIC,IAAO,GAAS,EAALD,GAAQ,CAClF,MAAM6J,GAAMja,QACZA,MAAsB,EAAG,yBAA0B,GACnDA,MAAkB,eAAgB,SAA8GkR,IAAUlR,MAAqBia,IAAM,MAAMjH,GAAShT,QAAwB,OAAOA,MAAmBgT,GAAOkH,qBAAqBhJ,IAAU,GAC5RlR,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMuG,GAAS3W,QACfA,MAAmB,aAAc2W,GAAOwD,yBAAxCna,CAAkE,gBAAiB2W,GAAOyD,4BAA1Fpa,CAAuH,SAAU2W,GAAO0D,uBACxIra,MAAkB,SAAU2W,GAAO2D,YAAnCta,CAAgD,QAAmC,MAAzB2W,GAAOqC,gBAAgCrC,GAAOqC,eAAeuB,kBAAqB5D,GAAOiB,MAAQ5X,MAAuB,GAAI+Z,IAAtL/Z,CAA4L,SAAU2W,GAAOmB,OAA7M9X,CAAqN,aAAuC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAenB,WAAhS7X,CAA4S,gBAAiB2W,GAAOL,cAApUtW,CAAmV,UAAoC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAewB,kBAA3Zxa,CAA8a,OAAiC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAeyB,eAAnfza,CAAmgB,SAAmC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAe0B,gBAA1kB1a,CAA2lB,SAAmC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAe2B,iBAAlqB3a,CAAorB,iBAA2C,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAe4B,yBAAnwB5a,CAA6xB,gBAA0C,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAelI,cAA32B9Q,CAA03B,gBAA0C,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAejI,cAAx8B/Q,CAAu9B,aAAuC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAe6B,SAAoC,MAAzBlE,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAeC,SAA1mCjZ,CAAonC,QAAkC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAe8B,gBAA1rC9a,CAA2sC,OAAiC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAe+B,cAAhxC/a,CAA+xC,WAAqC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAegC,mBAAx2Chb,CAA43C,QAAkC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAeiC,gBAAl8Cjb,CAAm9C,iBAA2C,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAekC,yBAAliDlb,CAA4jD,cAAwC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAeW,YAAxoD3Z,CAAqpD,UAAoC,MAAzB2W,GAAOqC,eAAyB,KAAOrC,GAAOqC,eAAemC,iBAAgB,CAC/uD,CACF,MAAMC,GAAM,SAAUtF,IAAM,MAAO,CAAE,qBAAsBA,GAAM,EACjE,SAASuF,GAA0CjL,GAAIC,IAAO,GAAS,EAALD,GAAQ,CACtE,MAAMkL,GAAMtb,QACZA,MAAsB,EAAG,MAAO,GAChCA,MAAkB,QAAS,SAAwEkR,IAAyD,MAAMqK,GAAjCvb,MAAqBsb,IAA+B1S,MAAasJ,GAASlS,QAAwB,OAAOA,MAAmBkS,GAAOsJ,aAAatK,GAAQqK,IAAQ,GACjSvb,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMmL,GAAOlL,GAAIzH,MACX+H,GAAS3Q,QACfA,MAAkB,UAAWA,MAAuB,EAAGob,GAAKG,IAAQ5K,GAAOxf,QAAO,CACpF,CACF,IAAIsqB,GAAoB,MACpBnrB,YAAYorB,IACRjrB,KAAKirB,SAAWA,GAChBjrB,KAAKkrB,cAAgB,IAAItP,GAC7B,CACAuP,YAAYC,GAAQC,GAASroB,GAAIsoB,GAAaC,IAC1C,MAAMC,GAAWxrB,KAAKyrB,iBAAiBzoB,IAEvC,IACQooB,KAAWI,GACXxrB,KAAKkrB,cAAcpb,IAAI9M,GAAI,CACvBhD,KAAKirB,SAASS,OAAOL,GAAQM,cAAe,YAAa,IAAML,MAC/DtrB,KAAKirB,SAASS,OAAOL,GAAQM,cAAe,aAAc,IAAMJ,SAG9DH,IAAUI,KAChBA,GAAS1e,IAAK8e,IAAYA,MAC1B5rB,KAAK6rB,oBAAoB7oB,IAIjC,CAFA,MAEA,CACJ,CACA8oB,YAAYC,IACR,OAAIA,GAAIvY,QACGuY,GAAIvY,QAAQ,IAAIwY,OAAO,IAAK,KAAM,OACpCxY,QAAQ,IAAIwY,OAAO,IAAM,KAAM,OAG7BD,EAEf,CACAE,iBAAiB7B,IACb,MAAO,QAAWpqB,KAAK8rB,YAAY1B,IAAS,IAChD,CACAqB,iBAAiBzoB,IACb,OAAOhD,KAAKkrB,cAAchN,IAAIlb,GAClC,CACA6oB,oBAAoB7oB,IAChBhD,KAAKkrB,cAAchO,OAAOla,GAC9B,GAEJgoB,GAAkB3b,UAAO,SAAmCC,IAAK,OAAO,IAAKA,IAAK0b,IAAmBzb,MAAgBA,OAAoB,EACzIyb,GAAkBkB,eAAiB,IAAM,CACrC,CAAE3pB,KAAM4pB,QAEZnB,GAAkBoB,cAAQC,OAAmB,CAAEC,QAAS,WAAuC,OAAO,IAAItB,MAAkBuB,OAASJ,OAAa,EAAGK,MAAOxB,GAAmByB,WAAY,SAE3L,IAAIC,GAA6B,MAC7B7sB,YAAY8sB,GAAcC,GAAYC,GAAe5B,GAAU6B,IAC3D9sB,KAAK2sB,aAAeA,GACpB3sB,KAAK4sB,WAAaA,GAClB5sB,KAAK6sB,cAAgBA,GACrB7sB,KAAKirB,SAAWA,GAChBjrB,KAAK8sB,kBAAoBA,GACzB9sB,KAAK+sB,aAAc,EACnB/sB,KAAKikB,aAAe,EACpBjkB,KAAKkkB,YAAc,EACnBlkB,KAAKgtB,UAAY,EACjBhtB,KAAK4L,SAAU,EACf5L,KAAKitB,YAAc,EACnBjtB,KAAKmY,MAAQ,EACbnY,KAAKktB,YAAc,IAAIC,MACvBntB,KAAKotB,aAAe,IAAID,MACxBntB,KAAKqtB,aAAe,IAAIF,MACxBntB,KAAKstB,QAAS,EACdttB,KAAKutB,SAAW,EAChBvtB,KAAKwtB,SAAW,EAChBxtB,KAAKytB,YAAc,EACnBztB,KAAK0tB,WAAa,EAClB1tB,KAAK2tB,QAAS,CAClB,CACAC,WACQ5tB,KAAK6tB,QAAU7tB,KAAK8tB,iBACpB9tB,KAAK6tB,QAAS,EAEtB,CACAE,YAAYC,IACJA,GAAQC,OACRjuB,KAAK6sB,cAAc1B,YAAYnrB,KAAKiuB,MAAOjuB,KAAK4sB,WAAY,UAAW,IAAM5sB,KAAKigB,WAAY,IAAMjgB,KAAK+f,WAEjH,CACAtR,cACQzO,KAAKkuB,iBACLluB,KAAKkuB,iBAEb,CACAC,eACQnuB,KAAK8tB,iBAAmB9tB,KAAK6tB,SAC7B7tB,KAAK6tB,QAAS,EAEtB,CACAO,eACQpuB,KAAK8tB,gBAAkB9tB,KAAK6tB,SAC5B7tB,KAAK6tB,QAAS,EAEtB,CACAQ,UAAUC,IACFtuB,KAAKstB,SACDttB,KAAKuuB,qBACDvuB,KAAKwuB,eAAeF,IACpBtuB,KAAK+f,WAEA/f,KAAKyuB,eAAeH,KACzBtuB,KAAKigB,YAGTjgB,KAAK0uB,YAAc1uB,KAAK2uB,cAAcL,KACtCtuB,KAAK4uB,QAGjB,CACAC,KAAK1W,IACDnY,KAAKktB,YAAY4B,OACjB9uB,KAAKmY,MAAQA,GACbnY,KAAKstB,QAAS,EACdttB,KAAKimB,MAAK,GACNjmB,KAAK+uB,iBACL/uB,KAAKkjB,mBAETljB,KAAKkuB,gBAAkBluB,KAAKirB,SAASS,OAAO,SAAU,UAAY4C,IAAMtuB,KAAKquB,UAAUC,IAC3F,CACAM,QACI5uB,KAAKstB,QAAS,EACdttB,KAAKgvB,kBACLhvB,KAAKotB,aAAa0B,OAClB9uB,KAAKivB,eACDjvB,KAAKkuB,iBACLluB,KAAKkuB,iBAEb,CACAzK,kBACQzjB,KAAKkvB,UAAYlvB,KAAKmvB,sBACtBnvB,KAAKivB,cAEb,CACAtL,kBACQ3jB,KAAKkvB,UAAYlvB,KAAKmvB,sBACtBnvB,KAAKovB,eAEb,CACAA,gBACQpvB,KAAKkvB,WACLlvB,KAAKivB,eACLjvB,KAAKqvB,MAAQhjB,WAAW,KACfrM,KAAKigB,aACNjgB,KAAKmY,OAAQ,EACbnY,KAAKigB,WAAQ,EAElBjgB,KAAKsvB,kBAEhB,CACAL,eACQjvB,KAAKqvB,OACLjjB,aAAapM,KAAKqvB,MAE1B,CACA7K,YAAYrM,IACRnY,KAAKmY,MAAQA,GACbnY,KAAKimB,MACT,CACAhG,WACI,QAAIjgB,KAAKogB,gBACLpgB,KAAKmY,QACDnY,KAAKmY,QAAUnY,KAAK0kB,OAAO5jB,SAC3Bd,KAAKmY,MAAQ,GAEjBnY,KAAKimB,QACE,EAKf,CACAlG,WACQ/f,KAAKmgB,gBACLngB,KAAKmY,QACDnY,KAAKmY,MAAQ,IACbnY,KAAKmY,MAAQnY,KAAK0kB,OAAO5jB,OAAS,GAEtCd,KAAKimB,OAEb,CACA7F,cACI,OAAIpgB,KAAK4L,YAGA5L,KAAK0kB,SACH1kB,KAAKuvB,cAAgBvvB,KAAKmY,MAAQnY,KAAK0kB,OAAO5jB,OAAS,GAKtE,CACAqf,cACI,OAAIngB,KAAK4L,YAGA5L,KAAK0kB,SACH1kB,KAAKuvB,cAAgBvvB,KAAKmY,MAAQ,GAKjD,CACA+K,mBACI,GAAIljB,KAAKwvB,YAAcxvB,KAAK+uB,gBAAiB,CACzC,MAAMU,GAAMC,SACPD,GAAIE,mBAAsBF,GAAIG,sBAC3BH,GAAII,yBAA4BJ,GAAIK,oBAIxC9vB,KAAKgvB,kBAHLhvB,KAAK+vB,gBAGe,CAGhC,CACAnK,WAAWwE,IACP,OAAOpqB,KAAK2sB,aAAaqD,uBAAuB5F,GACpD,CACArI,SACQ/hB,KAAKkiB,cACLliB,KAAKgtB,WAAahtB,KAAKiwB,SACnBjwB,KAAKgtB,UAAYhtB,KAAKkwB,UACtBlwB,KAAKgtB,UAAYhtB,KAAKkwB,SAGlC,CACA1O,UACQxhB,KAAK2hB,eACL3hB,KAAKgtB,WAAahtB,KAAKiwB,SACnBjwB,KAAKgtB,UAAYhtB,KAAKmwB,UACtBnwB,KAAKgtB,UAAYhtB,KAAKmwB,SAEtBnwB,KAAKgtB,WAAa,GAClBhtB,KAAKowB,gBAGjB,CACA9N,aACItiB,KAAKitB,aAAe,EACxB,CACArK,cACI5iB,KAAKitB,aAAe,EACxB,CACAjJ,eACI,OAAOhkB,KAAK2sB,aAAa0D,yBAAyB,SAAWrwB,KAAKgtB,UAAY,YAAchtB,KAAKitB,YAAc,OACnH,CACA/K,YACI,OAAOliB,KAAKgtB,UAAYhtB,KAAKkwB,OACjC,CACAvO,aACI,OAAO3hB,KAAKgtB,UAAYhtB,KAAKmwB,OACjC,CACA/L,gBACI,OAAOpkB,KAAKswB,MAAQtwB,KAAKgtB,UAAY,CACzC,CACAnJ,iBAAiByK,IACTtuB,KAAKokB,kBACLpkB,KAAKutB,SAAWvtB,KAAKuwB,WAAWjC,IAChCtuB,KAAKwtB,SAAWxtB,KAAKwwB,WAAWlC,IAChCtuB,KAAKytB,YAAcztB,KAAKikB,aACxBjkB,KAAK0tB,WAAa1tB,KAAKkkB,YACvBlkB,KAAK2tB,QAAS,EACdW,GAAEmC,iBAEV,CACAC,eAAepC,IACXtuB,KAAK2tB,QAAS,CAClB,CACAgD,iBAAiBrC,IACTtuB,KAAK2tB,SACL3tB,KAAKikB,aAAejkB,KAAKytB,aAAeztB,KAAKuwB,WAAWjC,IAAKtuB,KAAKutB,UAClEvtB,KAAKkkB,YAAclkB,KAAK0tB,YAAc1tB,KAAKwwB,WAAWlC,IAAKtuB,KAAKwtB,UAExE,CACA+C,WAAWjC,IACP,OAAOA,GAAEsC,SAAWtC,GAAEsC,QAAQ9vB,OAASwtB,GAAEsC,QAAQ,GAAGC,QAAUvC,GAAEuC,OACpE,CACAL,WAAWlC,IACP,OAAOA,GAAEsC,SAAWtC,GAAEsC,QAAQ9vB,OAASwtB,GAAEsC,QAAQ,GAAGE,QAAUxC,GAAEwC,OACpE,CACAV,gBACQpwB,KAAKswB,OACLtwB,KAAKikB,aAAe,EACpBjkB,KAAKkkB,YAAc,EAE3B,CACAuK,eAAeH,IACX,OAAqB,KAAdA,GAAEyC,OACb,CACAvC,eAAeF,IACX,OAAqB,KAAdA,GAAEyC,OACb,CACApC,cAAcL,IACV,OAAqB,KAAdA,GAAEyC,OACb,CACAhB,iBACI,MAAM1E,GAAUqE,SAASsB,gBACrB3F,GAAQ4F,kBACR5F,GAAQ4F,oBAEH5F,GAAQ6F,oBACb7F,GAAQ6F,sBAEH7F,GAAQ8F,qBACb9F,GAAQ8F,uBAEH9F,GAAQ+F,yBACb/F,GAAQ+F,yBAEhB,CACApC,kBACI,GAAIhvB,KAAKqxB,eAAgB,CACrB,MAAM5B,GAAMC,SACRD,GAAI6B,eACJ7B,GAAI6B,iBAEC7B,GAAI8B,iBACT9B,GAAI8B,mBAEC9B,GAAI+B,oBACT/B,GAAI+B,sBAEC/B,GAAIgC,sBACThC,GAAIgC,sBAAoB,CAGpC,CACAJ,eACI,MAAM5B,GAAMC,SACZ,OAAOD,GAAIE,mBAAqBF,GAAII,yBAC7BJ,GAAIG,sBAAwBH,GAAIK,mBAC3C,CACA7J,KAAKyL,IAAQ,GACT1xB,KAAK4L,SAAU,EACf5L,KAAKivB,eACLjvB,KAAKqtB,aAAayB,KAAK9uB,KAAKmY,OACxBuZ,KAAU1xB,KAAKmkB,UACfnkB,KAAK2xB,QAGLtlB,WAAW,IAAMrM,KAAK2xB,QAAS,IAEvC,CACAA,QACI3xB,KAAKgtB,UAAY,EACjBhtB,KAAKitB,YAAc,EACnBjtB,KAAKowB,gBACLpwB,KAAKmhB,IAAMnhB,KAAK4lB,WAAW5lB,KAAK0kB,OAAO1kB,KAAKmY,QAC5CnY,KAAK4xB,SAAW5xB,KAAKmY,MACrBnY,KAAK6kB,YAAc7kB,KAAKmlB,aAAanlB,KAAKmY,OAC1CnY,KAAK8sB,kBAAkB+E,eACvBxlB,WAAW,KACHrM,KAAK8xB,SAAS9xB,KAAK+xB,aAAapG,gBAChC3rB,KAAK4L,SAAU,EACf5L,KAAKovB,gBACLpvB,KAAK8sB,kBAAkB+E,iBAGvBxlB,WAAW,KACHrM,KAAK4L,UACL5L,KAAK+sB,aAAc,EACnB/sB,KAAK8sB,kBAAkB+E,eAAY,GAG3C7xB,KAAK+xB,aAAapG,cAAcqG,OAAS,KACrChyB,KAAK4L,SAAU,EACf5L,KAAK+sB,aAAc,EACnB/sB,KAAK+xB,aAAapG,cAAcqG,OAAS,KACzChyB,KAAKovB,gBACLpvB,KAAK8sB,kBAAkB+E,cAAY,EACvC,EAGZ,CACAC,SAASG,IACL,QAAKA,GAAIlnB,mBAGOknB,GAAIC,aAAiB,KAAoC,IAArBD,GAAIC,aAC5D,GAEJxF,GAA2Brd,UAAO,SAA4CC,IAAK,OAAO,IAAKA,IAAKod,IAA4Bnd,MAAyB4iB,MAAsB5iB,MAAyBA,OAAoBA,MAAyByb,IAAoBzb,MAAyBA,OAAmBA,MAAyBA,OAA4B,EAC1Wmd,GAA2B0F,UAAqB7iB,MAAyB,CAAEhN,KAAMmqB,GAA4B2F,UAAW,CAAC,CAAC,wBAAyBC,UAAW,SAA0C3S,GAAIC,IAEtM,GAFsN,EAALD,IAC/MpQ,KAAmBkQ,EAAK,GACjB,EAALE,GAAQ,CACV,IAAI4S,GACJhjB,MAAsBgjB,GAAKhjB,WAA0BqQ,GAAImS,aAAeQ,GAAGb,OAC7E,EAAGc,aAAc,SAAiD7S,GAAIC,IAAgB,EAALD,IAC/EpQ,MAAkB,aAAc,WAAsE,OAAOqQ,GAAIuO,cAAgB,EAAjI5e,CAAoI,aAAc,WAAsE,OAAOqQ,GAAIwO,cAAgB,EACrP,EAAGqE,OAAQ,CAAE5E,OAAQ,SAAUnJ,OAAQ,SAAUS,aAAc,eAAgBY,gBAAiB,kBAAmB+H,eAAgB,iBAAkBG,MAAO,QAASuB,WAAY,aAAcT,gBAAiB,kBAAmB2D,aAAc,eAAgBhE,WAAY,aAAcH,mBAAoB,qBAAsBlO,cAAe,gBAAiBC,cAAe,gBAAiBqS,UAAW,YAAavP,eAAgB,iBAAkBwP,YAAa,cAAe1D,SAAU,WAAYI,iBAAkB,mBAAoBH,qBAAsB,uBAAwBI,aAAc,eAAgBe,KAAM,OAAQL,SAAU,WAAYC,QAAS,UAAWC,QAAS,UAAWlO,WAAY,aAAcP,YAAa,cAAeyC,UAAW,YAAa/K,QAAS,UAAWyZ,OAAQ,SAAUrQ,eAAgB,iBAAkBM,gBAAiB,kBAAmBgQ,SAAU,WAAY1R,aAAc,eAAgB2R,QAAS,WAAaC,QAAS,CAAE9F,YAAa,cAAeE,aAAc,eAAgBC,aAAc,gBAAkB4F,SAAU,CAAC1jB,OAA8B2jB,MAAO,GAAIC,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,eAAgB,eAAgB,gBAAiB,gBAAiB,YAAa,YAAa,EAAG,QAAS,CAAC,EAAG,2BAA4B,CAAC,EAAG,6BAA8B,CAAC,EAAG,OAAQ,WAAY,YAAa,aAAc,EAAG,QAAS,WAAY,CAAC,QAAS,mBAAoB,cAAe,OAAQ,WAAY,GAAI,EAAG,OAAQ,EAAG,QAAS,CAAC,EAAG,OAAQ,WAAY,aAAc,EAAG,QAAS,CAAC,EAAG,OAAQ,aAAc,EAAG,QAAS,CAAC,EAAG,OAAQ,cAAe,CAAC,EAAG,sBAAuB,sBAAuB,CAAC,cAAe,QAAS,CAAC,EAAG,8BAA+B,EAAG,QAAS,UAAW,YAAa,WAAY,aAAc,CAAC,EAAG,mCAAoC,CAAC,QAAS,6CAA8C,EAAG,MAAO,qBAAsB,YAAa,mBAAoB,YAAa,OAAQ,MAAO,QAAS,aAAc,aAAc,YAAa,aAAc,EAAG,QAAS,CAAC,EAAG,QAAS,SAAU,eAAgB,EAAG,QAAS,CAAC,QAAS,2BAA4B,EAAG,YAAa,QAAS,EAAG,QAAS,CAAC,EAAG,eAAgB,eAAgB,gBAAiB,gBAAiB,YAAa,aAAc,CAAC,EAAG,OAAQ,WAAY,YAAa,cAAe,CAAC,cAAe,OAAQ,WAAY,GAAI,EAAG,mBAAoB,EAAG,QAAS,CAAC,EAAG,OAAQ,WAAY,cAAe,CAAC,EAAG,0BAA2B,qBAAsB,EAAG,MAAO,QAAS,aAAc,aAAc,YAAa,cAAe,CAAC,eAAgB,IAAK,CAAC,EAAG,QAAS,SAAU,gBAAiB,CAAC,EAAG,2BAA4B,EAAG,YAAa,UAAWC,SAAU,SAA6C1T,GAAIC,IAAgB,EAALD,KAC9pFpQ,MAAkB,EAAGmQ,EAA0D,EAAG,EAAG,qBAAsB,GAC3GnQ,MAAsB,EAAG,MAAO,EAAhCA,CAAmC,EAAG,MAAO,GAC7CA,MAAkB,EAAGgR,EAA0D,EAAG,EAAG,qBAAsB,GAC3GhR,MAAkB,EAAG0R,EAAyC,EAAG,EAAG,IAAK,GACzE1R,MAAkB,EAAG8R,EAA0D,EAAG,EAAG,qBAAsB,GAC3G9R,MAAkB,EAAGqS,EAA0D,EAAG,EAAG,qBAAsB,GAC3GrS,MAAkB,EAAG4S,EAA0D,EAAG,EAAG,qBAAsB,GAC3G5S,MAAkB,EAAGkT,EAA0D,EAAG,EAAG,qBAAsB,GAC3GlT,MAAkB,EAAGwT,EAA0D,EAAG,EAAG,qBAAsB,GAC3GxT,MAAsB,GAAI,qBAAsB,GAChDA,MAAkB,aAAc,WAA2F,OAAOqQ,GAAIgP,OAAS,GAC/Irf,YACAA,MAAsB,GAAI,MAAO,GACjCA,MAAiB,GAAI,IAAK,GAC1BA,QACAA,MAAsB,GAAI,MAAO,IACjCA,MAAkB,QAAS,WAAuE,OAAOqQ,GAAI8S,cAAgB9S,GAAIgP,OAAS,EAA1Irf,CAA6I,UAAW,SAAqEkR,IAAU,OAAOb,GAAI8Q,eAAejQ,GAAS,EAA1QlR,CAA6Q,YAAa,SAAuEkR,IAAU,OAAOb,GAAI+Q,iBAAiBlQ,GAAS,EAAhZlR,CAAmZ,WAAY,SAAsEkR,IAAU,OAAOb,GAAI8Q,eAAejQ,GAAS,EAAlhBlR,CAAqhB,YAAa,SAAuEkR,IAAU,OAAOb,GAAI+Q,iBAAiBlQ,GAAS,GACxpBlR,MAAsB,GAAI,MAAO,IACjCA,MAAkB,GAAI8T,EAA4C,EAAG,GAAI,MAAO,IAChF9T,MAAkB,GAAI8U,GAA4D,EAAG,EAAG,sBAAuB,IAC/G9U,QACAA,MAAkB,GAAIoV,GAA4C,EAAG,EAAG,MAAO,IAC/EpV,SACO,EAALoQ,KACFpQ,MAAkB,OAAQqQ,GAAIiO,QAC9Bte,MAAiB,GACjBA,MAAkB,UAAWqQ,GAAIxG,SACjC7J,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAIkT,UAAYlT,GAAIuB,KAC9C5R,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAI0Q,MAC9B/gB,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAI0Q,MAC9B/gB,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAIiT,QAC9BtjB,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAIiT,QAC9BtjB,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAI4P,YAC9BjgB,MAAiB,GACjBA,MAAkB,OAAQ,qBAAuBqQ,GAAI+S,WACrDpjB,MAAiB,GACjBA,MAAmB,qBAAsBqQ,GAAImN,aAC7Cxd,MAAiB,GACjBA,MAA8B,wCAAyCqQ,GAAIgT,YAAa,IACxFrjB,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAIuB,KAC9B5R,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAImT,SAC9BxjB,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAImG,iBAAmBnG,GAAIiF,aACvD,EAAGyO,aAAc,WAAc,MAAO,CAACC,KAAgBA,KAAaC,GAA2BC,GAA2BC,GAA6B,EAAGC,OAAQ,CAAC,s4EAAu4EC,gBAAiB,IACjkFlH,GAA2BR,eAAiB,IAAM,CAC9C,CAAE3pB,KAAMsxB,MACR,CAAEtxB,KAAMuxB,OACR,CAAEvxB,KAAMyoB,IACR,CAAEzoB,KAAM4pB,OACR,CAAE5pB,KAAMwxB,SAAmB,EAE/Bje,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,cAAU,IAAM,EACzD4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,oBAAgB,IAAM,EAC/D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,uBAAmB,IAAM,EAClE4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,cAAU,IAAM,EACzD4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,sBAAkB,IAAM,EACjE4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,aAAS,IAAM,EACxD4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,kBAAc,IAAM,EAC7D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,uBAAmB,IAAM,EAClE4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,oBAAgB,IAAM,EAC/D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,kBAAc,IAAM,EAC7D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,0BAAsB,IAAM,EACrE4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,qBAAiB,IAAM,EAChE4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,qBAAiB,IAAM,EAChE4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,iBAAa,IAAM,EAC5D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,sBAAkB,IAAM,EACjE4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,mBAAe,IAAM,EAC9D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,gBAAY,IAAM,EAC3D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,wBAAoB,IAAM,EACnE4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,4BAAwB,IAAM,EACvE4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,oBAAgB,IAAM,EAC/D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,YAAQ,IAAM,EACvD4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,gBAAY,IAAM,EAC3D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,eAAW,IAAM,EAC1D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,eAAW,IAAM,EAC1D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,kBAAc,IAAM,EAC7D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,mBAAe,IAAM,EAC9D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,iBAAa,IAAM,EAC5D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,eAAW,IAAM,EAC1D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,cAAU,IAAM,EACzD4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,sBAAkB,IAAM,EACjE4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,uBAAmB,IAAM,EAClE4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,gBAAY,IAAM,EAC3D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,oBAAgB,IAAM,EAC/D4M,MAAW,IACPke,UACDtH,GAA2BxjB,UAAW,eAAW,IAAM,EAC1D4M,MAAW,IACPme,UACDvH,GAA2BxjB,UAAW,mBAAe,IAAM,EAC9D4M,MAAW,IACPme,UACDvH,GAA2BxjB,UAAW,oBAAgB,IAAM,EAC/D4M,MAAW,IACPme,UACDvH,GAA2BxjB,UAAW,oBAAgB,IAAM,EAC/D4M,MAAW,IACPoe,OAAU,iBACXxH,GAA2BxjB,UAAW,oBAAgB,IAAM,EAC/D4M,MAAW,IACPqe,OAAa,eACdzH,GAA2BxjB,UAAW,eAAgB,OAAI,EAC7D4M,MAAW,IACPqe,OAAa,eACdzH,GAA2BxjB,UAAW,eAAgB,MAEzD,MAAMkrB,IAENA,GAAoBC,KAAO,OAC3BD,GAAoBE,MAAQ,QAC5BF,GAAoBG,OAAS,SAC7BH,GAAoBI,KAAO,OAE3B,IAAIC,GAA2B,MAC3B50B,YAAY8sB,GAAcC,GAAYC,IAClC7sB,KAAK2sB,aAAeA,GACpB3sB,KAAK4sB,WAAaA,GAClB5sB,KAAK6sB,cAAgBA,GACrB7sB,KAAK00B,WAAa,IAAIvH,MACtBntB,KAAKqtB,aAAe,IAAIF,MACxBntB,KAAK20B,gBAAiB,CAC1B,CAGA/G,WACQ5tB,KAAK6tB,QAAU7tB,KAAK8tB,iBACpB9tB,KAAK6tB,QAAS,GAEd7tB,KAAKkvB,UACLlvB,KAAKovB,eAEb,CACArB,YAAYC,IACJA,GAAQC,OACRjuB,KAAK6sB,cAAc1B,YAAYnrB,KAAKiuB,MAAOjuB,KAAK4sB,WAAY,QAAS,IAAM5sB,KAAKigB,WAAY,IAAMjgB,KAAK+f,WAE/G,CACAoO,eACQnuB,KAAK8tB,iBAAmB9tB,KAAK6tB,SAC7B7tB,KAAK6tB,QAAS,GAEd7tB,KAAKkvB,UAAYlvB,KAAKmvB,sBACtBnvB,KAAKivB,cAEb,CACAb,eACQpuB,KAAK8tB,gBAAkB9tB,KAAK6tB,SAC5B7tB,KAAK6tB,QAAS,GAEd7tB,KAAKkvB,UAAYlvB,KAAKmvB,sBACtBnvB,KAAKovB,eAEb,CACA1hB,MAAMyK,IACFnY,KAAK6lB,cAAgB1N,EACzB,CACAyc,YACI,IAAK50B,KAAK0kB,OACN,MAAO,GAEX,GAAI1kB,KAAKkpB,YAAa,CAClB,MAAM2L,GAAU,CAAC70B,KAAK6lB,eAChBiP,GAAY90B,KAAK6lB,cAAgB,GACrB,IAAdiP,IAAoB90B,KAAKuvB,aACzBsF,GAAQ/yB,KAAK9B,KAAK0kB,OAAO5jB,OAAS,GAE7Bg0B,IAAa,GAClBD,GAAQ/yB,KAAKgzB,IAEjB,MAAMC,GAAY/0B,KAAK6lB,cAAgB,EACvC,OAAIkP,KAAc/0B,KAAK0kB,OAAO5jB,QAAUd,KAAKuvB,aACzCsF,GAAQ/yB,KAAK,GAERizB,GAAY/0B,KAAK0kB,OAAO5jB,QAC7B+zB,GAAQ/yB,KAAKizB,IAEV/0B,KAAK0kB,OAAO9gB,OAAO,CAACquB,GAAKttB,MAA6B,IAAvBkwB,GAAQhxB,QAAQc,IAAS,CAG/D,OAAO3E,KAAK0kB,MAEpB,CACA0K,gBACIpvB,KAAKivB,eACLjvB,KAAKqvB,MAAQ2F,YAAY,KAChBh1B,KAAKigB,aACNjgB,KAAK6lB,eAAgB,EACrB7lB,KAAKigB,WAAQ,EAElBjgB,KAAKsvB,iBACZ,CACAL,eACQjvB,KAAKqvB,OACL4F,cAAcj1B,KAAKqvB,MAE3B,CACA1J,YAAYuP,GAAO/c,IACXnY,KAAK8lB,YACL9lB,KAAK00B,WAAW5F,KAAK3W,IACrB+c,GAAM3R,kBACN2R,GAAMzE,iBAEd,CACAxK,KAAK9N,IACDnY,KAAK6lB,cAAgB1N,GACrBnY,KAAKqtB,aAAayB,KAAK9uB,KAAK6lB,eAC5B7lB,KAAKm1B,kBACT,CACAlV,WACI,SAAIjgB,KAAKogB,gBAAiBpgB,KAAK20B,kBAC3B30B,KAAK6lB,gBACD7lB,KAAK6lB,gBAAkB7lB,KAAK0kB,OAAO5jB,SACnCd,KAAK6lB,cAAgB,GAEzB7lB,KAAKqtB,aAAayB,KAAK9uB,KAAK6lB,eAC5B7lB,KAAKm1B,oBACE,EAKf,CACApV,WACQ/f,KAAKmgB,eAAiBngB,KAAK20B,iBAC3B30B,KAAK6lB,gBACD7lB,KAAK6lB,cAAgB,IACrB7lB,KAAK6lB,cAAgB7lB,KAAK0kB,OAAO5jB,OAAS,GAE9Cd,KAAKqtB,aAAayB,KAAK9uB,KAAK6lB,eAC5B7lB,KAAKm1B,mBAEb,CACAA,mBACIn1B,KAAK20B,gBAAiB,EACtB,IAAIS,GAAU,KACVp1B,KAAKmkB,YAAciQ,GAAoBE,OACpCt0B,KAAKmkB,YAAciQ,GAAoBC,QAC1Ce,GAAU,KAEd/oB,WAAW,KACPrM,KAAK20B,gBAAiB,GACvBS,GACP,CACAhV,cACI,QAAIpgB,KAAK0kB,SACE1kB,KAAKuvB,cAAgBvvB,KAAK6lB,cAAgB7lB,KAAK0kB,OAAO5jB,OAAS,EAK9E,CACAqf,cACI,QAAIngB,KAAK0kB,SACE1kB,KAAKuvB,cAAgBvvB,KAAK6lB,cAAgB,EAKzD,CACAD,WAAWwE,IACP,OAAOpqB,KAAK2sB,aAAa0D,yBAAyBrwB,KAAK6sB,cAAcZ,iBAAiB7B,IAC1F,GAEJqK,GAAyBplB,UAAO,SAA0CC,IAAK,OAAO,IAAKA,IAAKmlB,IAA0BllB,MAAyB4iB,MAAsB5iB,MAAyBA,OAAoBA,MAAyByb,IAAqB,EACpQyJ,GAAyBrC,UAAqB7iB,MAAyB,CAAEhN,KAAMkyB,GAA0BpC,UAAW,CAAC,CAAC,sBAAuBG,aAAc,SAA+C7S,GAAIC,IAAgB,EAALD,IACjNpQ,MAAkB,aAAc,WAAoE,OAAOqQ,GAAIuO,cAAgB,EAA/H5e,CAAkI,aAAc,WAAoE,OAAOqQ,GAAIwO,cAAgB,EACjP,EAAGqE,OAAQ,CAAE5E,OAAQ,SAAUhI,cAAe,gBAAiBnB,OAAQ,SAAUoB,UAAW,YAAagI,eAAgB,iBAAkBG,MAAO,QAAS9J,UAAW,YAAa3E,KAAM,OAAQa,cAAe,gBAAiBC,cAAe,gBAAiB4O,SAAU,WAAYI,iBAAkB,mBAAoBH,qBAAsB,uBAAwBI,aAAc,eAAgBrG,YAAa,cAAe9P,QAAS,UAAW+L,aAAc,eAAgBY,gBAAiB,kBAAmBgN,QAAS,WAAaC,QAAS,CAAE0B,WAAY,aAAcrH,aAAc,gBAAkB4F,SAAU,CAAC1jB,OAA8B2jB,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,QAAS,oBAAqB,EAAG,UAAW,mBAAoB,QAAS,EAAG,QAAS,WAAY,CAAC,EAAG,QAAS,SAAU,eAAgB,EAAG,QAAS,CAAC,EAAG,QAAS,eAAgB,eAAgB,gBAAiB,gBAAiB,YAAa,YAAa,EAAG,QAAS,CAAC,EAAG,oBAAqB,EAAG,UAAW,SAAU,CAAC,EAAG,6BAA8B,CAAC,EAAG,OAAQ,WAAY,YAAa,aAAc,EAAG,QAAS,WAAY,CAAC,QAAS,yBAA0B,EAAG,YAAa,QAAS,EAAG,QAAS,CAAC,EAAG,OAAQ,WAAY,YAAa,cAAe,CAAC,EAAG,yBAA0B,EAAG,YAAa,SAAU,CAAC,EAAG,QAAS,SAAU,gBAAiB,CAAC,EAAG,eAAgB,eAAgB,gBAAiB,gBAAiB,YAAa,cAAeC,SAAU,SAA2C1T,GAAIC,IAAgB,EAALD,KACp8CpQ,MAAsB,EAAG,OACzBA,MAAkB,EAAGkW,GAAyC,EAAG,GAAI,MAAO,GAC5ElW,QACAA,MAAkB,EAAGyW,GAAyD,EAAG,EAAG,sBAAuB,GAC3GzW,MAAkB,EAAG4W,GAAwD,EAAG,EAAG,qBAAsB,IAClG,EAALxG,KACFpQ,MAA8B,mDAAoDqQ,GAAIuE,UAAW,2BAA4BvE,GAAIJ,KAAM,IACvIjQ,MAAiB,GACjBA,MAAkB,UAAWqQ,GAAIgV,aACjCrlB,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAImT,SAC9BxjB,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAIiO,QAChC,EAAGyF,aAAc,WAAc,MAAO,CAACC,KAAgBA,KAAgBA,KAAaC,GAA2BC,GAA2BC,GAA6B,EAAGC,OAAQ,CAAC,+wEAAgxEC,gBAAiB,IAC19Ea,GAAyBvI,eAAiB,IAAM,CAC5C,CAAE3pB,KAAMsxB,MACR,CAAEtxB,KAAMuxB,OACR,CAAEvxB,KAAMyoB,MAAmB,EAE/BlV,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,cAAU,IAAM,EACvD4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,iBAAa,IAAM,EAC1D4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,qBAAiB,IAAM,EAC9D4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,cAAU,IAAM,EACvD4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,sBAAkB,IAAM,EAC/D4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,aAAS,IAAM,EACtD4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,iBAAa,IAAM,EAC1D4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,YAAQ,IAAM,EACrD4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,qBAAiB,IAAM,EAC9D4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,qBAAiB,IAAM,EAC9D4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,gBAAY,IAAM,EACzD4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,wBAAoB,IAAM,EACjE4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,4BAAwB,IAAM,EACrE4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,oBAAgB,IAAM,EAC7D4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,mBAAe,IAAM,EAC5D4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,eAAW,IAAM,EACxD4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,oBAAgB,IAAM,EAC7D4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,uBAAmB,IAAM,EAChE4M,MAAW,IACPke,UACDS,GAAyBvrB,UAAW,eAAW,IAAM,EACxD4M,MAAW,IACPme,UACDQ,GAAyBvrB,UAAW,kBAAc,IAAM,EAC3D4M,MAAW,IACPme,UACDQ,GAAyBvrB,UAAW,oBAAgB,IAAM,EAC7D4M,MAAW,IACPqe,OAAa,eACdM,GAAyBvrB,UAAW,eAAgB,OAAI,EAC3D4M,MAAW,IACPqe,OAAa,eACdM,GAAyBvrB,UAAW,eAAgB,MAEvD,MAAMmsB,IAENA,GAAgBC,OAAS,EACzBD,GAAgBE,IAAM,EACtBF,GAAgBG,KAAO,EAEvB,IAAIC,GAAgC,MAChC51B,YAAY8sB,GAAcC,GAAYC,IAClC7sB,KAAK2sB,aAAeA,GACpB3sB,KAAK4sB,WAAaA,GAClB5sB,KAAK6sB,cAAgBA,GACrB7sB,KAAK01B,aAAe,EACpB11B,KAAKqtB,aAAe,IAAIF,MACxBntB,KAAKmY,MAAQ,CACjB,CACAyV,WACA,CACAG,YAAYC,IACJA,GAAQnI,eACR7lB,KAAK21B,gBAEL3H,GAAQC,OACRjuB,KAAK6sB,cAAc1B,YAAYnrB,KAAKiuB,MAAOjuB,KAAK4sB,WAAY,aAAc,IAAM5sB,KAAK8nB,YAAa,IAAM9nB,KAAK4nB,YAE7G5nB,KAAK0kB,SACL1kB,KAAKymB,oBAAsBzmB,KAAK0kB,OAAO5jB,OAAUd,KAAKunB,KAAOvnB,KAAKwnB,QAE1E,CACA2G,eACInuB,KAAK41B,YAAa,CACtB,CACAxH,eACIpuB,KAAK41B,YAAa,CACtB,CACAloB,MAAMyK,IACFnY,KAAK6lB,cAAgB1N,GACrBnY,KAAK61B,qBACL71B,KAAKmY,MAAQ,EACbnY,KAAK21B,eACT,CACAf,YACI,IAAK50B,KAAK0kB,OACN,MAAO,GAEX,GAAI1kB,KAAKsnB,eACL,OAAOtnB,KAAK0kB,OAAOjd,MAAM,EAAGzH,KAAKunB,KAAOvnB,KAAKwnB,SAE5C,GAAIxnB,KAAKkpB,aAAelpB,KAAK8G,QAAUuuB,GAAgBE,IAAK,CAC7D,IAAIO,GAAY,EAChB,OAAI91B,KAAK8G,QAAUuuB,GAAgBC,OAC/BQ,IAAa91B,KAAKmY,MAAQnY,KAAKwnB,QAAUxnB,KAAK+1B,UAAY/1B,KAAKunB,KAE1DvnB,KAAK8G,QAAUuuB,GAAgBG,OACpCM,GAAY91B,KAAKmY,MAAUnY,KAAKwnB,QAAUxnB,KAAKunB,KAAQ,GAEvDuO,IAAa91B,KAAK01B,aAClBI,GAAY91B,KAAK01B,aAGjB11B,KAAK01B,aAAeI,GAEjB91B,KAAK0kB,OAAOjd,MAAM,EAAGquB,GAAS,CAGrC,OAAO91B,KAAK0kB,MAEpB,CACAiB,YAAYuP,GAAO/c,IACVnY,KAAKknB,QAAQ/O,MACdnY,KAAK6lB,cAAgB1N,GACrBnY,KAAKqtB,aAAayB,KAAK3W,IACvB+c,GAAM3R,kBACN2R,GAAMzE,iBAEd,CACAvJ,QAAQ/O,IACJ,GAAInY,KAAKmnB,OAASnnB,KAAKmnB,MAAMrmB,QAAUd,KAAKmnB,MAAMhP,IAC9C,OAAO,CAEf,CACA2P,YACI,GAAI9nB,KAAKgoB,eAAgB,CACrBhoB,KAAKmY,OAASnY,KAAK+1B,SACnB,MAAMC,GAAWh2B,KAAKi2B,cAAgBj2B,KAAKwnB,QACvCxnB,KAAKmY,MAAQ6d,KACbh2B,KAAKmY,MAAQ6d,IAEjBh2B,KAAKk2B,uBAAqB,CAElC,CACAtO,WACQ5nB,KAAK+nB,gBACL/nB,KAAKmY,OAASnY,KAAK+1B,SACf/1B,KAAKmY,MAAQ,IACbnY,KAAKmY,MAAQ,GAEjBnY,KAAKk2B,wBAEb,CACAlO,eACI,OAAOhoB,KAAKmY,MAAQnY,KAAKwnB,QAAUxnB,KAAKi2B,aAC5C,CACAlO,cACI,OAAsB,IAAf/nB,KAAKmY,KAChB,CACA6O,iBAAiB7O,IACb,IAAIge,GACJ,OACIA,GADAn2B,KAAK8G,QAAUuuB,GAAgBC,OACbl0B,KAAKg1B,MAAMje,GAAQnY,KAAKunB,MAErCvnB,KAAK8G,QAAUuuB,GAAgBG,KACjBrd,GAAQnY,KAAKwnB,QAAYpmB,KAAKg1B,MAAMje,IAASnY,KAAKunB,KAAOvnB,KAAKwnB,UAAYxnB,KAAKwnB,QAE7FxnB,KAAK8G,QAAUuuB,GAAgBE,KAAOv1B,KAAKsnB,eAC9BnP,GAAQnY,KAAKwnB,QAGbrP,GAAQ/W,KAAKkd,KAAKte,KAAK0kB,OAAO5jB,OAASd,KAAKunB,MAE3DvnB,KAAKq2B,qBAAqBF,GAAiBn2B,KAAKwnB,QAC3D,CACAP,gBAAgB9O,IACZ,IAAIge,GACJ,OACIA,GADAn2B,KAAK8G,QAAUuuB,GAAgBC,OACbnd,GAAQnY,KAAKunB,KAE1BvnB,KAAK8G,QAAUuuB,GAAgBG,KAClBp0B,KAAKg1B,MAAMje,GAAQnY,KAAKwnB,SAAYpmB,KAAKg1B,MAAMje,IAASnY,KAAKunB,KAAOvnB,KAAKwnB,UAAYxnB,KAAKunB,KAEvGvnB,KAAK8G,QAAUuuB,GAAgBE,KAAOv1B,KAAKsnB,eAC9BlmB,KAAKg1B,MAAMje,GAAQnY,KAAKwnB,SAGxBpmB,KAAKg1B,MAAMje,GAAQ/W,KAAKkd,KAAKte,KAAK0kB,OAAO5jB,OAASd,KAAKunB,OAEtEvnB,KAAKq2B,qBAAqBF,GAAiBn2B,KAAKunB,KAC3D,CACAT,oBACI,OAAO9mB,KAAKs2B,sBAAsBt2B,KAAKwnB,QAC3C,CACAT,qBACI,OAAO/mB,KAAKs2B,sBAAsBt2B,KAAKunB,KAC3C,CACA2O,wBACIl2B,KAAKu2B,gBAAoB,IAAMv2B,KAAKwnB,QAAWxnB,KAAKmY,MAAS,IAC7DnY,KAAKw2B,uBAA0Bx2B,KAAKy2B,QAAYz2B,KAAKwnB,QAAU,GACzDxnB,KAAKy2B,OAAUz2B,KAAKwnB,SAAYxnB,KAAKmY,MAAS,IACxD,CACA0d,qBACI71B,KAAKu2B,eAAiB,MACtBv2B,KAAKw2B,qBAAuB,KAChC,CACAE,gBACI,OAAI12B,KAAKsnB,iBAIEtnB,KAAK6tB,QAAU7tB,KAAK0kB,QAAU1kB,KAAK0kB,OAAO5jB,OAASd,KAAK22B,qBACtD32B,KAAK8tB,gBAAkB9tB,KAAK41B,YAE7C,CACAD,gBACI,GAAI31B,KAAK0kB,OAAQ,CACb,IAAIkS,GAUJ,GARIA,GADA52B,KAAK8G,QAAUuuB,GAAgBC,OACpBl0B,KAAKg1B,MAAMp2B,KAAK6lB,cAAgB7lB,KAAKunB,MAGrCvnB,KAAK6lB,cAAgBzkB,KAAKkd,KAAKte,KAAK0kB,OAAO5jB,OAASd,KAAKunB,MAEpEvnB,KAAKsnB,iBACLsP,GAAW,GAEXA,GAAW52B,KAAKmY,OAASye,IAAY52B,KAAKmY,MAAQnY,KAAKwnB,QAAS,CAChE,MAAMwO,GAAWh2B,KAAKi2B,cAAgBj2B,KAAKwnB,QAC3CxnB,KAAKmY,MAAQye,GAAWZ,GAAWA,GAAWY,GAC9C52B,KAAKk2B,uBAAqB,EAGtC,CACAtQ,WAAWwE,IACP,OAAOpqB,KAAK2sB,aAAa0D,yBAAyBrwB,KAAK6sB,cAAcZ,iBAAiB7B,IAC1F,CACAiM,qBAAqBle,GAAON,IACxB,OAAO7X,KAAK62B,aAAa,QAAY,IAAMhf,GAASM,GAAS,QACrDnY,KAAKy2B,QAAY5e,GAAQ,GAAK7X,KAAKy2B,OAAU5e,IAAUM,GAAS,MAC5E,CACAme,sBAAsBze,IAClB,OAAoB,IAAhB7X,KAAKy2B,OACEz2B,KAAK62B,aAAa,QAAW,IAAMhf,GAAS,QAC1CA,GAAQ,GAAK7X,KAAKy2B,OAAU5e,GAAS,OAGvC7X,KAAK62B,aAAa,QAAW,IAAMhf,GAAS,WAE3D,CACAoe,cACI,GAAIj2B,KAAK8G,QAAUuuB,GAAgBG,KAAM,CACrC,IAAIQ,GAAY50B,KAAKg1B,MAAMp2B,KAAK0kB,OAAO5jB,OAASd,KAAK22B,mBAAqB32B,KAAKwnB,QAC/E,OAAIxnB,KAAK0kB,OAAO5jB,OAASd,KAAK22B,kBAAoB32B,KAAKwnB,QACnDwO,IAAYh2B,KAAKwnB,QAGjBwO,IAAYh2B,KAAK0kB,OAAO5jB,OAASd,KAAK22B,kBAEnCX,GAGP,OAAO50B,KAAKkd,KAAKte,KAAK0kB,OAAO5jB,OAASd,KAAKunB,KAEnD,CACAoP,kBACI,OAAO32B,KAAKwnB,QAAUxnB,KAAKunB,IAC/B,CACAsP,aAAa70B,IACT,OAAOhC,KAAK2sB,aAAa0D,yBAAyBruB,GACtD,GAEJyzB,GAA8BpmB,UAAO,SAA+CC,IAAK,OAAO,IAAKA,IAAKmmB,IAA+BlmB,MAAyB4iB,MAAsB5iB,MAAyBA,OAAoBA,MAAyByb,IAAqB,EACnRyK,GAA8BrD,UAAqB7iB,MAAyB,CAAEhN,KAAMkzB,GAA+BpD,UAAW,CAAC,CAAC,2BAA4BG,aAAc,SAAoD7S,GAAIC,IAAgB,EAALD,IACrOpQ,MAAkB,aAAc,WAAyE,OAAOqQ,GAAIuO,cAAgB,EAApI5e,CAAuI,aAAc,WAAyE,OAAOqQ,GAAIwO,cAAgB,EAC3P,EAAGqE,OAAQ,CAAE5M,cAAe,gBAAiBnB,OAAQ,SAAUyC,MAAO,QAASE,OAAQ,SAAUD,WAAY,aAAcI,QAAS,UAAWD,KAAM,OAAQsG,OAAQ,SAAUC,eAAgB,iBAAkB2I,OAAQ,SAAU3Q,UAAW,YAAamI,MAAO,QAASzO,KAAM,OAAQa,cAAe,gBAAiBC,cAAe,gBAAiByV,SAAU,WAAYjvB,MAAO,QAASwgB,eAAgB,iBAAkB4B,YAAa,cAAe9P,QAAS,WAAa4Z,QAAS,CAAE3F,aAAc,gBAAkB4F,SAAU,CAAC1jB,OAA8B2jB,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,EAAG,0BAA2B,CAAC,QAAS,wBAAyB,EAAG,OAAQ,SAAU,mBAAoB,QAAS,SAAU,OAAQ,MAAO,UAAW,QAAS,EAAG,QAAS,WAAY,CAAC,EAAG,eAAgB,eAAgB,gBAAiB,gBAAiB,YAAa,YAAa,EAAG,QAAS,CAAC,EAAG,wBAAyB,EAAG,OAAQ,SAAU,UAAW,SAAU,CAAC,EAAG,6BAA8B,CAAC,EAAG,OAAQ,WAAY,YAAa,aAAc,EAAG,QAAS,WAAY,CAAC,QAAS,sCAAuC,EAAG,QAAS,CAAC,EAAG,OAAQ,WAAY,YAAa,cAAe,CAAC,EAAG,uCAAwC,CAAC,EAAG,+BAAgC,CAAC,EAAG,eAAgB,eAAgB,gBAAiB,gBAAiB,YAAa,cAAeC,SAAU,SAAgD1T,GAAIC,IAAgB,EAALD,KACt4CpQ,MAAsB,EAAG,MAAzBA,CAAgC,EAAG,MAAO,GAC1CA,MAAkB,EAAGoX,GAA4C,EAAG,GAAI,IAAK,GAC7EpX,UACAA,MAAkB,EAAGkY,GAA6D,EAAG,EAAG,qBAAsB,IACvG,EAAL9H,KACFpQ,MAA8B,6DAA8DqQ,GAAIJ,KAAM,IACtGjQ,MAAiB,GACjBA,MAAmB,YAAa,cAAgBqQ,GAAI2W,eAAiB,IAArEhnB,CAA0E,cAAeqQ,GAAI4W,sBAC7FjnB,MAAiB,GACjBA,MAAkB,UAAWqQ,GAAIgV,aACjCrlB,MAAiB,GACjBA,MAAkB,OAAQqQ,GAAI8W,iBAChC,EAAGpD,aAAc,WAAc,MAAO,CAACC,KAAgBA,KAAgBA,KAAaC,GAA2BC,GAA4B,EAAGE,OAAQ,CAAC,ypDAA4pDC,gBAAiB,IAC10D6B,GAA8BvJ,eAAiB,IAAM,CACjD,CAAE3pB,KAAMsxB,MACR,CAAEtxB,KAAMuxB,OACR,CAAEvxB,KAAMyoB,MAAmB,EAE/BlV,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,cAAU,IAAM,EAC5D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,aAAS,IAAM,EAC3D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,cAAU,IAAM,EAC5D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,kBAAc,IAAM,EAChE4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,eAAW,IAAM,EAC7D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,YAAQ,IAAM,EAC1D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,cAAU,IAAM,EAC5D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,sBAAkB,IAAM,EACpE4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,cAAU,IAAM,EAC5D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,qBAAiB,IAAM,EACnE4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,iBAAa,IAAM,EAC/D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,aAAS,IAAM,EAC3D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,YAAQ,IAAM,EAC1D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,qBAAiB,IAAM,EACnE4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,qBAAiB,IAAM,EACnE4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,gBAAY,IAAM,EAC9D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,aAAS,IAAM,EAC3D4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,sBAAkB,IAAM,EACpE4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,mBAAe,IAAM,EACjE4M,MAAW,IACPke,UACDyB,GAA8BvsB,UAAW,eAAW,IAAM,EAC7D4M,MAAW,IACPme,UACDwB,GAA8BvsB,UAAW,oBAAgB,IAAM,EAClE4M,MAAW,IACPqe,OAAa,eACdsB,GAA8BvsB,UAAW,eAAgB,OAAI,EAChE4M,MAAW,IACPqe,OAAa,eACdsB,GAA8BvsB,UAAW,eAAgB,MAE5D,MAAM4tB,EACFj3B,YAAY4K,IACRzK,KAAK8gB,KAAOrW,GAAOqW,KACnB9gB,KAAK+gB,WAAWtW,GAAOsW,UAAWtW,GAAOsW,SACzC/gB,KAAKghB,UAAYvW,GAAOuW,UAAYvW,GAAOuW,UAAY,GACvDhhB,KAAK6gB,QAAUpW,GAAOoW,OAC1B,EAGJ,MAAMkW,IAENA,GAAiBC,cAAgB,iBACjCD,GAAiBE,iBAAmB,oBAEpC,MAAMC,IAENA,GAAoBC,MAAQ,QAC5BD,GAAoBE,QAAU,UAE9B,MAAMC,GACFx3B,YAAY6Z,IACR,MAAM4d,QAAqCryB,IAAnByU,GAAI6d,WAC5B,SAASC,GAAIr3B,GAAQs3B,IACjB,OAAO/d,UAAmBzU,IAAX9E,IAAwBm3B,IAAmBn3B,GAASs3B,EACvE,CACAz3B,KAAKu3B,WAAaC,GAAI9d,GAAI6d,gBAAYtyB,GACtCjF,KAAK03B,MAAQF,GAAI9d,GAAIge,MAAO,SAC5B13B,KAAK23B,OAASH,GAAI9d,GAAIie,OAAQ,SAC9B33B,KAAK43B,UAAYJ,GAAI9d,GAAIke,WAAW,GACpC53B,KAAK63B,OAASL,GAAI9d,GAAIme,OAAQd,GAAiBE,kBAC/Cj3B,KAAK83B,WAAaN,GAAI9d,GAAIoe,WAAY,GACtC93B,KAAKonB,WAAaoQ,GAAI9d,GAAI0N,WAAY,UACtCpnB,KAAKkpB,YAAcsO,GAAI9d,GAAIwP,aAAa,GACxClpB,KAAKoqB,MAAQoN,GAAI9d,GAAI0Q,OAAO,GAC5BpqB,KAAK+3B,aAAeP,GAAI9d,GAAIqe,aAAc,IAC1C/3B,KAAKyoB,YAAc+O,GAAI9d,GAAI+O,aAAa,GACxCzoB,KAAK0oB,oBAAsB8O,GAAI9d,GAAIgP,qBAAqB,GACxD1oB,KAAK2oB,WAAa6O,GAAI9d,GAAIiP,YAAY,GACtC3oB,KAAK4oB,eAAiB4O,GAAI9d,GAAIkP,eAAgBwL,GAAoBC,MAClEr0B,KAAK6oB,UAAY2O,GAAI9d,GAAImP,UAAWqO,GAAoBC,OACxDn3B,KAAK8oB,cAAgB0O,GAAI9d,GAAIoP,eAAe,GAC5C9oB,KAAK+oB,sBAAwByO,GAAI9d,GAAIqP,sBAAuB,KAC5D/oB,KAAKgpB,0BAA4BwO,GAAI9d,GAAIsP,2BAA2B,GACpEhpB,KAAKipB,kBAAoBuO,GAAI9d,GAAIuP,mBAAmB,GAChDvP,IAAOA,GAAIyP,cAAgBzP,GAAIyP,aAAaroB,SAC5C4Y,GAAIyP,aAAezP,GAAIyP,aAAarc,IAAIrC,IAAU,IAAIqsB,EAAiBrsB,MAE3EzK,KAAKmpB,aAAeqO,GAAI9d,GAAIyP,aAAc,IAC1CnpB,KAAKopB,iBAAmBoO,GAAI9d,GAAI0P,kBAAkB,GAClDppB,KAAKqpB,aAAemO,GAAI9d,GAAI2P,cAAc,GAC1CrpB,KAAKg4B,WAAaR,GAAI9d,GAAIse,YAAY,GACtCh4B,KAAK+pB,kBAAoByN,GAAI9d,GAAIqQ,kBAAmB,GACpD/pB,KAAKgqB,eAAiBwN,GAAI9d,GAAIsQ,eAAgB,GAC9ChqB,KAAKi4B,kBAAoBT,GAAI9d,GAAIue,kBAAmB,IACpDj4B,KAAKk4B,iBAAmBV,GAAI9d,GAAIwe,iBAAkB,IAClDl4B,KAAKkqB,iBAAmBsN,GAAI9d,GAAIwQ,kBAAkB,GAClDlqB,KAAKmqB,yBAA2BqN,GAAI9d,GAAIyQ,0BAA0B,GAClEnqB,KAAKqqB,gBAAkBmN,GAAI9d,GAAI2Q,iBAAiB,GAChDrqB,KAAKuqB,mBAAqBiN,GAAI9d,GAAI6Q,mBAAoB,GACtDvqB,KAAKwqB,gBAAkBgN,GAAI9d,GAAI8Q,gBAAiB6K,GAAgBC,QAChEt1B,KAAKyqB,yBAA2B+M,GAAI9d,GAAI+Q,0BAA0B,GAClEzqB,KAAK8pB,kBAAoB0N,GAAI9d,GAAIoQ,mBAAmB,GACpD9pB,KAAKm4B,mBAAqBX,GAAI9d,GAAIye,oBAAoB,GACtDn4B,KAAKiqB,gBAAkBuN,GAAI9d,GAAIuQ,gBAAiB,IAChDjqB,KAAKsqB,cAAgBkN,GAAI9d,GAAI4Q,cAAe4M,GAAoBC,OAC5Dzd,IAAOA,GAAIgR,kBAAoBhR,GAAIgR,iBAAiB5pB,SACpD4Y,GAAIgR,iBAAmBhR,GAAIgR,iBAAiB5d,IAAIrC,IAAU,IAAIqsB,EAAiBrsB,MAEnFzK,KAAK0qB,iBAAmB8M,GAAI9d,GAAIgR,iBAAkB,IAClD1qB,KAAKwoB,QAAUgP,GAAI9d,GAAI8O,SAAS,GAChCxoB,KAAKo4B,mBAAqBZ,GAAI9d,GAAI0e,oBAAoB,GACtDp4B,KAAKq4B,cAAgBb,GAAI9d,GAAI2e,eAAe,GAC5Cr4B,KAAKs4B,sBAAwBd,GAAI9d,GAAI4e,uBAAuB,GAC5Dt4B,KAAKu4B,aAAef,GAAI9d,GAAI6e,cAAc,GAC1Cv4B,KAAKw4B,kBAAoBhB,GAAI9d,GAAI8e,mBAAmB,GACpDx4B,KAAKy4B,uBAAyBjB,GAAI9d,GAAI+e,wBAAwB,GAC9Dz4B,KAAK04B,oBAAsBlB,GAAI9d,GAAIgf,qBAAqB,GACxD14B,KAAK24B,kBAAoBnB,GAAI9d,GAAIif,mBAAmB,GACpD34B,KAAK44B,0BAA4BpB,GAAI9d,GAAIkf,2BAA2B,GACpE54B,KAAK64B,iBAAmBrB,GAAI9d,GAAImf,kBAAkB,GAClD74B,KAAK84B,gBAAkBtB,GAAI9d,GAAIof,iBAAiB,GAChD94B,KAAK+4B,wBAA0BvB,GAAI9d,GAAIqf,wBAAyB,KAChE/4B,KAAKg5B,4BAA8BxB,GAAI9d,GAAIsf,6BAA6B,GACxEh5B,KAAKi5B,oBAAsBzB,GAAI9d,GAAIuf,qBAAqB,GACxDj5B,KAAKk5B,YAAc1B,GAAI9d,GAAIwf,aAAa,GACxCl5B,KAAKm5B,gBAAkB3B,GAAI9d,GAAIyf,gBAAiB,IAChDn5B,KAAKo5B,eAAiB5B,GAAI9d,GAAI0f,eAAgB,GAC9Cp5B,KAAKq5B,eAAiB7B,GAAI9d,GAAI2f,eAAgB,IAC9Cr5B,KAAKs5B,cAAgB9B,GAAI9d,GAAI4f,eAAe,GAC5Ct5B,KAAKu5B,gBAAkB/B,GAAI9d,GAAI6f,iBAAiB,GAChDv5B,KAAKw5B,cAAgBhC,GAAI9d,GAAI8f,mBAAev0B,GAC5CjF,KAAKy5B,eAAiBjC,GAAI9d,GAAI+f,gBAAgB,GAC9Cz5B,KAAKqgB,cAAgBmX,GAAI9d,GAAI2G,cAAe,2BAC5CrgB,KAAKsgB,cAAgBkX,GAAI9d,GAAI4G,cAAe,4BAC5CtgB,KAAK2yB,UAAY6E,GAAI9d,GAAIiZ,UAAW,sBACpC3yB,KAAKojB,eAAiBoU,GAAI9d,GAAI0J,eAAgB,oBAC9CpjB,KAAK4yB,YAAc4E,GAAI9d,GAAIkZ,YAAa,sCACxC5yB,KAAKiiB,WAAauV,GAAI9d,GAAIuI,WAAY,qBACtCjiB,KAAK0hB,YAAc8V,GAAI9d,GAAIgI,YAAa,sBACxC1hB,KAAKwiB,eAAiBgV,GAAI9d,GAAI8I,eAAgB,cAC9CxiB,KAAK8iB,gBAAkB0U,GAAI9d,GAAIoJ,gBAAiB,gBAChD9iB,KAAKohB,aAAeoW,GAAI9d,GAAI0H,aAAc,2BACtC1H,IAAOA,GAAIN,SAAWM,GAAIN,QAAQtY,SAClC4Y,GAAIN,QAAUM,GAAIN,QAAQtM,IAAIrC,IAAU,IAAIqsB,EAAiBrsB,MAEjEzK,KAAKoZ,QAAUoe,GAAI9d,GAAIN,QAAS,GACpC,EAGJ,MAAMsgB,GACF75B,YAAY6Z,IACR1Z,KAAKmhB,IAAMzH,GAAIyH,IACfnhB,KAAKmY,MAAQuB,GAAIvB,KACrB,EAGJ,IAAIwhB,GAAsB,MACtB95B,YAAY+5B,IACR55B,KAAK45B,UAAYA,GACjB55B,KAAKmG,QAAU,CAAC,CAAC,GACjBnG,KAAK65B,YAAc,IAAI1M,MAEvBntB,KAAK85B,OAAS,IAAI3M,MAClBntB,KAAKktB,YAAc,IAAIC,MACvBntB,KAAKotB,aAAe,IAAID,MACxBntB,KAAK+5B,cAAgB,IAAI5M,MACzBntB,KAAKg6B,gBAAkB,EACvBh6B,KAAK6lB,cAAgB,EACrB7lB,KAAKu3B,gBAAatyB,EAClBjF,KAAKi6B,oBAAiBh1B,CAC1B,CACA2oB,WACI5tB,KAAKmG,QAAUnG,KAAKmG,QAAQ2G,IAAKotB,IAAQ,IAAI7C,GAAkB6C,KAC/Dl6B,KAAKm6B,cACLn6B,KAAKo6B,gBACLp6B,KAAKq6B,aACLr6B,KAAKs6B,iBACDt6B,KAAKuoB,iBACLvoB,KAAK6lB,cAAgB7lB,KAAKuoB,eAAeuP,WAEjD,CACAyC,kBACwBt1B,IAAhBjF,KAAK0kB,QAAyB1kB,KAAK0kB,OAAO5jB,SAAWd,KAAKg6B,iBACtDh6B,KAAK0kB,SAAW1kB,KAAKw6B,aACzBx6B,KAAKg6B,gBAAkBh6B,KAAK0kB,OAAO5jB,OACnCd,KAAKw6B,UAAYx6B,KAAK0kB,OACtB1kB,KAAKq6B,aACLr6B,KAAKy6B,YACDz6B,KAAK0kB,QAAU1kB,KAAK0kB,OAAO5jB,QAC3Bd,KAAK65B,YAAY/K,OAEjB9uB,KAAKoqB,OACLpqB,KAAKoqB,MAAM1c,MAAM1N,KAAKuoB,eAAeuP,YAErC93B,KAAKuoB,eAAe4P,oBAAsBn4B,KAAKuoB,eAAeyP,YAC3Dh4B,KAAK0kB,OAAO5jB,QAAU,IACzBd,KAAKuoB,eAAeyP,YAAa,EACjCh4B,KAAKuoB,eAAeE,aAAc,GAEtCzoB,KAAK06B,kBAEb,CACAC,kBACI36B,KAAKs6B,gBACT,CACAM,WACI56B,KAAKo6B,gBACDp6B,KAAKi6B,iBAAmBj6B,KAAKu3B,aAC7Bv3B,KAAKq6B,aACLr6B,KAAK06B,mBAEL16B,KAAKuoB,gBAAkBvoB,KAAKuoB,eAAeqP,YACvC53B,KAAK66B,kBACLzuB,aAAapM,KAAK66B,kBAEtB76B,KAAK66B,iBAAmBxuB,WAAW,KAC/BrM,KAAKs6B,gBAAc,EACpB,KAEX,CACAjS,iBACI,OAAQroB,KAAKuoB,gBAAkBvoB,KAAKuoB,eAAeyP,WAC/Ch4B,KAAKuoB,eAAewP,aAAe,IAAM,MACjD,CACAnO,sBACI,OAAI5pB,KAAKuoB,gBAAkBvoB,KAAKuoB,eAAe6B,MACpC,QAAUpqB,KAAKuoB,eAAe0P,kBAAoB,OACnDj4B,KAAKuoB,eAAe2P,iBAAmB,MAGtC,MAEf,CACAxO,yBACI,OAAI1pB,KAAKuoB,gBAAkBvoB,KAAKuoB,eAAesP,SAAWd,GAAiBE,iBAChEj3B,KAAKuoB,eAAe2P,iBAAmB,KAGvC,KAEf,CACAvO,4BACI,OAAI3pB,KAAKuoB,gBAAkBvoB,KAAKuoB,eAAesP,SAAWd,GAAiBC,cAChEh3B,KAAKuoB,eAAe2P,iBAAmB,KAGvC,KAEf,CACA/P,YAAYhQ,IACJnY,KAAKuoB,eAAeiR,cACpBx5B,KAAKuoB,eAAeiR,cAAcrhB,KAGlCnY,KAAK86B,gBAAiB,EACtB96B,KAAKwoB,QAAQqG,KAAK1W,IAE1B,CACA4iB,gBACI/6B,KAAKktB,YAAY4B,OACb9uB,KAAKoqB,OAASpqB,KAAKoqB,MAAM8E,UACzBlvB,KAAKoqB,MAAM6E,cAEnB,CACA+L,iBACIh7B,KAAK86B,gBAAiB,EACtB96B,KAAKotB,aAAa0B,OACd9uB,KAAKoqB,OAASpqB,KAAKoqB,MAAM8E,UACzBlvB,KAAKoqB,MAAMgF,eAEnB,CACAhH,gBAAgBjQ,IACZnY,KAAKuW,OAAO4B,GAChB,CACAsR,qBAAqBtR,IACjBnY,KAAKuW,OAAO4B,IACRnY,KAAKuoB,gBAAkBvoB,KAAKuoB,eAAeyP,YAAch4B,KAAKuoB,eAAeC,WACxExoB,KAAKuoB,eAAe6B,OAASpqB,KAAKuoB,eAAekC,2BACtDzqB,KAAKmoB,YAAYnoB,KAAK6lB,cAE9B,CACAI,KAAK9N,IACDnY,KAAKuW,OAAO4B,GAChB,CACA8H,WACIjgB,KAAKoqB,MAAMnK,UACf,CACAF,WACI/f,KAAKoqB,MAAMrK,UACf,CACAK,cACI,SAAIpgB,KAAK0kB,SAAU1kB,KAAKuoB,oBACVvoB,KAAKuoB,eAAeU,mBAAqBjpB,KAAK6lB,cAAgB7lB,KAAK0kB,OAAO5jB,OAAS,EAKrG,CACAqf,cACI,SAAIngB,KAAK0kB,SAAU1kB,KAAKuoB,oBACVvoB,KAAKuoB,eAAeU,mBAAqBjpB,KAAK6lB,cAAgB,EAKhF,CACAoV,cAAc9iB,IACVnY,KAAK+5B,cAAcjL,KAAK,CAAE3W,SAAOiS,MAAOpqB,KAAK0kB,OAAOvM,KACxD,CACA+iB,sBACIl7B,KAAKg4B,WAAWlQ,WACpB,CACAqT,qBACIn7B,KAAKg4B,WAAWpQ,UACpB,CACAwT,yBACI,OAAOp7B,KAAKg4B,WAAWhQ,cAC3B,CACAqT,wBACI,OAAOr7B,KAAKg4B,WAAWjQ,aAC3B,CACA2S,kBACQ16B,KAAKg4B,YACLh4B,KAAKg4B,WAAWtqB,MAAM1N,KAAKuoB,eAAeuP,WAElD,CACAvhB,OAAO4B,IACHnY,KAAK6lB,cAAgB1N,GACrBnY,KAAK85B,OAAOhL,KAAK,CACb3W,SACAiS,MAAOpqB,KAAK0kB,OAAOvM,KAE3B,CACAmiB,iBACQt6B,KAAKuoB,gBAAkBvoB,KAAKuoB,eAAeqP,YAC3C53B,KAAK03B,MAAQhI,SAAS4L,KAAKC,YAAc,KACzCv7B,KAAKw7B,OAAU9L,SAAS4L,KAAKC,YACzBv7B,KAAK45B,UAAUjO,cAAc8P,WAAWC,YAAc,EAAK,KAEvE,CACAjB,YACIz6B,KAAK6pB,YAAc7pB,KAAK0kB,OAAO5X,IAAKmlB,IAAQA,GAAI0J,OAChD37B,KAAKsoB,aAAetoB,KAAK0kB,OAAO5X,IAAI,CAACmlB,GAAKttB,KAAM,IAAI+0B,GAAuB,CACvEvY,IAAK8Q,GAAI2J,OACTzjB,MAAOxT,MAEX3E,KAAK67B,UAAY77B,KAAK0kB,OAAO5X,IAAKmlB,IAAQA,GAAI6J,KAC9C97B,KAAKmlB,aAAenlB,KAAK0kB,OAAO5X,IAAKmlB,IAAQA,GAAIpN,aACjD7kB,KAAKmnB,MAAQnnB,KAAK0kB,OAAO5X,IAAKmlB,IAAQA,GAAIlG,KAC1C/rB,KAAKqnB,OAASrnB,KAAK0kB,OAAO5X,IAAKmlB,IAAQA,GAAI8J,MAC/C,CACA3B,gBAEI,IAAI4B,GADJh8B,KAAKi6B,eAAiBj6B,KAAKu3B,kBAEhB5xB,OAAW,MAClBq2B,GAAch8B,KAAKmG,QAAQvC,OAAQs2B,IAAQA,GAAI3C,YAAc5xB,OAAO+1B,YAC/D5uB,IAAKotB,IAAQA,GAAI3C,aAEtByE,IAAeA,GAAYl7B,OAC3Bd,KAAKu3B,WAAayE,GAAYC,MAG9Bj8B,KAAKu3B,gBAAatyB,CAE1B,CACAk1B,cACIn6B,KAAKmG,QAAU,IACRnG,KAAKmG,QAAQvC,OAAQoD,SAAuB/B,IAAjB+B,GAAEuwB,eAC7Bv3B,KAAKmG,QACHvC,OAAQoD,SAAuB/B,IAAjB+B,GAAEuwB,YAChBhwB,KAAK,CAACP,GAAGC,KAAMA,GAAEswB,WAAavwB,GAAEuwB,YAE7C,CACA8C,aACIr6B,KAAKuoB,eAAiB,IAAI8O,GAAkB,CAAC,GAC7Cr3B,KAAKmG,QACAvC,OAAQs2B,SAA2Bj1B,IAAnBi1B,GAAI3C,YAA4B2C,GAAI3C,YAAcv3B,KAAKu3B,YACvEzqB,IAAKotB,IAAQl6B,KAAKk8B,eAAel8B,KAAKuoB,eAAgB2R,KAC3Dl6B,KAAK03B,MAAQ13B,KAAKuoB,eAAemP,MACjC13B,KAAK23B,OAAS33B,KAAKuoB,eAAeoP,MACtC,CACAuE,eAAexK,GAAOyK,IAClBh0B,OAAOS,KAAKuzB,IAAQrvB,IAAK1H,IAAQssB,GAAMtsB,SAAuBH,IAAhBk3B,GAAO/2B,IAAqB+2B,GAAO/2B,IAAOssB,GAAMtsB,IAClG,GAEJu0B,GAAoBtqB,UAAO,SAAqCC,IAAK,OAAO,IAAKA,IAAKqqB,IAAqBpqB,MAAyBA,OAAqB,EACzJoqB,GAAoBvH,UAAqB7iB,MAAyB,CAAEhN,KAAMo3B,GAAqBtH,UAAW,CAAC,CAAC,gBAAiBC,UAAW,SAAmC3S,GAAIC,IAIzK,GAJyL,EAALD,KAClLpQ,KAAmBmd,GAA4B,GAC/Cnd,KAAmBklB,GAA0B,GAC7CllB,KAAmBkmB,GAA+B,IAC3C,EAAL9V,GAAQ,CACV,IAAI4S,GACJhjB,MAAsBgjB,GAAKhjB,WAA0BqQ,GAAI4I,QAAU+J,GAAGb,OACtEniB,MAAsBgjB,GAAKhjB,WAA0BqQ,GAAIwK,MAAQmI,GAAGb,OACpEniB,MAAsBgjB,GAAKhjB,WAA0BqQ,GAAIoY,WAAazF,GAAGb,OAC3E,EAAG0K,SAAU,EAAG5J,aAAc,SAA0C7S,GAAIC,IAAgB,EAALD,IACrFpQ,MAAkB,SAAU,WAA2D,OAAOqQ,GAAIgb,UAAY,GAAG,EAAOrrB,OACjH,EAALoQ,IACFpQ,MAAmB,QAASqQ,GAAI8X,MAAhCnoB,CAAuC,OAAQqQ,GAAI4b,KAAnDjsB,CAAyD,SAAUqQ,GAAI+X,OACzE,EAAGlF,OAAQ,CAAEtsB,QAAS,UAAWue,OAAQ,UAAYsO,QAAS,CAAE6G,YAAa,cAAeC,OAAQ,SAAU5M,YAAa,cAAeE,aAAc,eAAgB2M,cAAe,iBAAmB9G,SAAU,CAAC1jB,MAA0B,CAACyb,MAAsBkI,MAAO,EAAGC,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,SAAU,SAAU,YAAa,gBAAiB,SAAU,iBAAkB,gBAAiB,gBAAiB,QAAS,YAAa,OAAQ,WAAY,mBAAoB,uBAAwB,eAAgB,cAAe,UAAW,eAAgB,kBAAmB,UAAW,aAAc,eAAgB,EAAG,QAAS,CAAC,EAAG,YAAa,eAAgB,SAAU,SAAU,QAAS,SAAU,aAAc,gBAAiB,UAAW,OAAQ,SAAU,SAAU,iBAAkB,gBAAiB,gBAAiB,YAAa,QAAS,OAAQ,WAAY,QAAS,iBAAkB,cAAe,UAAW,eAAgB,EAAG,QAAS,CAAC,EAAG,SAAU,eAAgB,kBAAmB,gBAAiB,gBAAiB,YAAa,iBAAkB,cAAe,SAAU,iBAAkB,QAAS,aAAc,kBAAmB,eAAgB,aAAc,qBAAsB,YAAa,WAAY,mBAAoB,uBAAwB,eAAgB,OAAQ,WAAY,UAAW,UAAW,aAAc,cAAe,UAAW,SAAU,iBAAkB,kBAAmB,WAAY,eAAgB,UAAW,eAAgB,cAAe,gBAAiB,CAAC,EAAG,SAAU,YAAa,gBAAiB,SAAU,iBAAkB,gBAAiB,gBAAiB,QAAS,YAAa,OAAQ,WAAY,mBAAoB,uBAAwB,eAAgB,cAAe,UAAW,eAAgB,kBAAmB,UAAW,aAAc,gBAAiB,CAAC,EAAG,SAAU,QAAS,SAAU,aAAc,gBAAiB,UAAW,OAAQ,SAAU,SAAU,iBAAkB,gBAAiB,gBAAiB,YAAa,QAAS,OAAQ,WAAY,QAAS,iBAAkB,cAAe,UAAW,iBAAkBC,SAAU,SAAsC1T,GAAIC,IAAgB,EAALD,KACplEpQ,MAAsB,EAAG,OACzBA,MAAkB,EAAG0Y,GAAkD,EAAG,GAAI,oBAAqB,GACnG1Y,MAAkB,EAAGga,GAAuD,EAAG,GAAI,yBAA0B,GAC7Gha,MAAsB,EAAG,sBAAuB,GAChDA,MAAkB,eAAgB,WAAsF,OAAOqQ,GAAIob,gBAAkB,EAArJzrB,CAAwJ,cAAe,WAAqF,OAAOqQ,GAAImb,eAAiB,EAAxRxrB,CAA2R,eAAgB,SAAkFkR,IAAU,OAAOb,GAAIqb,cAAcxa,GAAS,GACzalR,WACO,EAALoQ,KACFpQ,MAA8B,sBAA6C,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAesP,OAAQ,IACpHtoB,MAAiB,GACjBA,MAAkB,OAA8B,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe6B,OACjF7a,MAAiB,GACjBA,MAAkB,OAA8B,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAeyP,YACjFzoB,MAAiB,GACjBA,MAAmB,qBAAsBqQ,GAAIkb,gBAC7CvrB,MAAkB,SAAUqQ,GAAIic,UAAhCtsB,CAA2C,eAAgBqQ,GAAIuF,aAA/D5V,CAA6E,kBAAyC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe6P,mBAAvJ7oB,CAA2K,gBAAuC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAelI,cAAnP9Q,CAAkQ,gBAAuC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAejI,cAA1U/Q,CAAyV,YAAmC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAeoK,UAA7ZpjB,CAAwa,iBAAwC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAenF,eAAjf7T,CAAigB,cAAqC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAeqK,YAAvkBrjB,CAAolB,SAAgC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe8P,cAArpB9oB,CAAoqB,iBAAwC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe+P,sBAA7uB/oB,CAAowB,QAA+B,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAegQ,aAAp0BhpB,CAAk1B,aAAoC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAeiQ,kBAAv5BjpB,CAA06B,kBAAyC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAekQ,uBAAp/BlpB,CAA4gC,eAAsC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAemQ,oBAAnlCnpB,CAAwmC,aAAoC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAeoQ,kBAA7qCppB,CAAgsC,qBAA4C,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAeqQ,0BAA7wCrpB,CAAwyC,YAAmC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAesQ,iBAA52CtpB,CAA83C,WAAkC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAeuQ,gBAAj8CvpB,CAAk9C,mBAA0C,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAewQ,wBAA7hDxpB,CAAsjD,uBAA8C,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAeyQ,4BAAroDzpB,CAAkqD,eAAsC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe0Q,oBAAzuD1pB,CAA8vD,OAA8B,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe2Q,YAA7zD3pB,CAA00D,WAAkC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe4Q,gBAA74D5pB,CAA85D,UAAiC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe6Q,eAAh+D7pB,CAAg/D,UAAiC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe8Q,eAAljE9pB,CAAkkE,aAAoC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAetG,WAAvoE1S,CAAmpE,cAAqC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe7G,YAAztEnS,CAAsuE,UAAiC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAenP,QAAxyE7J,CAAizE,SAAgC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe+Q,cAAl3E/pB,CAAi4E,iBAAwC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAe/F,eAA18EjT,CAA09E,kBAAyC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAezF,gBAApiFvT,CAAqjF,WAAkC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAegR,gBAAxnFhqB,CAAyoF,eAAsC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAenH,aAAhtF7R,CAA8tF,UAAiC,MAAtBqQ,GAAI2I,eAAyB,KAAO3I,GAAI2I,eAAekR,gBAClyF,EAAGnG,aAAc,CAACC,KAAakB,GAA0BgB,GAA+B/I,IAA6BiH,OAAQ,CAAC,m9BAAo9B0I,cAAe,EAAGzI,gBAAiB,IAC3nC+F,GAAoBzN,eAAiB,IAAM,CACvC,CAAE3pB,KAAMuxB,SAAY,EAExBhe,MAAW,IACPke,UACD2F,GAAoBzwB,UAAW,eAAW,IAAM,EACnD4M,MAAW,IACPke,UACD2F,GAAoBzwB,UAAW,cAAU,IAAM,EAClD4M,MAAW,IACPme,UACD0F,GAAoBzwB,UAAW,mBAAe,IAAM,EACvD4M,MAAW,IACPme,UACD0F,GAAoBzwB,UAAW,cAAU,IAAM,EAClD4M,MAAW,IACPme,UACD0F,GAAoBzwB,UAAW,mBAAe,IAAM,EACvD4M,MAAW,IACPme,UACD0F,GAAoBzwB,UAAW,oBAAgB,IAAM,EACxD4M,MAAW,IACPme,UACD0F,GAAoBzwB,UAAW,qBAAiB,IAAM,EACzD4M,MAAW,IACPoe,OAAUxH,KACXiN,GAAoBzwB,UAAW,eAAW,IAAM,EACnD4M,MAAW,IACPoe,OAAUO,KACXkF,GAAoBzwB,UAAW,aAAS,IAAM,EACjD4M,MAAW,IACPoe,OAAUuB,KACXkE,GAAoBzwB,UAAW,kBAAc,IAAM,EACtD4M,MAAW,IACPwmB,OAAY,gBACb3C,GAAoBzwB,UAAW,aAAS,IAAM,EACjD4M,MAAW,IACPwmB,OAAY,iBACb3C,GAAoBzwB,UAAW,cAAU,IAAM,EAClD4M,MAAW,IACPwmB,OAAY,eACb3C,GAAoBzwB,UAAW,YAAQ,IAAM,EAChD4M,MAAW,IACPqe,OAAa,kBACdwF,GAAoBzwB,UAAW,WAAY,MAE9C,IAAIsqB,GAA4B,MAC5B3zB,cACIG,KAAKu8B,UAAY,IAAIpP,MACrBntB,KAAKw8B,UAAY,IAAIrP,KACzB,CACAS,WACA,CACA6O,kBACIz8B,KAAKu8B,UAAUzN,MACnB,CACA4N,kBACI18B,KAAKw8B,UAAU1N,MACnB,GAEJ0E,GAA0BnkB,UAAO,SAA2CC,IAAK,OAAO,IAAKA,IAAKkkB,GAA8B,EAChIA,GAA0BpB,UAAqB7iB,MAAyB,CAAEhN,KAAMixB,GAA2BnB,UAAW,CAAC,CAAC,uBAAwBI,OAAQ,CAAEkK,aAAc,eAAgBC,aAAc,eAAgBvc,cAAe,gBAAiBC,cAAe,iBAAmB0S,QAAS,CAAEuJ,UAAW,YAAaC,UAAW,aAAetJ,MAAO,EAAGC,KAAM,GAAIC,OAAQ,CAAC,CAAC,EAAG,6BAA8B,0BAA2B,CAAC,cAAe,OAAQ,EAAG,mBAAoB,oBAAqB,EAAG,SAAU,CAAC,EAAG,6BAA8B,4BAA6BC,SAAU,SAA4C1T,GAAIC,IAAgB,EAALD,KAC5nBpQ,MAAsB,EAAG,MAAO,EAAhCA,CAAmC,EAAG,MAAO,GAC7CA,MAAkB,QAAS,WAAqE,OAAOqQ,GAAI6c,iBAAmB,GAC9HltB,MAAiB,EAAG,KACpBA,UACAA,MAAsB,EAAG,MAAO,EAAhCA,CAAmC,EAAG,MAAO,GAC7CA,MAAkB,QAAS,WAAqE,OAAOqQ,GAAI8c,iBAAmB,GAC9HntB,MAAiB,EAAG,KACpBA,WACO,EAALoQ,KACFpQ,MAAiB,GACjBA,MAAmB,uBAAwBqQ,GAAI+c,cAC/CptB,MAAiB,GACjBA,MAA8B,4BAA6BqQ,GAAIS,cAAe,IAC9E9Q,MAAiB,GACjBA,MAAmB,uBAAwBqQ,GAAIgd,cAC/CrtB,MAAiB,GACjBA,MAA8B,4BAA6BqQ,GAAIU,cAAe,IAChF,EAAGqT,OAAQ,CAAC,+tBAAguBC,gBAAiB,KAAG,EACtwB9d,MAAW,IACPke,UACDR,GAA0BtqB,UAAW,oBAAgB,IAAM,EAC9D4M,MAAW,IACPke,UACDR,GAA0BtqB,UAAW,oBAAgB,IAAM,EAC9D4M,MAAW,IACPke,UACDR,GAA0BtqB,UAAW,qBAAiB,IAAM,EAC/D4M,MAAW,IACPke,UACDR,GAA0BtqB,UAAW,qBAAiB,IAAM,EAC/D4M,MAAW,IACPme,UACDT,GAA0BtqB,UAAW,iBAAa,IAAM,EAC3D4M,MAAW,IACPme,UACDT,GAA0BtqB,UAAW,iBAAa,GAErD,IAAIuqB,GAA4B,MAC5B5zB,cACIG,KAAK+gB,UAAW,EAChB/gB,KAAKghB,UAAY,GACjBhhB,KAAK68B,WAAa,IAAI1P,KAC1B,CACAS,WACA,CACAjI,YAAYuP,IACHl1B,KAAK+gB,UACN/gB,KAAK68B,WAAW/N,KAAKoG,IAEzBA,GAAM3R,kBACN2R,GAAMzE,gBACV,GAEJgD,GAA0BpkB,UAAO,SAA2CC,IAAK,OAAO,IAAKA,IAAKmkB,GAA8B,EAChIA,GAA0BrB,UAAqB7iB,MAAyB,CAAEhN,KAAMkxB,GAA2BpB,UAAW,CAAC,CAAC,uBAAwBI,OAAQ,CAAE1R,SAAU,WAAYC,UAAW,YAAaF,KAAM,QAAUkS,QAAS,CAAE6J,WAAY,cAAgB3J,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,cAAe,OAAQ,EAAG,mBAAoB,EAAG,QAAS,UAAWC,SAAU,SAA4C1T,GAAIC,IAAgB,EAALD,KAC9ZpQ,MAAsB,EAAG,MAAO,GAChCA,MAAkB,QAAS,SAAiEkR,IAAU,OAAOb,GAAI+F,YAAYlF,GAAS,GACtIlR,MAAiB,EAAG,KACpBA,SACO,EAALoQ,KACFpQ,MAAmB,4BAA6BqQ,GAAImB,UACpDxR,MAA6B,QAASqQ,GAAIoB,WAC1CzR,MAAiB,GACjBA,MAA8B,4BAA6BqQ,GAAIkB,KAAM,IACvE,EAAG6S,OAAQ,CAAC,+RAAgSC,gBAAiB,KAAG,EACtU9d,MAAW,IACPke,UACDP,GAA0BvqB,UAAW,YAAQ,IAAM,EACtD4M,MAAW,IACPke,UACDP,GAA0BvqB,UAAW,gBAAY,IAAM,EAC1D4M,MAAW,IACPke,UACDP,GAA0BvqB,UAAW,iBAAa,IAAM,EAC3D4M,MAAW,IACPme,UACDR,GAA0BvqB,UAAW,kBAAc,GAEtD,IAAIwqB,GAA6B,MAC7B7zB,cACIG,KAAKU,OAAS,EACdV,KAAK88B,aAAe,IAAI3P,KAC5B,CACAS,WACA,CACAmP,aACI,OAAO55B,MAAMnD,KAAK6X,MACtB,CACAkT,aAAamK,GAAO/c,IAChBnY,KAAK88B,aAAahO,KAAK3W,GAC3B,GAEJub,GAA2BrkB,UAAO,SAA4CC,IAAK,OAAO,IAAKA,IAAKokB,GAA+B,EACnIA,GAA2BtB,UAAqB7iB,MAAyB,CAAEhN,KAAMmxB,GAA4BrB,UAAW,CAAC,CAAC,wBAAyBI,OAAQ,CAAE/xB,OAAQ,SAAUmX,MAAO,SAAWmb,QAAS,CAAE8J,aAAc,gBAAkB5J,MAAO,EAAGC,KAAM,EAAGC,OAAQ,CAAC,CAAC,QAAS,qBAAsB,EAAG,UAAW,QAAS,EAAG,QAAS,WAAY,CAAC,EAAG,qBAAsB,EAAG,UAAW,UAAWC,SAAU,SAA6C1T,GAAIC,IAAgB,EAALD,IACxcpQ,MAAkB,EAAGqb,GAA2C,EAAG,EAAG,MAAO,GACtE,EAALjL,IACFpQ,MAAkB,UAAWqQ,GAAImd,aACnC,EAAGzJ,aAAc,CAACC,KAAgBA,MAAiBI,OAAQ,CAAC,gfAAifC,gBAAiB,KAAG,EACvkB9d,MAAW,IACPke,UACDN,GAA2BxqB,UAAW,aAAS,IAAM,EACxD4M,MAAW,IACPke,UACDN,GAA2BxqB,UAAW,cAAU,IAAM,EACzD4M,MAAW,IACPme,UACDP,GAA2BxqB,UAAW,oBAAgB,GAEzD,IAAI8zB,GAAqB,cAAiCC,KACtDp9B,cACIW,SAAS08B,WACTl9B,KAAKm9B,UAAY,CACbC,MAAO,CAAEC,QAAQ,GACjBxK,OAAQ,CAAEwK,QAAQ,GAE1B,GAEJL,GAAmB3tB,UAAqB,WAAc,IAAIiuB,GAAiC,OAAO,SAAoChuB,IAAK,OAAQguB,KAAoCA,GAAkC/tB,MAA6BytB,MAAsB1tB,IAAK0tB,GAAqB,CAAG,CAAjQ,GACxCA,GAAmB5Q,WAAsB7c,MAA0B,CAAEid,MAAOwQ,GAAoB1Q,QAAS,SAAUhd,IAAK,OAAO0tB,GAAmB3tB,UAAKC,GAAI,IAC3J,IAAIiuB,GAAmB,QAEvBA,GAAiBluB,UAAO,SAAkCC,IAAK,OAAO,IAAKA,IAAKiuB,GAAqB,EACrGA,GAAiBC,UAAqBjuB,MAAwB,CAAEhN,KAAMg7B,KACtEA,GAAiBE,UAAqBluB,MAAwB,CAAEmuB,UAAW,CACnE,CAAEC,QAASC,KAAuBC,SAAUb,KAC7Cc,QAAS,CAACC,2FCp5DjB,IAAIC,EAA6B,MAC7Bn+B,YAAY+sB,EAAY3B,GACpBjrB,KAAK4sB,WAAaA,EAClB5sB,KAAKirB,SAAWA,EAChBjrB,KAAKqrB,QAAUrrB,KAAK4sB,WAAWjB,aACnC,CACAoC,cACQ/tB,KAAKi+B,eACLj+B,KAAKk+B,iBAEb,CACAvD,kBACI36B,KAAK+7B,MAAQ/7B,KAAKqrB,QAAQ8S,UACtBn+B,KAAKi+B,eACLj+B,KAAKk+B,iBAEb,CACAE,cAAcC,GACV,OAAOA,EAAI7qB,QAAQ,sBAAuB,OAC9C,CACA0qB,kBACI,MAAMnC,EAAQ/7B,KAAK+7B,MACnB,IAAK/7B,KAAKs+B,KAEN,YADAt+B,KAAKu+B,cAAcxC,GAGvB,MAAMyC,EAAoBx+B,KAAKo+B,cAAcp+B,KAAKs+B,MAAM9qB,QAAQ,IAAK,KAC/DirB,EAAY,IAAIzS,OAAOwS,EAAmB,MAChDx+B,KAAKu+B,cAAcxC,EAAMvoB,QAAQirB,EAAY,uCACjD,CACIR,oBACA,OAAOj+B,KAAK0+B,WAAW1+B,KAAKs+B,OAASt+B,KAAK0+B,WAAW1+B,KAAK+7B,MAC9D,CACAwC,cAAcI,GACV3+B,KAAKirB,SAAS2T,YAAY5+B,KAAK4sB,WAAWjB,cAAe,YAAagT,EAC1E,CACAD,WAAW18B,GACP,OAAwC,MAAVA,CAClC,GAEJg8B,EAA2B3uB,UAAO,SAA4CC,GAAK,OAAO,IAAKA,GAAK0uB,GAA4BzuB,MAAyBA,OAAoBA,MAAyBA,OAAoB,EAC1NyuB,EAA2BxuB,UAAqBD,MAAyB,CAAEhN,KAAMy7B,EAA4B3L,UAAW,CAAC,CAAC,GAAI,oBAAqB,KAAMI,OAAQ,CAAE6L,KAAM,CAAC,oBAAqB,SAAWrL,SAAU,CAAC1jB,SACrNyuB,EAA2B9R,eAAiB,IAAM,CAC9C,CAAE3pB,KAAMuxB,OACR,CAAEvxB,KAAM4pB,SAAW,EAEvBrW,MAAW,IACPke,OAAM,sBACPgK,EAA2B90B,UAAW,YAAQ,GAEjD,IAAI21B,EAA0B,QAE9BA,EAAwBxvB,UAAO,SAAyCC,GAAK,OAAO,IAAKA,GAAKuvB,EAA4B,EAC1HA,EAAwBrB,UAAqBjuB,MAAwB,CAAEhN,KAAMs8B,IAC7EA,EAAwBpB,UAAqBluB,MAAwB,CAAC,sSC3CtE,MAAMkQ,GAAM,CAAC,WACP2F,GAAM,CAAC,UACPsB,GAAM,CAAC,WACP4C,GAAM,SAAUjE,IAAM,MAAO,CAAEyZ,WAAYzZ,GAAM,EACvD,SAAS0Z,GAAwCpf,GAAIC,IAInD,GAJmE,EAALD,KAC5DpQ,MAAsB,EAAG,MAAO,GAChCA,MAA0B,EAAG,GAC7BA,SACO,EAALoQ,GAAQ,CACV,MAAMO,GAAS3Q,QACfA,MAAiB,GACjBA,MAAkB,mBAAoB2Q,GAAO8e,eAA7CzvB,CAA6D,0BAA2BA,MAAuB,EAAG+Z,GAAKpJ,GAAO+e,aAAY,CAC5I,CACF,SAASC,GAAwCvf,GAAIC,IAInD,GAJmE,EAALD,KAC5DpQ,MAAsB,EAAG,MAAO,GAChCA,MAA0B,EAAG,GAC7BA,SACO,EAALoQ,GAAQ,CACV,MAAMqC,GAASzS,QACfA,MAAiB,GACjBA,MAAkB,mBAAoByS,GAAOmd,eAA7C5vB,CAA6D,0BAA2BA,MAAuB,EAAG+Z,GAAKtH,GAAOid,aAAY,CAC5I,CACF,MAAMtU,GAAM,CAAC,KACPyU,GAAM,CAAC,eACb,SAASC,GAA8D1f,GAAIC,IAAO,GAAS,EAALD,GAAQ,CAC1F,MAAM+H,GAAOnY,QACbA,MAAsB,EAAG,OAAQ,IACjCA,MAAkB,QAAS,WAAiGA,MAAqBmY,IAAO,MAAM4X,GAAU/vB,QAAuBoR,UAAiBb,GAAUvQ,MAAqB,GAAI,OAAOA,MAAmBuQ,GAAQyf,SAASD,IAAW,GACzS/vB,MAAc,EAAG,QACjBA,QACAA,MAAiB,EAAG,OAAQ,GAAE,CAChC,GAAS,EAALoQ,GAAQ,CACV,MAAM2f,GAAU/vB,QAAuBoR,UACjC8D,GAASlV,MAAqB,GACpCA,MAAiB,GACjBA,MAAkB,cAAe+vB,GAAQvD,MAAzCxsB,CAAgD,SAAUkV,GAAO+a,WAAU,CAC7E,CACF,SAASC,GAA8D9f,GAAIC,IAAO,CAClF,MAAM8f,GAAM,SAAUra,GAAIC,GAAIC,IAAM,MAAO,CAAE7gB,KAAM2gB,GAAIsa,MAAOra,GAAIyW,MAAOxW,GAAM,EAC/E,SAASqa,GAAgDjgB,GAAIC,IAK3D,GAL2E,EAALD,KACpEpQ,MAAsB,EAAG,MAAO,IAChCA,MAAkB,EAAG8vB,GAA+D,EAAG,EAAG,cAAe,KAAM,GAAI9vB,OACnHA,MAAkB,EAAGkwB,GAA+D,EAAG,EAAG,cAAe,IACzGlwB,SACO,EAALoQ,GAAQ,CACV,MAAM2f,GAAU1f,GAAIe,UACdkf,GAAMtwB,MAAmB,GACzBsT,GAAStT,MAAqB,GACpCA,MAAmB,oBAAqB+vB,GAAQve,UAChDxR,MAAiB,GACjBA,MAAkB,mBAAoBsT,GAAOid,eAAiBD,GAA9DtwB,CAAmE,0BAA2BA,MAAuB,EAAGmwB,GAAKJ,GAAQt9B,MAAO6gB,GAAOkd,UAAWT,GAAQvD,OAAM,CAC9K,CACF,SAASiE,GAA0CrgB,GAAIC,IAIrD,GAJqE,EAALD,KAC9DpQ,MAA+B,GAC/BA,MAAkB,EAAGqwB,GAAiD,EAAG,EAAG,MAAO,IACnFrwB,SACO,EAALoQ,GAAQ,CACV,MAAMO,GAAS3Q,QACfA,MAAiB,GACjBA,MAAkB,UAAW2Q,GAAO+f,cAApC1wB,CAAmD,eAAgB2Q,GAAOggB,cAAa,CACzF,CACF,SAASC,GAA2CxgB,GAAIC,IAAO,CAC/D,MAAMwgB,GAAM,SAAU/a,GAAIC,IAAM,MAAO,CAAE+a,MAAOhb,GAAIsa,MAAOra,GAAM,EACjE,SAASgb,GAA6B3gB,GAAIC,IAExC,GAFwD,EAALD,IACjDpQ,MAAkB,EAAG4wB,GAA4C,EAAG,EAAG,cAAe,IAC/E,EAALxgB,GAAQ,CACV,MAAMuG,GAAS3W,QACfA,MAAkB,mBAAoB2W,GAAOqa,mBAA7ChxB,CAAiE,0BAA2BA,MAAuB,EAAG6wB,GAAKla,GAAOsa,eAAgBta,GAAO6Z,WAAU,CACrK,CACF,SAASU,GAAwD9gB,GAAIC,IAAgB,EAALD,IAC5EpQ,MAAiB,EAAG,MAAO,GAC7B,CACF,SAASmxB,GAAwD/gB,GAAIC,IAAO,CAC5E,SAAS+gB,GAA0ChhB,GAAIC,IAKrD,GALqE,EAALD,KAC9DpQ,MAA+B,GAC/BA,MAAkB,EAAGkxB,GAAyD,EAAG,EAAG,cAAe,KAAM,GAAIlxB,OAC7GA,MAAkB,EAAGmxB,GAAyD,EAAG,EAAG,cAAe,IACnGnxB,SACO,EAALoQ,GAAQ,CACV,MAAMa,GAAOjR,MAAmB,GAC1BkS,GAASlS,QACfA,MAAiB,GACjBA,MAAkB,mBAAoBkS,GAAOmf,wBAA0BpgB,GAAI,CAC7E,CACF,SAASqgB,GAAmClhB,GAAIC,IAI9C,GAJ8D,EAALD,KACvDpQ,MAAsB,EAAG,OAAQ,GAAjCA,CAAqC,EAAG,OAAQ,IAChDA,MAAc,EAAG,QACjBA,WACO,EAALoQ,GAAQ,CACV,MAAMqC,GAASzS,QACfA,MAA6B,QAASyS,GAAO8e,aAAY,CAC3D,CACF,SAASC,GAAoEphB,GAAIC,IAE/E,GAF+F,EAALD,IACxFpQ,MAAiB,EAAG,OAAQ,IACrB,EAALoQ,GAAQ,CACV,MAAMqhB,GAAWzxB,QAAuBoR,UAClCsgB,GAAU1xB,MAAqB,GACrCA,MAAkB,cAAeyxB,GAASjF,MAA1CxsB,CAAiD,SAAU0xB,GAAQzB,WAAU,CAC/E,CACF,SAAS0B,GAAoEvhB,GAAIC,IAAO,CACxF,MAAMuhB,GAAM,SAAU9b,GAAIC,GAAIC,GAAIC,IAAM,MAAO,CAAE9gB,KAAM2gB,GAAI+b,MAAO9b,GAAInN,MAAOoN,GAAIuZ,WAAYtZ,GAAM,EACnG,SAAS6b,EAAsD1hB,GAAIC,IAAO,GAAS,EAALD,GAAQ,CAClF,MAAM2D,GAAO/T,QACbA,MAAsB,EAAG,MAAO,IAChCA,MAAkB,QAAS,WAAwI,MAAMyxB,GAAlCzxB,MAAqB+T,IAAoC3C,UAAiB6C,GAAUjU,MAAqB,GAAI,OAAOA,MAAmBiU,GAAQ8d,WAAWN,IAAY,EAA7SzxB,CAAgT,YAAa,WAA4I,MAAMyxB,GAAlCzxB,MAAqB+T,IAAoC3C,UAAiB+C,GAAUnU,MAAqB,GAAI,OAAOA,MAAmBmU,GAAQ6d,YAAYP,IAAY,GACplBzxB,MAAkB,EAAGwxB,GAAqE,EAAG,EAAG,cAAe,KAAM,GAAIxxB,OACzHA,MAAkB,EAAG2xB,GAAqE,EAAG,EAAG,cAAe,IAC/G3xB,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAMqhB,GAAWphB,GAAIe,UACf6gB,GAAOjyB,MAAmB,GAC1BuS,GAAUvS,MAAqB,GACrCA,MAAmB,qBAAsByxB,GAASjgB,SAAlDxR,CAA4D,qBAAsByxB,GAASS,SAA3FlyB,CAAqG,cAAeyxB,GAASU,SAA7HnyB,CAAuI,aAAcyxB,GAASU,SAA9JnyB,CAAwK,oBAAqByxB,GAASW,OAAtMpyB,CAA8M,mBAAoByxB,KAAalf,GAAQ8f,UAAUC,YACjQtyB,MAAmB,OAAQyxB,GAASU,SAAW,QAAU,SAAzDnyB,CAAmE,gBAAiByxB,GAASS,SAA7FlyB,CAAuG,KAAkB,MAAZyxB,GAAmB,KAAOA,GAASc,QAChJvyB,MAAiB,GACjBA,MAAkB,mBAAoByxB,GAASU,SAAW5f,GAAQigB,kBAAoBP,GAAO1f,GAAQkgB,gBAAkBR,GAAvHjyB,CAA6H,0BAA2BA,MAAuB,GAAI4xB,GAAKH,GAASh/B,MAAOg/B,GAAUA,GAAS7oB,MAAO2J,GAAQgd,YAAW,CACvP,CACF,SAASmD,GAAoEtiB,GAAIC,IAM/E,GAN+F,EAALD,KACxFpQ,MAAsB,EAAG,OAAzBA,CAAiC,EAAG,OAAQ,IAC5CA,MAAc,GACdA,QACAA,MAAc,GACdA,SACO,EAALoQ,GAAQ,CACV,MAAMmE,GAAUvU,MAAqB,GACrCA,MAAiB,GACjBA,MAAyBuU,GAAQoe,YACjC3yB,MAAiB,GACjBA,MAA0B,IAAMuU,GAAQgb,WAAY,IAAI,CAC1D,CACF,SAASqD,GAAoExiB,GAAIC,IAAO,CACxF,SAASwiB,GAAsDziB,GAAIC,IAAO,GAAS,EAALD,GAAQ,CAClF,MAAM0iB,GAAO9yB,QACbA,MAAsB,EAAG,MAAO,IAChCA,MAAkB,YAAa,WAA4FA,MAAqB8yB,IAAO,MAAMC,GAAU/yB,MAAqB,GAAI,OAAOA,MAAmB+yB,GAAQV,UAAUW,aAAe,EAA3PhzB,CAA8P,QAAS,WAAwFA,MAAqB8yB,IAAO,MAAMG,GAAUjzB,MAAqB,GAAI,OAAOA,MAAmBizB,GAAQC,YAAc,GACpdlzB,MAAkB,EAAG0yB,GAAqE,EAAG,EAAG,cAAe,KAAM,GAAI1yB,OACzHA,MAAkB,EAAG4yB,GAAqE,EAAG,EAAG,cAAe,IAC/G5yB,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAM+iB,GAAOnzB,MAAmB,GAC1BozB,GAAUpzB,MAAqB,GACrCA,MAAmB,oBAAqBozB,GAAQf,UAAUC,YAC1DtyB,MAAiB,GACjBA,MAAkB,mBAAoBozB,GAAQC,aAAeF,GAA7DnzB,CAAmE,0BAA2BA,MAAuB,EAAG+Z,GAAKqZ,GAAQ7D,YAAW,CAClJ,CACF,SAAS+D,GAA6EljB,GAAIC,IAIxF,GAJwG,EAALD,KACjGpQ,MAAsB,EAAG,MAAO,IAChCA,MAAc,GACdA,SACO,EAALoQ,GAAQ,CACV,MAAMmjB,GAAUvzB,MAAqB,GACrCA,MAAiB,GACjBA,MAAyBuzB,GAAQC,aAAY,CAC/C,CACF,SAASC,GAA6ErjB,GAAIC,IAAO,CACjG,SAASqjB,GAA+DtjB,GAAIC,IAK1E,GAL0F,EAALD,KACnFpQ,MAA+B,GAC/BA,MAAkB,EAAGszB,GAA8E,EAAG,EAAG,cAAe,KAAM,GAAItzB,OAClIA,MAAkB,EAAGyzB,GAA8E,EAAG,EAAG,cAAe,IACxHzzB,SACO,EAALoQ,GAAQ,CACV,MAAMujB,GAAO3zB,MAAmB,GAC1B8S,GAAU9S,MAAqB,GACrCA,MAAiB,GACjBA,MAAkB,mBAAoB8S,GAAQ8gB,kBAAoBD,GAAlE3zB,CAAwE,0BAA2BA,MAAuB,EAAG+Z,GAAKjH,GAAQyc,YAAW,CACvJ,CACF,SAASsE,GAA6EzjB,GAAIC,IAIxF,GAJwG,EAALD,KACjGpQ,MAAsB,EAAG,MAAO,IAChCA,MAAc,GACdA,SACO,EAALoQ,GAAQ,CACV,MAAM0jB,GAAU9zB,MAAqB,GACrCA,MAAiB,GACjBA,MAAyB8zB,GAAQC,iBAAgB,CACnD,CACF,SAASC,GAA6E5jB,GAAIC,IAAO,CACjG,SAAS4jB,GAA+D7jB,GAAIC,IAK1E,GAL0F,EAALD,KACnFpQ,MAA+B,GAC/BA,MAAkB,EAAG6zB,GAA8E,EAAG,EAAG,cAAe,KAAM,GAAI7zB,OAClIA,MAAkB,EAAGg0B,GAA8E,EAAG,EAAG,cAAe,IACxHh0B,SACO,EAALoQ,GAAQ,CACV,MAAM8jB,GAAOl0B,MAAmB,GAC1Bm0B,GAAUn0B,MAAqB,GACrCA,MAAiB,GACjBA,MAAkB,mBAAoBm0B,GAAQC,sBAAwBF,GAAI,CAC5E,CACF,SAASG,GAA6EjkB,GAAIC,IAIxF,GAJwG,EAALD,KACjGpQ,MAAsB,EAAG,MAAO,IAChCA,MAAc,GACdA,SACO,EAALoQ,GAAQ,CACV,MAAMkkB,GAAUt0B,MAAqB,GACrCA,MAAiB,GACjBA,MAAyBs0B,GAAQC,YAAW,CAC9C,CACF,SAASC,GAA6EpkB,GAAIC,IAAO,CACjG,SAASokB,GAA+DrkB,GAAIC,IAK1E,GAL0F,EAALD,KACnFpQ,MAA+B,GAC/BA,MAAkB,EAAGq0B,GAA8E,EAAG,EAAG,cAAe,KAAM,GAAIr0B,OAClIA,MAAkB,EAAGw0B,GAA8E,EAAG,EAAG,cAAe,IACxHx0B,SACO,EAALoQ,GAAQ,CACV,MAAMskB,GAAO10B,MAAmB,GAC1BoT,GAAUpT,MAAqB,GACrCA,MAAiB,GACjBA,MAAkB,mBAAoBoT,GAAQuhB,qBAAuBD,GAArE10B,CAA2E,0BAA2BA,MAAuB,EAAG+Z,GAAK3G,GAAQmc,YAAW,CAC1J,CACF,SAASqF,GAAgDxkB,GAAIC,IAAO,GAAS,EAALD,GAAQ,CAC5E,MAAMykB,GAAO70B,QACbA,MAAsB,EAAG,oBAAqB,IAC9CA,MAAkB,SAAU,SAA6FkR,IAAUlR,MAAqB60B,IAAO,MAAMC,GAAU90B,QAAwB,OAAOA,MAAmB80B,GAAQC,cAAgB7jB,GAAS,EAAlQlR,CAAqQ,SAAU,SAA6FkR,IAAUlR,MAAqB60B,IAAO,MAAMG,GAAUh1B,QAAwB,OAAOA,MAAmBg1B,GAAQC,OAAO1V,KAAKrO,IAAU,EAAlflR,CAAqf,cAAe,SAAkGkR,IAAUlR,MAAqB60B,IAAO,MAAMK,GAAUl1B,QAAwB,OAAOA,MAAmBk1B,GAAQC,YAAY5V,KAAKrO,IAAU,EAAjvBlR,CAAovB,eAAgB,WAAuGA,MAAqB60B,IAAO,MAAMO,GAAUp1B,QAAwB,OAAOA,MAAmBo1B,GAAQ/V,QAAU,GAC39Brf,MAA+B,GAC/BA,MAAkB,EAAG8xB,EAAuD,EAAG,GAAI,MAAO,IAC1F9xB,MAAkB,EAAG6yB,GAAuD,EAAG,EAAG,MAAO,IACzF7yB,QACAA,MAAkB,EAAG0zB,GAAgE,EAAG,EAAG,eAAgB,GAC3G1zB,MAAkB,EAAGi0B,GAAgE,EAAG,EAAG,eAAgB,GAC3Gj0B,MAAkB,EAAGy0B,GAAgE,EAAG,EAAG,eAAgB,GAC3Gz0B,OAAmB,CACrB,GAAS,EAALoQ,GAAQ,CACV,MAAM4C,GAAShT,QACfA,MAAmB,qBAAsBgT,GAAOqiB,UAChDr1B,MAAkB,gBAAiBgT,GAAOsiB,cAA1Ct1B,CAAyD,eAAgBgT,GAAOuiB,aAAhFv1B,CAA8F,WAAYgT,GAAOwiB,SAAjHx1B,CAA2H,WAAYgT,GAAOyiB,iBAA9Iz1B,CAAgK,iBAAkBgT,GAAOyc,eAAzLzvB,CAAyM,iBAAkBgT,GAAO4c,eAAlO5vB,CAAkP,cAAegT,GAAOuc,WAAxQvvB,CAAoR,QAASgT,GAAOqf,UAAUqD,cAA9S11B,CAA6T,aAAcgT,GAAOqf,UAAUC,WAA5VtyB,CAAwW,UAAWgT,GAAOwiB,SAAWxiB,GAAO2iB,QAAU,KAAtZ31B,CAA4Z,KAAMgT,GAAO4iB,YACza51B,MAAiB,GACjBA,MAAkB,UAAWgT,GAAO+hB,cAApC/0B,CAAmD,eAAgBgT,GAAO2d,eAC1E3wB,MAAiB,GACjBA,MAAkB,OAAQgT,GAAO6iB,YACjC71B,MAAiB,GACjBA,MAAkB,OAAQgT,GAAO8iB,oBACjC91B,MAAiB,GACjBA,MAAkB,OAAQgT,GAAO+iB,oBACjC/1B,MAAiB,GACjBA,MAAkB,OAAQgT,GAAO3W,SAAqD,IAA1C2W,GAAOqf,UAAUqD,cAAcnkC,OAAY,CACzF,CACF,MAAMykC,GAAmB,WAEnBC,GAAsBxZ,OAAOuZ,GAAiBplC,QAE9CslC,GAAc,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAM,SAmBV,SAAStgC,GAAUnD,IACf,OAAwC,MAAVA,EAClC,CAKA,SAAS4C,GAAS5C,IACd,MAAwB,iBAAVA,IAAsBmD,GAAUnD,GAClD,CAYA,SAASoC,GAAWpC,IAChB,OAAOA,cAAiBgU,QAC5B,CAOA,MAAM0vB,GAIF7lC,YAAYwrB,IACRrrB,KAAKqrB,QAAUA,GACfrrB,KAAK2lC,QAAS,CAClB,CAKA5X,YAAYC,IACRhuB,KAAKqrB,QAAQM,cAAcwS,UAAYn+B,KAAK2lC,OAxDpD,SAASnG,GAAWoG,IAChB,OAAQA,IAAUJ,GAAoBK,KAAKD,IACvCA,GAAOpyB,QAAQ+xB,GAIfO,IAAOL,GAAYK,KACnBF,EACR,CAiDYpG,CAAWx/B,KAAK+lC,aAChB/lC,KAAK+lC,WACb,EAEJL,GAAqBr2B,UAAO,SAAsCC,IAAK,OAAO,IAAKA,IAAKo2B,IAAsBn2B,MAAyBA,OAAqB,EAC5Jm2B,GAAqBl2B,UAAqBD,MAAyB,CAAEhN,KAAMmjC,GAAsBrT,UAAW,CAAC,CAAC,GAAI,cAAe,KAAMI,OAAQ,CAAEkT,OAAQ,SAAUI,YAAa,eAAiB9S,SAAU,CAAC1jB,SAE5Mm2B,GAAqBxZ,eAAiB,IAAM,CACxC,CAAE3pB,KAAMuxB,QAEZ4R,GAAqBM,eAAiB,CAClCD,YAAa,CAAC,CAAExjC,KAAMyxB,QACtB2R,OAAQ,CAAC,CAAEpjC,KAAMyxB,SAqBrB,MAAMiS,GAIFpmC,YAAYwzB,IACRrzB,KAAKqzB,SAAWA,EACpB,EAEJ4S,GAA0B52B,UAAO,SAA2CC,IAAK,OAAO,IAAKA,IAAK22B,IAA2B12B,MAAyBA,OAAsB,EAC5K02B,GAA0Bz2B,UAAqBD,MAAyB,CAAEhN,KAAM0jC,GAA2B5T,UAAW,CAAC,CAAC,GAAI,gBAAiB,OAE7I4T,GAA0B/Z,eAAiB,IAAM,CAC7C,CAAE3pB,KAAM2jC,QAUZ,MAAMC,GAIFtmC,YAAYwzB,IACRrzB,KAAKqzB,SAAWA,EACpB,EAEJ8S,GAA4B92B,UAAO,SAA6CC,IAAK,OAAO,IAAKA,IAAK62B,IAA6B52B,MAAyBA,OAAsB,EAClL42B,GAA4B32B,UAAqBD,MAAyB,CAAEhN,KAAM4jC,GAA6B9T,UAAW,CAAC,CAAC,GAAI,kBAAmB,OAEnJ8T,GAA4Bja,eAAiB,IAAM,CAC/C,CAAE3pB,KAAM2jC,QAUZ,MAAME,GAIFvmC,YAAYwzB,IACRrzB,KAAKqzB,SAAWA,EACpB,EAEJ+S,GAAyB/2B,UAAO,SAA0CC,IAAK,OAAO,IAAKA,IAAK82B,IAA0B72B,MAAyBA,OAAsB,EACzK62B,GAAyB52B,UAAqBD,MAAyB,CAAEhN,KAAM6jC,GAA0B/T,UAAW,CAAC,CAAC,GAAI,eAAgB,OAE1I+T,GAAyBla,eAAiB,IAAM,CAC5C,CAAE3pB,KAAM2jC,QAUZ,MAAMG,GAIFxmC,YAAYwzB,IACRrzB,KAAKqzB,SAAWA,EACpB,EAEJgT,GAA8Bh3B,UAAO,SAA+CC,IAAK,OAAO,IAAKA,IAAK+2B,IAA+B92B,MAAyBA,OAAsB,EACxL82B,GAA8B72B,UAAqBD,MAAyB,CAAEhN,KAAM8jC,GAA+BhU,UAAW,CAAC,CAAC,GAAI,qBAAsB,OAE1JgU,GAA8Bna,eAAiB,IAAM,CACjD,CAAE3pB,KAAM2jC,QAUZ,MAAMI,GAIFzmC,YAAYwzB,IACRrzB,KAAKqzB,SAAWA,EACpB,EAEJiT,GAA0Bj3B,UAAO,SAA2CC,IAAK,OAAO,IAAKA,IAAKg3B,IAA2B/2B,MAAyBA,OAAsB,EAC5K+2B,GAA0B92B,UAAqBD,MAAyB,CAAEhN,KAAM+jC,GAA2BjU,UAAW,CAAC,CAAC,GAAI,gBAAiB,OAE7IiU,GAA0Bpa,eAAiB,IAAM,CAC7C,CAAE3pB,KAAM2jC,QAUZ,MAAMK,GAIF1mC,YAAYwzB,IACRrzB,KAAKqzB,SAAWA,EACpB,EAEJkT,GAA0Bl3B,UAAO,SAA2CC,IAAK,OAAO,IAAKA,IAAKi3B,IAA2Bh3B,MAAyBA,OAAsB,EAC5Kg3B,GAA0B/2B,UAAqBD,MAAyB,CAAEhN,KAAMgkC,GAA2BlU,UAAW,CAAC,CAAC,GAAI,gBAAiB,OAE7IkU,GAA0Bra,eAAiB,IAAM,CAC7C,CAAE3pB,KAAM2jC,QAUZ,MAAMM,GAIF3mC,YAAYwzB,IACRrzB,KAAKqzB,SAAWA,EACpB,EAEJmT,GAA4Bn3B,UAAO,SAA6CC,IAAK,OAAO,IAAKA,IAAKk3B,IAA6Bj3B,MAAyBA,OAAsB,EAClLi3B,GAA4Bh3B,UAAqBD,MAAyB,CAAEhN,KAAMikC,GAA6BnU,UAAW,CAAC,CAAC,GAAI,kBAAmB,OAEnJmU,GAA4Bta,eAAiB,IAAM,CAC/C,CAAE3pB,KAAM2jC,QAUZ,MAAMO,GAIF5mC,YAAYwzB,IACRrzB,KAAKqzB,SAAWA,EACpB,EAEJoT,GAAgCp3B,UAAO,SAAiDC,IAAK,OAAO,IAAKA,IAAKm3B,IAAiCl3B,MAAyBA,OAAsB,EAC9Lk3B,GAAgCj3B,UAAqBD,MAAyB,CAAEhN,KAAMkkC,GAAiCpU,UAAW,CAAC,CAAC,GAAI,sBAAuB,OAE/JoU,GAAgCva,eAAiB,IAAM,CACnD,CAAE3pB,KAAM2jC,QAUZ,MAAMQ,GAIF7mC,YAAYwzB,IACRrzB,KAAKqzB,SAAWA,EACpB,EAEJqT,GAA+Br3B,UAAO,SAAgDC,IAAK,OAAO,IAAKA,IAAKo3B,IAAgCn3B,MAAyBA,OAAsB,EAC3Lm3B,GAA+Bl3B,UAAqBD,MAAyB,CAAEhN,KAAMmkC,GAAgCrU,UAAW,CAAC,CAAC,GAAI,qBAAsB,OAE5JqU,GAA+Bxa,eAAiB,IAAM,CAClD,CAAE3pB,KAAM2jC,QAUZ,MAAMS,GAIF9mC,YAAYwzB,IACRrzB,KAAKqzB,SAAWA,EACpB,EAEJsT,GAAuBt3B,UAAO,SAAwCC,IAAK,OAAO,IAAKA,IAAKq3B,IAAwBp3B,MAAyBA,OAAsB,EACnKo3B,GAAuBn3B,UAAqBD,MAAyB,CAAEhN,KAAMokC,GAAwBtU,UAAW,CAAC,CAAC,GAAI,aAAc,OAEpIsU,GAAuBza,eAAiB,IAAM,CAC1C,CAAE3pB,KAAM2jC,QAUZ,MAAMU,GAIF/mC,YAAYwzB,IACRrzB,KAAKqzB,SAAWA,EACpB,EAEJuT,GAAkCv3B,UAAO,SAAmDC,IAAK,OAAO,IAAKA,IAAKs3B,IAAmCr3B,MAAyBA,OAAsB,EACpMq3B,GAAkCp3B,UAAqBD,MAAyB,CAAEhN,KAAMqkC,GAAmCvU,UAAW,CAAC,CAAC,GAAI,wBAAyB,OAErKuU,GAAkC1a,eAAiB,IAAM,CACrD,CAAE3pB,KAAM2jC,QAgBZ,MAAMW,GAKF/4B,KAAKlM,IACDiM,QAAQC,KAAKlM,GACjB,EAiBJ,SAASyQ,KAEL,MAAO,eAAemB,QAAQ,OAI9B,SAAUjF,IAIN,OAD4B,GAAhBnN,KAAK0lC,SAAgB,GACtBC,SAAS,GACxB,EACJ,CA3BAF,GAAex3B,UAAO,SAAgCC,IAAK,OAAO,IAAKA,IAAKu3B,GAAmB,EAC5EA,GAAeza,cAAQC,OAAmB,CAAEC,QAAS,WAAoC,OAAO,IAAIua,EAAkB,EAAGra,MAAOqa,GAAgBpa,WAAY,SAkC/K,MAAMua,GAAa,CACf,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,OAAU,KACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,KACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IAC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n8kB,QACfg2jB,mBAAoBjrkB,GACpB+qkB,mBAAoB/qkB,GACpBs6kB,aAAcpnmB,OACdunmB,mBAAoBxlkB,QACpB0lkB,sBAAuB1lkB,QACvB8lkB,aAAc/6kB,GACd66kB,gBAAiB76kB,GACjBi7kB,WAAYj7kB,GACZk7kB,qBAAsBhomB,OACtBiomB,iBAAkBjomB,OAClBkomB,eAAgBlomB,OAChBmomB,WAAYnomB,OACZm+mB,gBAAiBrxlB,GACjBsxlB,aAActxlB,GACduxlB,cAAevxlB,GACfwxlB,iBAAkBxxlB,GAClBs7kB,iBAAkBt7kB,GAClBu7kB,cAAev7kB,GACfw7kB,YAAax7kB,GACbyxlB,UAAWx8kB,QACXy8kB,eAAgBx+mB,OAChBy+mB,gBAAiB3xlB,GACjB4xlB,mBAAoB5xlB,GACpB6xlB,gBAAiB7xlB,GACjB8xlB,iBAAkB9xlB,GAClB+xlB,oBAAqB/xlB,GACrBgylB,oBAAqBhylB,GACrBiylB,iBAAkBjylB,GAClBkylB,kBAAmBlylB,GACnBmylB,qBAAsBnylB,GACtBoylB,aAAcpylB,GACdqylB,gBAAiBrylB,GACjBsylB,YAAan6oB,OACbo6oB,kBAAmBxhO,GACnBqwD,WAAYluc,OACZs/mB,iBAAkBxylB,GAClByylB,cAAezylB,GACf0ylB,eAAgB1ylB,GAChB2ylB,kBAAmB3ylB,GACnB4ylB,aAAcz6oB,OACd06oB,SAAU59kB,QACV69kB,gBAAiBngB,GACjBuP,cAAe/poB,OACfkpe,aAAcrhb,GACdmib,aAAcnib,GACd+ylB,kBAAmB56oB,OACnB66oB,WAAY/9kB,QACZg+kB,qBAAsB96oB,OACtB+6oB,oBAAqB/6oB,OACrBg7oB,aAAcl+kB,QACdm+kB,cAAej7oB,OACfk7oB,eAAgBl7oB,OAChBm7oB,cAAen7oB,OACfo7oB,iBAAkBp7oB,OAClBq7oB,iBAAkBv+kB,QAClB6vN,QAAS9kO,GACT+3kB,SAAU5/nB,OACV8goB,SAAU9goB,OACV+goB,cAAehmmB,OACfimmB,cAAepoN,GACfqoN,WAAYp5kB,GACZ25kB,eAAgB1k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","names":["DelayOperator","constructor","delay","scheduler","this","call","subscriber","source","subscribe","DelaySubscriber","Subscriber","destination","super","queue","active","errored","static","state","length","time","now","shift","notification","observe","Math","max","schedule","unsubscribe","_schedule","add","dispatch","scheduleNotification","message","DelayMessage","push","_next","value","Notification","_error","err","error","_complete","currentAction","type","entityIds","skip","payload","customActionActive","logAction","setAction","hasEntity","entities","id","hasOwnProperty","isArray","Array","hasActiveState","isMultiActiveState","resolveActiveEntity","ids","getExitingActives","currentActivesIds","newIds","filtered","filter","indexOf","isNil","v","coerceArray","DEFAULT_ID_KEY","isEmpty","arr","isFunction","distinctUntilArrayItemChanged","distinctUntilChanged","prevCollection","currentCollection","some","item","i","isObject","CONFIG","resettable","ttl","producerFn","undefined","getAkitaConfig","isDefined","val","$$deleteStore","Subject","$$addStore","ReplaySubject","$$updateStore","isBrowser","window","__stores__","__queries__","$$stores","$$queries","Order","EntityActions","entitiesToArray","options","filterBy","limitTo","sortBy","sortByOrder","entity","every","fn","_sortBy","compareValues","key","order","ASC","a","b","varA","toUpperCase","varB","comparison","DESC","sort","min","slice","Set","Add","Update","Remove","__DEV__","isDev","isUndefined","removeEntities","removeAllEntities","Object","assign","newEntities","includes","newState","current","applyMiddleware","preAddEntity","mapped","keys","deepFreeze","o","freeze","oIsFunction","hasOwnProp","prototype","getOwnPropertyNames","forEach","prop","isFrozen","AkitaError","Error","toBoolean","isPlainObject","name","configKey","StoreConfig","metadata","idKey","storeName","transactionFinished","transactionInProcess","BehaviorSubject","transactionManager","activeTransactions","batchTransaction","isTransactionInProcess","applyTransaction","action","thisArg","startBatch","next","apply","endBatch","complete","transaction","target","propertyKey","descriptor","originalMethod","args","Store","initialState","inTransaction","cache","onInit","setLoading","loading","_value","_setState","setHasCache","hasCache","restartTTL","ttlConfig","getCacheTTL","clearTimeout","setTimeout","getValue","storeValue","setError","_select","project","store","asObservable","pipe","map","snapshot","_cache","config","deepFreezeFn","cacheConfig","_producerFn","getGlobalProducerFn","_dispatchAction","_newState","dispatchUpdate","handleTransaction","reset","isResettable","_initialState","console","warn","update","stateOrCallback","currentState","withHook","akitaPreUpdate","resolved","updateStoreConfig","newOptions","_","nextState","ngOnDestroy","destroy","hmrEnabled","dispatchDeleted","dispatchAdded","assertStoreHasName","className","resetCustomAction","watchTransaction","commit","of","_b","ɵfac","t","ɵngcc0","ɵdir","EntityStore","entityActions","entityIdChanges","selectEntityAction$","selectEntityIdChanges$","set","isNativePreAdd","akitaPreAddEntity","setEntities","resolve","toEntitiesObject","acc","isEntityState","isNaN","Number","activeId","hasInitialUIState","handleUICreation","collection","data","addEntities","hasNewEntities","entityId","prepend","unshift","idsOrFnOrState","newStateOrFn","entityIdChanged","updateEntities","preUpdateEntity","onEntityIdChanges","updatedEntities","idToUpdate","isUpdatingIdKey","oldEntity","isIdChanged","newEntity","merged","updatedIds","stateEntities","_a","__rest","akitaPreUpdateEntity","oldId","newId","pending","upsert","onCreate","toArray","predicate","isUpdate","baseClass","isClassBased","updateIds","newStateObj","withId","upsertMany","addedIds","withPreCheckHook","akitaPreCheckEntity","prev","nextId","hasUIStore","replace","replaced","move","from","to","splice","remove","idsOrFn","idPassed","handleUIRemove","updateActive","newStateOrCallback","setActive","idOrOptions","getActiveEntities","currentActive","result","wrap","currentIdIndex","isFirst","isLast","_setActive","addActive","uniques","removeActive","currentId","toggleActive","filterExists","createUIStore","storeConfig","defaults","ui","EntityUIStore","nextEntity","isFunc","_akitaCreateEntityFn","uiEntities","createFn","__decorate","__metadata","Function","T","setInitialEntityState","queryConfigKey","isString","Query","__store__","select","mapFn","compareKeys","keysOrFuncs","prevState","currState","isFns","keyOrFunc","func","reduce","k","selectLoading","selectError","selectHasCache","getHasCache","getEntity","QueryEntity","selectAll","asObject","getAll","entitiesToMap","hasLimit","count","finalLength","sortByOptions","selectMany","mapSkipUndefined","callbackFn","index","array","selectEntity","idOrPredicate","findEntityByPredicate","selectActiveId","getActiveId","selectActive","getActive","switchMap","selectCount","getCount","selectLast","selectAt","selectFirst","selectEntityAction","actionOrActions","actions","projectOrIds","hasActive","isIdProvided","createUIQuery","EntityUIQuery","obj","split","join","part","setValue","lastIndex","removeStoreName","skipStorageUpdate","setSkipStorageUpdate","AkitaPlugin","query","resetFn","onReset","getQuery","getStore","isEntityBased","selectSource","property","filterNilValue","withStoreName","getSource","updateStore","original","params","paginatorDefaults","pagesControls","range","startWith","cacheTimeout","clearStoreWithCache","PaginatorPlugin","initial","clearCache","currentPage","Map","pages","pagination","perPage","total","lastPage","isLoading$","async","delayFor","isDate","abs","lift","page","isObservable","clearCacheSubscription","pageChanges","withControls","withRange","response","addPage","clearStore","clearPage","delete","setPage","isPageActive","hasPage","nextPage","prevPage","setLastPage","setFirstPage","has","getPage","req","selectPage","refreshCurrentPage","getFrom","getTo","take","get","pageControls","generatePages","len","ceil","StoreAction","EntityStoreAction","AddEntities","SetEntities","UpdateEntities","RemoveEntities","UpsertEntities","UpsertManyEntities","SnapshotManager","getStoresSnapshot","stores","setStoresSnapshot","mergedOptions","lazy","normalizedStores","JSON","parse","size","_c0","NgxGalleryPreviewComponent_ngx_gallery_arrows_0_Template","rf","ctx","_r12","ctx_r11","showPrev","ctx_r13","showNext","ctx_r0","canShowPrev","canShowNext","arrowPrevIcon","arrowNextIcon","NgxGalleryPreviewComponent_ngx_gallery_action_3_Template","_r16","$event","action_r14","$implicit","ctx_r15","onClick","icon","disabled","titleText","NgxGalleryPreviewComponent_a_4_Template","ctx_r2","src","downloadIcon","NgxGalleryPreviewComponent_ngx_gallery_action_5_Template","_r18","ctx_r17","zoomOut","ctx_r3","zoomOutIcon","canZoomOut","NgxGalleryPreviewComponent_ngx_gallery_action_6_Template","_r20","ctx_r19","zoomIn","ctx_r4","zoomInIcon","canZoomIn","NgxGalleryPreviewComponent_ngx_gallery_action_7_Template","_r22","ctx_r21","rotateLeft","ctx_r5","rotateLeftIcon","NgxGalleryPreviewComponent_ngx_gallery_action_8_Template","_r24","ctx_r23","rotateRight","ctx_r6","rotateRightIcon","NgxGalleryPreviewComponent_ngx_gallery_action_9_Template","_r26","ctx_r25","manageFullscreen","ctx_r7","fullscreenIcon","NgxGalleryPreviewComponent_img_15_Template","_r30","stopPropagation","ctx_r29","imageMouseEnter","ctx_r31","imageMouseLeave","ctx_r32","mouseDownHandler","ctx_r33","ctx_r8","getTransform","positionLeft","positionTop","animation","canDragOnZoom","NgxGalleryPreviewComponent_ngx_gallery_bullets_16_Template","_r35","ctx_r34","showAtIndex","ctx_r9","images","NgxGalleryPreviewComponent_div_17_Template","ctx_r10","description","NgxGalleryImageComponent_div_1_ngx_gallery_action_2_Template","_r10","action_r7","image_r3","NgxGalleryImageComponent_div_1_div_3_Template","descriptions","_c1","a0","a1","a2","a3","NgxGalleryImageComponent_div_1_Template","_r14","handleClick","getSafeUrl","selectedIndex","clickable","showDescription","NgxGalleryImageComponent_ngx_gallery_bullets_2_Template","show","ctx_r1","NgxGalleryImageComponent_ngx_gallery_arrows_3_Template","NgxGalleryThumbnailsComponent_a_2_ngx_gallery_action_2_Template","_r9","action_r6","i_r3","NgxGalleryThumbnailsComponent_a_2_div_3_Template","remainingCountValue","_c2","NgxGalleryThumbnailsComponent_a_2_Template","_r11","image_r2","getThumbnailWidth","getThumbnailHeight","getThumbnailLeft","getThumbnailTop","hasLink","links","linkTarget","labels","remainingCount","rows","columns","NgxGalleryThumbnailsComponent_ngx_gallery_arrows_3_Template","_r13","ctx_r12","moveLeft","ctx_r14","moveRight","canMoveLeft","canMoveRight","NgxGalleryComponent_ngx_gallery_image_1_Template","_r3","openPreview","selectFromImage","getImageHeight","mediumImages","currentOptions","preview","imageArrows","imageArrowsAutoHide","imageSwipe","imageAnimation","imageSize","imageAutoPlay","imageAutoPlayInterval","imageAutoPlayPauseOnHover","imageInfinityMove","lazyLoading","imageActions","imageDescription","imageBullets","_c3","NgxGalleryComponent_ngx_gallery_thumbnails_2_Template","_r6","selectFromThumbnails","getThumbnailsMarginTop","getThumbnailsMarginBottom","getThumbnailsHeight","smallImages","thumbnailsAsLinks","thumbnailsColumns","thumbnailsRows","thumbnailMargin","thumbnailsArrows","thumbnailsArrowsAutoHide","image","thumbnailsSwipe","thumbnailSize","thumbnailsMoveSize","thumbnailsOrder","thumbnailsRemainingCount","thumbnailActions","_c4","NgxGalleryBulletsComponent_div_0_Template","_r4","i_r2","handleChange","NgxGalleryService","renderer","swipeHandlers","manageSwipe","status","element","nextHandler","prevHandler","handlers","getSwipeHandlers","listen","nativeElement","handler","removeSwipeHandlers","validateUrl","url","RegExp","getBackgroundUrl","ctorParameters","Renderer2","ɵprov","ɵɵdefineInjectable","factory","ɵɵinject","token","providedIn","NgxGalleryPreviewComponent","sanitization","elementRef","helperService","changeDetectorRef","showSpinner","zoomValue","rotateValue","previewOpen","EventEmitter","previewClose","activeChange","isOpen","initialX","initialY","initialLeft","initialTop","isMove","ngOnInit","arrows","arrowsAutoHide","ngOnChanges","changes","swipe","keyDownListener","onMouseEnter","onMouseLeave","onKeyDown","e","keyboardNavigation","isKeyboardPrev","isKeyboardNext","closeOnEsc","isKeyboardEsc","close","open","emit","forceFullscreen","closeFullscreen","stopAutoPlay","autoPlay","autoPlayPauseOnHover","startAutoPlay","timer","autoPlayInterval","infinityMove","fullscreen","doc","document","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","msFullscreenElement","openFullscreen","bypassSecurityTrustUrl","zoomStep","zoomMax","zoomMin","resetPosition","bypassSecurityTrustStyle","zoom","getClientX","getClientY","preventDefault","mouseUpHandler","mouseMoveHandler","touches","clientX","clientY","keyCode","documentElement","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","isFullscreen","exitFullscreen","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","first","_show","srcIndex","markForCheck","isLoaded","previewImage","onload","img","naturalWidth","ɵngcc1","ɵcmp","selectors","viewQuery","_t","hostBindings","inputs","closeOnClick","closeIcon","spinnerIcon","rotate","download","bullets","outputs","features","decls","vars","consts","template","dependencies","ɵngcc2","NgxGalleryArrowsComponent","NgxGalleryActionComponent","NgxGalleryBulletsComponent","styles","changeDetection","DomSanitizer","ElementRef","ChangeDetectorRef","Input","Output","ViewChild","HostListener","NgxGalleryAnimation","Fade","Slide","Rotate","Zoom","NgxGalleryImageComponent","imageClick","canChangeImage","getImages","indexes","prevIndex","nextIndex","setInterval","clearInterval","event","setChangeTimeout","timeout","NgxGalleryOrder","Column","Row","Page","NgxGalleryThumbnailsComponent","minStopIndex","validateIndex","mouseenter","setDefaultPosition","stopIndex","moveSize","maxIndex","getMaxIndex","setThumbnailsPosition","calculatedIndex","floor","getThumbnailPosition","getThumbnailDimension","thumbnailsLeft","thumbnailsMarginLeft","margin","canShowArrows","getVisibleCount","newIndex","getSafeStyle","NgxGalleryAction","NgxGalleryLayout","ThumbnailsTop","ThumbnailsBottom","NgxGalleryImageSize","Cover","Contain","NgxGalleryOptions","preventDefaults","breakpoint","use","defaultValue","width","height","fullWidth","layout","startIndex","imagePercent","thumbnails","thumbnailsPercent","thumbnailsMargin","thumbnailsAutoHide","previewDescription","previewArrows","previewArrowsAutoHide","previewSwipe","previewFullscreen","previewForceFullscreen","previewCloseOnClick","previewCloseOnEsc","previewKeyboardNavigation","previewAnimation","previewAutoPlay","previewAutoPlayInterval","previewAutoPlayPauseOnHover","previewInfinityMove","previewZoom","previewZoomStep","previewZoomMax","previewZoomMin","previewRotate","previewDownload","previewCustom","previewBullets","NgxGalleryOrderedImage","NgxGalleryComponent","myElement","imagesReady","change","previewChange","oldImagesLength","prevBreakpoint","opt","sortOptions","setBreakpoint","setOptions","checkFullWidth","ngDoCheck","oldImages","setImages","resetThumbnails","ngAfterViewInit","onResize","fullWidthTimeout","previewEnabled","onPreviewOpen","onPreviewClose","previewSelect","moveThumbnailsRight","moveThumbnailsLeft","canMoveThumbnailsRight","canMoveThumbnailsLeft","body","clientWidth","left","parentNode","innerWidth","small","medium","bigImages","big","label","breakpoints","pop","combineOptions","second","hostVars","encapsulation","HostBinding","prevClick","nextClick","handlePrevClick","handleNextClick","prevDisabled","nextDisabled","closeClick","bulletChange","getBullets","CustomHammerConfig","HammerGestureConfig","arguments","overrides","pinch","enable","ɵCustomHammerConfig_BaseFactory","NgxGalleryModule","ɵmod","ɵinj","providers","provide","HAMMER_GESTURE_CONFIG","useClass","imports","CommonModule","NgOptionHighlightDirective","_canHighlight","_highlightLabel","innerHTML","_escapeRegExp","str","term","_setInnerHtml","alternationString","termRegex","_isDefined","html","setProperty","NgOptionHighlightModule","searchTerm","NgDropdownPanelComponent_div_0_Template","headerTemplate","filterValue","NgDropdownPanelComponent_div_8_Template","footerTemplate","_c5","NgSelectComponent_ng_container_4_div_1_ng_template_1_Template","item_r7","unselect","escapeHTML","NgSelectComponent_ng_container_4_div_1_ng_template_3_Template","_c6","clear","NgSelectComponent_ng_container_4_div_1_Template","_r8","labelTemplate","clearItem","NgSelectComponent_ng_container_4_Template","selectedItems","trackByOption","NgSelectComponent_5_ng_template_0_Template","_c7","items","NgSelectComponent_5_Template","multiLabelTemplate","selectedValues","NgSelectComponent_ng_container_9_ng_template_1_Template","NgSelectComponent_ng_container_9_ng_template_3_Template","NgSelectComponent_ng_container_9_Template","loadingSpinnerTemplate","NgSelectComponent_span_10_Template","clearAllText","NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_1_Template","item_r24","ctx_r26","NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_3_Template","_c8","item$","NgSelectComponent_ng_dropdown_panel_13_div_2_Template","toggleItem","onItemHover","_r25","selected","children","parent","itemsList","markedItem","htmlId","optgroupTemplate","optionTemplate","NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_1_Template","addTagText","NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_3_Template","NgSelectComponent_ng_dropdown_panel_13_div_3_Template","_r36","ctx_r35","unmarkItem","ctx_r37","selectTag","_r32","ctx_r20","tagTemplate","NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_1_Template","ctx_r39","notFoundText","NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_3_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_4_Template","_r38","notFoundTemplate","NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_1_Template","ctx_r42","typeToSearchText","NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_3_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_5_Template","_r41","ctx_r22","typeToSearchTemplate","NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_1_Template","ctx_r45","loadingText","NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_3_Template","NgSelectComponent_ng_dropdown_panel_13_ng_container_6_Template","_r44","loadingTextTemplate","NgSelectComponent_ng_dropdown_panel_13_Template","_r48","ctx_r47","viewPortItems","ctx_r49","scroll","ctx_r50","scrollToEnd","ctx_r51","multiple","virtualScroll","bufferAmount","appendTo","dropdownPosition","filteredItems","classes","dropdownId","showAddTag","showNoItemsFound","showTypeToSearch","unescapedHTMLExp","hasUnescapedHTMLExp","htmlEscapes","NgItemLabelDirective","escape","string","test","chr","ngItemLabel","propDecorators","NgOptionTemplateDirective","TemplateRef","NgOptgroupTemplateDirective","NgLabelTemplateDirective","NgMultiLabelTemplateDirective","NgHeaderTemplateDirective","NgFooterTemplateDirective","NgNotFoundTemplateDirective","NgTypeToSearchTemplateDirective","NgLoadingTextTemplateDirective","NgTagTemplateDirective","NgLoadingSpinnerTemplateDirective","ConsoleService","random","toString","diacritics","stripSpecialChars","text","ItemsList","_ngSelect","_selectionModel","_items","_filteredItems","_markedIndex","markedIndex","noItemsToSelect","hideSelected","maxItemsSelected","maxSelectedItems","lastSelectedItem","setItems","mapItem","groupBy","_groups","_groupBy","_flatten","clearSelected","selectableGroupAsModel","_hideSelected","_showSelected","findItem","findBy","compareWith","bindValue","resolveNested","bindLabel","find","addItem","option","keepDisabled","marked","resetFilteredItems","findByLabel","toLocaleLowerCase","substr","searchFn","match","_defaultSearchFn","matchedItems","last","head","x","markNextItem","_stepToItem","markPreviousItem","markItem","markSelectedOrDefault","markDefault","lastMarkedIndex","_getLastMarkedIndex","findIndex","$ngOptionLabel","$ngOptionValue","mapSelectedItems","child","search","_getNextItemIndex","steps","groups","isFnKey","keyFn","group","isGroupByFn","withoutGroup","isObjectKey","String","selectableGroup","groupKey","groupValue","v1","KeyCode","Tab","Enter","Esc","Space","ArrowUp","ArrowDown","Backspace","NgDropdownPanelService","_dimensions","itemHeight","panelHeight","itemsPerViewport","dimensions","calculateItems","scrollPos","itemsLength","buffer","d","scrollHeight","indexByScrollTop","end","maxStart","start","topPadding","setDimensions","getScrollTo","itemTop","lastScroll","itemBottom","bottom","TOP_CSS_CLASS","BOTTOM_CSS_CLASS","SCROLL_SCHEDULER","requestAnimationFrame","animationFrameScheduler","asapScheduler","NgDropdownPanelComponent","_renderer","_zone","_panelService","_elementRef","_document","position","outsideClick","_destroy$","_scrollToEndFired","_updateScrollHeight","_lastScrollPosition","_dropdown","currentPosition","_currentPosition","_itemsLength","_onItemsLengthChanged","_startOffset","offset","handleMousedown","tagName","parentElement","_virtualPadding","paddingElementRef","_scrollablePanel","scrollElementRef","_contentPanel","contentElementRef","_handleScroll","_handleOutsideClick","_appendDropdown","_onItemsChange","currentValue","firstChange","removeChild","scrollTo","startFromOption","querySelector","offsetTop","clientHeight","scrollTop","scrollToTag","panel","adjustPosition","_parent","getBoundingClientRect","_setOffset","_handleDropdownPosition","_calculateCurrentPosition","addClass","removeClass","_updatePosition","style","opacity","runOutsideAngular","fromEvent","takeUntil","auditTime","_onContentScrolled","merge","capture","_checkToClose","contains","path","composedPath","shadowRoot","run","_updateItemsRange","_updateItems","Promise","then","_measureDimensions","_renderItemsRange","_fireScrollToEnd","_updateVirtualHeight","transform","optionHeight","padding","dropdownEl","selectRect","top","pageYOffset","appendChild","offsetLeft","minWidth","delta","offsetBottom","DOCUMENT","ngContentSelectors","NgZone","decorators","Optional","Inject","read","NgOptionComponent","stateChange$","_disabled","_isDisabled","textContent","trim","ngAfterViewChecked","_previousLabel","NgSelectConfig","disableVirtualScroll","openOnEnter","appearance","SELECTION_MODEL_FACTORY","InjectionToken","NgSelectComponent","autoFocus","newSelectionModel","_cd","_console","markFirst","closeOnSelect","selectOnTab","trackByFn","clearOnBackspace","labelForId","inputAttrs","readonly","searchWhileComposing","minTermLength","editableSearchTerm","keyDownFn","addTag","searchable","clearable","blurEvent","focusEvent","changeEvent","openEvent","closeEvent","searchEvent","clearEvent","addEvent","removeEvent","useDefaultClass","_defaultLabel","_pressedKeys","_isComposing","_keyPress$","_onChange","_onTouched","_mergeGlobalConfig","_itemsAreUsed","_compareWith","clearSearchOnAdd","_clearSearchOnAdd","_editableSearchTerm","hasValue","currentPanelPosition","dropdownPanel","_handleKeyPresses","_setInputAttributes","_setItems","_manualOpen","_setItemsFromNgOptions","focus","handleKeyDown","which","handleKeyCode","_handleArrowDown","_handleArrowUp","_handleSpace","_handleEnter","_handleTab","_handleBackspace","classList","handleClearClick","handleArrowClick","focused","toggle","_updateNgModel","_clearSearch","_onSelectionChanged","clearModel","writeValue","_handleWriteValue","registerOnChange","registerOnTouched","setDisabledState","_isTypeahead","detectChanges","_setSearchTermFromItems","searchInput","blur","tag","_primitive","handleTag","isPromise","catch","showClear","_validTerm","toLowerCase","empty","onCompositionStart","onCompositionEnd","typeahead","onInputFocus","onInputBlur","destroyed","firstItem","mapNgOptions","handleOptionChange","changedOrDestroyed","ngOptions","_isValidWriteValue","validateBinding","stringify","ngModel","isValObject","isPrimitive","tap","letter","debounceTime","input","attributes","autocorrect","autocapitalize","autocomplete","setAttribute","model","_changeSearch","_scrollToMarked","_scrollToTag","_nextItemIsTag","nextStep","observers","placeholder","contentQueries","dirIndex","hostAttrs","tabIndex","NG_VALUE_ACCESSOR","useExisting","forwardRef","multi","_r52","_r2","Attribute","ContentChild","ContentChildren","descendants","DefaultSelectionModel","_selected","groupAsModel","childrenCount","selectedCount","_setChildrenSelectedState","_removeChildren","_activeChildren","_removeParent","ɵ0","DefaultSelectionModelFactory","NgSelectModule","useValue","ContentLoaderComponent__svg_animate_7_Template","keyTimes","animationValues","duration","ContentLoaderComponent__svg_animate_9_Template","ContentLoaderComponent__svg_animate_11_Template","ContentLoaderComponent","fixedId","uid","substring","idClip","idGradient","idAria","animate","baseUrl","speed","viewBox","gradientRatio","backgroundColor","backgroundOpacity","foregroundColor","foregroundOpacity","rtl","interval","clipPath","fillStyle","fill","BulletListContentLoaderComponent","ɵBulletListContentLoaderComponent_BaseFactory","FacebookContentLoaderComponent","ɵFacebookContentLoaderComponent_BaseFactory","ListContentLoaderComponent","ɵListContentLoaderComponent_BaseFactory","ContentLoaderModule","ngModule","FormlyForm_formly_field_0_Template","field_r2","form","FormlyField_ng_template_0_Template","FormlyGroup_formly_field_0_Template","f_r1","getFieldId","formId","field","getKeyPath","_keyPath","FORMLY_VALIDATORS","assignFieldValue","paths","root","resetOnHide","assignModelValue","clone","getFieldValue","reverseDeepMerge","dest","srcArg","isNullOrUndefined","isBlankString","objAndSameType","obj1","obj2","getPrototypeOf","changingThisBreaksApplicationSecurity","_isAMomentObject","AbstractControl","Date","getTime","proto","c","create","setPrototypeOf","newVal","propDesc","getOwnPropertyDescriptor","defineProperty","defineHiddenProp","enumerable","writable","configurable","wrapProperty","setFn","_observers","fns","previousValue","changeFn","FORMLY_CONFIG","FormlyConfig","types","validators","wrappers","messages","templateManipulators","preWrapper","postWrapper","extras","checkExpressionOn","lazyRender","showError","formControl","invalid","touched","parentForm","submitted","validation","extensions","addConfig","setType","validator","setValidator","wrapper","setWrapper","manipulators","manipulator","setManipulator","validationMessages","addValidatorMessage","extension","getType","mergeExtendedType","getMergedField","defaultOptions","extendDefaults","extends","optionsTypes","componentRef","resolveFieldTypeRef","instance","component","_componentRef","_resolver","_injector","resolveComponentFactory","setTypeWrapper","getWrapper","getValidator","getValidatorMessage","class","method","extendedType","ngInjectableDef","defineInjectable","FormlyFormBuilder","formlyConfig","componentFactoryResolver","injector","buildForm","fieldGroup","core","_setOptions","disableTreeValidityCall","callback","_updateTreeValidity","bind","_buildForm","_checkField","getExtensions","prePopulate","onPopulate","f","postPopulate","formState","fieldChanges","_hiddenFieldsForCheck","_markForCheck","_componentRefs","ref","_buildField","unregisterControl","emitEvent","control","fieldIndex","_fields","opts","FormArray","controls","updateControl","removeAt","FormGroup","removeControl","setParent","findControl","shareFormControl","registerControl","setValidators","setAsyncValidators","templateOptions","disable","registerOnDisabledChange","___$disabled","FormControl","patchValue","setControl","_hide","updateValidity","onlySelf","updateValueAndValidity","statusChanges","valueChanges","__patchForEachChild","_forEachChild","cb","clearControl","ComponentFactoryResolver","Injector","inject","INJECTOR","FormlyForm","formlyBuilder","ngZone","immutable","parentFormGroup","modelChange","_modelChangeValue","modelChangeSubs","modelChange$","modelChangeSub","onStable","runGuarded","checkExpressionChange","_model","fields","_options","content","hasContent","node","nextSibling","nodeType","Node","ELEMENT_NODE","TEXT_NODE","updateInitialValue","clearModelSubscriptions","trackModelChanges","changeModel","resetModel","_initialModel","resetForm","emitModelChange","_trackModelChanges","rootKey","y","updateOn","debounce","modelOptions","default","parsers","parserFn","sub","FormlyField","FormGroupDirective","resolver","hideDeprecation","warnDeprecation","hostObservers","componentRefs","hooksObservers","detectFieldBuild","m","ngAfterContentInit","triggerHook","ngAfterContentChecked","render","resetRefs","renderField","containerRef","wps","createComponent","attachComponentRef","_lContainer","viewRef","detach","insert","hooks","r","lifecycle","setStyle","removeAttribute","hide","ViewContainerRef","FormlyAttributes","uiAttributesCache","uiAttributes","uiEvents","listeners","events","eventName","onFocus","onBlur","onChange","fieldAttrElements","_elementRefs","listener","attr","detachElementRef","attachElementRef","toggleFocus","hasAttribute","isFocused","activeElement","___$focus","onHostChange","Event","markAsDirty","FieldType","FieldArrayType","builder","fieldArray","initialModel","_build","FieldWrapper","ɵFieldWrapper_BaseFactory","fieldComponent","FormlyGroup","ɵFormlyGroup_BaseFactory","fieldGroupClassName","FormlyValidationMessage","EXPR_VALIDATORS","errorMessage$","errorMessage","fieldForm","errors","errorPath","asyncValidators","FormlyTemplateType","sanitizer","innerHtml","safeHtml","bypassSecurityTrustHtml","evalExpression","expression","argVal","ɵngcc3","FieldExpressionExtension","checkLocked","ignoreCache","checkField","_expressionProperties","expressionProperties","expressionProperty","_evalExpression","Observable","setExprValue","subscription","onDestroy","hideExpression","parentExpression","evalStringExpression","argNames","_evalExpressionPath","expressionPaths","p","arrayPath","fieldChanged","toggleFormControl","checkFieldExpressionChange","checkFieldVisibilityChange","expressionValue","hideExpressionResult","hidden","emitExpressionChanges","FieldValidationExtension","initFieldValidation","getPredefinedFieldValidation","validatorName","wrapNgValidatorFn","VALIDATORS","Validators","validatorOption","handleAsyncResult","handleResult","Le","ctrl","_childrenErrors","childCtrl","setErrors","fe","childErrors","FieldFormExtension","addFormControl","controlOptions","componentType","createControl","enabled","asyncValidator","mergeValidators","CoreExtension","getFieldComponentInstance","fieldTransforms","fieldTransform","initFieldOptions","resetFieldOnHide","setDefaultValue","initFieldWrappers","fieldTemplateManipulators","el","defaultFormlyConfig","FormlyModule","configService","configs","useFactory","deps","ANALYZE_FOR_ENTRY_COMPONENTS","__spreadArrays","s","il","j","jl","self","global","angular","fromJson","toJson","_forEach","_this","extend","_extend","equals","_equals","identity","noop","createProxyFunctions","fnNames","latebind","bindFunction","fnName","makeLateRebindFn","inherit","extra","inArray","curry","_inArray","removeFrom","_removeFrom","idx","pushTo","_pushTo","deregAll","functions","defaultsList","_i","defaultVals","reverse","pick","mergeR","memo","ancestors","n","propNames","objCopy","_prop","omit","not","pluck","propName","accept","mapObj","values","allTrueR","elem","anyTrueR","unnestR","concat","flattenR","pushR","uniqR","unnest","flatten","assertPredicate","assertFn","assertMap","predicateOrMap","errMsg","pairs","arrayTuples","maxArrayLen","_loop_1","applyPairs","keyValTuple","tail","copy","toObj","o1","o2","t1","tup","all","_arraysEq","isRegExp","any","silenceUncaughtInPromise","promise","silentRejection","services","makeStub","service","methods","fnname","noImpl","$q","$injector","Glob","glob","regexpString","seg","regexp","is","exec","fromString","matches","curried","compose","funcs","propEq","_val","and","fn1","fn2","or","ctor","eq","other","invoke","pattern","struct","toStr","tis","isNull","isNumber","isInjectable","Queue","_limit","_evictListeners","onEvict","enqueue","evict","dequeue","peekTail","peekHead","noopConsoleStub","log","table","safeConsole","getSafeConsole","documentMode","ie9Console","bound","fallbackConsole","maxLength","padString","kebobString","camelCase","$1","functionToString","fnStr","fnToString","namedFunctionMatch","_fn","seen","isRejection","Rejection","stringifyPattern","_transitionRejection","format","beforeAfterSubstr","char","hostRegex","stripLastPathElement","splitHash","splitQuery","splitEqual","trimHashVal","splitOnDelim","delim","re","joinNeighborsR","uiViewString","uiview","creationContext","$type","fqn","Category","normalizedCat","RESOLVE","TRANSITION","HOOK","UIVIEW","VIEWCONFIG","_tid","_rid","transLbl","trans","Trace","_enabled","approximateDigests","_set","categories","parseInt","category","traceTransitionStart","traceTransitionIgnored","traceHookInvocation","step","context","registeredHook","traceHookResult","hookResult","transitionOptions","traceResolvePath","when","traceResolvableResolved","resolvable","traceError","reason","traceSuccess","finalState","traceUIViewEvent","viewData","traceUIViewConfigUpdated","traceUIViewFill","traceViewSync","uivheader","mapping","uiView","viewConfig","uiv","cfg","viewDecl","$context","$name","localeCompare","traceViewServiceEvent","view","$id","$uiViewName","$uiViewContextAnchor","viewConfigString","traceViewServiceUIViewEvent","trace","UIRouterGlobals","StateParams","lastStartedTransitionId","transitionHistory","successfulTransitions","dispose","transition","lazyLoadHook","router","promises","entering","$$state","lazyLoad","lazyLoadState","retryTransition","originalTransition","orig","targetState","stateService","identifier","$url","urlService","parts","rule","sync","registerLazyLoadHook","transitionService","onBefore","lazyLoadFn","_promise","updateStateRegistry","states","_state","stateRegistry","register","UIRouterPluginBase","DefType","hasOwn","isShorthand","getParamDeclaration","paramName","location","noReloadOnSearch","reloadOnSearch","SEARCH","dynamic","defaultConfig","paramConfig","unwrapShorthand","getStaticDefaultValue","__cacheable","$$fn","PATH","Param","urlConfig","urlType","paramTypes","ParamType","arrayMode","getArrayMode","arrayDefaults","arrayParamNomenclature","$asArray","isOptional","raw","squash","getSquashPolicy","defaultPolicy","defaultSquashPolicy","getReplace","configuredKeys","paramValues","params_1","param","changed","values1","values2","validates","isDefaultValue","tuple","replaceSpecialValues","_defaultValueCache","getDefaultValue","$normalize","isSearch","normalized","encoded","encode","def","decode","$subPattern","mode","ArrayType","arrayWrap","arrayHandler","allTruthyMode","arrayUnwrap","arrayEqualsHandler","val1","val2","right","paramTypeFn","wrapperFn","$arrayMode","ParamTypes","typeQueue","defaultTypes","definition","definitionFn","_flushTypeQueue","initDefaultTypes","makeDefaultType","valToString","defaultTypeBase","hash","int","bool","Boolean","date","getFullYear","getMonth","getDate","valueOf","l","json","$inherit","newParams","$current","$to","parents","inherited","inheritList","parentParams","parentParamsKeys","PathNode","stateOrNode","paramSchema","resolvables","views","parameters","res","applyRawParams","pDef","paramDef","getParamVal","parameter","paramsFn","diff","PathUtils","makeTargetState","registry","TargetState","buildPath","toParams","$state","buildToPath","fromPath","toPath","inheritParams","applyViewConfigs","$view","viewDecls","subPath","viewConfigs","createViewConfig","toKeys","noInherit","makeInheritedParamsNode","toNode","toParamVals","incomingParamVals","fromParamVals","nodeParamVals","ownParamVals","treeChanges","reloadState","keep","node1","node2","nonDynamicParams","retained","exiting","retainedWithToParams","applyToParams","retainedNode","cloned","matching","pathA","pathB","done","tuples","nodeA","nodeB","elementIdx","resolvePolicies","LAZY","EAGER","WAIT","NOWAIT","defaultResolvePolicy","Resolvable","arg1","resolveFn","policy","literal","getPolicy","thisPolicy","statePolicy","resolvePolicy","resolveContext","findNode","asyncPolicy","customAsyncPolicy","getDependencies","resolvedDeps","resolvedValue","fromData","whens","ALL_WHENS","EAGER_WHENS","NATIVE_INJECTOR_TOKEN","ResolveContext","_path","getTokens","getResolvable","subContext","addResolvables","newResolvables","resolvePath","matchedWhens","whenOption","matchesPolicy","acceptedVals","whenOrAsync","nodeResolvables","nowait","wait","getResult","UIInjectorImpl","availableResolvables","_node","fromInjector","getNative","native","getAsync","_routerInstance","locationServiceStub","locationConfigStub","UIRouter","locationService","locationConfig","_disposed","_disposables","viewService","ViewService","globals","TransitionService","urlMatcherFactory","UrlMatcherFactory","urlRouter","UrlRouter","UrlService","StateRegistry","StateService","_plugins","_pluginapi","_rootViewContext","disposable","plugin","pluginInstance","getPlugin","pluginName","nameBuilder","selfBuilder","dataBuilder","getUrlBuilder","$urlMatcherFactoryProvider","stateObject","stateDec","newStateDec","parsed","charAt","parseUrl","compile","isMatcher","navigable","append","getNavigableBuilder","isRoot","getParamsBuilder","paramFactory","urlParams","nonUrlParams","fromConfig","pathBuilder","includesBuilder","resolvablesBuilder","resolveObj","getToken","literal2Resolvable","tuple2Resolvable","$inject","annotate","strictDi","item2Resolvable","decl","StateBuilder","matcher","builders","parentBuilder","parentName","build","chain","parentFn","segments","StateMatcher","_states","isRelative","stateName","stateOrName","base","matchGlob","isStr","__stateObjectCache","nameGlob","baseState","splitName","pathLength","relName","StateObject","stateDecl","isStateClass","matchingKeys","__uiRouterState","isStateDeclaration","isState","StateQueueManager","flush","registered","orphans","previousQueueLength","getState","notifyListeners","name_1","orphanIdx","existingState","existingFutureState","deregister","attachRoute","abstract","rulesApi","rules","urlRuleFactory","stateQueue","_registerRoot","_root","onStatesChanged","stateDefinition","_deregisterTree","getChildren","_children","deregistered","removeRule","deregisteredStates","found","decorator","builderFunction","invalidCallbacks","_defaultErrorHandler","$error$","stack","detail","boundFns","defaultErrorHandler","_handleInvalidTargetState","toState","fromState","latestThing","latest","callbackQueue","checkForRedirect","valid","toPromise","transitionTo","invokeNextCallback","nextCallback","onInvalid","reload","notify","go","defautGoOpts","relative","transOpts","defaultTransOpts","reg","getCurrentPath","latestSuccess","getCurrent","currentPath","exists","supercede","rejectedTransitionHandler","isLatest","RejectType","redirected","redirect","errorHandler","transitionToPromise","schema","include","href","defaultHrefOpts","lossy","absolute","nav","_stateRegistry","_identifier","_params","_definition","withState","withParams","withOptions","newOpts","isDef","HookBuilder","buildHooksForPhase","phase","_getEvents","buildHooks","hookType","matchingHooks","getMatchingHooks","baseHookOptions","hook","criteriaMatchPath","traceData","scope","TransitionHookScope","transitionHook","TransitionHook","tupleSort","reverseDepthSort","factor","depthDelta","priority","reverseSort","isCreate","hookPhase","TransitionHookPhase","$transitions","getHooks","matchState","criterion","toMatch","matchFn","matchGlobs","globStrings","RegisteredHook","tranSvc","eventType","matchCriteria","removeHookFromRegistry","invokeCount","_deregistered","invokeLimit","_matchingNodes","nodes","_getDefaultMatchCriteria","_getPathTypes","_getMatchingNodes","criteria","mn","pathtype","isStateHook","allMatched","makeEvent","_registeredHooks","removeHookFn","hookRegistrationFn","matchObject","CREATE","BEFORE","RUN","SUCCESS","ERROR","STATE","SUPERSEDED","ABORTED","INVALID","IGNORED","isRejectionPromise","superseded","rejection","ignored","aborted","normalize","stateSelf","Transition","_deferred","_hookBuilder","isActive","_targetState","_transitionCount","_treeChanges","createTransitionHookRegFns","onCreateHooks","onStart","onExit","onRetain","onEnter","onFinish","onSuccess","onError","hookName","enteringStates","$from","compare","pathname","paramsChanged","fromParams","allParamDescriptors","pathNode","changedValues","pathName","getResolveTokens","addResolvable","topath","targetNode","redirectedFrom","redirects","redirectOpts","newTransition","originalEnteringNodes","redirectEnteringNodes","matchingEnteringNodes","_changedParams","tc","pathsDiffer","nodeSchemas","toValues","fromValues","toVals","fromVals","_ignoredReason","same","newTC","pendTC","runAllHooks","getHooksFor","allBeforeHooks","allRunHooks","success","reject","abort","_aborted","paramDefs","invalidParams","invalidValues","fromStateOrName","toStateOrName","avoidEmptyHash","diToken","TransitionEventType","hookOrder","getResultHandler","getErrorHandler","synchronous","stateContext","isSuperseded","waitFor","nextHook","invokeHook","invokeHooks","doneCallback","remainingHooks","logError","notCurrent","getNotCurrentRejection","handleError","handleHookResult","isTargetState","HANDLE_RESULT","LOG_REJECTED_RESULT","LOG_ERROR","REJECT_ERROR","THROW_ERROR","addCoreResolvables","TRANSITION_TOKENS","isTransition","treeChangesCleanup","replaceTransitionWithNull","redirectToHook","redirectTo","makeEnterExitRetainHook","hookFn","onExitHook","onRetainHook","onEnterHook","eagerResolvePath","lazyResolveState","resolveRemaining","loadEnteringViews","enteringViews","load","activateViews","exitingViews","vc","deactivateViewConfig","activateViewConfig","updateGlobalState","clearCurrentTransition","updateUrl","$urlRouter","urlOptions","ignoredHook","ignoredReason","invalidTransitionHook","custom","_router","_eventTypes","_criteriaPaths","_deregisterHookFns","_defineCorePaths","_defineCoreEvents","_registerCoreTransitionHooks","hooksArray","Phase","TH","_defineEvent","_definePathType","transitionHookTypes","cmpByPhase","hookScope","addCoreResolves","registerAddCoreResolvables","registerIgnoredTransitionHook","registerInvalidTransitionHook","registerRedirectToHook","registerOnExitHook","registerOnRetainHook","registerOnEnterHook","eagerResolve","registerEagerResolvePath","lazyResolve","registerLazyResolveState","resolveAll","registerResolveRemaining","loadViews","registerLoadEnteringViews","registerActivateViews","updateGlobals","registerUpdateGlobalState","registerUpdateUrl","UrlConfig","_decodeParams","_isCaseInsensitive","_isStrictMode","_defaultSquashPolicy","baseHref","hashPrefix","newprefix","host","html5Mode","port","protocol","caseInsensitive","strictMode","quoteRegExp","surroundPattern","splitOnSlash","strict","decodeParams","UrlMatcher","_segments","_compiled","matchArray","details","segment","searchPlaceholder","patterns","checkParamErrors","nameValidator","matchDetails","fromSearch","_pattern","encodeDashes","encodeURIComponent","charCodeAt","pathSegmentsAndParams","staticSegments","pathParams","queryParams","weights","weightsA","weightsB","padVal","padArrays","cmp","_pairs","_getDecodedParamValue","paramValue","decodeURIComponent","memoizeTo","reverseString","allReversed","allParams","searchParams","nPathSegments","urlm","findParam","validParamVal","urlMatchers","getDetails","isValid","pathString","queryString","paramDetails","__assign","ParamFactory","globalConfig","object","$get","evt","deferIntercept","defer","urlParts","otherwise","compareFn","UrlRuleFactory","urlMatcher","isHtml5","appendBasePath","slash","cfgPort","interceptDeferred","what","makeRule","_what","fromUrlMatcher","fromRegExp","BaseUrlRule","_handler","matchPriority","optional","matchUrlParamters","stateOrDecl","sticky","isUrlRule","defaultRuleSortFn","getHandlerFn","prioritySort","URLMATCHER","REGEXP","RAW","OTHER","typeSort","urlMatcherSort","useMatchPriority","idSort","UrlRules","_sortFn","_rules","_id","_otherwiseFn","handlerFn","_sorted","ensureSorted","sorted","stableSort","_group","arrOfWrapper","wrapperA","wrapperB","cmpDiff","newurl","defaultPrevented","best","applyResult","_stopListeningFn","weight","BaseLocationServices","fireAfterUpdate","_listeners","_listener","_get","getParams","_location","_history","buildUrl","BrowserLocationConfig","_isHtml5","_baseHref","_hashPrefix","hostname","getBaseHref","baseTag","getElementsByTagName","extendStatics","__extends","__proto__","__","HashLocationService","_super","title","STRIP_COMMENTS","ARGUMENT_NAMES","locals","ensureExist","MemoryLocationConfig","_port","_protocol","_host","newval","MemoryLocationService","_url","servicesPlugin","hashLocationPlugin","locationPluginFactory","pushStateLocationPlugin","PushStateLocationService","memoryLocationPlugin","_config","_getBasePrefix","basePrefix","exactBaseHrefMatch","startsWithBase","fullUrl","replaceState","pushState","deferred","keyValsToObjectR","accum","orEmptyString","beforehash","loc","searchObject","vals","serviceClass","configurationClass","uiRouter","configuration","_uiViews","_viewConfigs","_viewConfigFactories","_viewConfigFactory","_registeredUIView","_registeredUIViews","_activeViewConfigs","_onSync","normalizeUIViewTarget","rawViewName","viewAtContext","uiViewName","uiViewContextAnchor","relativeViewNameSugar","anchorState","anchor","_rootContext","viewType","cfgFactory","cfgs","uiViewsByFqn","viewConfigDepth","depthCompare","depthFn","posNeg","uiViewTuples","uiViewDepth","stateDepth","matchingConfigs","matchedViewConfigs","unmatchedConfigTuples","configUpdated","allTuples","registerUIView","uiViews","available","vcSegments","uivSegments","negOffset","fqnToFirstSegment","uiViewContext","UIRouterRx","deregisterFns","start$","success$","mergeMap","params$","states$","onStatesChangedEvent","currentStates","deregisterFn","ON_DESTROY_SUBJECT_KEY","Symbol","OnDestroyMixin","observeOnDestroy","componentDestroyed","onDestroySubject","compInfo","untilComponentDestroyed","_lastUniqueId","removeItem","parentItem","menuElement","shown","mouseOver","getTitle","doAction","getEnabled","getShown","itemElement","subMenu","_context","_itemsCfg","_rootMenu","_menuList","_menuMap","_itemList","_itemMap","_shown","_nextId","_eventSubs","hideOnMouseDown","addEventListener","_canvasTouchStartHandler","on","fire","_clear","_parseItems","_createUI","_hideAllMenus","_updateItemsTitles","_updateItemsEnabledStatus","_showMenu","_getNextId","h","u","parentMenu","_createMenuUI","insertAdjacentHTML","display","background","border","oncontextmenu","getElementById","_hideMenu","doHover","innerText","visibility","_showMenuElement","_hideMenuElement","offsetHeight","offsetWidth","innerHeight","viewer","addPlugin","send","removePlugin","Float64Array","MIN_DOUBLE","MAX_SAFE_INTEGER","MAX_DOUBLE","DEGTORAD","RADTODEG","unglobalizeObjectId","startsWith","globalizeObjectId","vec2","vec3","vec4","mat3","mat3ToMat4","mat4","mat4ToMat3","doublesToFloats","splitDouble","createUUID","clamp","fmod","compareVec3","negateVec3","negateVec4","addVec4","addVec4Scalar","addVec3","addVec3Scalar","subVec4","subVec3","subVec2","geometricMeanVec2","subVec4Scalar","subScalarVec4","mulVec4","mulVec4Scalar","mulVec3Scalar","mulVec2Scalar","divVec3","divVec4","divScalarVec3","divVec3Scalar","divVec4Scalar","divScalarVec4","dotVec4","cross3Vec4","cross3Vec3","sqLenVec4","lenVec4","sqrt","dotVec3","dotVec2","sqLenVec3","sqLenVec2","lenVec3","distVec3","lenVec2","distVec2","rcpVec3","normalizeVec4","normalizeVec3","normalizeVec2","angleVec3","acos","vec3FromMat4Scale","vecToArray","round","xyzArrayToObject","z","xyzObjectToArray","dupMat4","mat4To3","m4s","setMat4ToZeroes","setMat4ToOnes","diagonalMat4v","diagonalMat4c","diagonalMat4s","identityMat4","identityMat3","isIdentityMat4","negateMat4","addMat4","addMat4Scalar","addScalarMat4","subMat4","subMat4Scalar","subScalarMat4","mulMat4","g","P","M","w","E","C","A","S","D","L","B","R","F","mulMat3","mulMat4Scalar","mulMat4v4","transposeMat4","transposeMat3","determinantMat4","inverseMat4","traceMat4","translationMat4v","translationMat3v","translationMat4c","translationMat4s","translateMat4v","translateMat4c","OLDtranslateMat4c","setMat4Translation","rotationMat4v","sin","cos","rotationMat4c","scalingMat4v","scalingMat3v","scalingMat4c","scaleMat4c","scaleMat4v","scalingMat4s","rotationTranslationMat4","mat4ToEuler","asin","atan2","composeMat4","quaternionToRotationMat4","decomposeMat4","mat4ToQuaternion","getColMat4","setRowMat4","lookAtMat4v","lookAtMat4c","orthoMat4c","frustumMat4v","frustumMat4","perspectiveMat4","tan","compareMat4","transformPoint3","transformPoint4","transformPoints3","transformPositions3","transformPositions4","transformVec3","transformVec4","rotateVec3X","rotateVec3Y","rotateVec3Z","projectVec4","unprojectVec3","lerpVec3","lerpMat4","identityQuaternion","eulerToQuaternion","vec3PairToQuaternion","normalizeQuaternion","angleAxisToQuaternion","quaternionToEuler","mulQuaternions","vec3ApplyQuaternion","quaternionToMat4","conjugateQuaternion","inverseQuaternion","quaternionToAngleAxis","AABB3","AABB2","OBB3","OBB2","Sphere3","transformOBB3","containsAABB3","getAABB3Diag","getAABB3DiagPoint","getAABB3Area","getAABB3Center","getAABB2Center","collapseAABB3","AABB3ToOBB3","positions3ToAABB3","decompressPosition","OBB3ToAABB3","points3ToAABB3","points3ToSphere3","positions3ToSphere3","OBB3ToSphere3","getSphere3Center","getPositionsCenter","expandAABB3","expandAABB3Point3","expandAABB3Points3","collapseAABB2","point3AABB3Intersect","planeAABB3Intersect","OBB3ToAABB2","expandAABB2","expandAABB2Point2","AABB2ToCanvas","tangentQuadraticBezier","tangentQuadraticBezier3","tangentSpline","catmullRomInterpolate","b2p0","b2p1","b2p2","b2","b3p0","b3p1","b3p2","b3p3","b3","triangleNormal","rayTriangleIntersect","rayPlaneIntersect","cartesianToBarycentric","barycentricInsideTriangle","barycentricToCartesian","mergeVertices","positions","indices","normals","uv","buildNormals","Float32Array","buildTangents","subarray","buildPickTriangles","Uint16Array","Uint8Array","colors","faceToVertexNormals","smoothNormalsAngleThreshold","transformRay","canvasPosToWorldRay","canvasPosToLocalRay","worldRayToLocalRay","buildKDTree","triangles","leaf","splitDim","aabb","POSITIVE_INFINITY","NEGATIVE_INFINITY","decompressPositions","decompressUV","decompressUVs","octDecodeVec2","octDecodeVec2s","buildEdgeIndices","pow","normal","N","index1","index2","face1","face2","Uint32Array","version","client","browser","navigator","userAgent","components","scenes","models","meshes","objects","memory","uvs","textures","transforms","materials","programs","frame","frameCount","fps","useProgram","bindTexture","bindArray","drawElements","drawArrays","tasksRun","tasksScheduled","fromCharCode","xmlToJson","nodeValue","DOCUMENT_NODE","nodeName","childNodes","compressGuid","findNodeOfType","httpRequest","XMLHttpRequest","readyState","responseXML","statusText","loadJSON","overrideMimeType","loadArraybuffer","atob","ArrayBuffer","responseType","onreadystatechange","propertyIsEnumerable","isNumeric","parseFloat","isFinite","isID","isSameComponent","apply2","applyIf","isEmptyObject","inQuotes","flattenParentChildHierarchy","uuid","oid","_head","_headLength","_tail","_index","_length","sceneId","startTime","prevTime","deltaTime","_superTypes","_addScene","ticksPerOcclusionTest","ticksPerRender","renderCountdown","once","scheduleTask","runTasks","getNumTasks","tasksBudget","occlusionTestCountdown","doOcclusionTest","isComponent","scene","_owner","_dontClear","dontClear","meta","_attached","_attachments","_subIdMap","_subIdEvents","_eventSubsNum","_events","_eventCallDepth","_ownedComponents","_addComponent","_updateScheduled","_own","glRedraw","imageDirty","castsShadow","shadowsDirty","glResort","needStateSort","owner","isType","off","hasSubs","_message","_attach","sceneDefault","sceneSingleton","recompiles","subs","onDetached","managingLifecycle","onAttached","_checkComponent","_checkComponent2","_needUpdate","_doUpdate","_update","_removeComponent","I","O","_isObject","_numTriangles","numTriangles","originalSystemId","_flags","_aabb","_offsetAABB","_offset","_registerObject","isEntity","isModel","visible","_setVisible","_objectVisibilityUpdated","_getFlag","highlighted","_setHighlighted","_objectHighlightedUpdated","xrayed","_setXRayed","_objectXRayedUpdated","_setSelected","_objectSelectedUpdated","edges","_setEdges","culled","_setCulled","clippable","_setClippable","collidable","_setCollidable","pickable","_setPickable","colorize","_setColorize","_objectColorizeUpdated","_colorize","_setOpacity","_objectOpacityUpdated","_aabbDirty","_objectOffsetUpdated","receivesShadow","saoEnabled","_finalize","_destroy","_deregisterObject","V","U","_canvas","canvas","_element","_isCustom","elementId","_adjustPosition","_createDefaultSpinner","processes","_injectDefaultCSS","createElement","_processes","G","WEBGL","SUPPORTED_EXTENSIONS","X","getContext","antialias","ANTIALIAS","getContextAttributes","getShaderPrecisionFormat","FRAGMENT_SHADER","HIGH_FLOAT","precision","FS_MAX_FLOAT_PRECISION","MEDIUM_FLOAT","DEPTH_BUFFER_BITS","getParameter","DEPTH_BITS","MAX_TEXTURE_SIZE","MAX_CUBE_MAP_SIZE","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_RENDERBUFFER_SIZE","MAX_TEXTURE_UNITS","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_ATTRIBS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_VARYING_VECTORS","getSupportedExtensions","depthTexturesSupported","WEBGL_depth_texture","H","W","_backgroundColor","_backgroundColorFromAmbientLight","backgroundColorFromAmbientLight","gl","webgl2","transparent","contextAttr","alpha","preserveDrawingBuffer","stencil","premultipliedAlpha","boundary","_initWebGL","_webglcontextlostListener","_webglContextLost","_webglcontextrestoredListener","_webglContextRestored","timeEnd","_tick","_spinner","pixels","spinnerElementId","_createCanvas","float","_getElementXY","scrollLeft","offsetParent","hint","FRAGMENT_SHADER_DERIVATIVE_HINT","FASTEST","OES_standard_derivatives","getExtension","FRAGMENT_SHADER_DERIVATIVE_HINT_OES","EXT_frag_depth","getSnapshot","readPixels","loseWebGLContext","loseContext","spinner","removeEventListener","Y","_scene","_matPool","_matPoolNextFreeIndex","_rtcViewMats","_rtcPickViewMats","lastProgramId","pbrEnabled","withSAO","backfaces","frontface","textureUnit","pass","shadowViewMatrix","shadowProjMatrix","pickViewMatrix","pickProjMatrix","pickZNear","pickZFar","pickInvisible","lineWidth","getRTCViewMatrix","_getNewMat","camera","viewMatrix","getRTCPickViewMatrix","q","saveAsBMP","saveAsPNG","saveAsJPEG","getImageData","toDataURL","btoa","save","scale","imageSmoothingEnabled","drawImage","restore","K","allocated","_hasDepthTexture","depthTexture","setSize","webglContextRestored","_touch","bindFramebuffer","FRAMEBUFFER","framebuf","drawingBufferWidth","drawingBufferHeight","deleteTexture","texture","deleteFramebuffer","deleteRenderbuffer","renderbuf","createTexture","TEXTURE_2D","texParameteri","TEXTURE_MIN_FILTER","NEAREST","TEXTURE_MAG_FILTER","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","texImage2D","RGBA","UNSIGNED_BYTE","DEPTH_COMPONENT","UNSIGNED_INT","createRenderbuffer","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","DEPTH_COMPONENT16","createFramebuffer","framebufferTexture2D","COLOR_ATTACHMENT0","DEPTH_ATTACHMENT","framebufferRenderbuffer","isFramebuffer","checkFramebufferStatus","FRAMEBUFFER_COMPLETE","FRAMEBUFFER_INCOMPLETE_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_DIMENSIONS","FRAMEBUFFER_UNSUPPORTED","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","readImage","_getImageDataCache","pixelData","imageData","putImageData","_imageDataCache","createImageData","unbind","getTexture","_texture","renderBuffer","activeTexture","hasDepthTexture","getDepthTexture","_depthTexture","_dethTexture","Z","primitive","primIndex","pickSurfacePrecision","_canvasPos","Int16Array","_origin","_direction","_indices","Int32Array","_localPos","_worldPos","_viewPos","_bary","_worldNormal","_uv","canvasPos","_gotCanvasPos","origin","_gotOrigin","direction","_gotDirection","_gotIndices","localPos","_gotLocalPos","worldPos","_gotWorldPos","viewPos","_gotViewPos","bary","_gotBary","worldNormal","_gotWorldNormal","_gotUV","Q","compiled","handle","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","isContextLost","getShaderInfoLog","$","uniform1i","J","_gl","bindArrayBuffer","enableVertexAttribArray","vertexAttribPointer","itemSize","itemType","stride","ee","te","ie","se","init","linked","validated","uniforms","samplers","_vertexShader","VERTEX_SHADER","vertex","_fragmentShader","fragment","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","ACTIVE_UNIFORMS","getActiveUniform","getUniformLocation","SAMPLER_2D","SAMPLER_CUBE","ACTIVE_ATTRIBUTES","getActiveAttrib","getAttribLocation","getLocation","getAttribute","deleteProgram","deleteShader","itemByteSize","Int8Array","BYTE","UNSIGNED_SHORT","SHORT","INT","FLOAT","usage","dataLength","numItems","_allocate","_handle","createBuffer","bindBuffer","bufferData","setData","bufferSubData","deleteBuffer","oe","rtcCenter","rtcCenterHash","numMarkers","markers","markerList","markerIndices","positionsBuf","lenPositionsBuf","indicesBuf","sectionPlanesActive","culledBySectionPlanes","occlusionTestList","lenOcclusionTestList","aabbDirty","markerListDirty","positionsDirty","occlusionTestListDirty","addMarker","markerWorldPosUpdated","removeMarker","_buildMarkerList","_buildPositions","vbosDirty","_buildAABB","_buildVBOs","_buildOcclusionTestList","_updateActiveSectionPlanes","ARRAY_BUFFER","STATIC_DRAW","ELEMENT_ARRAY_BUFFER","perspective","near","occludable","_sectionPlanesState","sectionPlanes","dir","dist","ae","ne","le","_occlusionLayers","_occlusionLayersList","_occlusionLayersListDirty","_shaderSource","_program","_shaderSourceHash","_shaderSourceDirty","_programDirty","_markersToOcclusionLayersMap","_onCameraViewMatrix","_occlusionTestListDirty","_onCameraProjMatrix","_onCanvasBoundary","needOcclusionTest","bindRenderBuf","getHash","_buildShaderSource","_buildProgram","_buildOcclusionLayersList","_readPixelBuf","_buildVertexShaderSource","_buildFragmentShaderSource","logarithmicDepthBufferEnabled","_uViewMatrix","_uProjMatrix","_uSectionPlanes","pos","_aPosition","_uLogDepthBufFC","drawMarkers","uniformMatrix4fv","_project","matrix","far","LN2","uniform1f","uniform3fv","POINTS","unbindRenderBuf","he","ce","_numSamples","_programError","_aUV","_uDepthTexture","_uCameraNear","_uCameraFar","_uCameraProjectionMatrix","_uCameraInverseProjectionMatrix","_uScale","_uIntensity","_uBias","_uKernelRadius","_uMinResolution","_uRandomSeed","_uvBuf","_positionsBuf","_indicesBuf","_getInverseProjectMat","projMatrix","sao","projection","viewport","clearColor","DEPTH_TEST","BLEND","frontFace","CCW","_uPerspective","intensity","bias","kernelRadius","minResolution","uniform2fv","_uViewport","TRIANGLES","numSamples","_dirty","ue","me","de","pe","ge","_e","_uOcclusionTexture","_uDepthCutoff","_uSampleOffsets","_uSampleWeights","uniform1fv","exp","PI","ve","alphaDepthMask","drawableMap","drawableListPreCull","isStateSortable","stateSortCompare","drawableList","rebuildRenderFlags","renderFlags","getShadowRenderBuf","getShadowViewMatrix","getShadowProjMatrix","drawShadow","colorOpaque","_occlusionTester","webglContextLost","addDrawable","removeDrawable","getPickID","putPickID","lights","getAmbientColorAndIntensity","force","OES_element_index_uint","possible","CULL_FACE","depthMask","drawDepth","_lightsState","occlusionTexture","drawColorOpaque","colorTransparent","xrayedSilhouetteTransparent","xrayedSilhouetteOpaque","highlightedSilhouetteTransparent","highlightedSilhouetteOpaque","selectedSilhouetteTransparent","selectedSilhouetteOpaque","edgesOpaque","edgesTransparent","selectedEdgesTransparent","selectedEdgesOpaque","xrayedEdgesTransparent","xrayedEdgesOpaque","highlightedEdgesTransparent","highlightedEdgesOpaque","drawEdgesColorOpaque","drawSilhouetteXRayed","drawEdgesXRayed","blendEquation","FUNC_ADD","blendFuncSeparate","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","ONE","blendFunc","drawEdgesColorTransparent","drawColorTransparent","drawEdgesHighlighted","drawSilhouetteHighlighted","drawEdgesSelected","drawSilhouetteSelected","renderTime","TEXTURE0","TEXTURE_CUBE_MAP","disableVertexAttribArray","pickSurface","includeEntityIds","excludeEntityIds","drawPickMesh","delegatePickedEntity","pickSurfacePrecisionEnabled","precisionRayPickSurface","pickSurfaceNormal","canPickTriangle","drawPickTriangles","pickTriangleSurface","canPickWorldPos","drawPickNormals","drawPickDepths","drawOcclusion","opaqueOnly","beginSnapshot","renderSnapshot","readSnapshot","endSnapshot","be","KEY_BACKSPACE","KEY_TAB","KEY_ENTER","KEY_SHIFT","KEY_CTRL","KEY_ALT","KEY_PAUSE_BREAK","KEY_CAPS_LOCK","KEY_ESCAPE","KEY_PAGE_UP","KEY_PAGE_DOWN","KEY_END","KEY_HOME","KEY_LEFT_ARROW","KEY_UP_ARROW","KEY_RIGHT_ARROW","KEY_DOWN_ARROW","KEY_INSERT","KEY_DELETE","KEY_NUM_0","KEY_NUM_1","KEY_NUM_2","KEY_NUM_3","KEY_NUM_4","KEY_NUM_5","KEY_NUM_6","KEY_NUM_7","KEY_NUM_8","KEY_NUM_9","KEY_A","KEY_B","KEY_C","KEY_D","KEY_E","KEY_F","KEY_G","KEY_H","KEY_I","KEY_J","KEY_K","KEY_L","KEY_M","KEY_N","KEY_O","KEY_P","KEY_Q","KEY_R","KEY_S","KEY_T","KEY_U","KEY_V","KEY_W","KEY_X","KEY_Y","KEY_Z","KEY_LEFT_WINDOW","KEY_RIGHT_WINDOW","KEY_SELECT_KEY","KEY_NUMPAD_0","KEY_NUMPAD_1","KEY_NUMPAD_2","KEY_NUMPAD_3","KEY_NUMPAD_4","KEY_NUMPAD_5","KEY_NUMPAD_6","KEY_NUMPAD_7","KEY_NUMPAD_8","KEY_NUMPAD_9","KEY_MULTIPLY","KEY_ADD","KEY_SUBTRACT","KEY_DECIMAL_POINT","KEY_DIVIDE","KEY_F1","KEY_F2","KEY_F3","KEY_F4","KEY_F5","KEY_F6","KEY_F7","KEY_F8","KEY_F9","KEY_F10","KEY_F11","KEY_F12","KEY_NUM_LOCK","KEY_SCROLL_LOCK","KEY_SEMI_COLON","KEY_EQUAL_SIGN","KEY_COMMA","KEY_DASH","KEY_PERIOD","KEY_FORWARD_SLASH","KEY_GRAVE_ACCENT","KEY_OPEN_BRACKET","KEY_BACK_SLASH","KEY_CLOSE_BRACKET","KEY_SINGLE_QUOTE","KEY_SPACE","altDown","ctrlDown","mouseDownLeft","mouseDownMiddle","mouseDownRight","keyDown","keyboardEnabled","mouseover","mouseCanvasPos","_keyboardEventsElement","keyboardEventsElement","_bindEvents","_eventsBound","_keyDownListener","shiftDown","_keyUpListener","_mouseEnterListener","_getMouseCanvasPos","_mouseLeaveListener","_mouseDownListener","_mouseUpListener","_clickListener","_dblClickListener","_mouseMoveListener","_mouseWheelListener","deltaY","passive","_unbindEvents","OrientationChangeEvent","_orientationchangedListener","DeviceMotionEvent","_deviceMotionListener","DeviceOrientationEvent","_deviceOrientListener","pageX","pageY","setEnabled","setKeyboardEnabled","getKeyboardEnabled","Pe","ye","xe","autoBoundary","_autoBoundary","_onCanvasSize","_getState","Me","inverseMatrix","transposedMatrix","_inverseMatrixDirty","_transposedMatrixDirty","_fov","_canvasResized","fov","fovAxis","_fovAxis","unproject","inverseViewMatrix","we","_scale","Ee","_left","_right","_bottom","_top","Ce","Ae","Se","De","Be","Te","Re","Fe","Ne","Ie","Oe","ke","Ve","deviceMatrix","hasDeviceMatrix","normalMatrix","_perspective","_ortho","_frustum","_customProjection","_eye","_look","_up","_worldUp","_worldRight","_worldForward","eye","look","up","worldAxis","gimbalLock","constrainPitch","_projectionType","orbitYaw","_gimbalLock","orbitPitch","_constrainPitch","yaw","pitch","pan","_worldAxis","worldUp","xUp","yUp","zUp","worldRight","worldForward","eyeLookDist","viewNormalMatrix","ortho","frustum","customProjection","je","isLight","ze","_shadowRenderBuf","_shadowViewMatrix","_shadowProjMatrix","_shadowViewMatrixDirty","_shadowProjMatrixDirty","color","space","_lightCreated","_lightDestroyed","Ue","Ge","isGeometry","Xe","He","We","Ye","qe","getPositionsBounds","MAX_VALUE","createPositionsDecodeMatrix","compressPositions","quantized","decodeMatrix","decompressAABB","getUVBounds","compressUVs","compressNormals","decompressNormals","decompressNormal","Ke","Ze","Qe","$e","Je","isReadableGeometry","compressGeometry","primitiveName","positionsDecodeMatrix","uvDecodeMatrix","normalsBuf","colorsbuf","uvBuf","_edgeThreshold","edgeThreshold","_edgeIndicesBuf","_pickTrianglePositionsBuf","_pickTriangleColorsBuf","_boundingSphere","_obb","_obbDirty","LINES","LINE_LOOP","LINE_STRIP","TRIANGLE_STRIP","TRIANGLE_FAN","_buildHash","colorsBuf","autoVertexNormals","_getEdgeIndices","_buildEdgeIndices","_getPickTrianglePositions","_buildPickTriangleVBOs","_getPickTriangleColors","_buildPickVertexVBOs","_sceneVertexBufs","_pickVertexPositionsBuf","_pickVertexColorsBuf","_decompressedPositions","_setAABBDirty","_decompressedNormals","_decompressedUV","obb","et","xSize","ySize","zSize","center","tt","it","opaque","mask","blend","st","rt","ambient","diffuse","specular","emissive","shininess","reflectivity","alphaMode","alphaCutoff","pointSize","ambientMap","_ambientMap","diffuseMap","_diffuseMap","specularMap","_specularMap","emissiveMap","_emissiveMap","alphaMap","_alphaMap","reflectivityMap","_reflectivityMap","normalMap","_normalMap","occlusionMap","_occlusionMap","diffuseFresnel","_diffuseFresnel","specularFresnel","_specularFresnel","emissiveFresnel","_emissiveFresnel","alphaFresnel","_alphaFresnel","reflectivityFresnel","_reflectivityFresnel","_makeHash","hasMatrix","encoding","ot","fillColor","fillAlpha","edgeColor","edgeAlpha","edgeWidth","defaultWhiteBG","defaultLightBG","defaultDarkBG","phosphorous","sunset","vectorscope","battlezone","sepia","yellowHighlight","greenSelected","gamegrid","at","presets","_preset","preset","nt","lt","ht","meters","abbrev","metres","centimeters","centimetres","millimeters","millimetres","yards","feet","inches","ct","_units","units","unitsInfo","worldToRealPos","realToWorldPos","ut","_supported","blendCutoff","blendFactor","supported","_active","_kernelRadius","_intensity","_bias","_minResolution","_blur","_blendCutoff","_blendFactor","dt","roundPoints","perspectivePoints","square","pt","minPerspectivePointSize","maxPerspectivePointSize","filterIntensity","minIntensity","maxIntensity","_needRecompile","ft","thick","thicker","gt","mt","canvasElement","canvasId","HTMLCanvasElement","_numObjects","visibleObjects","_numVisibleObjects","xrayedObjects","_numXRayedObjects","highlightedObjects","_numHighlightedObjects","selectedObjects","_numSelectedObjects","colorizedObjects","_numColorizedObjects","opacityObjects","_numOpacityObjects","offsetObjects","_numOffsetObjects","_modelIds","_objectIds","_visibleObjectIds","_xrayedObjectIds","_highlightedObjectIds","_selectedObjectIds","_colorizedObjectIds","_opacityObjectIds","_offsetObjectIds","_collidables","_compilables","lightMaps","reflectionMaps","realWorldOffset","alert","clippingCaps","addSectionPlane","removeSectionPlane","addLight","removeLight","addReflectionMap","removeReflectionMap","addLightMap","removeLightMap","metrics","passes","clearEachPass","gammaInput","gammaOutput","gammaFactor","_entityOffsetsEnabled","entityOffsetsEnabled","_pickSurfacePrecisionEnabled","_logarithmicDepthBufferEnabled","_pbrEnabled","_initDefaults","_viewport","_camera","geometry","material","xrayMaterial","edgeMaterial","selectedMaterial","highlightMaterial","nextID","isDrawable","_sectionPlaneCreated","_lightMapCreated","_reflectionMapCreated","_sectionPlaneDestroyed","_lightMapDestroyed","_reflectionMapDestroyed","_registerModel","_deregisterModel","_recompile","_passes","_clearEachPass","_saveAmbientColor","backgroundImage","_lastAmbientColor","modelIds","numObjects","objectIds","numVisibleObjects","visibleObjectIds","numXRayedObjects","xrayedObjectIds","numHighlightedObjects","highlightedObjectIds","numSelectedObjects","selectedObjectIds","numColorizedObjects","colorizedObjectIds","opacityObjectIds","offsetObjectIds","_ticksPerRender","_ticksPerOcclusionTest","pointsMaterial","linesMaterial","_center","rayPick","includeEntities","excludeEntities","exclude","clearLights","clearSectionPlanes","getAABB","withObjects","setObjectsVisible","setObjectsCollidable","setObjectsCulled","setObjectsSelected","setObjectsHighlighted","setObjectsXRayed","setObjectsEdges","setObjectsColorized","setObjectsOpacity","setObjectsPickable","setObjectsOffset","vt","_material","_geometry","billboard","stationary","_baseColorMap","_glossinessMap","_specularGlossinessMap","_metallicMap","_roughnessMap","_metallicRoughnessMap","yt","Pt","bt","baseColor","glossiness","metallic","roughness","specularF0","linear","sRGB","gamma","xt","Mt","wt","_hash","_useCount","Et","drawHash","put","drawMesh","depthFunc","LEQUAL","_bindProgram","_uViewNormalMatrix","sectionPlanesActivePerLayer","_lastMaterialId","_baseTextureUnit","CW","_uPointSize","_uMaterialAmbient","_uMaterialColor","uniform4f","_uMaterialEmissive","_uMaterialShininess","_uMaterialDiffuse","_uMaterialSpecular","_uAlphaModeCutoff","_uMaterialAmbientMap","_uMaterialAmbientMapMatrix","_uDiffuseMap","_uDiffuseMapMatrix","_uSpecularMap","_uSpecularMapMatrix","_uEmissiveMap","_uEmissiveMapMatrix","_uAlphaMap","_uAlphaMapMatrix","_uReflectivityMap","_uReflectivityMapMatrix","_uNormalMap","_uNormalMapMatrix","_uOcclusionMap","_uOcclusionMapMatrix","_uDiffuseFresnelEdgeBias","edgeBias","_uDiffuseFresnelCenterBias","centerBias","_uDiffuseFresnelEdgeColor","_uDiffuseFresnelCenterColor","centerColor","_uDiffuseFresnelPower","power","_uSpecularFresnelEdgeBias","_uSpecularFresnelCenterBias","_uSpecularFresnelEdgeColor","_uSpecularFresnelCenterColor","_uSpecularFresnelPower","_uAlphaFresnelEdgeBias","_uAlphaFresnelCenterBias","_uAlphaFresnelEdgeColor","_uAlphaFresnelCenterColor","_uAlphaFresnelPower","_uReflectivityFresnelEdgeBias","_uReflectivityFresnelCenterBias","_uReflectivityFresnelEdgeColor","_uReflectivityFresnelCenterColor","_uReflectivityFresnelPower","_uEmissiveFresnelEdgeBias","_uEmissiveFresnelCenterBias","_uEmissiveFresnelEdgeColor","_uEmissiveFresnelCenterColor","_uEmissiveFresnelPower","_uBaseColor","_uMaterialMetallic","_uMaterialRoughness","_uMaterialSpecularF0","_uBaseColorMap","_uBaseColorMapMatrix","_uMetallicMap","_uMetallicMapMatrix","_uRoughnessMap","_uRoughnessMapMatrix","_uMetallicRoughnessMap","_uMetallicRoughnessMapMatrix","_uMaterialGlossiness","_uMaterialReflectivity","_uGlossinessMap","_uGlossinessMapMatrix","_uSpecularGlossinessMap","_uSpecularGlossinessMapMatrix","_uModelMatrix","FALSE","worldMatrix","_uModelNormalMatrix","worldNormalMatrix","_uClippable","_uColorize","_lastColorize","uniform4fv","_uOffset","_lastGeometryId","_uPositionsDecodeMatrix","_uUVDecodeMatrix","uniformMatrix3fv","_aNormal","_aColor","_aFlags","flagsBuf","LESS","_uGammaFactor","_uLightAmbient","_uLightColor","_uLightDir","_uLightPos","_uLightAttenuation","_uShadowViewMatrix","_uShadowProjMatrix","_uLightMap","_uReflectionMap","_lastVertexBufsId","attenuation","Ct","At","St","Dt","Lt","_xrayMaterial","_highlightMaterial","_selectedMaterial","_uFillColor","_lastIndicesBufId","Bt","Tt","Rt","Ft","Nt","_edgeMaterial","_uEdgeColor","It","Ot","kt","Vt","pickID","_uPickColor","jt","zt","Ut","Gt","_uZFar","Xt","Ht","Wt","Yt","qt","Kt","Zt","combineGeometry","vertexBufs","indicesBufCombined","mesh","Qt","visibleLayers","sectioned","numLayers","numVisibleLayers","$t","Jt","ei","ti","ii","si","ri","oi","ai","ni","li","occluder","_checkBillboard","layer","pickHash","_drawRenderer","_shadowRenderer","_emphasisFillRenderer","_emphasisEdgesRenderer","_pickMeshRenderer","_pickTriangleRenderer","_occlusionRenderer","_parentNode","_quaternion","_rotation","_position","_worldMatrix","_worldNormalMatrix","_localMatrixDirty","_worldMatrixDirty","_worldNormalMatrixDirty","quaternion","rotation","_isModel","parentId","isNode","addChild","isMesh","_makeDrawHash","_putDrawRenderers","_makePickHash","_putPickRenderers","_makeOcclusionHash","occlusionHash","_putOcclusionRenderer","_setLocalMatrixDirty","_setWorldMatrixDirty","_buildWorldMatrix","_buildWorldNormalMatrix","_updateAABB","__localMatrix","rotateOnWorldAxis","rotateX","rotateY","rotateZ","translate","translateX","translateY","translateZ","_getActiveSectionPlanes","_updateRenderFlags","hi","drawPickVertices","_visible","_xrayed","_highlighted","ci","radiusTop","radiusBottom","radialSegments","heightSegments","openEnded","atan","lod","radius","widthSegments","di","flipDir","pi","fi","originatingSystem","authoringTool","getViewpoint","reverseClippingPlanes","mi","orthogonal_camera","camera_view_point","camera_direction","camera_up_vector","view_to_world_scale","perspective_camera","field_of_view","clipping_planes","view_setup_hints","spaces_visible","spacesVisible","space_boundaries_visible","spaceBoundariesVisible","openings_visible","openingsVisible","padStart","ifc_guid","originating_system","authoring_tool_id","entries","coloring","defaultInvisible","exceptions","_createBCFComponents","default_visibility","selection","snapshot_type","snapshot_data","setViewpoint","rayCast","immediate","gi","vi","_withBCFComponent","metaScene","getObjectIDsByType","cameraFlight","flyTo","updateCompositeObjects","metaObjects","getObjectIDsInSubtree","bi","_saoEnabled","_edgesEnabled","edgesEnabled","_pInterval","_fadeMillisecs","_cancelFade","_onCameraMatrix","_onSceneTick","_startFade","_pInterval2","_onSceneMouseDown","_onSceneMouseUp","_onSceneMouseMove","_img","_initFade","Pi","includeGizmos","insertBefore","yi","pickId","_layer","_portionId","_color","_colorizing","_transparent","initFlags","setVisible","_setColor","setColor","setTransparent","setOffset","setHighlighted","setXRayed","setSelected","setEdges","setClippable","setCollidable","setPickable","setCulled","xi","_uint8Arrays","_float32Arrays","getUInt8Array","getFloat32Array","Mi","Ii","Oi","ki","_withSAO","_getHash","getValid","drawLayer","_uRenderPass","_uWorldMatrix","_uWorldNormalMatrix","layerIndex","_aFlags2","flags2Buf","_aOffset","offsetsBuf","_buildShader","_uSAOParams","_buildVertexShader","_buildFragmentShader","Vi","ji","zi","Ui","Gi","Xi","_uColor","Hi","Wi","Yi","edgeIndicesBuf","qi","Ki","Zi","Qi","_aPickColor","pickColorsBuf","_uPickInvisible","$i","Ji","_uPickZNear","_uPickZFar","es","ts","ss","rs","os","as","ns","ls","hs","_lastLightId","cs","us","ds","ps","_aMetallicRoughness","metallicRoughnessBuf","fs","_s","gs","_compile","_colorRenderer","_colorRendererWithSAO","_flatColorRenderer","_flatColorRendererWithSAO","_colorQualityRenderer","_colorQualityRendererWithSAO","_depthRenderer","_normalsRenderer","_silhouetteRenderer","_edgesRenderer","_edgesColorRenderer","_pickDepthRenderer","_pickNormalsRenderer","_pickNormalsFlatRenderer","colorRenderer","colorRendererWithSAO","flatColorRenderer","flatColorRendererWithSAO","colorQualityRenderer","colorQualityRendererWithSAO","silhouetteRenderer","depthRenderer","normalsRenderer","edgesRenderer","edgesColorRenderer","pickMeshRenderer","pickNormalsRenderer","pickNormalsFlatRenderer","pickDepthRenderer","occlusionRenderer","shadowRenderer","ms","vs","bs","maxVerts","maxIndices","metallicRoughness","pickColors","flags","flags2","offsets","edgeIndices","Ps","ys","xs","Ms","ws","Es","Cs","As","Ss","Ds","Ls","Bs","Ts","Rs","Fs","Ns","Is","Os","ks","Vs","js","sortId","solid","autoNormals","_batchingRenderers","_buffer","maxGeometryBatchSize","_scratchMemory","scratchMemory","_numPortions","_numVisibleLayerPortions","_numTransparentLayerPortions","_numXRayedLayerPortions","_numSelectedLayerPortions","_numHighlightedLayerPortions","_numClippableLayerPortions","_numEdgesLayerPortions","_numPickableLayerPortions","_numCulledLayerPortions","_modelAABB","_portions","_finalized","_preCompressed","canCreatePortion","createPortion","meshMatrix","worldAABB","pickColor","vertsBase","numVerts","numPortions","finalize","quantizedPositions","DYNAMIC_DRAW","numVisibleLayerPortions","numHighlightedLayerPortions","numXRayedLayerPortions","numSelectedLayerPortions","numClippableLayerPortions","numEdgesLayerPortions","numPickableLayerPortions","numCulledLayerPortions","numTransparentLayerPortions","_setFlags","_setFlags2","_updateBackfaceCull","drawNormals","indicessBuf","edgeIndicessBuf","zs","Us","Gs","_instanceExt","_aModelMatrixCol0","modelMatrixCol0Buf","_aModelMatrixCol1","modelMatrixCol1Buf","_aModelMatrixCol2","modelMatrixCol2Buf","vertexAttribDivisorANGLE","_aModelNormalMatrixCol0","modelNormalMatrixCol0Buf","_aModelNormalMatrixCol1","modelNormalMatrixCol1Buf","_aModelNormalMatrixCol2","modelNormalMatrixCol2Buf","drawElementsInstancedANGLE","numInstances","Xs","Hs","Ws","Ys","qs","Ks","Zs","Qs","$s","Js","er","tr","ir","sr","rr","ar","nr","lr","hr","cr","ur","dr","pr","WEBGL_INFO","fr","_r","gr","mr","vr","br","Pr","yr","xr","Mr","wr","Er","Cr","Ar","Sr","Dr","Lr","Br","Tr","Rr","Fr","Nr","_instancingRenderers","numIndices","_colors","_metallicRoughness","_pickColors","_offsets","_modelMatrixCol0","_modelMatrixCol1","_modelMatrixCol2","_modelNormalMatrixCol0","_modelNormalMatrixCol1","_modelNormalMatrixCol2","Ir","Or","kr","Vr","jr","zr","Ur","Gr","Xr","Hr","Wr","Yr","qr","Kr","_positionsDecodeMatrix","Zr","Qr","$r","Jr","eo","io","so","ro","oo","ao","no","lo","_linesInstancingRenderers","ho","co","uniform2f","_uIntensityRange","_uNearPlaneHeight","uo","po","fo","_o","mo","vo","bo","Po","yo","xo","Mo","wo","intensities","Eo","Co","Ao","So","Do","Lo","Bo","_pointsBatchingRenderers","colorsCompressed","To","Ro","drawArraysInstancedANGLE","Fo","No","Io","Oo","ko","Vo","jo","zo","Uo","Go","Xo","Ho","Wo","Yo","qo","Ko","Zo","Qo","$o","Jo","_pointsInstancingRenderers","ea","ANGLE_instanced_arrays","ta","ia","sa","ra","oa","aa","_maxGeometryBatchSize","_layerList","_nodeList","_lastRTCCenter","_lastDecodeMatrix","_lastNormals","_instancingLayers","_currentBatchingLayers","_meshes","_nodes","numGeometries","numEntities","_numLines","_numPoints","_viewMatrix","_viewNormalMatrix","_viewMatrixDirty","_worldMatrixNonIdentity","_opacity","isPerformanceModel","getPickViewMatrix","createGeometry","createMesh","geometryId","createEntity","meshIds","_pickable","_culled","_clippable","_collidable","_edges","_backfaces","entityList","_rebuildAABB","numLines","numPoints","_castsShadow","_receivesShadow","_updateRenderFlagsVisibleLayers","_getActiveSectionPlanesForLayer","na","la","ha","ca","ua","da","pa","fa","ga","_localMatrix","inheritStates","_rtcCenter","_setSubtreeAABBsDirty","highlited","removeChildren","numChildren","ma","funcAdd","funcSubtract","funcReverseSubtract","zero","one","srcColor","oneMinusSrcColor","dstColor","oneMinusDstColor","srcAlpha","oneMinusSrcAlpha","dstAlpha","oneMinusDstAlpha","contantColor","oneMinusConstantColor","constantAlpha","oneMinusConstantAlpha","srcAlphaSaturate","front","back","frontAndBack","never","less","equal","lequal","greater","notequal","gequal","always","cw","ccw","nearest","linearMipmapNearest","nearestMipmapNearest","nearestMipmapLinear","linearMipmapLinear","repeat","clampToEdge","mirroredRepeat","rgb","rgba","luminance","luminanceAlpha","textureBinding2D","textureBindingCubeMap","compareRToTexture","unsignedByte","va","ba","Pa","setPreloadColor","TEXTURE_CUBE_MAP_POSITIVE_X","TEXTURE_CUBE_MAP_NEGATIVE_X","TEXTURE_CUBE_MAP_POSITIVE_Y","TEXTURE_CUBE_MAP_NEGATIVE_Y","TEXTURE_CUBE_MAP_POSITIVE_Z","TEXTURE_CUBE_MAP_NEGATIVE_Z","setTarget","setImage","pixelStorei","UNPACK_FLIP_Y_WEBGL","flipY","setProps","minFilter","NEAREST_MIPMAP_NEAREST","LINEAR_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_LINEAR","generateMipmap","magFilter","wrapS","wrapT","ya","xa","Ma","wa","_checkMinFilter","_checkMagFilter","_checkWrapS","_checkWrapT","_checkFlipY","_checkEncoding","_src","_image","_translate","_rotate","_matrixDirty","_checkFilter","crossOrigin","Image","Ea","IfcOpeningElement","IfcSpace","IfcWindow","IfcPlate","DEFAULT","Ca","hoverColor","frontColor","backColor","leftColor","rightColor","topColor","bottomColor","boundaries","_textureCanvas","fillRect","font","textAlign","fillText","localeService","setZUp","setYUp","getArea","setAreaHighlighted","getAreaDir","getAreaUp","getImage","Aa","navCube","_navCubeScene","_navCubeCanvas","_navCubeCamera","_zUp","_synchCamera","_cubeTextureCanvas","_cubeSampler","_cubeMesh","_shadow","shadowVisible","_onCameraWorldAxis","_repaint","_onCameraFOV","_synchProjection","_onCameraProjection","_onMouseEnter","_onMouseLeave","_onMouseDown","_onMouseUp","cursor","_onMouseMove","buttons","_fitVisible","_cameraFitFOV","cameraControl","pivotPos","_cameraFly","orthoScale","fitFOV","_cameraFlyDuration","jumpTo","_onUpdated","setCameraFitFOV","cameraFitFOV","setCameraFly","cameraFly","setCameraFlyDuration","cameraFlyDuration","setFitVisible","fitVisible","setSynchProjection","synchProjection","getVisible","getFitVisible","getCameraFly","getCameraFitFOV","getCameraFlyDuration","getSynchProjection","Sa","tube","tubeSegments","arc","Da","La","Ba","_viewer","_pos","_rtcPos","_baseDir","_rootNode","_displayMeshes","_affordanceMeshes","_ignoreNextSectionPlaneDirUpdate","_createNodes","_setSectionPlane","_sectionPlane","_onSectionPlanePos","_onSectionPlaneDir","_setPos","_setDir","sectionPlane","_setSectionPlaneDir","arrowHead","arrowHeadBig","arrowHeadHandle","curve","curveHandle","hoop","axis","axisHandle","red","highlightRed","green","highlightGreen","blue","highlightBlue","highlightBall","vertices","highlightPlane","plane","ghosted","ghostMaterial","filled","planeFrame","xCurve","xCurveHandle","xCurveArrow1","xCurveArrow2","yCurve","yCurveHandle","yCurveArrow1","yCurveArrow2","zCurve","zCurveHandle","zCurveCurveArrow1","zCurveArrow2","xAxisArrow","xAxisArrowHandle","xAxis","xAxisHandle","yAxisArrow","yAxisArrowHandle","yShaft","yShaftHandle","zAxisArrow","zAxisArrowHandle","zShaft","zAxisHandle","xHoop","yHoop","zHoop","_onCameraControlHover","_onCameraControlHoverLeave","_canvasMouseDownListener","pointerEnabled","_canvasMouseMoveListener","_canvasMouseUpListener","_canvasWheelListener","_destroyNodes","Ta","_mesh","getHighlighted","getSelected","Ra","onHoverEnterPlane","onHoverLeavePlane","onClickedNothing","onClickedPlane","_onHoverEnterPlane","_onHoverLeavePlane","_onClickedNothing","_onClickedPlane","_planes","overviewCanvas","_onViewerCameraMatrix","_onViewerCameraWorldAxis","_onViewerCameraFOV","_onInputMouseMove","_onCanvasMouseUp","_onCanvasMouseOut","overviewVisible","setPlaneHighlighted","setPlaneSelected","Fa","Na","Ia","_freeControls","_sectionPlanes","_controls","_shownControlId","overviewCanvasId","_overview","getShownControl","hideControl","showControl","_onSceneSectionPlaneCreated","setOverviewVisible","getOverviewVisible","createSectionPlane","flipSectionPlanes","destroySectionPlane","_destroyFreeControls","Oa","rootMetaObject","ka","foundIFCBuildingStoreys","Va","ja","containerElement","metaModel","_baseId","_treeViewPlugin","_rootMetaObject","_containerElement","_rootElement","_muteSceneEvents","_muteTreeEvents","_rootNodes","_objectNodes","_rootName","rootName","_sortNodes","sortNodes","_pruneEmptyNodes","pruneEmptyNodes","_showListItemElementId","_onObjectVisibility","checked","numVisibleEntities","nodeId","switchExpandHandler","_expandSwitchElement","switchCollapseHandler","_collapseSwitchElement","_checkboxChangeHandler","_nodeToObjectID","_withNodeTree","objectId","_hierarchy","hierarchy","_autoExpandDepth","autoExpandDepth","_objectToNodeID","setAutoExpandDepth","setHierarchy","_validate","_createEnabledNodes","_createDisabledNodes","_findEmptyNodes","_createStoreysNodes","_createTypesNodes","_createContainmentNodes","_doSortNodes","_synchNodesToEntities","_createTrees","expandToDepth","_countEntities","_sortChildren","_getSpatialSortFunc","_alphaSortFunc","_spatialSortFunc","_createNodeElement","treeViewPlugin","treeViewNode","onclick","collapse","_collapseNode","showNode","unShowNode","scrollIntoView","block","_destroyed","za","_modelTreeViews","_autoAddModels","autoAddModels","metaModels","addModel","modelTreeViews","removeModel","withNodeTree","Ua","getMetaModel","getXKT","exports","module","define","pako","code","level","chunkSize","windowBits","memLevel","strategy","gzip","msg","ended","chunks","strm","avail_out","deflateInit2","header","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","onData","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","inflateSetDictionary","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","TypeError","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","pending_buf","pending_out","total_out","_tr_flush_block","block_start","strstart","max_chain_length","prev_length","nice_match","w_size","w_mask","good_match","lookahead","match_start","window_size","hash_size","adler","total_in","ins_h","hash_shift","hash_mask","match_length","_tr_tally","max_lazy_match","last_lit","prev_match","match_available","good_length","max_lazy","nice_length","max_chain","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","bi_buf","bi_valid","data_type","_tr_init","deflateInit","deflateReset","deflateResetKeep","hcrc","comment","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","havedict","check","wbits","ncode","nlen","ndist","have","lens","work","lendyn","distdyn","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","Ga","Xa","Ha","Wa","positionsCompression","normalsCompression","meshPositions","meshIndices","meshEdgesIndices","meshColors","entityIDs","entityMeshes","entityIsObjects","globalizeObjectIds","excludeTypesMap","includeTypesMap","objectDefaults","excludeUnclassifiedObjects","Ya","qa","Ka","entityMeshIds","entityMatrices","entityUsesInstancing","Za","Qa","$a","instancedPositionsDecodeMatrix","batchedPositionsDecodeMatrix","Ja","en","tn","decodeMatrices","matrices","eachPrimitivePositionsAndNormalsPortion","eachPrimitiveIndicesPortion","eachPrimitiveEdgeIndicesPortion","eachPrimitiveDecodeMatricesPortion","eachPrimitiveColor","primitiveInstances","eachEntityId","eachEntityPrimitiveInstancesPortion","eachEntityMatricesPortion","eachEntityMatrix","sn","rn","an","nn","ln","reusedPrimitivesDecodeMatrix","eachPrimitiveColorAndOpacity","eachTileAABB","eachTileEntitiesPortion","hn","cn","un","dn","reusedGeometriesDecodeMatrix","eachGeometryPrimitiveType","eachGeometryPositionsPortion","eachGeometryNormalsPortion","eachGeometryColorsPortion","eachGeometryIndicesPortion","eachGeometryEdgeIndicesPortion","eachMeshGeometriesPortion","eachMeshMatricesPortion","eachMeshMaterial","eachEntityMeshesPortion","pn","_n","gn","eachMetaObjectId","eachMetaObjectType","eachMetaObjectName","eachMetaObjectParent","eachEntityMetaObject","createMetaModel","includeTypes","excludeTypes","destroyMetaModel","vn","bn","Pn","yn","dataSource","supportedVersions","_dataSource","_objectDefaults","_includeTypes","_excludeTypes","_excludeUnclassifiedObjects","_globalizeObjectIds","xkt","metaModelSrc","metaModelData","_loadModel","_parseModel","DataView","getUint32","_createDefaultMetaModelIfNeeded","getProperties","_ref","xn","Blob","crc","readUint8Array","FileReader","onerror","readAsArrayBuffer","RangeError","webkitSlice","mozSlice","msSlice","writeUint8Array","getData","readAsText","codecTime","crcTime","loaded","postMessage","zip","useWebWorkers","codecClass","crcType","getUint16","bitFlag","compressionMethod","lastModDateRaw","lastModDate","crc32","compressedSize","uncompressedSize","filenameLength","extraFieldLength","unescape","_worker","setUint32","directory","headerArray","filename","setUint8","setUint16","getHours","getMinutes","getSeconds","Deflater","terminate","deflater","inflater","workerScripts","workerScriptsPath","Worker","scripts","Reader","Writer","BlobReader","Data64URIReader","TextReader","BlobWriter","Data64URIWriter","TextWriter","createReader","Inflater","getEntries","commentLength","getUint8","createWriter","getResponseHeader","byteLength","setRequestHeader","onwrite","write","file","FileWriter","HttpReader","HttpRangeReader","ArrayBufferReader","ArrayBufferWriter","ZipDirectoryEntry","addHttpContent","ZipFileEntry","importHttpContent","importZip","FS","Mn","_eventSubIDMap","_eventSubEvents","_locale","_messages","_locales","locale","loadMessages","clearMessages","locales","wn","En","translatePlurals","Cn","An","Sn","Dn","Ln","Bn","_look1","_eye1","_up1","_look2","_eye2","_up2","_orthoScale1","_orthoScale2","_flying","_flyEyeLookUp","_flyingEye","_flyingLook","_callback","_callbackScope","_time1","_time2","easing","fit","trail","stop","_flyingEyeLookUp","poi","_fitFOV","_projection2","_projMatrix1","_projMatrix2","_duration","_jumpTo","_trail","_fit","_ease","_easeOutExpo","_easeInCubic","cancel","Tn","_buffToStr","bin","fb","rsl","ril","rASCII0","wf","wsl","wil","_strToBuff","_readLine","fromJSON","toJSON","fromOBJ","c_verts","c_uvt","c_norms","i_verts","i_uvt","i_norms","fromMD2","ident","skinwidth","skinheight","framesize","num_skins","num_vertices","num_st","num_tris","num_glcmds","num_frames","offset_skins","offset_st","offset_tris","offset_frames","offset_glcmds","offset_end","skins","frames","_normals","verts","norms","fromCollada","DOMParser","parseFromString","asset","_asset","geometries","_libGeometries","_libImages","_libMaterials","effects","_libEffects","created","modified","up_axis","_getMesh","sources","surface","from3DS","edit","_edit3ds","keyf","_keyf3ds","_edit_object","desc","_keyf_objdes","_keyf_objhierarch","dummy_name","_obj_trimesh","_tri_vertexl","_tri_facel1","uvt","_tri_mappingcoors","local","_tri_local","fromBIV","verS","texS","indS","verO","verL","texO","texL","indO","indL","_readFloats","_readInts","toBIV","_writeFloats","_writeInts","gen","Plane","inds","Cube","Sphere","mat","rotateDeg","interpolate","unwrap","remap","utils","Rn","Fn","objectsVisible","objectsEdges","objectsXrayed","objectsHighlighted","objectsSelected","objectsClippable","objectsPickable","objectsColorize","objectsOpacity","saveObjects","_mask","restoreObjects","Nn","In","On","kn","Vn","jn","zn","Un","Gn","dollyToCanvasPos","_unproject","Xn","Hn","Wn","Yn","qn","Kn","Zn","_configs","_pivotWorldPos","_cameraOffset","_azimuth","_polar","_radius","_pivotPosSet","_pivoting","_pivotViewPos","_pivotProjPos","_pivotCanvasPos","_cameraDirty","_onViewMatrix","_onProjMatrix","_onTick","updatePivotElement","getPivotPos","_pivotElement","scrollX","scrollY","setPivotElement","startPivot","_cameraLookingDownwards","getPivoting","setPivotPos","setCanvasPivotPos","continuePivot","showPivot","_hideTimeout","hidePivot","endPivot","Qn","_cameraControl","schedulePickEntity","schedulePickSurface","pickCursorPos","picked","pickedSurface","pickResult","_lastPickedEntityId","_needFireEvents","fireEvents","$n","Jn","pickController","pointerCanvasPos","_documentKeyDownHandler","_documentKeyUpHandler","_mouseDownHandler","planView","panRightClick","_documentMouseMoveHandler","panDeltaX","panDeltaY","firstPerson","rotateDeltaY","dragRotationRate","rotateDeltaX","_canvasMouseMoveHandler","_documentMouseUpHandler","_mouseUpHandler","pagePos","removeProperty","_mouseEnterHandler","_mouseWheelHandler","performance","dollyDelta","mouseWheelDollyRate","followPointerDirty","tl","sl","rl","ol","al","_onSceneKeyDown","_isKeyDownForAction","AXIS_VIEW_RIGHT","AXIS_VIEW_BACK","AXIS_VIEW_LEFT","AXIS_VIEW_FRONT","AXIS_VIEW_TOP","AXIS_VIEW_BOTTOM","followPointer","pivotController","nl","_clicks","_timeout","_canvasMouseDownHandler","mouseDownClientX","mouseDownClientY","mouseDownCursorX","mouseDownCursorY","smartPivot","_canvasMouseUpHandler","doublePickFlyTo","ll","_onSceneKeyUp","ROTATE_Y_POS","ROTATE_Y_NEG","ROTATE_X_POS","ROTATE_X_NEG","keyboardRotationRate","DOLLY_BACKWARDS","DOLLY_FORWARDS","keyboardDollyRate","PAN_FORWARDS","PAN_BACKWARDS","PAN_LEFT","PAN_RIGHT","PAN_UP","PAN_DOWN","keyboardPanRate","panDeltaZ","hl","cl","panController","dollyProximityThreshold","dollyMinSpeed","rotationInertia","constrainVertical","panInertia","dollyInertia","ul","_mouseLeaveHandler","_mouseMoveHandler","dl","pl","fl","changedTouches","touchStartTime","_canvasTouchMoveHandler","longTouchTimeout","longTapRadius","touchPanRate","touchDollyRate","_l","longTapTimeout","_canvasTouchEndHandler","ml","_keyMap","keyboardLayout","navMode","activeTouches","tapStartPos","tapStartTime","lastTapTime","_updates","_controllers","_handlers","_cameraUpdater","keyMap","pivotElement","_reset","dolyDelta","dollyToPointer","panToPointer","_destroyHandlers","_destroyControllers","vl","projectId","revisionId","author","createdAt","creatingApplication","propertySets","getJSON","extId","bl","external","withMetaObjectsInSubtree","getObjectIDsInSubtreeByType","Pl","valueType","yl","properties","xl","metaObjectsByType","_typeCounts","propertySetIds","_removeMetaModel","Ml","wl","language","sendToPlugins","resetView","_snapshotBegun","Cl","Al","bimViewer","server","_mutexActivation","Sl","busyModalBackdropElement","_modal","_modalVisible","Dl","Ll","buttonElement","_modelMementos","_modelsExplorer","_saveModelMemento","_destroyModelMemento","_restoreModelMemento","unShowObjectInExplorers","_resetCamera","Bl","Tl","Rl","cameraControlNavModeMediator","setFirstPersonModeActive","pivoting","Fl","_onPick","_sectionTool","Nl","Il","Ol","kl","Vl","sectionPlanesPlugin","_sectionPlanesPlugin","_buildMenu","_onSceneSectionPlaneDestroyed","doHoverEnter","doHoverLeave","getNumSections","clearSections","flipSections","menuButtonElement","_buttonElement","_counterElement","counterElement","_menuButtonElement","_menuButtonArrowElement","menuButtonArrowElement","_sectionToolContextMenu","sectionTool","_updateSectionPlanesCount","_initSectionMode","zl","navCubeCanvasElement","_navCube","Ul","Gl","IfcRoof","IfcSlab","IfcWall","IfcWallStandardCase","IfcCovering","IfcDoor","IfcStair","IfcStairFlight","IfcProxy","IfcRamp","IfcColumn","IfcBeam","IfcCurtainWall","IfcTransportElement","IfcFooting","IfcRailing","IfcFurnishingElement","IfcFurniture","IfcSystemFurnitureElement","IfcFlowSegment","IfcFlowitting","IfcFlowTerminal","IfcFlowController","IfcFlowFitting","IfcDuctSegment","IfcDistributionFlowElement","IfcDuctFitting","IfcLightFixture","IfcAirTerminal","IfcBuildingElementProxy","IfcSite","IfcMember","Xl","isModelLoaded","modelId","loadModel","unloadModel","enableEditModels","editModel","deleteModel","getModelIds","getLoadedModelIds","loadAllModels","unloadAllModels","Hl","Wl","modelsTabElement","unloadModelsButtonElement","modelsElement","_enableAddModels","_modelsTabElement","_loadModelsButtonElement","loadModelsButtonElement","_unloadModelsButtonElement","_addModelButtonElement","addModelButtonElement","_modelsElement","_modelsTabButtonElement","_xktLoader","_modelsContextMenu","_modelsInfo","_numModels","_numModelsLoaded","_projectId","loadProject","getProject","unloadProject","_parseProject","_buildModelsMenu","_parseViewerConfigs","_parseViewerContent","_parseViewerState","viewerConfigs","setConfigs","viewerContent","_parseModelsLoaded","modelsLoaded","_loadNextModel","viewerState","setViewerState","getLoadedProjectId","_busyModal","getConfig","getMetadata","_loadGeometry","getGeometry","objectColorSource","getObjectColorSource","_jumpToInitialCamera","getNumModelsLoaded","_getLoadedModelIds","getModelsInfo","getModelInfo","Yl","ql","_bimViewer","_enablePropertiesInspector","showObjectProperties","Kl","objectsTabElement","showAllObjectsButtonElement","hideAllObjectsButtonElement","objectsElement","_objectsTabElement","_showAllObjectsButtonElement","_hideAllObjectsButtonElement","_objectsTabButtonElement","_treeView","_treeViewContextMenu","_onModelLoaded","_onModelUnloaded","expandTreeViewToDepth","showNodeInTreeView","unShowNodeInTreeView","Zl","classesTabElement","showAllClassesButtonElement","hideAllClassesButtonElement","classesElement","_classesTabElement","_showAllClassesButtonElement","_hideAllClassesButtonElement","_classesTabButtonElement","Ql","$l","storeysTabElement","showAllStoreysButtonElement","hideAllStoreysButtonElement","storeysElement","_storeysTabElement","_showAllStoreysButtonElement","_hideAllStoreysButtonElement","_storeysTabButtonElement","selectStorey","_selectObjects","Jl","eh","_saveOrthoActive","_cameraControlNavModeMediator","_orthoMode","_enterThreeDMode","_exitThreeDMode","_navCubeMode","_firstPersonMode","setThreeDModeActive","th","showObjectInExplorers","ih","sh","_enterOrthoMode","_exitOrthoMode","rh","propertiesTabElement","propertiesElement","_metaObject","_propertiesTabElement","_propertiesElement","_propertiesTabButtonElement","showObjectPropertySets","_setPropertySets","oh","querySelectorAll","isEqualNode","ah","explorerElement","toolbarElement","inspectorElement","busyModelBackdropElement","_customizeViewer","_initCanvasContextMenus","_explorerElement","_inspectorElement","_objectsExplorer","_classesExplorer","_storeysExplorer","_propertiesInspector","_resetAction","_fitAction","_threeDMode","_hideTool","_selectionTool","_queryTool","setControlsEnabled","openTab","setAllObjectsVisible","setAllObjectsXRayed","_bcfViewpointsPlugin","_fastNavPlugin","_initConfigs","createRange","createContextualFragment","firstChild","_canvasContextMenu","_objectContextMenu","getOpenTab","cameraNear","cameraFar","saoBias","saoIntensity","saoNumSamples","saoKernelRadius","xrayContext","externalMetadata","setConfig","setBackgroundColor","setObjectColorSource","getProjectsInfo","getProjects","getProjectInfo","getObjectInfo","_objectColorSource","tabOpen","expandObjectsTree","expandClassesTree","expandStoreysTree","setCamera","_parseSelectedStorey","_parseThreeDMode","selectedStorey","threeDActive","set3DEnabled","_withObjectsInSubtree","setAllObjectsSelected","flyToObject","viewFitObjects","viewFitAll","jumpToObject","viewFitModels","_openTab","get3DEnabled","setOrthoEnabled","getOrthoEnabled","saveBCFViewpoint","loadBCFViewpoint","hideSectionEditControl","baseId","findId","FloatArrayType","tempMat1","tempMat2","tempVec4$6","math","globalId","doubleVals","floatValsHigh","floatValsLow","floatPair","low","lut","d0","d1","d2","d3","v2","vectors","geometricMean","u0","u1","u2","v0","x2","y2","z2","vec","theta","tempVec3","trunc","xyz","arry","a00","a01","a02","a03","a10","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","v3","m4","m14","m8","m13","m12","m9","b04","b05","b06","b07","b08","b09","invDet","m15","m3","m7","m11","translation","anglerad","ax","xy","yz","zx","xx","xz","yy","zz","wx","wy","wz","m21","m22","m23","m31","m32","m33","sx","sy","sz","invSX","invSY","invSZ","posx","posy","posz","upx","upy","upz","targetx","targety","targetz","z0","z1","x0","x1","y0","y1","tb","fmin","fmax","fmin4","fmax4","tempMat20","tempMat21","tempMat22","fovyrad","aspectratio","znear","zfar","pmin","pmax","m1","m2","points","points2","p0","p1","p2","m0","m5","m6","m10","mat2","viewMat","projMat","t2","leni","lenj","euler","c1","c2","c3","s1","s2","s3","norm_u_norm_v","real_part","angleAxis","halfAngle","fsin","p3","q0","q1","q2","q3","qx","qy","qz","qw","ix","iy","iz","iw","tx","ty","tz","twx","twy","twz","txx","txy","txz","tyy","tyz","tzz","angle","aabb1","aabb2","diagVec","xneg","xpos","yneg","ypos","zneg","zpos","xmin","ymin","zmin","xmax","ymax","zmax","sphere","tempVec3a","tempVec3b","lenPositions","numPositions","point","lenPoints","xCenter","yCenter","zCenter","constant","canvasWidth","canvasHeight","p1x","p1y","p1z","p2x","p2y","p2z","p3x","p3y","p3z","mag","tempVec3c","tempVec3d","tempVec3e","isect","edge1","edge2","pvec","det","tvec","qvec","cartesian","dot00","dot01","dot02","dot11","dot12","denom","invDenom","positionsMap","indicesLookup","uniquePositions","uniqueNormals","uniqueUV","indices2","vx","vy","vz","uvi","ab","ac","crossVec","nvecs","j0","j1","j2","normVec","tempVec3f","tempVec3g","tangents","uv0","uv1","uv2","deltaPos1","deltaPos2","deltaUV1","deltaUV2","tangent","addTo","pickPositions","pvi","pci","vertexMap","vertexNormals","vertexNormalAccum","posi","jj","tempVec4a","tempVec4b","rayOrigin","rayDir","rayOriginDest","rayDirDest","tempMat4b","tempMat4c","tempVec4c","tempVec4d","worldRayOrigin","worldRayDir","pvMat","pvMatInverse","clipX","clipY","localRayOrigin","localRayDir","tempMat4","modelMatInverse","dimLength","buildNode","KD_TREE_MIN_TRIANGLES","KD_TREE_MAX_DEPTH","dim","mid","numLeft","numRight","i0","pi1","pi2","numTris","oct","octs","indicesReverseLookup","weldedIndices","faces","numFaces","compa","compb","compc","cross","weldVertices","precisionPoints","lenUniquePositions","buildFaces","ib","ic","face","thresholdDot","edge","normal1","normal2","dot","largeIndex","faceIndex","stats","guidChars","b64","attributeRenamer","attribute","ob","xhr","ok","defaultCallback","request","loadArraybuffer$1","dataUriRegexResult","isBase64","query_string","pair","objectConstructor","list","visit","scenesRenderInfo","sceneIDMap","taskQueue","tickEvent","taskBudget","fpsSamples","elapsedTime","lastTime","totalFPS","Core","until","newFPS","fireTickEvents","renderScenes","forceRender","renderInfo","Component","forget","subId","instances","id2","oldComponent","oldAttachment","attachment","subIdr","expectedType","expectedTypes","tempVec3a$$","tempMat","rtcCenterWorld","rtcCenterView","getPlaneRTCPos","rtcPlanePos","rtcCenterToPlaneDist","dirNormalized","WEBGL_INFO$1","ext","oCanvas","sc","bHasImageData","bHasDataURL","bHasBase64","createBMP","oData","strHeader","iWidth","iHeight","iFileSize","iImageWidth","iImageHeight","iDataSize","aImgData","iOffsetX","iOffsetY","strPixelRow","strPixelData","aData","strData","encodeData","saveFile","makeDataURI","strMime","makeImageObject","strSource","oImgElement","scaleCanvas","flipy","oSaveCanvas","oSaveCtx","Shader","lines","numberedLines","Sampler","unit","arrayBuf","ids$4","joinSansComments","srcLines","line","logErrors","Program","uName","numUniforms","numAttribs","sampler","ArrayBuf","createSampleOffsets","KERNEL_RADIUS","createSampleWeights","stdDev","gaussian","uvIncrement","ids$3","RenderState","Geometry","octEncodeVec3$1","xfunc","yfunc","tempx","tempy","octDecodeVec2$1","dot$1","geometryCompressionUtils","xwid","ywid","zwid","maxInt","multiplier","dec","currentCos","bestCos","memoryStats$1","bigIndicesSupported$6","IndexArrayType$1","tempAABB$2","ReadableGeometry","bounds","arrays","newPositions","lenCompressed","lenDecompressed","newNormals","newUV","newColors","Material","alphaModes$1","alphaModeNames$1","PhongMaterial","DrawShaderSource","buildVertexLambert","sectionPlanesState","lightsState","geometryState","clipping","quantizedGeometry","light","buildFragmentLambert","buildVertexDraw","meshState","texturing","hasTextures","hasNormals$1","getReceivesShadow","buildFragmentDraw","materialState","phongMaterial","metallicMaterial","specularMaterial","TEXTURE_DECODE_FUNCS$2","tempVec3a$Y","ids$2","DrawRenderer","drawRenderers","frameCtx","maxTextureUnits","program","numSectionPlanes","sectionPlaneIndex","sectionPlaneUniforms","baseColorMap","metallicMap","roughnessMap","metallicRoughnessMap","glossinessMap","specularGlossinessMap","lastColorize","logDepthBufFC","shadowRenderBuf","EmphasisFillShaderSource","buildVertex$5","hasNormals","buildFragment$5","ids$1","tempVec3a$X","EmphasisFillRenderer","xrayFillRenderers","EmphasisEdgesShaderSource","buildVertex$4","buildFragment$4","tempVec3a$W","EmphasisEdgesRenderer","renderers$4","PickMeshShaderSource","buildVertex$3","buildFragment$3","tempVec3a$V","PickMeshRenderer","renderers$3","PickTriangleShaderSource","buildVertex$2","buildFragment$2","tempVec3a$U","PickTriangleRenderer","renderers$2","OcclusionShaderSource","buildVertex$1","buildFragment$1","tempVec3a$T","OcclusionRenderer","renderers$1","ShadowShaderSource","buildVertex","buildFragment","ShadowRenderer","renderers","uSectionPlaneActive","uSectionPlanePos","uSectionPlaneDir","RenderFlags","angleAxis$1","q1$1","q2$1","xAxis$1","yAxis$1","zAxis$1","veca$1","vecb$1","identityMat$1","Mesh","localMatrix","distance","colorized","opacityUpdated","mesh1","mesh2","intersect","intersecting","positionA","positionB","positionC","triangleVertices","normalA","normalB","normalC","uva","uvb","uvc","tempVec3h","tempVec3i","tempVec3j","tempVec3k","ia3","ib3","ic3","ia2","ib2","ic2","ScratchMemory","uint8Array","float32Array","yAxis","zAxis","veca","vecb","identityMat","tempChildList","memoryStats","bigIndicesSupported","IndexArrayType","tempAABB$1","VBOGeometry","isVBOGeometry","modes","modeNames","MetallicMaterial","alphaModes","alphaModeNames","SpecularMaterial","webglEnums","getGLEnum","defaultVal","glName","color$2","Texture2D","props","ensureImageSizePowerOfTwo$1","isPowerOfTwo$1","nextHighestPowerOfTwo$1","Texture","WEBGL_COMPONENT_TYPES","WEBGL_TYPE_SIZES","SCALAR","VEC2","VEC3","VEC4","MAT2","MAT3","MAT4","modelNode","loadBuffer","basePath","prioritizeGLTFNode","handleGLTFNode","ignoreMaterials","readableGeometry","modelNodeProps","outlined","loadBuffers","buffers","numToLoad","loadBufferViews","bufferViewsInfo","bufferViews","loadBufferView","loadAccessors","accessorsInfo","accessors","loadAccessor","loadTextures","texturesInfo","loadTexture","loadMaterials","materialsInfo","materialInfo","loadMaterial","loadMeshes","loadMesh","loadDefaultScene","defaultSceneInfo","loadScene","sceneInfo","glTFNode","loadNode","bufferInfo","uri","getArrayBuffer","bufferViewInfo","_typedArray","byteOffset","accessorInfo","bufferView","TypedArray","itemBytes","BYTES_PER_ELEMENT","byteStride","_itemSize","textureInfo","normalTexture","emissiveTexture","emissiveFactor","doubleSided","specularPBR","KHR_materials_pbrSpecularGlossiness","diffuseFactor","diffuseTexture","specularFactor","glossinessFactor","specularGlossinessTexture","common","KHR_materials_common","technique","blinn","phong","lambert","emission","transparency","metallicPBR","pbrMetallicRoughness","baseColorFactor","baseColorTexture","metallicFactor","roughnessFactor","metallicRoughnessTexture","meshInfo","materialIndex","primitivesInfo","primitives","primitiveInfo","indicesIndex","positionsIndex","normalsIndex","uv0Index","geometryCfg","meshCfg","POSITION","NORMAL","TEXCOORD_0","hasChildNodes","meshesInfoMesh","meshesInfo","numMeshes","nodeCfg","childNode","modelProps","childNodeInfo","childNodeIdx","INSTANCE_THRESHOLD","performanceModel","geometryCreated","freeBuffers","loadMaterialColorize","_rgbaColor","preprocessScene","countMeshUsage","numPrimitives","loadPrimitiveGeometry","loadAccessorTypedArray","vertex_pattern","normal_pattern","uv_pattern","face_vertex","face_vertex_uv","face_vertex_uv_normal","face_vertex_normal","object_pattern","smoothing_pattern","material_library_pattern","material_use_pattern","getBasePath","materialLibraries","startObject","lineFirstChar","lineSecondChar","trimLeft","addFace","lineParts","lineVertices","lineUVs","llen","addLineGeometry","smooth","lastIndexOf","fromDeclaration","parseVertexIndex","parseNormalIndex","parseUVIndex","addVertex","dst","addVertexLine","addNormal","addUV","addUVLine","ub","uc","ud","nb","nc","nd","vLen","uvLen","nLen","uvl","delimiter_pattern","mtlText","materialCfg","needCreate","createMaterial","parseRGB","textureCfg","FrustumPlane","testVertex","nx","ny","nz","Frustum","planes","INSIDE","INTERSECT","OUTSIDE","require","zlib_deflate","strings","ZStream","dict","deflator","_mode","chunk","zlib_inflate","GZheader","inflator","next_out_utf8","utf8str","allowBufError","TYPED_OK","_has","buf","fnTyped","src_offs","dest_offs","fnUntyped","STR_APPLY_OK","STR_APPLY_UIA_OK","_utf8len","m_pos","str_len","buf_len","out","c_len","utf16buf","adler32","crcTable","makeTable","configuration_table","trees","MAX_MEM_LEVEL","MAX_WBITS","DEF_MEM_LEVEL","L_CODES","LITERALS","D_CODES","BL_CODES","HEAP_SIZE","MAX_BITS","MIN_MATCH","MAX_MATCH","MIN_LOOKAHEAD","PRESET_DICT","INIT_STATE","EXTRA_STATE","NAME_STATE","COMMENT_STATE","HCRC_STATE","BUSY_STATE","FINISH_STATE","BS_NEED_MORE","BS_BLOCK_DONE","BS_FINISH_STARTED","BS_FINISH_DONE","OS_CODE","errorCode","rank","flush_pending","flush_block_only","put_byte","putShortMSB","read_buf","longest_match","cur_match","chain_length","scan","best_len","limit","_win","wmask","strend","scan_end1","scan_end","fill_window","more","_w_size","deflate_fast","hash_head","bflush","deflate_slow","max_insert","Config","DeflateState","ret","lm_init","deflate_stored","max_block_size","max_start","old_flush","beg","bstate","deflate_huff","deflate_rle","avail","tmpDict","dictLength","_in","_out","s_window","lcode","dcode","lmask","dmask","here","op","from_source","dolen","dodist","inflate_fast","inflate_table","CODES","LENS","DISTS","Z_MEM_ERROR","HEAD","FLAGS","TIME","OS","EXLEN","EXTRA","NAME","COMMENT","HCRC","DICTID","DICT","TYPE","TYPEDO","STORED","COPY_","COPY","TABLE","LENLENS","CODELENS","LEN_","LEN","LENEXT","DIST","DISTEXT","MATCH","LIT","CHECK","LENGTH","DONE","BAD","MEM","ENOUGH_LENS","ENOUGH_DISTS","DEF_WBITS","zswap32","InflateState","lenfix","distfix","virgin","fixedtables","sym","updatewindow","here_bits","here_op","here_val","last_bits","last_op","last_val","hbuf","inf_leave","MAXBITS","lbase","lext","dbase","dext","lens_index","codes","table_index","incr","curr","drop","used","huff","base_index","offs","extra_index","STORED_BLOCK","STATIC_TREES","DYN_TREES","LENGTH_CODES","Buf_size","MAX_BL_BITS","END_BLOCK","REP_3_6","REPZ_3_10","REPZ_11_138","extra_lbits","extra_dbits","extra_blbits","bl_order","static_ltree","static_dtree","_dist_code","_length_code","base_length","static_l_desc","static_d_desc","static_bl_desc","base_dist","StaticTreeDesc","TreeDesc","d_code","put_short","send_bits","send_code","tree","bi_reverse","gen_codes","next_code","init_block","bi_windup","smaller","_n2","_m2","pqdownheap","compress_block","ltree","dtree","lc","lx","build_tree","stree","gen_bitlen","xbits","overflow","scan_tree","curlen","prevlen","nextlen","max_count","min_count","send_tree","static_init_done","stored_len","copy_block","tr_static_init","opt_lenb","static_lenb","max_blindex","detect_data_type","black_mask","build_bl_tree","send_all_trees","lcodes","dcodes","blcodes","bi_flush","pako$8","decompressColor$8","color2","ParserV1","elements","deflatedData","extract$8","inflatedData","inflate$8","load$8","xktEntityId","metaObject","entityDefaults","meshDefaults","lastEntity","jlen","lastMesh","meshId","pako$7","decompressColor$7","ParserV2","extract$7","inflate$7","load$7","alreadyCreatedGeometries","entityMatrix","tmpPositions","tmpNormals","tmpIndices","tmpEdgeIndices","pako$6","decompressColor$6","ParserV3","extract$6","inflate$6","load$6","_alreadyCreatedGeometries","pako$5","decompressColor$5","ParserV4","extract$5","inflate$5","load$5","numPrimitiveInstances","primitiveInstanceCounts","orderedPrimitiveIndexes","primitiveIndex","i1","i2","primitiveInstanceIndex","batchedPrimitiveEntityIndexes","entityIndex","lastEntityIndex","atLastEntity","firstEntityPrimitiveInstanceIndex","lastEntityPrimitiveInstanceIndex","primitiveInstancesIndex","orderedPrimitiveIndex","atLastPrimitive","isInstancedPrimitive","primitivePositions","primitiveNormals","primitiveIndices","primitiveEdgeIndices","primitiveDecodeMatrix","countInstances","matricesIndex","pako$4","decompressColor$4","ParserV5","extract$4","inflate$4","load$4","pako$3","decompressColor$3","floatColor","intColor","ParserV6","extract$3","inflate$3","load$3","numTiles","nextMeshId","primitiveReuseCounts","tileCenter","rtcAABB","tileIndex","atLastTile","firstTileEntityIndex","lastTileEntityIndex","tileAABBIndex","tileAABB","tileDecodeMatrix","tileEntityIndex","entityMatrixIndex","atLastTileEntity","firstPrimitiveInstanceIndex","lastPrimitiveInstanceIndex","isReusedPrimitive","pako$2","decompressColor$2","convertColorsRGBToRGBA$1","colorsRGB","colorsRGBA","ParserV7","extract$2","inflate$2","load$2","geometryReuseCounts","meshIndex","geometryIndex","firstMeshIndex","lastMeshIndex","isReusedGeometry","atLastGeometry","meshColor","meshOpacity","meshMetallic","meshRoughness","meshMatrixIndex","geometryPositions","geometryNormals","geometryColors","geometryIndices","geometryEdgeIndices","pako$1","decompressColor$1","convertColorsRGBToRGBA","ParserV8","extract$1","inflate$1","load$1","numMetaObjects","metaModelId","metaObjectIndex","metaObjectId","metaObjectType","metaObjectName","metaObjectParentIndex","metaObjectParentId","geometryValid","decompressColor","ParserV9","extract","zipLib","appendABViewSupported","ERR_BAD_FORMAT","ERR_CRC","ERR_ENCRYPTED","ERR_ZIP64","ERR_READ","ERR_WRITE","ERR_WRITE_DATA","ERR_READ_DATA","ERR_DUPLICATED_NAME","CHUNK_SIZE","TEXT_PLAIN","Crc32","NOOP","getDataHelper","bytes","dataBuffer","dataArray","blobReader","that","blob","dataURI","dataStart","dataEnd","reader","blobSlice","contentType","dataString","launchWorkerProcess","worker","initialMessage","writer","onprogress","onend","onreaderror","onwriteerror","outputSize","chunkIndex","onflush","onmessage","launchProcess","process","crcInput","crcOutput","outputData","inputData","computeCrc32","decodeASCII","charCode","extendedASCII","decodeUTF8","getString","readCommonHeader","entry","centralDirectory","timeRaw","createZipReader","inflateSN","Entry","checkCrc32","getWriterData","testCrc32","dataCrc32","dataOffset","zipReader","seekEOCDR","eocdrCallback","EOCDR_MIN","EOCDR_MAX","doSeek","eocdrNotFoundCallback","dataView","datalength","fileslength","createWorker","encodeUTF8","getBytes","createZipWriter","dontDeflate","files","filenames","deflateSN","zipWriter","writeFooter","compressedLength","footer","writeFile","writeHeader","indexFilename","DEFAULT_WORKER_SCRIPTS","resolveURLs","urls","ev","onerror_default","zipObj","ERR_HTTP_RANGE","isHttpFamily","readArrayBuffer","arraybuffer","arrayBuffer","tmpArray","fileEntry","fileWriter","URL","useRangeHeader","zipExt","supportedSchemas","materialType","info","references","parseDocument","getFile","xmlDoc","parseManifest","manifest","rootFileSrc","parseRoot","parseModel","parseHeader","parseProductStructure","parseDefaultView","metaData","schemaVersion","isSchemaVersionSupported","productStructureNode","parseReferenceReps","referenceReps","associatedFile","stripURN","childId","materialIds","loadCATMaterialRefDocuments","referenceRep","parse3DRepDocument","reference3Ds","instanceReps","instance3Ds","child2","isAggregatedBy","isInstanceOf","relativeMatrix","reference3D","instance3D","instanceRep","parseReference3D","parseInstance3D","parseInstanceRep","parseFloatArray","childGroup","_wireframeMaterial","materialId","_defaultMaterial","children2","viewpoint","len2","parseXMLRepresentation","parse3DRepRoot","parse3DRepRep","meshesResult","parseFaces","parseVertexBuffer","parseSurfaceAttributes","parseFace","strips","parseIntArrays","coordStrings","coordStr","elemStrings","arrIdx","convertTriangleStrip","parseIntArray","numElems","getIDFromURI","colonIdx","hashIdx","loadCATMaterialRefDocument","parseCATMaterialRefDocument","parseModel_3dxml","parseCATMaterialRef","domainToReferenceMap","lenk","child3","parseMaterialDefDocument","parseMaterialDefDocumentOsm","Alias","coeffs","Name","Value","coeff","openBracketIndex","closeBracketIndex","subStr","tempVec3$2","newLook","newEye","newUp","newLookEyeVec","CameraFlightAnimation","flyToProjection","componentId","aabbCenter","eyeLookVec","eyeLookVecNorm","diag","sca","stopping","tFlight","tProj","CameraPathAnimation","_cameraFlightAnimation","SCRUBBING","_playingFromT","_playingToT","_playingRate","playingRate","_playingDir","_lastTime","cameraPath","_updateT","_cameraPath","numFrames","elapsedSecs","PLAYING","loadFrame","PLAYING_TO","rate","play","playToT","playToFrame","frameIdx","flyToFrame","scrubToT","scrubToFrame","STOPPED","K3D","resp","buff","bufView","cg","cds","v0a","v1a","v2a","vi0","vi1","vi2","ui0","ui1","ui2","ni0","ni1","ni2","vlen","ulen","v3a","vi3","ui3","ni3","nms","xml","ass","geo","ima","eff","farr","tgs","tnode","inp","par","inum","srf","lim","cid","lng","coff","clng","maxi","sw","tsw","tsh","ssw","ssh","lat","lon","sb","sg","ind","crd","cpi","ncrd","nind","vts","minx","miny","minz","maxx","maxy","maxz","bytesToBase64","base64abc","base64codes","getBase64Code","base64ToBytes","missingOctets","endsWith","moment","createCommonjsModule","getCjsExportFromNamespace","colorName","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","conversions","reverseKeywords","convert","channels","hsl","hsv","hwb","cmyk","lab","lch","hex","keyword","ansi16","ansi256","hcg","apple","comparativeDistance","rdif","gdif","bdif","diffc","reversed","currentClosestKeyword","currentClosestDistance","Infinity","t3","smin","lmin","vmin","wh","ratio","ansi","mult","rem","colorString","integer","hue","chroma","pure","mg","buildGraph","graph","deriveBFS","fromModel","adjacents","adjacent","link","wrapConversion","toModel","cur","conversion","route","wrapRaw","wrappedFn","wrapRounded","routes","colorConvert","colorName$1","getRgba","getHsla","getRgb","getHsl","getHwb","getAlpha","hexString","rgbString","rgbaString","percentString","percentaString","hslString","hslaString","hwbString","abbr","per","hexAlpha","hsla","hexDouble","reverseNames","num","Color","setValues","lightness","whiteness","setSpace","rgbArray","hslArray","hsvArray","hwbArray","cmykArray","rgbaArray","hslaArray","setChannel","saturation","saturationv","blackness","rgbNumber","luminosity","lum","chan","contrast","lum1","lum2","contrastRatio","dark","negate","lighten","darken","saturate","desaturate","whiten","blacken","greyscale","clearer","opaquer","degrees","mix","mixinColor","color1","w1","w2","spaces","maxes","getValues","capped","chans","sname","svalues","chartjsColor","isValidKey","helpers","isNullOrUndef","valueOrDefault","valueAtIndexOrDefault","each","loopable","arrayEquals","ilen","klen","_merger","tval","sval","_mergerIf","mergeIf","merger","inherits","ChartElement","Surrogate","__super__","_deprecated","previous","helpers_core","callCallback","fromIndex","getValueOrDefault","getValueAtIndexOrDefault","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","helpers_easing","easingEffects","RAD_PER_DEG","DOUBLE_PI","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","exports$1","chart","clearRect","roundedRect","moveTo","closePath","rect","drawPoint","xOffset","yOffset","cornerRadius","rad","beginPath","lineTo","SQRT1_2","stroke","_isPointInArea","area","epsilon","clipArea","clip","unclipArea","flip","stepped","steppedLine","midpoint","tension","bezierCurveTo","controlPointPreviousX","controlPointNextX","controlPointPreviousY","controlPointNextY","helpers_canvas","drawRoundedRectangle","defaultColor","defaultFontColor","defaultFontFamily","defaultFontSize","defaultFontStyle","defaultLineHeight","showLines","core_defaults","toFontString","family","helpers_options","toLineHeight","toPadding","_parseFont","globalDefaults","fontSize","fontFamily","lineHeight","fontStyle","cacheable","exports$2","_factorize","log10","exponent","LOG10E","powerOf10","helpers_math","getRtlAdapter","rectX","setWidth","align","xPlus","leftForLtr","itemWidth","getLtrAdapter","_itemWidth","helpers$1","overrideTextDirection","getPropertyValue","getPropertyPriority","prevTextDirection","restoreTextDirection","ease","actual","c0","Element","initialize","_type","pivot","_view","_start","tooltipPosition","core_element","exports$3","currentStep","numSteps","onAnimationProgress","onAnimationComplete","core_animation","onProgress","onComplete","core_animations","animations","addAnimation","animating","cancelAnimation","requestAnimFrame","startDigest","advance","arrayEvents","listenArrayEvents","_chartjs","unlistenArrayEvents","stub","DatasetController","datasetIndex","datasetElementType","dataElementType","_datasetElementOptions","_dataElementOptions","linkScales","addElements","getMeta","updateIndex","scales","dataset","getDataset","scalesOpts","xAxisID","xAxes","yAxisID","yAxes","datasets","getDatasetMeta","getScaleForId","scaleID","_getValueScaleId","_getIndexScaleId","_getValueScale","_getIndexScale","_data","createMetaDataset","_chart","_datasetIndex","createMetaData","addElementAndReset","updateElement","buildOrUpdateElements","isExtensible","resyncElements","_configure","_cachedDataOpts","easingValue","draw","getStyle","_resolveDatasetElementOptions","_resolveDataElementOptions","borderColor","hover","readKey","datasetOpts","elementOptions","cached","dataIndex","removeHoverStyle","$previousStyle","setHoverStyle","getHoverColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","_removeDatasetHoverStyle","_setDatasetHoverStyle","hoverOptions","numMeta","numData","insertElements","onDataPush","onDataPop","onDataShift","onDataSplice","onDataUnshift","core_datasetController","TAU","clipArc","startAngle","endAngle","pixelMargin","angleMargin","outerRadius","innerRadius","drawFullCircleBorders","vm","inner","fullCircles","drawBorder","borderAlign","lineJoin","element_arc","inLabelRange","mouseX","hoverRadius","inRange","chartX","chartY","pointRelativePosition","getAngleFromPoint","betweenAngles","withinRadius","getCenterPoint","halfRadius","centreAngle","rangeFromCentre","circumference","strokeStyle","valueOrDefault$1","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","capBezierPoints","element_line","currentVM","spanGaps","globalOptionLineElements","lastDrawnIndex","_loop","previousItem","lineCap","setLineDash","lineDashOffset","valueOrDefault$2","defaultColor$1","xRange","hitRadius","yRange","mouseY","pointStyle","element_point","inXRange","inYRange","chartArea","defaultColor$2","isVertical","getBarBounds","half","swap","parseBorderSkipped","borderSkipped","horizontal","parseBorderWidth","maxW","maxH","boundingRects","outer","skipX","skipY","rectangle","element_rectangle","rects","Arc","Line","Point","Rectangle","deprecated","valueOrDefault$3","computeMinSampleSize","getTicks","getPixelForTick","computeFitCategoryTraits","ruler","thickness","barThickness","stackCount","categoryPercentage","barPercentage","computeFlexCategoryTraits","percent","gridLines","offsetGridLines","bar","controller_bar","scaleOpts","minBarLength","maxBarThickness","_ruler","getRuler","_xScale","_yScale","datasetLabel","_updateElementGeometry","vscale","getBasePixel","isHorizontal","vpixels","calculateBarValuePixels","ipixels","calculateBarIndexPixels","_getStacks","metasets","_getMatchingVisibleMetas","stacked","stacks","getStackCount","getStackIndex","getPixelForValue","_startPixel","_endPixel","imeta","ivalue","stackLength","_parseValue","stackIndex","indexOpts","valueOpts","valueOrDefault$4","resolve$1","tooltips","callbacks","dataPoint","xLabel","yLabel","controller_bubble","xScale","yScale","dsIndex","getPixelForDecimal","NaN","valueOrDefault$5","PI$1","DOUBLE_PI$1","HALF_PI$1","animateRotate","animateScale","legendCallback","listItem","createTextNode","outerHTML","legend","generateLabels","controller","legendItem","cutoutPercentage","tooltipItem","dataLabel","controller_doughnut","getRingIndex","ringIndex","isDatasetVisible","maxWidth","maxHeight","ratioX","ratioY","offsetX","offsetY","arcs","cutout","chartWeight","_getRingWeight","startX","startY","endX","endY","contains0","contains90","contains270","minX","minY","maxX","maxY","getMaxBorderWidth","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","animationOpts","centerX","centerY","calculateCircumference","hoverWidth","ringWeightOffset","dataSetIndex","horizontalBar","controller_horizontalBar","valueOrDefault$6","resolve$2","isPointInArea","scaleClip","halfBorderWidth","tickOpts","ticks","defaultClip","toClip","controller_line","showLine","_showLine","lineTension","updateBezierControlPoints","lineModel","calculatePointY","lineOptions","dsMeta","stackedRightValue","rightValue","sumPos","sumNeg","getRightValue","_getSortedVisibleDatasetMetas","controlPoints","capControlPoint","cubicInterpolationMode","splineCurveMonotone","splineCurve","nextItem","resolve$3","angleLines","circular","pointLabels","beginAtZero","controller_polarArea","starts","_starts","angles","_angles","_updateRadius","countVisibleElements","_computeAngle","minSize","getVisibleDatasetCount","datasetStartAngle","getDistanceFromCenterForValue","resetRadius","doughnut","controller_pie","valueOrDefault$7","controller_radar","pointPosition","getPointPositionForValue","scatter","controllers","bubble","polarArea","pie","radar","getRelativePosition","parseVisibleItems","getIntersectItems","getNearestItems","distanceMetric","minDistance","nearestItems","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","indexMode","core_interaction","single","intersectsItem","filterByPosition","where","sortByWeight","wrapBoxes","boxes","box","layoutBoxes","setLayoutDims","layouts","availableWidth","vBoxMaxWidth","hBoxMaxHeight","buildLayoutBoxes","leftAndTop","rightAndBottom","vertical","getCombinedMax","maxPadding","updateDims","newWidth","newHeight","getPadding","boxPadding","outerWidth","outerHeight","sizes","handleMaxPadding","updatePos","getMargins","marginForPositions","fitBoxes","refit","refitBoxes","placeBoxes","userPadding","core_layouts","addBox","_layers","removeBox","layoutItem","configure","layoutOptions","availableHeight","verticalBoxes","horizontalBoxes","platform_basic","acquireContext","platform_dom","stylesheet","EXPANDO_KEY","CSS_PREFIX","CSS_SIZE_MONITOR","CSS_RENDER_MONITOR","CSS_RENDER_ANIMATION","ANIMATION_START_EVENTS","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","readUsedSize","initCanvas","renderHeight","renderWidth","displayWidth","aspectRatio","displayHeight","eventListenerOptions","supports","addListener","removeListener","createEvent","nativeEvent","fromNativeEvent","throttled","ticking","createDiv","cls","createResizer","maxSize","resizer","expand","shrink","onScroll","watchForRender","expando","proxy","renderProxy","animationName","reflow","unwatchForRender","addResizeListener","container","maintainAspectRatio","removeResizeListener","injectCSS","rootNode","css","containsStyles","platform_dom$2","disableCSSInjection","_ensureLoaded","getRootNode","releaseContext","proxies","implementation","platform","plugins","core_plugins","_cacheId","unregister","descriptors","$plugins","_invalidate","core_scaleService","constructors","registerScaleType","scaleConstructor","scaleDefaults","getScaleConstructor","getScaleDefaults","updateScaleDefaults","additions","addScalesToLayout","valueOrDefault$8","getRtlHelper","titleFontStyle","titleSpacing","titleMarginBottom","titleFontColor","titleAlign","bodySpacing","bodyFontColor","bodyAlign","footerFontStyle","footerSpacing","footerMarginTop","footerFontColor","footerAlign","yPadding","xPadding","caretPadding","caretSize","multiKeyBackground","displayColors","beforeTitle","tooltipItems","labelCount","afterTitle","beforeBody","beforeLabel","labelColor","labelTextColor","afterLabel","afterBody","beforeFooter","afterFooter","positioners","average","eventPosition","nearestElement","distanceBetweenPoints","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","indexScale","valueScale","getLabelForIndex","getBaseModel","tooltipOpts","xAlign","yAlign","textDirection","_bodyFontFamily","bodyFontFamily","_bodyFontStyle","bodyFontStyle","_bodyAlign","bodyFontSize","_titleFontFamily","titleFontFamily","_titleFontStyle","titleFontSize","_titleAlign","_footerFontFamily","footerFontFamily","_footerFontStyle","footerFontSize","_footerAlign","legendColorBackground","getTooltipSize","tooltip","combinedBodyLength","bodyItem","before","after","titleLineCount","footerLineCount","widthPadding","maxLineWidth","measureText","fontString","determineAlignment","lf","olf","orf","yf","midX","midY","getBackgroundPoint","alignment","paddingAndSize","radiusAndPadding","getAlignedX","getBeforeAfterBodyLines","exports$4","_lastActive","getBeforeBody","getBody","bodyItems","getAfterBody","getFooter","existingModel","backgroundPoint","tooltipSize","caretX","caretY","labelColors","labelTextColors","_eventPosition","itemSort","dataPoints","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","tmp","drawTitle","rtlHelper","textBaseline","drawBody","textColor","drawColorBoxes","xLinePadding","colorX","fillLineOfText","bodyAlignForCalculation","rtlColorX","strokeRect","drawFooter","drawBackground","quadraticCurveTo","hasTooltipContent","globalAlpha","handleEvent","getElementsAtEventForMode","positioners_1","core_tooltip","valueOrDefault$9","mergeScaleConfig","slen","mergeConfig","initConfig","updateConfig","ensureScalesHaveIDs","buildOrUpdateScales","nextAvailableScaleId","axesOpts","prefix","hasId","positionIsHorizontal","compare2Level","l1","l2","onHover","animationDuration","responsive","responsiveAnimationDuration","Chart","construct","_bufferedRender","retinaScale","devicePixelRatio","bindEvents","resize","initToolTip","silent","getMaximumWidth","getMaximumHeight","newSize","scalesOptions","scaleOptions","xAxisOptions","yAxisOptions","updated","dtype","dposition","isDefault","scaleType","scaleClass","mergeTicksOptions","hasUpdated","buildOrUpdateControllers","newControllers","destroyDatasetMeta","ControllerClass","resetElements","updateLayout","updateDatasets","lastActive","_bufferedRequest","_idx","updateDataset","animationOptions","animationObject","easingFunction","stepDecimal","layers","drawDatasets","_drawTooltip","_getSortedDatasetMetas","filterVisible","drawDataset","getElementAtEvent","getElementsAtEvent","getElementsAtXAxis","getDatasetAtEvent","_meta","generateLegend","unbindEvents","toBase64Image","_chartInstance","eventHandler","updateHoverStyle","bufferedRequest","core_controller","Controller","configMerge","scaleMerge","core_helpers","parseMaxStyle","styleValue","parentProperty","valueInPixels","isConstrainedValue","getConstraintDimension","domNode","maxStyle","percentageProperty","defaultView","_getParentNode","constrainedNode","getComputedStyle","constrainedContainer","hasCNode","hasCContainer","infinity","filterCallback","findNextWhere","arrayToSearch","currentItem","findPreviousWhere","almostEquals","almostWhole","rounded","sign","toRadians","toDegrees","radians","_decimalPlaces","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","aliasPixel","pixelWidth","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","EPSILON","pointBefore","pointCurrent","pointAfter","alphaK","betaK","tauK","squaredMagnitude","pointsWithTangents","deltaK","mK","pointsLen","slopeDeltaX","loop","niceNum","fraction","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","originalEvent","srcElement","boundingRect","paddingLeft","paddingTop","paddingRight","paddingBottom","getConstraintWidth","getConstraintHeight","_calculatePadding","parentDimension","ch","currentStyle","forceRatio","pixelRatio","pixelSize","longestText","arrayOfThings","gc","garbageCollect","thing","nestedThing","longest","gcLen","textWidth","numberOfLabelLines","numberOfLines","CanvasGradient","colorValue","CanvasPattern","DateAdapter","formats","startOf","endOf","_create","override","members","core_adapters","_date","core_ticks","formatters","tickValue","logDelta","tickString","logTick","numExponential","toExponential","numDecimal","toFixed","logarithmic","remain","valueOrDefault$a","sample","increment","getPixelForGridLine","validIndex","lineValue","caches","computeLabelSizes","tickFonts","tickFont","nestedLabel","widest","highest","widths","heights","widestLabelSize","highestLabelSize","major","minor","valueAt","getTickMarkLength","drawTicks","tickMarkLength","getScaleLabelHeight","parseFontOptions","nestedOpts","fontColor","parseTickFontOptions","nonSkipped","ticksToFilter","getEvenSpacing","calculateSpacing","majorIndices","axisLength","ticksLimit","factors","evenMajorSpacing","spacing","getMajorIndices","skipMajors","tick","majorStart","majorEnd","drawOnChartArea","zeroLineWidth","zeroLineColor","zeroLineBorderDash","zeroLineBorderDashOffset","scaleLabel","labelString","minRotation","maxRotation","mirror","autoSkip","autoSkipPadding","labelOffset","Scale","zeroLineIndex","_ticks","_getLabels","xLabels","yLabels","beforeUpdate","margins","samplingEnabled","sampleSize","_labelSizes","_maxLabelLines","longestLabelWidth","longestTextCache","_gridLineItems","_labelItems","beforeSetDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","beforeBuildTicks","buildTicks","afterBuildTicks","_convertTicksToLabels","beforeCalculateTickRotation","calculateTickRotation","afterCalculateTickRotation","beforeFit","afterFit","_ticksToDraw","_autoSkip","afterUpdate","startPixel","endPixel","reversePixels","_reversePixels","beforeTickToLabelConversion","convertTicksToLabels","userCallback","afterTickToLabelConversion","labelSizes","maxLabelWidth","maxLabelHeight","tickWidth","maxLabelDiagonal","numTicks","labelRotation","_isVisible","_getLabelSizes","scaleLabelOpts","gridLineOpts","isBottom","firstLabelSize","lastLabelSize","lineSpace","tickPadding","isRotated","angleRadians","cosRotation","sinRotation","labelHeight","offsetRight","labelWidth","handleMargins","isFullWidth","rawValue","_getScaleLabel","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","avgMajorSpacing","maxTicksLimit","_tickSize","numMajorIndices","optionTicks","rot","_computeGridLineItems","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","lineColor","ticksLength","axisWidth","axisHalfWidth","alignPixel","alignBorderValue","_computeLabelItems","lineCount","textOffset","isMirrored","fonts","_drawGrid","firstLineWidth","lastLineWidth","_drawLabels","_drawTitle","scaleLabelX","scaleLabelY","scaleLabelFontColor","scaleLabelFont","scaleLabelPadding","halfLineHeight","isLeft","gz","_draw","core_scale","isNullOrUndef$1","scale_category","ticksOpts","minIndex","_startValue","_valueRange","valueCategory","_defaults","isNullOrUndef$2","generateTicks","generationOptions","dataRange","niceMin","niceMax","numSpaces","MIN_SPACING","stepSize","maxNumSpaces","maxTicks","rmin","rmax","scale_linearbase","handleTickRangeOptions","minSign","maxSign","setMin","suggestedMin","setMax","suggestedMax","getTickLimit","_computeTickLimit","handleDirectionalChanges","numericGeneratorOptions","fixedStepSize","ticksAsNumbers","_endValue","defaultConfig$1","DEFAULT_MIN","DEFAULT_MAX","getOrCreateStack","neg","stackData","relativePoints","updateMinMax","scale_linear","hasStacks","stackValues","_defaults$1","valueOrDefault$b","generateTicks$1","significand","tickVal","endExp","endSignificand","minNotZero","lastTick","defaultConfig$2","nonNegativeOrDefault","scale_logarithmic","IDMatches","valuesPerStack","valuesForType","minVal","maxVal","tickValues","_getFirstTickValue","_valueOffset","_defaults$2","valueOrDefault$c","valueAtIndexOrDefault$1","resolve$4","defaultConfig$3","showLabelBackdrop","backdropColor","backdropPaddingY","backdropPaddingX","getTickBackdropHeight","measureLabelSize","determineLimits","fitWithPointLabels","textSize","plFont","furthestLimits","furthestAngles","_pointLabelSizes","valueCount","getPointPosition","drawingArea","getIndexAngle","hLimits","vLimits","setReductions","getTextAlignForAngle","adjustPointPositionForLabelHeight","drawPointLabels","pointLabelOpts","tickBackdropHeight","outerDistance","pointLabelPosition","pointLabelFontColor","drawRadiusLine","numberOrZero","scale_radialLinear","setCenterPoint","largestPossibleRadius","radiusReductionLeft","radiusReductionRight","radiusReductionTop","radiusReductionBottom","leftMovement","rightMovement","topMovement","bottomMovement","maxRight","maxLeft","maxTop","maxBottom","scalingFactor","distanceFromCenter","thisAngle","getBasePosition","angleLineOpts","tickFontColor","_defaults$3","deprecated$1","resolve$5","valueOrDefault$d","MIN_INTEGER","MIN_SAFE_INTEGER","MAX_INTEGER","INTERVALS","millisecond","minute","hour","day","week","month","quarter","year","UNITS","sorter","arrayUnique","getMin","getMax","buildLookupTable","timestamps","distribution","lookup","interpolate$1","skey","tkey","span","toTimestamp","adapter","_adapter","parser","determineUnitForAutoTicks","minUnit","capacity","determineUnitForFormatting","determineMajorUnit","generate","timeOpts","unitStepSize","weekday","isoWeekday","computeOffsets","setMajorTicks","majorUnit","ticksFromTimestamps","defaultConfig$4","adapters","displayFormat","displayFormats","scale_time","timestamp","labelsAdded","dataLabels","_table","_timestamps","getLabelCapacity","_unit","_majorUnit","tooltipFormat","datetime","tickFormatFunction","minorFormat","majorFormat","nestedTickOpts","formatter","getPixelForOffset","_getLabelSize","tickLabelWidth","tickFontSize","getLabelWidth","exampleTime","exampleLabel","_defaults$4","radialLinear","FORMATS","amount","filler","propagate","mappers","decodeFill","computeLinearBoundary","scaleBottom","scaleTop","scaleZero","computeCircularBoundary","cx","cy","computeBoundary","resolveTarget","visited","createMapper","drawArea","curve0","curve1","len0","len1","doFill","mapper","loopOffset","plugin_filler","afterDatasetsUpdate","$filler","beforeDatasetsDraw","getRtlHelper$1","noop$1","valueOrDefault$e","getBoxWidth","labelOpts","usePointStyle","boxWidth","onLeave","lineDash","Legend","legendHitBoxes","_hoveredItem","doughnutMode","beforeBuildLabels","buildLabels","afterBuildLabels","legendItems","labelFont","hitboxes","lineWidths","totalHeight","vPadding","columnWidths","columnHeights","totalWidth","currentColWidth","currentColHeight","lineDefault","legendHeight","legendWidth","drawLegendBox","SQRT2","halfFontSize","xLeft","yMiddle","alignmentOffset","dimension","blockSize","realX","_getLegendItemAt","hitBox","lh","hoveredItem","createNewLegendAndAttach","legendOpts","plugin_legend","beforeInit","afterEvent","noop$2","Title","titleX","titleY","fontOpts","createNewTitleBlockAndAttach","titleOpts","titleBlock","_adapters","Animation","animationService","Interaction","scaleService","Ticks","Tooltip","pluginService","PluginBase","canvasHelpers","layoutService","LinearScaleBase","klass","screen","deviceXDPI","logicalXDPI","toTextLines","parseFont","arrayDiff","updates","rasterize","orient","dx","dy","aligned","R_INSIDE","R_LEFT","R_RIGHT","R_BOTTOM","R_TOP","region","clipped","r0","r1","compute","rx","ry","fallback","tw","getScaleOrigin","getPositioner","drawFrame","bgColor","borderRadius","textGeometry","drawTextLine","shadow","shadowBlur","stroked","strokeText","drawText","strokeColor","textStrokeColor","strokeWidth","textStrokeWidth","textShadowBlur","shadowColor","textShadowColor","Label","_rects","_ctx","_el","_modelize","positioner","helpers$2","rotated","projected","dp","toAxis","HitBox","_rect","coordinates","collide","collider","s0","$layout","_box","intersects","compute$1","h0","_hidable","h1","pr0","pr1","_points","axes","prepare","dirty","helpers$3","helpers$4","datalabels","dispatchEvent","dispatchMoveEvents","enter","leave","handleMoveEvents","_labels","_hovered","handleClickEvents","click","invalidate","_actives","_listened","_datasets","afterDatasetUpdate","afterDatasetsDraw","beforeEvent","actives","ticky","atoa","_once","emitterSnapshot","throws","typeFunc","createPointCB","allowUpdate","boolean","originalTarget","targetTouches","screenX","screenY","eventDoc","ownerDocument","clientLeft","clientTop","customEvent","eventmap","addEventEasy","capturing","removeEventEasy","hardCache","addEventHard","attachEvent","wrapperFactory","returnValue","cancelBubble","removeEventHard","detachEvent","fabricate","fabricateEvent","makeCustomEvent","makeClassicEvent","initEvent","createEventObject","fireEvent","eventname","ron","NativeCustomEvent","CustomEvent","useNative","foo","initCustomEvent","bubbles","cancelable","callable","validValue","bindTo","dgs","normalizeOpts","isCallable","dscr","cacheDesc","cacheName","flat","ownDesc","createPointCb","_interopDefault","ex","getClientRect","createWindowRect","defineProperties","pointInside","lookupClass","rm","rmClass","mouseup","mousedown","mousemove","msPointerEnabled","button","elementFromPoint","contentEditable","nextElementSibling","moves","accepts","containers","isContainer","copySortSource","revertOnSpill","removeOnSpill","ignoreInputTextSelection","mirrorContainer","canMove","dragging","metaKey","ctrlKey","slideFactorX","slideFactorY","cloneNode","crossvent","fun","nextTick","env","argv","versions","removeAllListeners","prependListener","prependOnceListener","binding","cwd","chdir","umask","setImmediate","timers","_clearFn","unref","enroll","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","_onTimeout","clearImmediate","emitter","touchy","whichMouseButton","getScroll","scrollProp","offsetProp","getElementBehindPoint","getRectWidth","getRectHeight","getParent","isInput","isEditable","nextEl","manually","sibling","getCoord","coord","getEventHost","missMap","dragula","initialContainers","_mirror","_source","_item","_offsetX","_offsetY","_moveX","_moveY","_initialSibling","_currentSibling","_copy","_renderTimer","_grabbed","_lastDropTarget","invalidTarget","drake","manualStart","canStart","release","spillOver","spillOut","grab","eventualMovements","startBecauseMouseMoved","movements","preventGrabbed","grabbed","getOffset","renderMirrorImage","drag","isCopy","ungrab","dropTarget","findDropTarget","isInitialPlacement","cleanup","revert","reverts","removeMirrorImage","elementBehindCursor","accepted","getImmediateChild","reference","getReference","moved","over","inside","outside","SubArray","isSpreadable","isPlainArray","toPosInt","isConcatSpreadable","arg","numberIsNaN","objHasOwnProperty","searchElement","itemToRemove","deleteCount","iteratorSymbol","isArguments","isValue","arrayLike","Context","iterator","getIterator","captureStackTrace","mixin","arg2","isFn","objToString","isFunctionStringTag","isPlainFunction","validTypes","symbol","toPrimitive","toStringTag","objPrototype","ie11BugWorkaround","postfix","NativeSymbol","SymbolPolyfill","hasInstance","species","unscopables","validateSymbol","for","keyFor","HiddenSymbol","isNativeSafe","generateName","setupStandardSymbols","setupSymbolRegistry","__description__","__name__","isSymbol","toInteger","objPropertyIsEnumerable","defVal","trzy","aFrom","propertyNames","propertyName","ensure","shim","nullObject","polyProps","numIsNaN","function","_undefined","targetObj","isPrototypeOf","sourceProto","mixinError","getOwnPropertySymbols","sourceObject","opts1","plainObject","customCreate","validate","objIsPrototypeOf","nullDesc","tmpObj1","tmpObj2","isNullBase","nullPolyfill","searchString","globalSymbols","__eeOnceListener__","__ee__","candidate","naiveFallback","__global__","globalThis","HOOKS","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","ariaDateFormat","autoFillDefaultTime","clickOpens","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disableMobile","enableSeconds","enableTime","getWeek","givenDate","setHours","setDate","getDay","week1","hourIncrement","ignoredFocusElements","inline","minuteIncrement","monthSelectorType","nextArrow","noCalendar","onClose","onDayCreate","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","positionElement","prevArrow","shorthandCurrentMonth","showMonths","time_24hr","weekNumbers","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","arrayify","toggleClass","clearNode","findParent","condition","createNumberInput","inputClassName","numInput","arrowUp","arrowDown","getEventTarget","doNothing","monthToStr","monthNumber","revFormat","dateObj","monthName","setMonth","shortMonth","seconds","setSeconds","unixSeconds","weekNum","weekNumber","setFullYear","ISODate","minutes","setMinutes","unixMillSeconds","tokenRegex","toISOString","createDateFormatter","_c","l10n","_d","isMobile","frmt","overrideLocale","formatDate","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","datestr","parseDate","matched","ops","matchIndex","regexStr","isBackSlash","escaped","compareDates","date1","date2","isBetween","ts1","ts2","calculateSecondsSinceMidnight","hours","parseSeconds","secondsSinceMidnight","DAY","getDefaultHours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","DEBOUNCED_CHANGE_MS","FlatpickrInstance","instanceConfig","flatpickr","English","getClosestActiveElement","calendarContainer","bindToInstance","setCalendarWidth","daysContainer","daysWidth","days","weekWrapper","updateTime","selectedDates","defaultDate","getMilliseconds","latestSelectedDateObj","timeWrapper","isKeyDown","eventTarget","curValue","newValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","ampm2military","limitMinHours","minTime","minDateHasTime","limitMaxHours","maxTime","maxDateHasTime","minBound","maxBound","currentTime","setHoursFromDate","onYearInput","changeYear","triggerChange","triggerEvent","jumpToDate","jumpDate","oldYear","currentYear","oldMonth","currentMonth","buildMonthSwitch","redraw","timeIncrement","inputElem","createDay","_dayNumber","dateIsEnabled","isEnabled","dayElement","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","focusOnDayElem","onMouseOver","getFirstAvailableDay","startMonth","endMonth","endIndex","focusOnDay","dayFocused","isInView","startElem","getNextAvailableDay","givenMonth","loopDelta","numMonthDays","changeMonth","buildMonthDays","firstOfMonth","prevMonthDays","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","dayNum","dayContainer","buildDays","frag","monthsDropdownContainer","buildMonth","monthElement","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","documentClick","eventTarget_1","isCalendarElement","lostFocus","relatedTarget","isIgnored","timeContainer","newYear","newYearNum","isNewYear","dateToCheck","valueChanged","trimEnd","getDateStr","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","selectDate","delta_1","currentYearElement","pluginElements","shiftKey","cellClass","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","rContainer","dayElem","outOfRange","positionCalendar","minMaxDateSetter","inverseDateObj","getInputElem","setupLocale","l10ns","customPositionElement","_positionElement","calendarHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","pageXOffset","isCenter","isRight","rightMost","centerMost","getDocumentStyleSheet","editableSheet","styleSheets","sheet","cssRules","createStyleSheet","bodyWidth","centerLeft","centerIndex","centerStyle","insertRule","centerBefore","msMaxTouchPoints","selectedDate","shouldChangeMonth","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","lastChild","wasOpen","CALLBACKS","setSelectedDate","updatePositionElement","inputDate","dates","parseDateRules","specificFormat","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","parseConfig","boolOpts","userConfig","_enable","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","pluginConf","setupInputs","required","setupDates","preloadedDate","setupHelperFunctions","buildMonthNav","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","buildTime","separator","hourInput","minuteInput","military2ampm","secondInput","customAppend","setupMobile","inputType","debouncedResize","ontouchstart","selText","isSafari","_flatpickr","nodeList","HTMLElement","HTMLCollection","NodeList","selector","localize","setDefaults","jQuery","fp_incr","args_1","__esModule","threshold","maxPatternLength","caseSensitive","tokenSeparator","findAllMatches","minMatchCharLength","shouldSort","getFn","sortFn","score","tokenize","matchAllTokens","includeMatches","includeScore","verbose","isCaseSensitive","setCollection","_log","_prepareSearchers","tokenSearchers","fullSearcher","_search","results","_computeScore","_sort","_format","_analyze","record","resultMap","arrayIndex","isMatch","matchedIndices","nScore","patternAlphabet","currentLocation","expectedLocation","exportName","VENDOR_PREFIXES","TEST_ELEMENT","TYPE_FUNCTION","setTimeoutContext","bindFn","invokeArrayArg","deprecate","deprecationMessage","nextKey","childP","baseP","boolOrFn","ifUndefined","addEventListeners","splitStr","removeEventListeners","hasParent","inStr","findByKey","uniqueArray","prefixed","camelProp","_uniqueId","getWindowForElement","parentWindow","SUPPORT_TOUCH","SUPPORT_POINTER_EVENTS","SUPPORT_ONLY_TOUCH","INPUT_TYPE_TOUCH","INPUT_TYPE_MOUSE","COMPUTE_INTERVAL","INPUT_START","INPUT_MOVE","INPUT_END","INPUT_CANCEL","DIRECTION_NONE","DIRECTION_LEFT","DIRECTION_RIGHT","DIRECTION_UP","DIRECTION_DOWN","DIRECTION_HORIZONTAL","DIRECTION_VERTICAL","DIRECTION_ALL","PROPS_XY","PROPS_CLIENT_XY","manager","inputTarget","domHandler","inputHandler","pointersLen","pointers","changedPointersLen","changedPointers","isFinal","session","computeInputData","pointersLength","firstInput","simpleCloneInputData","firstMultiple","offsetCenter","getCenter","timeStamp","getAngle","getDistance","computeDeltaXY","offsetDelta","prevDelta","prevInput","offsetDirection","getDirection","overallVelocity","getVelocity","overallVelocityX","overallVelocityY","getScale","getRotation","maxPointers","computeIntervalInputData","velocity","velocityX","velocityY","lastInterval","srcEvent","recognize","evEl","evTarget","evWin","MOUSE_INPUT_MAP","MOUSE_ELEMENT_EVENTS","MOUSE_WINDOW_EVENTS","MouseInput","pressed","pointerType","POINTER_INPUT_MAP","pointercancel","IE10_POINTER_TYPE_ENUM","POINTER_ELEMENT_EVENTS","POINTER_WINDOW_EVENTS","PointerEventInput","pointerEvents","MSPointerEvent","PointerEvent","removePointer","eventTypeNormalized","isTouch","storeIndex","pointerId","SINGLE_TOUCH_INPUT_MAP","touchcancel","SINGLE_TOUCH_TARGET_EVENTS","SINGLE_TOUCH_WINDOW_EVENTS","SingleTouchInput","started","normalizeSingleTouches","TOUCH_INPUT_MAP","TOUCH_TARGET_EVENTS","TouchInput","targetIds","getTouches","allTouches","changedTargetTouches","touch","DEDUP_TIMEOUT","DEDUP_DISTANCE","TouchMouseInput","mouse","primaryTouch","lastTouches","recordTouches","eventData","setLastTouch","lastTouch","lts","isSyntheticEvent","inputEvent","isMouse","sourceCapabilities","firesTouchEvents","PREFIXED_TOUCH_ACTION","NATIVE_TOUCH_ACTION","TOUCH_ACTION_COMPUTE","TOUCH_ACTION_AUTO","TOUCH_ACTION_MANIPULATION","TOUCH_ACTION_NONE","TOUCH_ACTION_PAN_X","TOUCH_ACTION_PAN_Y","TOUCH_ACTION_MAP","getTouchActionProps","touchMap","cssSupports","CSS","TouchAction","touchAction","recognizers","recognizer","getTouchAction","cleanTouchActions","hasPanX","hasPanY","prevented","hasNone","isTapPointer","isTapMovement","isTapTouchTime","preventSrc","STATE_POSSIBLE","STATE_BEGAN","STATE_CHANGED","STATE_ENDED","STATE_RECOGNIZED","STATE_CANCELLED","Recognizer","uniqueId","simultaneous","requireFail","stateStr","directionStr","getRecognizerByNameIfManager","otherRecognizer","AttrRecognizer","PanRecognizer","pX","pY","PinchRecognizer","PressRecognizer","_timer","RotateRecognizer","SwipeRecognizer","TapRecognizer","pTime","pCenter","Hammer","Manager","recognizeWith","dropRecognizeWith","requireFailure","dropRequireFailure","hasRequireFailures","canRecognizeWith","additionalEvent","tryEmit","canEmit","inputDataClone","attrTest","optionPointers","isRecognized","directionTest","hasMoved","inOut","validPointers","validMovement","validTime","taps","posThreshold","validTouchTime","failTimeout","validInterval","validMultiTap","tapCount","VERSION","domEvents","inputClass","cssProps","userSelect","touchSelect","touchCallout","contentZooming","userDrag","tapHighlightColor","oldCssProps","createInputInstance","toggleCssProps","stopped","curRecognizer","existing","triggerDomEvent","gestureEvent","gesture","STATE_FAILED","Tap","Pan","Swipe","Pinch","Press","__WEBPACK_AMD_DEFINE_FACTORY__","__webpack_require__","expr","pseudos","createPseudo","dataName","disableSelection","enableSelection","focusable","hasTabindex","mapName","focusableIfVisible","fieldset","closest","formResetMixin","_formResetHandler","refresh","_bindFormResetHandler","_form","_unbindFormResetHandler","removeData","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","ancestor","pushStack","siblings","escapeSelector","addBack","allowDisconnected","cachedScrollbarWidth","rhorizontal","rvertical","roffset","rposition","rpercent","getOffsets","parseCss","isWindow","getDimensions","scrollbarWidth","div","innerDiv","getScrollInfo","within","overflowX","isDocument","overflowY","hasOverflowX","scrollWidth","getWithinInfo","withinElement","isElemWindow","atOffset","targetWidth","targetHeight","targetOffset","basePosition","scrollInfo","collision","horizontalOffset","verticalOffset","collisionPosition","using","elemWidth","elemHeight","marginLeft","marginTop","collisionWidth","collisionHeight","myOffset","my","feedback","important","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","newOverLeft","newOverTop","flipfit","safeActiveElement","safeBlur","trigger","scrollParent","includeHidden","excludeStaticParent","overflowRegex","tabbable","removeUniqueId","removeAttr","widgetUuid","widgetHasOwnProperty","widgetSlice","cleanData","triggerHandler","widget","existingConstructor","basePrototype","proxiedPrototype","namespace","fullName","Widget","_createWidget","_proto","_childConstructors","_superApply","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","childPrototype","bridge","inputIndex","inputLength","isMethodCall","methodValue","jquery","_init","defaultElement","eventNamespace","bindings","hoverable","classesElementLookup","_on","_getCreateOptions","_setOptionDisabled","_trigger","_getCreateEventData","_removeClass","curOption","_setOption","_setOptionClasses","classKey","currentElements","_classes","_toggleClass","full","bindRemoveEvent","nodesToBind","processClassString","checkOption","uniqueSort","_untrackClassesElement","_off","_addClass","suppressDisabledCheck","delegateElement","handlerProxy","hasClass","guid","_delay","_hoverable","currentTarget","mouseleave","_focusable","focusin","focusout","isDefaultPrevented","defaultEffect","effect","hasOptions","effectName","iconPosition","showLabel","originalLabel","hasTitle","_enhance","keyup","_updateIcon","_updateTooltip","displayBlock","_attachIcon","iconSpace","_attachIconSpace","newShowLabel","newIcon","isDisabled","uiBackCompat","icons","primary","secondary","checkboxradio","buttonset","controlgroup","labelContents","_readType","contents","wrapAll","_updateLabel","_getRadioGroup","nameSelector","_toggleClasses","toAdd","prependTo","controlgroupCornerRegex","onlyVisible","controlgroupLabel","selectmenu","_callChildMethod","childWidgets","_initWidgets","instanceOptions","_resolveClassesValues","widgetElement","_updateCornerClass","_buildSimpleOptions","middle","only","_spinnerOptions","_buttonOptions","_checkboxradioOptions","_selectmenuOptions","autoOpen","closeOnEscape","closeText","draggable","minHeight","modal","topOffset","resizable","beforeClose","dragStart","dragStop","resizeStart","resizeStop","sizeRelatedOptions","resizableRelatedOptions","originalCss","originalPosition","originalTitle","_createWrapper","uiDialog","_createTitlebar","_createButtonPane","_makeDraggable","_makeResizable","_isOpen","_trackFocus","_appendTo","_untrackInstance","_destroyOverlay","_focusedElement","opener","moveToTop","_moveToTop","zIndices","zIndexMax","_focusTabbable","_size","_createOverlay","overlay","_makeFocusTarget","hasFocus","uiDialogButtonPane","uiDialogTitlebarClose","_restoreTabbableFocus","_keepFocus","role","keydown","tabbables","uiDialogTitle","uiDialogTitlebar","_title","uiButtonSet","_createButtons","buttonOptions","filteredUi","containment","_blockFrames","_unblockFrames","handles","resizeHandles","originalSize","alsoResize","_minHeight","_trackingInstances","isVisible","resizableOptions","isDraggable","isResizable","nonContentHeight","minContentHeight","maxContentHeight","iframeBlocks","iframe","_allowInteraction","jqMinor","isOpening","overlays","dialog","dialogClass","addClasses","connectToSortable","cursorAt","grid","helper","iframeFix","refreshPositions","revertDuration","scrollSensitivity","scrollSpeed","snap","snapMode","snapTolerance","zIndex","_setPositionRelative","_setHandleClassName","_mouseInit","_removeHandleClassName","destroyOnClear","_mouseDestroy","_mouseCapture","_getHandle","_blurActiveElement","_mouseStart","_createHelper","_cacheHelperProportions","ddmanager","_cacheMargins","cssPosition","hasFixedAncestor","positionAbs","_refreshOffsets","_generatePosition","originalPageX","originalPageY","_adjustOffsetFromHelper","_setContainment","dropBehaviour","prepareOffsets","_mouseDrag","_getParentOffset","_getRelativeOffset","noPropagation","_convertPositionTo","_uiHash","_mouseUp","_mouseStop","dropped","handleElement","helperIsFunction","helperProportions","_isRootNode","scrollIsRootNode","isUserScrollable","relativeContainer","mod","constrainPosition","cancelHelperRemoval","uiSortable","sortables","sortable","isOver","_storedCSS","_helper","innermostIntersecting","_intersectsWith","containerCache","fromOutside","_revert","_cursor","scrollParentNotHidden","overflowOffset","scrolled","snapElements","inst","snapping","snapItem","makeArray","_zIndex","mouseHandled","_mouseDown","stopImmediatePropagation","_mouseMoveDelegate","_mouseUpDelegate","_mouseMoved","_mouseStarted","_mouseDownEvent","btnIsLeft","elIsCancel","mouseDelayMet","_mouseDelayTimer","_mouseDistanceMet","_mouseDelayMet","_mouseMove","altKey","ignoreMissingWhich","animateDuration","animateEasing","autoHide","ghost","_num","_isNumber","_hasScroll","_aspectRatio","originalElement","_proportionallyResizeElements","elementIsWrapper","marginRight","marginBottom","originalResizeStyle","_proportionallyResize","_setupHandles","_handles","resizing","_addedHandles","insertAfter","_removeHandles","hname","nw","_renderAxis","padPos","padWrapper","curleft","curtop","_renderProxy","sizeDiff","originalMousePosition","_propagate","smp","_change","_updatePrevProperties","_updateVirtualBoundaries","_updateRatio","_respectSize","_updateCache","_applyChanges","ista","soffseth","soffsetw","prevPosition","prevSize","forceAspectRatio","pMinWidth","pMaxWidth","pMinHeight","pMaxHeight","_vBoundaries","cpos","csize","ismaxw","ismaxh","isminw","isminh","dw","dh","_getPaddingPlusBorderDimensions","borders","paddings","prel","outerDimensions","elementOffset","oc","containerOffset","containerPosition","parentData","containerSize","woset","hoset","isParent","isOffsetRelative","cp","pRatio","cop","continueResize","sum","gridX","gridY","ox","oy","isMaxWidth","isMaxHeight","isMinWidth","isMinHeight","ready","connectWith","dropOnEmpty","forcePlaceholderSize","forceHelperSize","tolerance","activate","beforeStop","deactivate","receive","_isOverAxis","_isFloating","overrideHandle","validHandle","reverting","_refreshItems","_removeCurrentsFromItems","noActivation","currentContainer","domPosition","_createPlaceholder","storedCursor","storedStylesheet","_storedZIndex","_storedOpacity","_preserveHelperProportions","lastPositionAbs","_scroll","intersection","_refreshItemPositions","dragDirection","_getDragVerticalDirection","_getDragHorizontalDirection","_intersectsWithPointer","_intersectsWithSides","_rearrange","_contactContainers","_noFinalSort","serialize","_getItemsAsjQuery","connected","dyClick","dxClick","isOverElementHeight","isOverElementWidth","isOverElement","forcePointerForContainers","floating","verticalDirection","horizontalDirection","isOverBottomHalf","isOverRightHalf","_connectWith","queries","addItems","grep","targetData","_queries","queriesLength","fast","toleranceElement","refreshContainers","_createTrPlaceholder","sourceTr","targetTr","itemWithLeastDistance","posProperty","sizeProperty","nearBottom","innermostContainer","innermostIndex","hardRefresh","counter","delayedTriggers","delayEvent","_inst","sender","track","_addDescribedBy","describedby","_removeDescribedBy","liveRegion","disabledTitles","tooltipData","_updateContent","_registerCloseHandlers","contentOption","_open","delayedShow","a11yContent","positionOption","_find","_tooltip","fakeEvent","targetElement","_removeTooltip","closing","hiding","tooltipClass","rails","$document","linkClickSelector","buttonClickSelector","inputChangeSelector","formSubmitSelector","formInputClickSelector","disableSelector","enableSelector","requiredInputSelector","fileInputSelector","linkDisableSelector","buttonDisableSelector","csrfToken","csrfParam","CSRFProtection","refreshCSRFTokens","confirm","ajax","isRemote","handleRemote","withCredentials","dataType","ajaxSettings","serializeArray","beforeSend","settings","script","crossDomain","isCrossDomain","xhrFields","originAnchor","urlAnchor","handleMethod","metadataInput","submit","formElements","disableFormElements","disableFormElement","replacement","enableFormElements","enableFormElement","allowAction","answer","blankInputs","specifiedSelector","nonBlank","radiosForNameWithNoneSelected","radioName","foundInputs","requiredInputs","checkedRadioButtonNames","nonBlankInputs","stopEverything","disableElement","enableElement","ajaxPrefilter","originalOptions","metaClick","fail","blankRequiredInputs","nonBlankFileInputs","remote","__WEBPACK_AMD_DEFINE_RESULT__","returnExportsGlobal","EditableCaret","InputCaret","Mirror","Utils","oDocument","oWindow","setContextBy","$inputor","domInputor","setPos","sel","getSelection","_len","_results","setStart","removeAllRanges","addRange","getIEPosition","getPosition","inputor_offset","getOldIEPos","preCaretTextRange","textRange","createTextRange","moveToElementText","setEndPoint","getPos","clonedRange","cloneRange","selectNodeContents","setEnd","endContainer","endOffset","getOldIEOffset","duplicate","moveStart","shadowCaret","insertNode","selectNode","rangeCount","getRangeAt","getIEPos","endRange","inputor","textInputRange","moveToBookmark","getBookmark","compareEndPoints","selectionStart","setSelectionRange","getIEOffset","boundingLeft","boundingTop","boundingHeight","end_range","start_range","inputorOffset","css_attr","mirrorCss","$mirror","$flag","contentWindow","contentDocument","caret","apis","noGlobal","getProto","class2type","ObjectFunctionString","support","preservedScriptAttributes","nonce","noModule","DOMEval","toType","isArrayLike","prevObject","even","_elem","odd","copyIsArray","deep","isReady","Ctor","globalEval","invert","callbackExpect","Sizzle","Expr","getText","isXML","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","pushNative","booleans","whitespace","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","nonHex","high","rcssescape","fcssescape","asCodePoint","unloadHandler","inDisabledFieldset","addCombinator","els","seed","nid","newSelector","newContext","getElementsByClassName","qsa","testContext","toSelector","cacheLength","markFunction","assert","addHandle","attrs","attrHandle","siblingCheck","sourceIndex","createInputPseudo","createButtonPseudo","createDisabledPseudo","createPositionalPseudo","argument","matchIndexes","namespaceURI","hasCompare","subWindow","createComment","getById","getElementsByName","attrId","getAttributeNode","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","sortDetached","aup","ap","bp","specified","duplicates","detectDuplicates","sortStable","preFilter","excess","unquoted","nodeNameSelector","operator","_argument","simple","forward","ofType","uniqueCache","outerCache","nodeIndex","useCache","uniqueID","pseudo","setFilters","unmatched","lang","elemLang","_matchIndexes","radio","checkbox","password","tokens","combinator","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","multipleContexts","contexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","setMatchers","elementMatchers","matcherFromGroupMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","_name","unique","isXMLDoc","truncate","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","rparentsprev","guaranteedUnique","targets","prevAll","parentsUntil","nextAll","nextUntil","prevUntil","rnothtmlwhite","Identity","Thrower","adoptValue","noValue","Callbacks","createOptions","flag","firing","fired","locked","firingIndex","stopOnFalse","lock","fireWith","Deferred","newDefer","returned","progress","onFulfilled","onRejected","maxDepth","special","mightThrow","notifyWith","resolveWith","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","singleValue","remaining","resolveContexts","resolveValues","updateFunc","rerrorNames","readyException","readyList","completed","readyWait","doScroll","access","chainable","emptyGet","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","acceptData","Data","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","_removeData","startLength","_queueHooks","setter","clearQueue","pnum","rcssNum","cssExpand","isAttached","composed","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","maxIterations","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","checkClone","noCloneChecked","wrapMap","thead","col","td","_default","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","optgroup","attached","htmlPrefilter","rtypenamespace","returnTrue","returnFalse","expectSync","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","handleObjIn","eventHandle","handleObj","namespaces","origType","elemData","triggered","bindType","delegateCount","setup","mappedTypes","origCount","teardown","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","noBubble","beforeunload","isSimulated","eventPhase","toElement","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","replaceWith","replaceChild","replaceAll","rnumnonpx","getStyles","old","rboxStyle","curCSS","computed","pixelBoxStyles","addGetHookIf","conditionFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","vendorPropName","capName","rdisplayswap","rcustomProp","cssShow","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","isBorderBox","computedVal","getWidthOrHeight","valueIsBorderBox","getClientRects","Tween","cssHooks","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","widows","origName","isCustomProp","scrollboxSizeBuggy","suffix","expanded","propHooks","eased","fx","swing","fxNow","inProgress","rfxtypes","rrun","createFxNow","genFx","includeWidth","createTween","tweeners","prefilters","tweens","specialEasing","originalProperties","gotoEnd","propFilter","anim","tweener","defaultPrefilter","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","prefilter","speeds","fadeTo","optall","doAnimation","finish","stopQueue","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","clazz","finalValue","stateVal","isValidValue","classNames","rreturn","valHooks","optionSet","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","simulate","attaches","rquery","parseXML","parserErrorElem","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","lastModified","etag","isLocal","processData","responseFields","converters","ajaxSetup","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","mimeType","finalText","ifModified","headers","nativeStatusText","responses","isSuccess","ajaxHandleResponses","finalDataType","firstDataType","ajaxConvert","conv2","conv","dataFilter","getScript","wrapInner","htmlIsFunction","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","onabort","ontimeout","responseText","binary","scriptAttrs","charset","scriptCharset","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","keepScripts","animated","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","win","parentOffset","Height","Width","defaultExtra","funcName","delegate","undelegate","fnOver","fnOut","holdReady","parseJSON","_jQuery","_$","noConflict","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","INVALID_TEMPL_VAR_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","promiseTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsAstralRange","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","arrayAggregator","iteratee","accumulator","arrayEach","arrayEachRight","arrayEvery","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","symIterator","symToStringTag","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","isArr","isArg","isBuff","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","cloneBuffer","initCloneObject","copySymbolsIn","getSymbolsIn","baseAssignIn","keysIn","copySymbols","getSymbols","initCloneByTag","cloneArrayBuffer","cloneDataView","cloneTypedArray","cloneRegExp","cloneSymbol","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","valuesIndex","templateSettings","evaluate","variable","hashClear","hashDelete","hashGet","hashHas","hashSet","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","mapCacheClear","mapCacheDelete","getMapData","mapCacheGet","mapCacheHas","mapCacheSet","setCacheAdd","setCacheHas","stackClear","stackDelete","stackGet","stackHas","stackSet","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","getRawTag","isOwn","unmasked","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","othLength","othIndex","baseInvoke","baseIsArguments","baseIsEqual","baseIsEqualDeep","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","equalByTag","isPartial","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","equalObjects","objProps","objLength","othProps","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","isMasked","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","baseMergeDeep","mergeFunc","safeGet","isTyped","isArrayLikeObject","toPlainObject","baseNth","baseOrderBy","iteratees","orders","getIteratee","baseSortBy","comparer","compareMultiple","objCriteria","othCriteria","ordersLength","compareAscending","basePickBy","baseSet","basePullAll","basePullAt","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","guard","isIterateeCall","iterable","createCaseFirst","methodName","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","arity","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","reorder","arrLength","oldArray","createInverter","toIteratee","baseInverter","createMathOperation","createOver","arrayFunc","createPadding","chars","charsLength","toFinite","baseRange","createRelationalOperation","toNumber","wrapFunc","isCurry","newData","setWrapToString","createRound","createToPairs","setToPairs","baseToPairs","createWrap","mergeData","srcBitmask","newBitmask","isCombo","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrStacked","arrValue","otherFunc","isKeyable","stubArray","hasPath","hasFunc","isLength","ctorString","isMaskable","stubFalse","otherArgs","shortOut","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","rand","memoizeCapped","memoize","quote","subString","difference","differenceBy","differenceWith","findLastIndex","intersectionBy","intersectionWith","pull","pullAll","pullAt","union","unionBy","unionWith","unzip","unzipWith","without","xor","xorBy","xorWith","zipWith","interceptor","wrapperAt","countBy","findLast","forEachRight","invokeMap","keyBy","partition","bindKey","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","remainingWait","timeWaiting","debounced","isInvoking","leadingEdge","memoized","Cache","overArgs","funcsLength","partial","partialRight","rearg","gte","baseIsArrayBuffer","baseIsDate","isError","isInteger","baseIsMap","baseIsRegExp","baseIsSet","baseIsTypedArray","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invertBy","basePick","pickBy","toPairs","toPairsIn","word","capitalize","upperFirst","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplicand","minuend","subtrahend","castArray","compact","cond","conforms","baseConforms","curryRight","dropRight","dropRightWhile","dropWhile","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functionsIn","mapKeys","mapValues","matchesProperty","nthArg","omitBy","orderBy","propertyOf","pullAllBy","pullAllWith","rest","setWith","shuffle","sortedUniq","sortedUniqBy","spread","takeRight","takeRightWhile","takeWhile","throttle","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","escapeRegExp","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","baseInRange","isBoolean","isElement","isEqual","isEqualWith","isMatchWith","isNative","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","strLength","padEnd","radix","reduceRight","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","times","toLower","toSafeInteger","toUpper","trimStart","omission","newEnd","eachRight","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","lazyClone","lazyReverse","lazyValue","getView","iterLength","takeCount","iterIndex","wrapperChain","wrapperCommit","wrapperNext","wrapperPlant","wrapperReverse","wrapped","wrapperValue","wrapperToIterator","iframes","iframesTimeout","isIframeBlank","getIframeContents","observeIframeLoad","forEachIframe","waitForIframes","onIframeReady","createNodeIterator","DOCUMENT_POSITION_PRECEDING","DOCUMENT_POSITION_FOLLOWING","previousNode","prevNode","nextNode","handled","compareNodeIframe","createInstanceOnIframe","forEachNode","createIterator","getIteratorNode","checkIframeFilter","handleOpenIframes","getContexts","iterateThroughNodes","debug","wildcards","setupWildcardsRegExp","escapeStr","synonyms","createSynonymsRegExp","ignoreJoiners","ignorePunctuation","setupIgnoreJoinersRegExp","createDiacriticsRegExp","createMergedBlanksRegExp","createJoinersRegExp","createWildcardsRegExp","createAccuracyRegExp","processSynomyms","accuracy","limiters","separateWordSearch","keywords","noMatch","callNoMatchOnInvalidRanges","NodeFilter","SHOW_TEXT","matchesExclude","FILTER_REJECT","FILTER_ACCEPT","splitText","wrapRangeInTextNode","previousSibling","getTextNodes","wrapRangeInMappedTextNode","checkWhitespaceRanges","normalizeTextNode","acrossElements","ignoreGroups","getSeparatedKeywords","createRegExp","checkRanges","wrapRangeFromIndex","SHOW_ELEMENT","unwrapMatches","_opt","mark","markRegExp","markRanges","unmark","conf","del","refCounter","ignore","deleteRef","getRefCount","customError","defineLength","resolveResolve","resolveNormalize","memLength","extDel","normalizer","getListeners","setListeners","deleteListeners","resolvers","updateEnv","__memoized__","resolveLength","getNormalizer","optsLength","fnLength","isAsync","userNormalizer","resolveArgs","lastId","argsMap","__profiler__","Mime","_types","_extensions","typeMap","abbrs","untils","population","zones","toTimeString","getTimezoneOffset","zone","offsetScore","abbrScore","countries","dataVersion","_f","_tzm","utc","isMoment","moveAmbiguousForward","moveInvalidForward","utcOffset","scoreOffsetAt","_zones","_links","_names","_countries","zoneExists","didShowError","guess","Intl","DateTimeFormat","resolvedOptions","timeZone","names","Zone","unpack","unpackBase60","needsOffset","zonesForCountry","_z","defaultZone","updateOffset","_isUTC","zoneName","zoneAbbr","setDefault","momentProperties","cachedGuess","guesses","momentVersion","charCodeToInt","whole","fractional","arrayToInt","mapIndices","intToUntil","packedString","Country","country_name","zone_names","OffsetAt","timeString","ZoneScore","findChange","sortZoneScores","addToGuesses","rebuildGuess","intlName","normalizeName","zoneScore","userOffsets","startYear","offsetsLength","guessesForUserOffsets","guessesOffset","filteredGuesses","zoneScores","getZone","addZone","packed","caller","addLink","aliases","alias","normal0","isUnixTimestamp","unpacked","zone_name","country_code","offsetNext","offsetPrev","mom","offsetAt","loadData","addCountries","country_zones","getNames","getCountryNames","country","with_offset","getCountry","abbrWrap","resetZoneWrap","keepTime","resetZoneWrap2","defineLocale","monthsShort","weekdaysShort","weekdaysMin","meridiemParse","isPM","meridiem","isLower","longDateFormat","LT","LTS","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","mm","hh","dd","MM","dayOfMonthOrdinalParse","dow","doy","pluralForm","plurals","pluralize","withoutSuffix","isFuture","weekdaysParseExact","postformat","symbolMap","preparse","numberMap","suffixes","plural","forms","relativeTimeWithPlural","standalone","isFormat","period","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","monthsParse","monthsRegex","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","weekdaysParse","longMonthsParse","shortMonthsParse","lll","llll","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","narrow","eraYearOrdinalRegex","eraYearOrdinalParse","$0","$2","isUpper","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","translateSeconds","translateSingular","relativeTimeWithSingular","relativeSeconds","translator","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","hm","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","hookCallback","setHookCallback","isObjectEmpty","arrLen","createUTC","createLocalOrUTC","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","getParsingFlags","_pf","_isValid","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","createInvalid","updateInProgress","copyConfig","momentPropertiesLen","Moment","suppressDeprecationWarnings","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","addUnitAlias","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","getPrioritizedUnits","unitsObj","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","set$1","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","getParseRegexForToken","unescapeFormat","regexEscape","p4","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","getSetMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","baseConfig","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","curWeek","GG","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","isUTC","prototypeMin","prototypeMax","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","years","quarters","weeks","isoWeek","milliseconds","_milliseconds","_days","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offsetFromString","chunkOffset","cloneWithOffset","setTime","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","positiveMomentsDifference","isAfter","isBefore","createAdder","isAdding","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","sod","calendarFormat","localInput","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","adjust","wholeMonthDiff","keepOffset","toDate","inputString","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","_eras","localeErasParse","eraName","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","isDSTShifted","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","monthsFromDays","monthsToDays","daysToMonths","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME_SECONDS","TIME_MS","_REVERSE_MAP","_MAP","_KEYCODE_MAP","_SHIFT_MAP","_SPECIAL_ALIASES","command","return","plus","Mousetrap","_bindMultiple","_directMap","_callbacks","stopCallback","_belongsTo","initialEventTarget","isContentEditable","handleKey","_handleKey","addKeycodes","documentMousetrap","_addEvent","_characterFromEvent","character","_modifiersMatch","modifiers1","modifiers2","_isModifier","_pickBestAction","modifiers","_getReverseMap","_getKeyInfo","combination","_keysFromString","_resetTimer","_sequenceLevels","_ignoreNextKeyup","_ignoreNextKeypress","_nextExpectedAction","_resetSequences","doNotReset","activeSequences","_getMatches","sequenceName","seq","deleteCombo","combo","deleteSequence","_fireCallback","sequence","_preventDefault","_stopPropagation","_handleKeyEvent","_eventModifiers","_bindSequence","_increaseSequence","nextAction","_resetSequenceTimer","_callbackAndReset","wrappedCallback","_bindSingle","maxLevel","processedSequenceCallback","ignoreThisKeypress","combinations","EventArgumentToken","defaultEventArgumentFactory","DynamicComponentInjectorToken","ComponentOutletInjectorDirective","componentOutlet","exportAs","NgComponentOutlet","Host","ComponentOutletInjectorModule","DynamicAttributesDirective","differs","componentInjector","componentOutletInjector","attrsDiffer","_attributes","ndcDynamicAttributes","ngComponentOutletNdcDynamicAttributes","_compInjector","_nativeElement","_compType","_isCompChanged","lastCompType","isCompChanged","lastAttrActions","_changesToAttrActions","_updateAttributes","attrActions","forEachAddedItem","forEachChangedItem","forEachRemovedItem","KeyValueDiffers","DynamicAttributesModule","createNewChange","SimpleChange","setChangeFromRecord","isFirstChanges","recordToChange","isFirstChange","defaultOpts","onlyNewChanges","changesFromRecord","getNewChangesRecords","getChangesRecords","recordToChanges","recordToNewChanges","IoService","cfr","eventArgument","checkInit","failInit","lastComponentInst","inputsDiffer","compFactory","outputsShouldDisconnect$","outputsChanged","compRef","compInjector","componentInst","componentInstChanged","compCdr","_disconnectOutputs","trackOutputChanges","outputsDiffer","inputsChanged","updateIO","compChanged","inputsChanges","_getInputsChanges","_updateInputChanges","updateInputs","lastInputChanges","bindOutputs","maybeUpdate","isNotFirstChange","_updateCompFactory","compInst","_resolveInputs","notifyOnInputChanges","_resolveOutputs","forceFirstChanges","_collectFirstChanges","differ","_collectChangesFromDiffer","_resolveChanges","forEachItem","_resolveCompFactory","_remapIO","_processOutputs","processedOutputs","outputExpr","_processOutputArgs","newIO","newKey","_findPropByTplInMapping","tplName","templateName","IoFactoryService","WindowRefToken","browserWindowFactory","WindowRefService","nativeWindow","DynamicDirectivesDirective","iterableDiffers","ioFactoryService","windowRef","ndcDynamicDirectivesCreated","dirRef","dirIo","dirsDiffer","directives","ndcDynamicDirectives","ngComponentOutletNdcDynamicDirectives","compInstance","lastCompInstance","hostInjector","hostVcr","_viewRef","_viewContainerRef","reflect","Reflect","maybeDestroyDirectives","dirsChanges","updateDirectives","processDirChanges","destroyAllDirectives","destroyDirective","createdDirs","initDirective","updateDirective","dirDef","createDirective","hostComponent","hostView","initDirIO","callInitHooks","destroyDirRef","dirToCompDef","dirType","resolvedParams","getCtorType","resolveDep","dep","maybeResolveVCR","callHook","IterableDiffers","DynamicDirectivesModule","DynamicIoDirective","ioService","ndcDynamicInputs","ngComponentOutletNdcDynamicInputs","ndcDynamicOutputs","ngComponentOutletNdcDynamicOutputs","DynamicIoModule","DynamicComponent","vcr","ndcDynamicCreated","ndcDynamicComponent","createDynamicComponent","_resolveInjector","ndcDynamicContent","ndcDynamicInjector","ndcDynamicProviders","DynamicComponentModule","DynamicModule","forRoot","defaultColors","getColors","chartType","formatPieColors","generateColors","formatPolarAreaColors","formatLineColor","pointBackgroundColor","pointBorderColor","pointHoverBackgroundColor","pointHoverBorderColor","generateColor","formatBarColor","colour","getRandomInt","getRandomColor","colorsArr","ThemeService","pColorschemesOptions","colorschemesOptions","setColorschemesOptions","getColorschemesOptions","UpdateType","Default","Refresh","BaseChartDirective","themeService","chartClick","chartHover","dataExists","datasetsExists","datasetsLength","datasetsDataObjects","datasetsDataLengths","colorsExists","labelsExist","legendExists","Chart$1","themeChanged","updateRequired","wantUpdate","propagateDataToDatasets","updateColors","colorsEqual","copyColor","labelsEqual","copyLabel","pointBorderWidth","pointRadius","pointHoverRadius","pointHitRadius","pointHoverBorderWidth","elm","propagateDatasetsToData","hideDataset","isDatasetHidden","getChartConfiguration","getDatasets","smartMerge","getChartBuilder","chartConfig","arrayElements","isMultiLineLabel","joinLabel","newDataValues","isMultiDataSet","ChartsModule","Group","initEvents","EventTypes","Cancel","Cloned","Drag","DragEnd","Drop","Out","Over","Shadow","DropModel","RemoveModel","AllEvents","dragulaExpt__default","dragulaExpt","DrakeFactory","filterEvent","filterDragType","projector","elContainerSourceProjector","DragulaService","drakeFactory","dispatch$","groupName","dragend","elContainerSource","cloneType","dropModel","sourceModel","targetModel","targetIndex","handleModels","setupEvents","createGroup","dragElm","dragIndex","dropIndex","domIndexOf","dropElm","isCopying","copyItem","DragulaDirective","dragulaService","dragulaModelChange","hasNewValue","dragulaModel","checkModel","Subscription","modelIndex","DragulaModule","MockDrake","emitter$","readOnlyThrow","validArray","validFunction","getDescriptor","Constructor","ReadOnly","descs","arrSplice","isObservableSymbol","removed","had","oldValue","eIndexOf","memoizeMethods","getNormalizer1","getPrimitiveNormalizer","createReadOnly","validObservableArray","invokeDispose","ObservableArray","disposed","rStart","rEnd","recalculate","newEvent","_dispose","refreshAll","nu","_setValue","makeObservable","isLObservable","isRObservable","reducer","resolveRest","isObservableValue","valueDesc","toMethod","autoBind","toStringTagSymbol","_linkedObserver","__value__","isOldObservable","__link__","_emit_","__postponed__","__postponedEvent__","eqSloppy","gtOrEq","ltOrEq","_postponed_","__P","__H","__h","__v","__c","__N","__V","cancelAnimationFrame","isPureReactComponent","shouldComponentUpdate","__f","__e","__k","__d","__u","__b","__a","__R","__O","setState","forceUpdate","componentWillUnmount","revealOrder","getChildContext","containerInfo","componentDidUpdate","componentDidMount","persist","$$typeof","defaultProps","vnode","__r","debounceRendering","__n","ownerSVGElement","contextType","__E","_sb","__s","getDerivedStateFromProps","componentWillMount","componentWillReceiveProps","componentWillUpdate","getSnapshotBeforeUpdate","localName","createElementNS","dangerouslySetInnerHTML","__html","diffed","unmount","Consumer","Provider","getDerivedStateFromError","componentDidCatch","cssStyleGreenOnWhite","cssStyleRedOnWhite","logEnabled","lastLogMessage","logger","defaultLogger","logTimePeriodDivider","dur","getSubscriberCount","logStateChange","isLogEnabled","enableReactiveStatesLogging","State","source$","isNonValue","afterConnect","afterDisconnect","pristine","outputStreamTrailing","observerCount","timestampOfLastValue","outputStream","value$","nonValue$","inputStream","connect","isConnected","disconnect","sourceSubscription","setInnerValue","isValueOlderThan","timeoutInMs","stateValue","changes$","wrapObserve","changesPromise","values$","valuesPromise","nonValues$","nonValuesPromise","getValueOr","mapOr","orValue","hasSubscribers","onObserverSubscribed","onObserverUnsubscribed","CombinerState","combineLatest","x_1","combine","nextStoreId","StatesGroup","storeId","autoInitMembers","initializeMembers","connectAll","disconnectAll","member","DerivedState","inputState","stream","defaultNonValue","defaultWhenInputHasNonValue","setStateFn","deriveRaw","transformer","transformed","derive","InputState","initialValue","timestampOfLastPromise","putValue","clearAndPutFromPromise","isPristine","hasActivePromiseRequest","isPromiseRequestOlderThan","putFromPromiseIfPristine","calledIfPristine","doModify","valueMapper","oldVal","newInput","orInput","initValue","MultiInputState","cache$","change$","remove$","newState_1","observeRemove","observeChange","multiInput","exporter","makeExporter","supportsSymbol","toPrimitiveSymbol","supportsCreate","supportsProto","downLevel","HashMap","MakeDictionary","functionPrototype","usePolyfill","REFLECT_METADATA_USE_MAP_POLYFILL","_Map","CreateMapPolyfill","_Set","CreateSetPolyfill","Metadata","CreateWeakMapPolyfill","decorate","IsUndefined","IsArray","IsConstructor","DecorateConstructor","IsObject","IsNull","DecorateProperty","ToPropertyKey","metadataKey","metadataValue","IsPropertyKey","OrdinaryDefineOwnMetadata","defineMetadata","hasMetadata","OrdinaryHasMetadata","hasOwnMetadata","OrdinaryHasOwnMetadata","OrdinaryGetMetadata","getOwnMetadata","OrdinaryGetOwnMetadata","getMetadataKeys","OrdinaryMetadataKeys","getOwnMetadataKeys","OrdinaryOwnMetadataKeys","deleteMetadata","metadataMap","GetOrCreateMetadataMap","targetMetadata","decorated","Create","MetadataKey","OrdinaryGetPrototypeOf","ToBoolean","MetadataValue","ownKeys","parentKeys","ownKeys_1","parentKeys_1","GetIterator","IteratorStep","nextValue","IteratorValue","IteratorClose","Type","IsSymbol","ToPrimitive","PreferredType","exoticToPrim","GetMethod","OrdinaryToPrimitive","toString_1","IsCallable","toString_2","ToString","iterResult","prototypeProto","cacheSentinel","arraySentinel","MapIterator","_keys","_values","_selector","throw","_cacheKey","_cacheIndex","getKey","getEntry","_map","UUID_SIZE","CreateUniqueKey","GetOrCreateWeakMapTable","CreateUUID","FillRandomBytes","GenRandomBytes","crypto","getRandomValues","msCrypto","byte","_subscribe","closed","hasError","thrownError","ObjectUnsubscribedError","NotificationKind","NEXT","COMPLETE","kind","observer","do","nextOrObserver","toObservable","throwError","undefinedValueNotification","completeNotification","_isScalar","observable","observerOrNext","sink","toSubscriber","rxSubscriberSymbol","emptyObserver","syncErrorThrowable","_trySubscribe","syncErrorThrown","syncErrorValue","canReportError","isStopped","promiseCtor","getPromiseCtor","Symbol_observable","operations","pipeFromArray","hostReportError","OuterSubscriber","notifyNext","outerValue","innerValue","outerIndex","innerIndex","innerSub","notifyError","notifyComplete","QueueAction","AsyncAction","execute","_execute","requestAsyncId","QueueScheduler","AsyncScheduler","ObserveOnSubscriber","scheduleMessage","ObserveOnMessage","bufferSize","windowTime","_infiniteTimeWindow","_bufferSize","_windowTime","nextInfiniteTimeWindow","nextTimeWindow","ReplayEvent","_getNow","_trimBufferThenGetEvents","SubjectSubscription","eventsCount","spliceCount","SubjectSubscriber","subject","AnonymousSubject","subscriberIndex","destinationOrNext","SafeSubscriber","_unsubscribeAndRecycle","_parentOrParents","_parentSubscriber","__tryOrSetError","__tryOrUnsub","useDeprecatedSynchronousErrorHandling","wrappedComplete","_unsubscribe","UnsubscriptionError","UnsubscriptionErrorImpl","_subscriptions","_ctorUnsubscribe","flattenUnsubscriptionErrors","EMPTY","subscriptions","subscriptionIndex","errs","_enable_super_gross_mode_that_will_cause_bad_things","SimpleInnerSubscriber","SimpleOuterSubscriber","innerSubscribe","innerSubscriber","subscribeTo","ConnectableObservable","subjectFactory","_refCount","_isComplete","getSubject","_subject","connection","_connection","ConnectableSubscriber","refCount","higherOrderRefCount","connectableObservableDescriptor","connectableProto","connectable","NONE","observables","resultSelector","isScheduler","fromArray","CombineLatestOperator","CombineLatestSubscriber","toRespond","subscribeToResult","unused","_outerValue","_tryResultSelector","concatAll","mergeAll","emptyScheduled","forkJoin","forkJoinInternal","emitted","scheduled","isInteropObservable","scheduleObservable","schedulePromise","scheduleArray","isIterable","Symbol_iterator","scheduleIterable","subscribeToArray","setupSubscription","sourceObj","isEventTarget","isJQueryStyleEventEmitter","isNodeStyleEventEmitter","concurrent","NEVER","dueTime","periodOrScheduler","due","ZipOperator","ZipSubscriber","iterators","StaticArrayIterator","StaticIterator","ZipBufferIterator","stillUnsubscribed","notifyInactive","checkIterators","shouldComplete","hasCompleted","_tryresultSelector","nextResult","isComplete","AuditOperator","durationSelector","AuditSubscriber","innerSubscription","clearThrottle","audit","closingNotifier","BufferOperator","BufferSubscriber","catchError","CatchOperator","caught","CatchSubscriber","err2","DebounceOperator","DebounceSubscriber","_tryNext","emitValue","durationSubscription","DebounceTimeOperator","DebounceTimeSubscriber","debouncedSubscription","lastValue","clearDebounce","dispatchNext","debouncedNext","defaultIfEmpty","DefaultIfEmptyOperator","DefaultIfEmptySubscriber","keySelector","DistinctUntilChangedOperator","DistinctUntilChangedSubscriber","hasKey","FilterOperator","FilterSubscriber","FinallyOperator","FinallySubscriber","EmptyError","EmptyErrorImpl","throwIfEmpty","errorFactory","defaultErrorFactory","ThrowIfEmptyOperator","ThrowIfEmptySubscriber","hasDefaultValue","elementSelector","subjectSelector","GroupByOperator","GroupBySubscriber","attemptedToUnsubscribe","groupedObservable","GroupedObservable","GroupDurationSubscriber","removeGroup","groupSubject","refCountSubscription","InnerRefCountSubscription","MapOperator","MapSubscriber","mapTo","MapToOperator","MapToSubscriber","MergeMapOperator","MergeMapSubscriber","_innerSub","ish","pairwise","PairwiseOperator","PairwiseSubscriber","hasPrev","plucker","currentProp","hasSeed","ScanOperator","ScanSubscriber","_seed","takeLast","TakeLastOperator","ArgumentOutOfRangeError","TakeLastSubscriber","ring","RefCountOperator","RefCountSubscriber","sharedConnection","MulticastOperator","shareSubjectFactory","share","multicast","subjectOrSubjectFactory","shareReplay","configOrBufferSize","shareReplayOperator","useRefCount","SkipOperator","SkipSubscriber","SwitchMapOperator","SwitchMapSubscriber","TakeOperator","TakeSubscriber","notifier","TakeUntilOperator","takeUntilSubscriber","TakeUntilSubscriber","notifierSubscription","seenValue","inclusive","TakeWhileOperator","TakeWhileSubscriber","nextOrComplete","predicateResult","DoOperator","TapSubscriber","_tapNext","_tapError","_tapComplete","defaultThrottleConfig","throttleTime","ThrottleTimeOperator","ThrottleTimeSubscriber","_hasTrailingValue","_trailingValue","TimeoutError","TimeoutErrorImpl","TimeoutWithOperator","absoluteTimeout","withObservable","TimeoutWithSubscriber","scheduleTimeout","dispatchTimeout","timeoutWith","withLatestFrom","WithLatestFromOperator","WithLatestFromSubscriber","_tryProject","Action","recycleAsyncId","errorValue","Scheduler","SchedulerAction","AnimationFrameAction","AnimationFrameScheduler","nextHandle","RESOLVED","activeHandles","findAndClearHandle","Immediate","AsapAction","AsapScheduler","getSymbolIterator","rxSubscriber","ArgumentOutOfRangeErrorImpl","ObjectUnsubscribedErrorImpl","obs","subscribeToObservable","subscribeToPromise","subscribeToIterable","InnerSubscriber","outerSubscriber","canReportError_1","toSubscriber_1","observable_1","pipe_1","config_1","hostReportError_1","isFunction_1","Observer_1","Subscription_1","rxSubscriber_1","isArray_1","isObject_1","UnsubscriptionError_1","Observable_1","Subscriber_1","ArgumentOutOfRangeError_1","empty_1","closed_1","identity_1","isCommonjs","keyboardAllowed","fnMap","eventNameMap","fullscreenchange","fullscreenerror","screenfull","onFullScreenEntered","ALLOW_KEYBOARD_INPUT","exit","onFullScreenExit","onchange","fullscreenEnabled","creators","creator","defineType","_as","_p","getDef","_len2","_key2","_len3","_key3","possibleTypes","classRe","LAZY_TYPE_EXPLANATION","MISSING_REFLECT_CONF_MSG","isDirectlySerializableNativeType","isTypeTypedArray","Uint8ClampedArray","parseToJSObject","shouldOmitParseString","jsonStr","expectsTypesSerializedAsStrings","hasQuotes","isSubtypeOf","optionalParams","logWarning","isValueDefined","AnyT","isReflectMetadataSupported","nameof","jsonArrayMember","maybeTypeThunk","propKey","decoratorName","typeThunk","ensureTypeThunk","reflectedType","injectMetadataInformation","createArrayType","ensureTypeDescriptor","emitDefaultValue","isRequired","extractOptionBase","deserializer","serializer","elementType","ArrayTypeDescriptor","jsonMember","optionsOrPrototype","propertyKeyOrOptions","jsonMemberDecoratorFactory","optionsOrType","isTypelike","isTypeThunk","newTypeDescriptor","reflectCtor","typeToTest","isSpecialPropertyType","reflectPropCtor","typeDescriptor","isConstructorEqual","TypeDescriptor","SetTypeDescriptor","MapTypeDescriptor","jsonObject","optionsOrTarget","objectMetadata","JsonObjectMetadata","isExplicitlyMarked","onDeserializedMethodName","onDeserialized","beforeSerializationMethodName","beforeSerialization","typeResolver","typeHintEmitter","initializerCallback","optionsBase","knownTypes","knownType","METADATA_FIELD_KEY","classType","dataMembers","knownTypesDeferred","isHandledWithoutAnnotation","getFromConstructor","doesHandleWithoutAnnotation","primitiveMeta","parentMetadata","memberMetadata","processDeferredKnownTypes","getTypes","ensurePresentInPrototype","kAllOptions","getOptionValue","getDefaultOptionOf","mergeOptions","moreSpecific","defaultTypeResolver","__type","Deserializer","deserializationStrategy","deserializeDirectly","deserializeDate","stringToArrayBuffer","stringToDataView","convertAsArray","convertAsSet","convertAsMap","convertAsFloatArray","convertAsUintArray","setDeserializationStrategy","setNameResolver","nameResolverCallback","nameResolver","setTypeResolver","typeResolverCallback","getTypeResolver","setErrorHandler","errorHandlerCallback","convertSingleValue","memberName","memberOptions","retrievePreserveNull","convertAsObject","expectedSelfType","sourceObjectMetadata","knownTypeConstructors","mergeKnownTypes","createKnownTypesMap","typeFromTypeHint","sourceMetadata","sourceObjectWithDeserializedProperties","classOptions","targetObject","objMemberMetadata","objMemberValue","objMemberDebugName","objMemberOptions","revivedValue","instantiateType","sourceKey","ConcreteTypeDescriptor","hasFriendlyName","knownTypeMaps","knowTypes","knownTypeMeta","customName","throwTypeMismatchError","targetType","expectedSourceType","actualSourceType","makeTypeErrorMessage","actualType","srcTypeNameForDebug","objectName","resultSet","expectedShape","getCompleteOptions","shape","isExpectedMapShape","keyType","keyMemberName","valueMemberName","resultKey","createArrayBufferFromString","strLen","defaultTypeEmitter","sourceTypeMetadata","Serializer","serializationStrategy","convertAsArrayBuffer","convertAsDataView","convertAsTypedArray","setSerializationStrategy","setTypeHintEmitter","typeEmitterCallback","getTypeHintEmitter","expectedName","actualName","sourceMeta","serialized","expectedTypeName","actualTypeName","resultArray","resultElement","resultShape","preserveNull","resultKeyValuePairObj","keyDefined","valueDefined","TypedJSON","rootConstructor","globalKnownTypes","indent","rootMetadata","rootType","parseAsArray","parseAsSet","parseAsMap","toPlainJson","toPlainArray","toPlainSet","keyCtor","valueCtor","toPlainMap","stringifyAsArray","stringifyAsSet","stringifyAsMap","_globalConfig","replacer","upDown","setSerializationStrategies","mapType","getKnownTypes","_mapKnownTypes","SetT","keyConstructor","MapT","ktc","knownTypeCtor","GenericTypeDescriptor","typeThunkOrSerializable","_IPv6","IPv6","bestPresentation","address","_best","_current","inzeroes","_SecondLevelDomains","SecondLevelDomains","SLD","af","au","bb","bh","bz","ck","dz","ec","eg","fj","fk","gh","gu","hk","hu","in","iq","jp","kh","km","kw","ky","kz","lb","lk","lv","ly","mc","mk","mv","mw","mx","nf","ng","np","om","ph","pk","pw","sv","mu","mz","py","ru","rw","sd","tj","ug","uk","uy","yu","zm","com","net","org","domain","tldOffset","sldOffset","sldList","punycode","_URI","URI","_urlSupplied","_baseSupplied","absoluteTo","escapeRegEx","filterArrayValues","arrayContains","arraysEqual","two","trimSlashes","escapeForDumbFirefox36","strictEncodeURIComponent","_parts","urn","preventInvalidHostname","duplicateQueryParameters","escapeQuerySpace","protocol_expression","idn_expression","punycode_expression","ip4_expression","ip6_expression","find_uri_expression","findUri","parens","leading_whitespace_expression","ascii_tab_whitespace","defaultPorts","http","https","ftp","gopher","wss","hostProtocols","invalid_hostname_characters","domAttributes","blockquote","embed","audio","video","getDomAttribute","iso8859","unicode","characters","reserved","urnpath","encodeQuery","decodeQuery","_part","generateAccessor","generateSegmentedPathFunction","_sep","_codingFuncName","_innerCodingFuncName","actualCodingFunc","generateSimpleAccessor","generatePrefixAccessor","decodePath","decodeUrnPath","recodePath","recodeUrnPath","encodeReserved","parseAuthority","parseHost","bracketPos","firstColon","firstSlash","nextColon","ensureValidHostname","ensureValidPort","parseUserinfo","_string","parseQuery","splits","requireAbsolutePath","buildAuthority","buildHost","buildUserinfo","buildQuery","buildQueryParameter","addQuery","setQuery","removeQuery","hasQuery","withinArray","joinPaths","nonEmptySegments","commonPath","withinString","_end","_trim","_parens","_attributeOpen","ignoreHtml","attributeOpen","parensEnd","parensMatch","parensMatchEnd","hasHostname","rejectEmptyHostname","toASCII","removeAll","unconflicted","URITemplate","deferBuild","_deferred_build","_object","ip","ip4","ip6","sld","idn","_hostname","scheme","authority","userinfo","resource","subdomain","tld","ReferenceError","decodePathSegment","mutatedDirectory","normalizePath","segmentCoded","setSearch","addSearch","removeSearch","hasSearch","normalizeProtocol","normalizeQuery","normalizeFragment","normalizeHostname","normalizePort","_was_relative","_leadingParents","normalizePathname","normalizeSearch","normalizeHash","readable","toUnicode","qp","kv","basedir","relativeTo","relativeParts","baseParts","relativePath","one_map","two_map","one_query","two_query","_URITemplate","operators","named","empty_name_separator","EXPRESSION_PATTERN","VARIABLE_PATTERN","VARIABLE_NAME_PATTERN","LITERAL_PATTERN","variables","maxlength","explode","expandNamed","_encode","expandUnnamed","eMatch","vMatch","ePattern","vPattern","nPattern","lPattern","checkLiteral","expansion","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","baseMinusTMin","stringFromCharCode","mapDomain","ucs2decode","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","adapt","basic","oldi","baseMinusT","handledCPCount","basicLength","handledCPCountPlusOne","qMinusT","ucs2","rnds8","rng","REGEX","byteToHex","v4","rnds","adopt","trys","locales_af","locales_arDz","locales_arKw","locales_arLy","locales_arMa","locales_arSa","locales_arTn","locales_ar","locales_az","locales_bg","locales_bn","locales_bs","locales_ca","locales_cs","locales_cy","locales_da","locales_deAt","locales_de","locales_el","locales_enAu","locales_enGb","locales_enNz","locales_eo","locales_esUs","locales_es","locales_et","locales_eu","locales_fa","locales_fi","locales_frCa","locales_frCh","locales_fr","locales_gl","locales_he","locales_hi","locales_hr","locales_hu","locales_hyAm","locales_id","locales_is","locales_it","locales_ja","locales_ka","locales_kk","locales_km","locales_ko","locales_ku","locales_lb","locales_lt","locales_lv","locales_mk","locales_ms","locales_nb","locales_ne","locales_nl","locales_nn","locales_pl","locales_ptBr","locales_pt","locales_ro","locales_ru","locales_siLk","locales_sk","locales_sl","locales_sm","locales_sq","locales_srCyrl","locales_sr","locales_sv","locales_taIn","locales_th","locales_tr","locales_ug","locales_uk","locales_uzCy","locales_uz","locales_vi","locales_zhCn","locales_zhTw","localesAll","buttonText","today","allDayText","moreLinkText","noEventsText","weekText","l8","l9","l10","l11","l13","affix","l16","weekTextLong","buttonHints","viewHint","navLinkHint","moreLinkHint","eventCnt","closeHint","timeHint","eventHint","l17","l19","l20","l21","l24","l25","l27","l32","l34","l35","l37","l40","l41","l42","l43","l49","l50","l51","l52","l57","prevYear","nextYear","l59","l60","l62","l65","l66","l67","l68","l69","l73","l74","l75","l76","l77","MutationObserverFactory","MutationObserver","ContentObserver","_mutationObserverFactory","_observedElements","_cleanupObserver","elementOrRef","coerceElement","_observeElement","_unobserveElement","mutations","characterData","childList","subtree","CdkObserveContent","coerceBooleanProperty","_debounce","coerceNumberProperty","_contentObserver","_ngZone","_currentSubscription","ObserversModule","LayoutModule","mediaQueriesForWebkitCompatibility","mediaQueryStyleNode","MediaMatcher","_platform","_matchMedia","matchMedia","noopMatchMedia","WEBKIT","BLINK","createEmptyStyleRule","media","BreakpointObserver","_mediaMatcher","_destroySubject","isMatched","splitQueries","mediaQuery","_registerQuery","mql","stateObservable","breakpointStates","ID_DELIMITER","getAriaReferenceIds","CDK_DESCRIBEDBY_ID_PREFIX","CDK_DESCRIBEDBY_HOST_ATTRIBUTE","AriaDescriber","_messageRegistry","_messagesContainer","APP_ID","describe","hostElement","_canBeDescribed","setMessageId","messageElement","referenceCount","_createMessageElement","_isElementDescribedByMessage","_addMessageReference","removeDescription","_isElementNode","_removeMessageReference","registeredMessage","_deleteMessageElement","describedElements","_removeCdkDescribedByReferenceIds","_createMessagesContainer","containerClassName","serverContainers","messagesContainer","originalReferenceIds","addAriaReferencedId","existingId","removeAriaReferencedId","filteredIds","referenceIds","messageId","trimmedMessage","ariaLabel","serviceId","InteractivityChecker","hasGeometry","isTabbable","frameElement","getFrameElement","getWindow","getTabIndexValue","tabIndexValue","IOS","isPotentiallyTabbableIOS","FIREFOX","isFocusable","isPotentiallyFocusable","isHiddenInput","isInputElement","isNativeFormElement","isAnchorWithHref","isAnchorElement","hasValidTabIndex","ignoreVisibility","FocusTrap","_startAnchor","_endAnchor","_toggleAnchorTabIndex","_checker","deferAnchors","_hasAttached","startAnchorListener","focusLastTabbableElement","endAnchorListener","focusFirstTabbableElement","attachAnchors","startAnchor","endAnchor","_createAnchor","focusInitialElementWhenReady","_executeOnStable","focusInitialElement","focusFirstTabbableElementWhenReady","focusLastTabbableElementWhenReady","_getRegionBoundary","_getFirstTabbableElement","_getLastTabbableElement","redirectToElement","focusableChild","hasAttached","tabbableChild","toggleAnchors","isStable","FocusTrapFactory","deferCaptureElements","CdkTrapFocus","focusTrap","autoCapture","_autoCapture","_focusTrapFactory","_previouslyFocusedElement","_captureFocus","autoCaptureChange","_getFocusedElementPierceShadowDom","ConfigurableFocusTrap","_focusTrapManager","_inertStrategy","preventFocus","allowFocus","FOCUS_TRAP_INERT_STRATEGY","EventListenerFocusTrapInertStrategy","_trapFocus","focusTrapRoot","FocusTrapManager","_focusTrapStack","ConfigurableFocusTrapFactory","configObject","isFakeMousedownFromScreenReader","isFakeTouchstartFromScreenReader","radiusX","radiusY","INPUT_MODALITY_DETECTOR_OPTIONS","INPUT_MODALITY_DETECTOR_DEFAULT_OPTIONS","ignoreKeys","modalityEventListenerOptions","normalizePassiveListenerOptions","InputModalityDetector","mostRecentModality","_modality","_mostRecentTarget","_lastTouchMs","_onKeydown","_getEventTarget","_onMousedown","_onTouchstart","modalityDetected","modalityChanged","LIVE_ANNOUNCER_ELEMENT_TOKEN","LIVE_ANNOUNCER_ELEMENT_TOKEN_FACTORY","LIVE_ANNOUNCER_DEFAULT_OPTIONS","uniqueIds","LiveAnnouncer","elementToken","_defaultOptions","_liveElement","_createLiveElement","announce","politeness","_previousTimeout","_exposeAnnouncerToModals","_currentPromise","_currentResolve","elementClass","previousElements","liveEl","modals","ariaOwns","CdkAriaLive","_politeness","_subscription","elementText","_previousAnnouncedText","_liveAnnouncer","i1$1","FOCUS_MONITOR_DEFAULT_OPTIONS","captureEventListenerOptions","FocusMonitor","_inputModalityDetector","_windowFocused","_originFromTouchInteraction","_elementInfo","_monitoredElementCount","_rootNodeFocusListenerCount","_windowFocusListener","_windowFocusTimeoutId","_stopInputModalityDetector","_rootNodeFocusAndBlurListener","_onFocus","_onBlur","_detectionMode","detectionMode","monitor","checkChildren","_getShadowRoot","_getDocument","cachedInfo","_registerGlobalListeners","stopMonitoring","elementInfo","_setClasses","_removeGlobalListeners","focusVia","_getClosestElementsInfo","currentElement","_originChanged","_setOrigin","_info","_getWindow","_getFocusOrigin","focusEventTarget","_shouldBeAttributedToTouch","_lastFocusOrigin","_isLastInteractionFromInputLabel","isFromInteraction","_originTimeoutId","_emitOrigin","rootNodeFocusListeners","modality","mostRecentTarget","CdkMonitorFocus","_focusMonitor","_focusOrigin","cdkFocusChange","focusOrigin","_monitorSubscription","BLACK_ON_WHITE_CSS_CLASS","WHITE_ON_BLACK_CSS_CLASS","HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS","HighContrastModeDetector","_breakpointSubscription","_hasCheckedHighContrastMode","_applyBodyHighContrastModeCssClasses","getHighContrastMode","testElement","documentWindow","computedStyle","computedColor","bodyClasses","A11yModule","highContrastModeDetector","DIR_DOCUMENT","DIR_DOCUMENT_FACTORY","RTL_LOCALE_PATTERN","_resolveDirectionality","Directionality","bodyDir","htmlDir","Dir","_dir","_isInitialized","_rawDir","BidiModule","fallbackValue","_isNumberValue","extendStyles","importantProperties","toggleNativeDragInteractions","toggleVisibility","combineTransforms","initialTransform","parseCssTimeUnitsToMs","parseCssPropertyValue","getMutableClientRect","clientRect","isInsideClientRect","adjustClientRect","isPointerNearClientRect","pointerX","pointerY","xThreshold","yThreshold","ParentPositionTracker","scrollPosition","getViewportScrollPosition","handleScroll","cachedPosition","newTop","newLeft","viewportScrollPosition","topDifference","leftDifference","deepCloneNode","descendantsWithId","transferCanvasData","transferInputData","transferData","descendantElements","cloneElements","cloneUniqueId","passiveEventListenerOptions","activeEventListenerOptions","dragImportantProperties","DragRef","_dropContainer","_toggleNativeDragInteractions","_viewportRuler","_dragDropRegistry","_passiveTransform","_activeTransform","_hasStartedDragging","_moveEvents","_pointerMoveSubscription","_pointerUpSubscription","_scrollSubscription","_resizeSubscription","_boundaryElement","_nativeInteractionsEnabled","_disabledHandles","dragStartDelay","beforeStarted","released","entered","exited","_pointerDown","targetHandle","_getTargetHandle","_initializeDragSequence","_pointerMove","pointerPosition","_getPointerPositionOnPage","_pickupPositionOnPage","dragStartThreshold","isDelayElapsed","_dragStartTime","_getDragStartDelay","_endDragSequence","isDragging","isReceiving","_startDragSequence","constrainedPointerPosition","_getConstrainedPointerPosition","_hasMoved","_lastKnownPointerPosition","_updatePointerDirectionDelta","_updateActiveDropContainer","_initialClientRect","activeTransform","_applyRootElementTransform","_getDragDistance","_pointerDirectionDelta","_pointerUp","_nativeDragStart","withRootElement","withParent","parentDragRef","_parentPositions","registerDragItem","getPlaceholderElement","_placeholder","getRootElement","getVisibleElement","withHandles","disabledHandles","withPreviewTemplate","_previewTemplate","withPlaceholderTemplate","_placeholderTemplate","rootElement","_removeRootElementListeners","_initialTransform","SVGElement","_ownerSVGElement","withBoundaryElement","boundaryElement","_containInsideBoundaryOnResize","_parentDragRef","_anchor","_destroyPreview","_destroyPlaceholder","removeDragItem","_removeSubscriptions","disableHandle","enableHandle","withDirection","_withDropContainer","getFreeDragPosition","setFreeDragPosition","withPreviewContainer","_previewContainer","_sortFromLastPointerPosition","_preview","_previewRef","_placeholderRef","stopDragging","webkitTapHighlightColor","_rootElementTapHighlight","_stopScrolling","_animatePreviewToPlaceholder","_cleanupDragArtifacts","_cleanupCachedDimensions","dropPoint","isTouchEvent","_lastTouchEventTime","dropContainer","_createPlaceholderElement","_createPreviewElement","_getPreviewInsertionPoint","_initialContainer","_initialIndex","getItemIndex","getScrollableParents","referenceElement","isTouchSequence","isAuxiliaryMouseButton","isFakeEvent","rootStyles","pointerMove","pointerUp","scrollEvent","_updateOnScroll","_boundaryRect","previewTemplate","_pickupPositionInElement","matchSize","_getPointerPositionInElement","_pointerPositionAtLastDirectionChange","startDragging","_previewRect","currentIndex","isPointerOverContainer","_isOverContainer","previousIndex","previousContainer","rawX","rawY","newContainer","_getSiblingContainerFromPosition","sortingDisabled","_startScrollingIfNecessary","_sortItem","_applyPreviewTransform","previewConfig","previewClass","rootRect","viewContainer","createEmbeddedView","matchElementSize","placeholderRect","getTransformTransitionDurationInMs","transitionedProperties","propertyIndex","rawDurations","rawDelays","placeholderConfig","placeholderTemplate","elementRect","referenceRect","_getViewportScrollPosition","svgMatrix","getScreenCTM","svgPoint","createSVGPoint","matrixTransform","inverse","dropContainerLock","lockAxis","pickupX","pickupY","boundaryRect","previewWidth","previewHeight","_getPreviewRect","clamp$1","pointerPositionOnPage","positionSinceLastChange","changeX","changeY","pointerDirectionChangeThreshold","shouldEnable","pickupPosition","leftOverflow","rightOverflow","topOverflow","bottomOverflow","scrollDifference","_cachedShadowRoot","initialParent","previewContainer","documentRef","rootNodes","sourceRect","moveItemInArray","toIndex","SingleAxisSortStrategy","_itemPositions","orientation","_previousSwap","overlaps","withItems","pointerDelta","_getItemIndexFromPointerPosition","siblingAtNewPosition","newPosition","itemOffset","_getItemOffsetPx","siblingOffset","_getSiblingOffsetPx","oldOrder","isDraggedItem","elementToOffset","activeDraggables","_activeDraggables","newPositionReference","_shouldEnterAsFirstChild","_cacheItemPositions","withSortPredicate","_sortPredicate","getActiveItemsSnapshot","updateOnScroll","elementToMeasure","immediateSibling","itemPositions","lastItemRect","firstItemRect","SCROLL_PROXIMITY_THRESHOLD","DropListRef","autoScrollDisabled","autoScrollStep","enterPredicate","sortPredicate","receivingStarted","receivingStopped","_isDragging","_draggables","_siblings","_activeSiblings","_viewportScrollSubscription","_verticalScrollDirection","_horizontalScrollDirection","_stopScrollTimers","_startScrollInterval","_scrollNode","scrollStep","scrollBy","withScrollableParents","registerDropContainer","_sortStrategy","removeDropContainer","_draggingStarted","_notifyReceivingSiblings","_cacheParentPositions","previousItems","connectedTo","withOrientation","_scrollableElements","_clientRect","scrollNode","verticalScrollDirection","horizontalScrollDirection","getElementScrollDirections","computedVertical","getVerticalScrollDirection","computedHorizontal","getHorizontalScrollDirection","getViewportSize","_initialScrollSnap","msScrollSnapType","scrollSnapType","_listenToScrollEvents","_stopReceiving","_canReceive","_startReceiving","activeSiblings","initiator","receiver","draggedItems","activeCapturingEventOptions","DragDropRegistry","_dropInstances","_dragInstances","_activeDragInstances","_globalListeners","_draggingPredicate","_preventDefaultWhileDragging","_persistentTouchmoveListener","_clearGlobalListeners","streams","eventOptions","DEFAULT_CONFIG","DragDrop","createDrag","createDropList","CDK_DRAG_PARENT","CDK_DROP_LIST_GROUP","CdkDropListGroup","CDK_DRAG_CONFIG","_uniqueIdCounter","CDK_DROP_LIST","CdkDropList","_dropListRef","dragDrop","_changeDetectorRef","_scrollDispatcher","_unsortedItems","_assignDefaults","_setupInputSyncSubscription","_handleEvents","_dropLists","_syncItemsWithRef","getSortedItems","_dragRef","correspondingDropList","_scrollableParentsResolved","scrollableParents","getAncestorScrollContainers","scrollable","getElementRef","dropEvent","draggingDisabled","listAutoScrollDisabled","listOrientation","i3","CDK_DRAG_HANDLE","CdkDragHandle","_stateChanges","parentDrag","_parentDrag","CDK_DRAG_PLACEHOLDER","CdkDragPlaceholder","templateRef","CDK_DRAG_PREVIEW","CdkDragPreview","_matchSize","CdkDrag","_selfHandle","movedEvent","_syncInputs","_updateRootElement","_setupHandlesListener","freeDragPosition","rootSelectorChange","rootElementSelector","positionChange","_getBoundaryElement","startEvent","releaseEvent","endEvent","enterEvent","exitEvent","childHandleElements","handleInstance","dragRef","DragDropModule","CdkScrollableModule","hasV8BreakIterator","v8BreakIterator","Platform","_platformId","isPlatformBrowser","EDGE","TRIDENT","chrome","ANDROID","SAFARI","PLATFORM_ID","PlatformModule","supportsPassiveEvents","rtlScrollAxisType","scrollBehaviorSupported","shadowDomIsSupported","supportsPassiveEventListeners","supportsScrollBehavior","scrollToFunction","getRtlScrollAxisType","scrollContainer","containerStyle","contentStyle","_supportsShadowDom","createShadowRoot","attachShadow","ShadowRoot","newActiveElement","Portal","attach","_attachedHost","setAttachedHost","ComponentPortal","viewContainerRef","projectableNodes","TemplatePortal","DomPortal","BasePortalOutlet","_isDisposed","attachDomPortal","_attachedPortal","portal","attachComponentPortal","attachTemplatePortal","_invokeDisposeFn","setDisposeFn","_disposeFn","DomPortalOutlet","outletElement","_componentFactoryResolver","_appRef","_defaultInjector","anchorNode","componentFactory","attachView","viewCount","detachView","_getComponentRootNode","CdkPortal","TemplatePortalDirective","CdkPortalOutlet","_getRootNode","attachedRef","_attachedRef","PortalHostDirective","PortalModule","PortalInjector","_parentInjector","_customTokens","notFoundValue","DataSource","ArrayDataSource","UniqueSelectionDispatcher","_VIEW_REPEATER_STRATEGY","VIRTUAL_SCROLL_STRATEGY","FixedSizeVirtualScrollStrategy","minBufferPx","maxBufferPx","_scrolledIndexChange","scrolledIndexChange","_minBufferPx","_maxBufferPx","_updateTotalContentSize","_updateRenderedRange","updateItemAndBufferSize","onContentScrolled","onDataLengthChanged","onContentRendered","onRenderedOffsetChanged","scrollToIndex","behavior","scrollToOffset","setTotalContentSize","getDataLength","renderedRange","getRenderedRange","newRange","viewportSize","scrollOffset","measureScrollOffset","firstVisibleIndex","maxVisibleItems","newVisibleIndex","startBuffer","expandStart","endBuffer","expandEnd","setRenderedRange","setRenderedContentOffset","CdkFixedSizeVirtualScroll","_scrollStrategy","_fixedSizeVirtualScrollStrategyFactory","fixedSizeDir","ScrollDispatcher","_scrolled","_globalSubscription","_scrolledCount","scrollContainers","elementScrolled","scrollableReference","auditTimeInMs","_addGlobalListener","_removeGlobalListener","ancestorScrolled","elementOrElementRef","scrollingContainers","_scrollableContainsElement","scrollableElement","CdkScrollable","scrollDispatcher","_elementScrolled","isRtl","_applyScrollToOptions","ViewportRuler","_changeListener","_viewportSize","_updateViewportSize","getViewportRect","documentRect","VIRTUAL_SCROLLABLE","CdkVirtualScrollable","measureViewportSize","viewportEl","CdkVirtualScrollViewport","_orientation","_calculateSpacerSize","appendOnly","_appendOnly","viewportRuler","_detachedSubject","_renderedRangeSubject","renderedRangeStream","_totalContentSize","_totalContentWidth","_totalContentHeight","_renderedRange","_dataLength","_renderedContentOffset","_renderedContentOffsetNeedsRewrite","_isChangeDetectionPending","_runAfterChangeDetection","_viewportChanges","checkViewportSize","_measureViewportSize","_markChangeDetectionNeeded","forOf","_forOf","dataStream","newLength","_doChangeDetection","measureBoundingClientRectWithScrollOffset","rangesEqual","r2","getOffsetToRenderedContentStart","_renderedContentTransform","measureRenderedContentSize","_from","measureViewportOffset","fromRect","scrollerClientRect","contentEl","_contentWrapper","measureRangeSize","runAfter","runAfterChangeDetection","virtualScrollable","CdkVirtualForOf","cdkVirtualForOf","_cdkVirtualForOf","isDataSource","_dataSourceChanges","cdkVirtualForTrackBy","_cdkVirtualForTrackBy","_needsUpdate","cdkVirtualForTemplate","_template","cdkVirtualForTemplateCacheSize","_viewRepeater","viewCacheSize","_differs","viewChange","_changeDataSource","_differ","_onRenderedDataChange","renderedStartIndex","rangeLen","firstNode","lastNode","_renderedItems","_updateContext","oldDs","newDs","_updateComputedContextProperties","applyChanges","_adjustedPreviousIndex","_getEmbeddedViewArgs","forEachIdentityChange","_RecycleViewRepeaterStrategy","_viewCache","itemContextFactory","itemValueResolver","itemViewChanged","forEachOperation","adjustedPreviousIndex","operation","viewArgsFactory","_insertView","_detachAndCacheView","_moveView","cachedView","_insertViewFromCache","viewArgs","detachedView","_maybeCacheView","CdkVirtualScrollableElement","CdkVirtualScrollableWindow","ScrollingModule","listenerOptions","AutofillMonitor","_monitoredElements","cssClass","isAutofilled","unlisten","CdkAutofill","_autofillMonitor","cdkAutofill","CdkTextareaAutosize","minRows","_minRows","_setMinHeight","maxRows","_maxRows","_setMaxHeight","resizeToFitContent","_textareaElement","_cachedPlaceholderHeight","_cacheTextareaPlaceholderHeight","_previousMinRows","_isViewInited","_handleFocusEvent","_hasFocus","_cachedLineHeight","_initialHeight","_cacheTextareaLineHeight","textareaClone","_measureScrollHeight","previousMargin","isFirefox","needsMarginFiller","measuringClass","textarea","_previousValue","_scrollToCaretPosition","_noopInputHandler","selectionEnd","TextFieldModule","_DOM","getDOM","setRootDomAdapter","DomAdapter","PlatformLocation","historyGo","relativePosition","useBrowserPlatformLocation","BrowserPlatformLocation","_doc","history","getBaseHrefFromDOM","onPopState","getGlobalEventTarget","onHashChange","newPath","supportsState","joinWithSlash","slashes","stripTrailingSlash","pathEndIdx","droppedSlashIdx","normalizeQueryParams","createBrowserPlatformLocation","LocationStrategy","PathLocationStrategy","APP_BASE_HREF","_platformLocation","_removeListenerFns","prepareExternalUrl","internal","includeHash","externalUrl","HashLocationStrategy","Location","locationStrategy","_urlChangeListeners","_urlChangeSubscription","_locationStrategy","_basePath","_stripOrigin","_stripIndexHtml","isCurrentPathEqualTo","_stripBasePath","_notifyUrlChangeListeners","onUrlChange","fnIndex","onNext","onThrow","onReturn","createLocation","CURRENCIES_EN","ADP","AFN","ALL","AMD","AOA","ARS","AUD","AZN","BAM","BBD","BDT","BHD","BIF","BMD","BND","BOB","BRL","BSD","BWP","BYN","BYR","BZD","CAD","CHF","CLF","CLP","CNY","COP","CRC","CUC","CUP","CZK","DJF","DKK","DOP","EGP","ESP","EUR","FJD","FKP","GBP","GEL","GHS","GIP","GNF","GTQ","GYD","HKD","HNL","HRK","HUF","IDR","ILS","INR","IQD","IRR","ISK","ITL","JMD","JOD","JPY","KHR","KMF","KPW","KRW","KWD","KYD","KZT","LAK","LBP","LKR","LRD","LTL","LUF","LVL","LYD","MGA","MGF","MMK","MNT","MRO","MUR","MXN","MYR","NAD","NGN","NIO","NOK","NPR","NZD","OMR","PHP","PKR","PLN","PYG","RON","RSD","RUB","RWF","SBD","SEK","SGD","SHP","SLE","SLL","SOS","SRD","SSP","STD","STN","SYP","THB","TMM","TND","TOP","TRL","TRY","TTD","TWD","TZS","UAH","UGX","USD","UYI","UYU","UYW","UZS","VEF","VND","VUV","XAF","XCD","XOF","XPF","XXX","YER","ZAR","ZMK","ZMW","ZWD","NumberFormatStyle","Plural","FormStyle","TranslationWidth","FormatWidth","NumberSymbol","WeekDay","getLocaleDateFormat","getLastDefinedValue","ɵfindLocaleData","ɵLocaleDataIndex","getLocaleTimeFormat","getLocaleDateTimeFormat","dateTimeFormatData","getLocaleNumberSymbol","CurrencyDecimal","Decimal","CurrencyGroup","getLocaleNumberFormat","Percent","Currency","Scientific","Zero","One","Two","Few","Many","Other","Format","Standalone","Narrow","Abbreviated","Wide","Short","Medium","Long","Full","List","PercentSign","PlusSign","MinusSign","Exponential","SuperscriptingExponent","PerMille","TimeSeparator","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","getLocalePluralCase","ɵgetLocalePluralCase","checkFullData","extractTime","getCurrencySymbol","currency","getLocaleCurrencies","symbolNarrow","DEFAULT_NB_OF_CURRENCY_DIGITS","ISO8601_DATE_REGEX","NAMED_FORMATS","DATE_FORMATS_SPLIT","ZoneWidth","DateType","TranslationType","timezone","parsedNb","isoStringToDate","tzHour","tzMin","dateSetter","timeSetter","setUTCHours","getNamedFormat","dateTimezoneOffset","timezoneToOffset","convertTimezoneToLocal","reverseValue","timezoneOffset","addDateMinutes","dateFormatter","getDateFormatter","DATE_FORMATS","dateStrGetter","Eras","dateGetter","FullYear","weekNumberingYearGetter","Month","Months","weekGetter","Day","Days","DayPeriods","Hours","Minutes","Seconds","FractionalSeconds","timeZoneGetter","Extended","ShortGMT","newDate","localeId","getLocaleId","formatValue","shortTime","shortDate","formatDateTime","mediumTime","mediumDate","longTime","longDate","fullTime","fullDate","opt_values","padNumber","digits","minusSign","negWrap","strNum","getDatePart","formatFractionalSeconds","localeMinus","extended","getDateTranslation","getLocaleMonthNames","formStyle","getLocaleDayNames","currentHours","currentMinutes","getLocaleExtraDayPeriodRules","dayPeriods","getLocaleExtraDayPeriods","afterFrom","beforeTo","getLocaleDayPeriods","amPm","getLocaleEraNames","erasData","JANUARY","THURSDAY","getThursdayThisWeek","monthBased","nbDaysBefore1stDayOfMonth","thisThurs","firstThurs","getFirstThursdayOfYear","requestedTimezoneOffset","NUMBER_FORMAT_REGEXP","MAX_DIGITS","DECIMAL_SEP","ZERO_CHAR","PATTERN_SEP","GROUP_SEP","DIGIT_CHAR","CURRENCY_CHAR","PERCENT_CHAR","formatNumberToLocaleString","groupSymbol","decimalSymbol","digitsInfo","isPercent","formattedText","isZero","parsedNumber","parseNumber","integerLen","zeros","numStr","toPercent","fractionLen","minInt","minFraction","minFrac","maxFraction","maxFrac","minIntPart","minFractionPart","maxFractionPart","parseIntAutoRadix","roundNumber","fractionSize","roundAt","dropTrailingZeros","minLen","carry","decimals","lgSize","gSize","negPre","negSuf","posPre","posSuf","formatCurrency","currencyCode","parseNumberFormat","getNumberOfCurrencyDigits","patternParts","positive","negative","positiveParts","trunkLen","NgLocalization","getPluralCategory","cases","ngLocalization","LOCALE_ID","NgLocaleLocalization","parseCookieValue","cookieStr","cookie","eqIndex","cookieName","cookieValue","NgClass","_iterableDiffers","_keyValueDiffers","_ngEl","_iterableDiffer","_keyValueDiffer","_initialClasses","_rawClass","_removeClasses","_applyClasses","ngClass","ɵisListLikeIterable","iterableChanges","_applyIterableChanges","keyValueChanges","_applyKeyValueChanges","ɵstringify","rawClassVal","ngComponentOutlet","ngComponentOutletNgModule","ngComponentOutletNgModuleFactory","ngModuleFactory","ngComponentOutletInjector","parentInjector","_moduleRef","createNgModule","getParentInjector","ngModuleRef","ngComponentOutletContent","NgModuleRef","NgForOfContext","ngForOf","NgForOf","_ngForOf","_ngForOfDirty","ngForTrackBy","_trackByFn","_viewContainer","ngForTemplate","applyViewChange","NgIf","NgIfContext","_thenTemplateRef","_elseTemplateRef","_thenViewRef","_elseViewRef","ngIf","_updateView","ngIfThen","assertTemplate","ngIfElse","SwitchView","_templateRef","_created","enforceState","NgSwitch","_defaultViews","_defaultUsed","_caseCount","_lastCaseCheckIndex","_lastCasesMatched","ngSwitch","_ngSwitch","_updateDefaultCases","_addCase","_addDefault","_matchCase","useDefault","NgSwitchCase","ngSwitchCase","NgSwitchDefault","NgPlural","_localization","_caseViews","ngPlural","addCase","switchView","switchValue","_clearViews","_activateView","_activeView","NgPluralCase","isANumber","NgStyle","_ngStyle","ngStyle","_setStyle","nameAndUnit","RendererStyleFlags2","removeStyle","NgTemplateOutlet","ngTemplateOutletContext","ngTemplateOutlet","ngTemplateOutletInjector","invalidPipeArgumentError","ɵRuntimeError","ngDevMode","_promiseStrategy","PromiseStrategy","createSubscription","updateLatestValue","_subscribableStrategy","SubscribableStrategy","AsyncPipe","_latestValue","_obj","_strategy","_selectStrategy","_updateLatestValue","ɵisPromise","ɵisSubscribable","ɵpipe","LowerCasePipe","unicodeWordMatch","TitleCasePipe","txt","UpperCasePipe","DATE_PIPE_DEFAULT_TIMEZONE","DATE_PIPE_DEFAULT_OPTIONS","DatePipe","defaultTimezone","_timezone","_INTERPOLATION_REGEXP","I18nPluralPipe","pluralMap","I18nSelectPipe","JsonPipe","KeyValuePipe","keyValues","defaultComparator","differChanges","compareFnChanged","makeKeyValuePair","keyValueA","keyValueB","aString","bString","DecimalPipe","formatNumber","strToNumber","PercentPipe","formatPercent","CurrencyPipe","_defaultCurrencyCode","DEFAULT_CURRENCY_CODE","SlicePipe","PLATFORM_BROWSER_ID","PLATFORM_SERVER_ID","platformId","Version","ViewportScroller","BrowserViewportScroller","getScrollPosition","supportsScrolling","scrollToPosition","scrollToAnchor","elSelected","findAnchorFromDocument","documentResult","createTreeWalker","treeWalker","currentNode","scrollToElement","setHistoryScrollRestoration","scrollRestoration","supportScrollRestoration","scrollRestorationDescriptor","getScrollRestorationProperty","XhrFactory","getUrl","isAbsoluteUrl","extractHostname","normalizeSrc","noopImageLoader","IMAGE_LOADER","createImageLoader","buildUrlFn","exampleUrls","isValidPath","throwInvalidPathError","throwUnexpectedAbsoluteUrlError","createCloudflareUrl","createCloudinaryUrl","createImagekitUrl","createImgixUrl","imgDirectiveDetails","ngSrc","includeNgSrc","assertDevMode","checkName","LCPImageObserver","alreadyWarned","PerformanceObserver","initPerformanceObserver","entryList","imgSrc","logMissingPriorityWarning","directiveDetails","ɵformatRuntimeError","buffered","registerImage","rewrittenSrc","originalNgSrc","unregisterImage","INTERNAL_PRECONNECT_CHECK_BLOCKLIST","PRECONNECT_CHECK_BLOCKLIST","PreconnectLinkChecker","preconnectLinks","alreadySeen","blocklist","populateBlocklist","origins","deepForEach","assertPreconnect","imgUrl","queryPreconnectLinks","preconnectUrls","PRELOADED_IMAGES","PreloadLinkCreator","preloadedImages","createPreloadLinkTag","srcset","preload","VALID_WIDTH_DESCRIPTOR_SRCSET","DENSITY_SRCSET_MULTIPLIERS","IMAGE_CONFIG","NgOptimizedImage","imageLoader","processConfig","sortedBreakpoints","imgElement","isServer","isPlatformServer","preloadLinkChecker","lcpObserver","_renderedSrc","_priority","_disableOptimizedSrcset","_fill","_width","inputToInteger","_height","inputToBoolean","disableOptimizedSrcset","setHostAttributes","setHostAttribute","getLoadingBehavior","getFetchPriority","getRewrittenSrc","rewrittenSrcset","ngSrcset","getRewrittenSrcset","shouldGenerateAutomaticSrcset","getAutomaticSrcset","imgConfig","widthSrcSet","srcStr","getResponsiveSrcset","getFixedSrcset","filteredBreakpoints","HttpHandler","HttpBackend","HttpHeaders","normalizedNames","lazyUpdate","lazyInit","maybeSetNormalizedName","lcName","copyFrom","applyUpdate","toDelete","HttpUrlEncodingCodec","encodeKey","standardEncoding","encodeValue","decodeKey","decodeValue","STANDARD_ENCODING_REGEX","STANDARD_ENCODING_REPLACEMENTS","valueToString","HttpParams","cloneFrom","encoder","fromObject","paramParser","rawParams","codec","eqIdx","appendAll","eKey","HttpContext","isBlob","isFormData","FormData","HttpRequest","third","fourth","reportProgress","mightHaveBody","urlWithParams","qIdx","sep","serializeBody","isUrlSearchParams","URLSearchParams","detectContentTypeHeader","setHeaders","setParams","HttpEventType","Sent","UploadProgress","ResponseHeader","DownloadProgress","Response","User","HttpResponseBase","defaultStatus","defaultStatusText","HttpHeaderResponse","HttpResponse","HttpErrorResponse","addBody","HttpClient","events$","concatMap","res$","callbackParam","patch","post","interceptorChainEndFn","finalHandlerFn","adaptLegacyInterceptorToChain","chainTailFn","initialRequest","intercept","downstreamRequest","HTTP_INTERCEPTORS","HTTP_INTERCEPTOR_FNS","legacyInterceptorFnFactory","HttpInterceptorHandler","backend","dedupedInterceptorFns","nextSequencedFn","interceptorFn","chainedInterceptorFn","foreignDocument","nextRequestId","JsonpCallbackContext","jsonpCallbackContext","JsonpClientBackend","callbackMap","resolvedPromise","finished","removeListeners","adoptNode","jsonpInterceptorFn","JsonpInterceptor","XSSI_PREFIX","HttpXhrBackend","xhrFactory","detectedType","reqBody","headerResponse","partialFromXhr","getResponseUrl","responseURL","onLoad","originalBody","sentHeaders","onDownProgress","progressEvent","lengthComputable","partialText","onUpProgress","upload","XSRF_ENABLED","XSRF_DEFAULT_COOKIE_NAME","XSRF_COOKIE_NAME","XSRF_DEFAULT_HEADER_NAME","XSRF_HEADER_NAME","HttpXsrfTokenExtractor","HttpXsrfCookieExtractor","lastCookieString","lastToken","parseCount","cookieString","ɵparseCookieValue","xsrfInterceptorFn","lcUrl","headerName","HttpXsrfInterceptor","HttpFeatureKind","makeHttpFeature","ɵkind","ɵproviders","Interceptors","LegacyInterceptors","CustomXsrfConfiguration","NoXsrfProtection","JsonpSupport","RequestsMadeViaParent","LEGACY_INTERCEPTOR_FN","withXsrfConfiguration","HttpClientXsrfModule","HttpClientModule","provideHttpClient","feature","makeEnvironmentProviders","withInterceptorsFromDi","HttpClientJsonpModule","withJsonpSupport","getClosureSafeProperty","objWithPropertyToExtract","fillProperties","overriddenName","newLineIndex","concatStringsWithSpace","__forward_ref__","forwardRefFn","resolveForwardRef","isForwardRef","isEnvironmentProviders","XSS_SECURITY_URL","RuntimeError","formatRuntimeError","renderStringify","stringifyForError","throwProviderNotFoundError","injectorName","assertEqual","expected","assertDefined","ɵɵdefineInjector","getInjectableDef","getOwnDefinition","NG_PROV_DEF","NG_INJECTABLE_DEF","getInjectorDef","NG_INJ_DEF","NG_INJECTOR_DEF","ngInjectorDef","InjectFlags","_injectImplementation","setInjectImplementation","impl","injectRootLimpMode","injectableDef","Self","SkipSelf","_global","WorkerGlobalScope","THROW_IF_NOT_FOUND","DI_DECORATOR_FLAG","NG_TEMP_TOKEN_PATH","NG_TOKEN_PATH","NEW_LINE","NO_NEW_LINE","SOURCE","_currentInjector","setCurrentInjector","former","injectInjectorOnly","getInjectImplementation","ɵɵinvalidFactoryDep","convertToBitFlags","skipSelf","injectArgs","getInjectFlag","attachInjectFlag","catchInjectorError","injectorErrorName","tokenPath","formatError","noSideEffects","ChangeDetectionStrategy","ChangeDetectorStatus","ViewEncapsulation$1","OnPush","CheckOnce","Checked","CheckAlways","Detached","Errored","Destroyed","ViewEncapsulation","Emulated","None","ShadowDom","EMPTY_OBJ","EMPTY_ARRAY","NG_COMP_DEF","NG_DIR_DEF","NG_PIPE_DEF","NG_MOD_DEF","NG_FACTORY_DEF","NG_ELEMENT_ID","__NG_ELEMENT_ID__","componentDefCount","ɵɵdefineComponent","componentDefinition","declaredInputs","providersResolver","onPush","directiveDefs","pipeDefs","getStandaloneInjector","setInput","schemas","tView","findHostDirectiveDefs","hostDirectives","invertObject","extractDirectiveDef","nonNull","getPipeDef$1","ɵɵsetComponentScope","pipes","getComponentDef","getDirectiveDef","ɵɵdefineNgModule","bootstrap","declarations","transitiveCompileScopes","ɵɵsetNgModuleScope","ngModuleDef","getNgModuleDef","newLookup","minifiedKey","publicName","declaredName","ɵɵdefineDirective","ɵɵdefinePipe","pipeDef","isStandalone","throwNotFound","HOST","TVIEW","PARENT","TRANSPLANTED_VIEWS_TO_REFRESH","T_HOST","CLEANUP","CONTEXT","INJECTOR$1","RENDERER_FACTORY","RENDERER","SANITIZER","CHILD_HEAD","CHILD_TAIL","DECLARATION_VIEW","DECLARATION_COMPONENT_VIEW","DECLARATION_LCONTAINER","PREORDER_HOOK_FLAGS","QUERIES","EMBEDDED_VIEW_INJECTOR","HEADER_OFFSET","HAS_TRANSPLANTED_VIEWS","NATIVE","VIEW_REFS","MOVED_VIEWS","CONTAINER_HEADER_OFFSET","isLView","isLContainer","isContentQueryHost","tNode","isComponentHost","componentOffset","isDirectiveHost","isComponentDef","isRootView","getFactoryDef","ɵɵNgOnChangesFeature","NgOnChangesFeatureImpl","ngOnChangesSetInput","rememberChangeHistoryAndInvokeOnChangesHook","simpleChangesStore","getSimpleChangesStore","privateName","setSimpleChangesStore","SIMPLE_CHANGES_STORE","previousChange","ngInherit","profilerCallback","profiler","hookOrListener","SVG_NAMESPACE","MATH_ML_NAMESPACE","unwrapRNode","getNativeByIndex","lView","getNativeByTNode","getTNode","getComponentLViewByIndex","slotValue","viewAttachedToChangeDetector","getConstant","resetPreOrderHookFlags","updateTransplantedViewCount","lContainer","viewOrContainer","instructionState","lFrame","createLFrame","bindingsEnabled","getBindingsEnabled","ɵɵenableBindings","ɵɵdisableBindings","getLView","getTView","ɵɵrestoreView","viewToRestore","contextLView","ɵɵresetView","getCurrentTNode","currentTNode","getCurrentTNodePlaceholderOk","getCurrentParentTNode","setCurrentTNode","isCurrentTNodeParent","setCurrentTNodeAsNotParent","getBindingRoot","bindingRootIndex","bindingStartIndex","getBindingIndex","bindingIndex","setBindingIndex","nextBindingIndex","incrementBindingIndex","setInI18nBlock","isInI18nBlock","inI18n","setBindingRootForHostBindings","currentDirectiveIndex","setCurrentDirectiveIndex","getCurrentDirectiveDef","tData","getCurrentQueryIndex","currentQueryIndex","setCurrentQueryIndex","getDeclarationTNode","declTNode","enterDI","parentTNode","parentLView","allocLFrame","enterView","newView","newLFrame","currentLFrame","childLFrame","elementDepthCount","currentNamespace","leaveViewLight","oldLFrame","leaveDI","leaveView","nextContextImpl","walkUpViews","nestingLevel","currentView","getSelectedIndex","setSelectedIndex","getSelectedTNode","ɵɵnamespaceSVG","ɵɵnamespaceMathML","ɵɵnamespaceHTML","namespaceHTMLInternal","registerPostOrderHooks","directiveStart","directiveEnd","lifecycleHooks","contentHooks","contentCheckHooks","viewHooks","viewCheckHooks","destroyHooks","executeCheckHooks","callHooks","executeInitAndCheckHooks","initPhase","incrementInitPhaseFlags","currentNodeIndex","nodeIndexLimit","lastNodeIndexFound","isInitHook","directive","NO_PARENT_INJECTOR","NodeInjectorFactory","isViewProvider","injectImplementation","resolving","canSeeViewProviders","injectImpl","setUpAttributes","attrName","attrVal","isAnimationProp","isNameOnlyAttributeMarker","marker","mergeHostAttrs","srcMarker","mergeHostAttribute","key1","key2","markerInsertPosition","dstValue","hasParentInjector","parentLocation","getParentInjectorIndex","getParentInjectorView","startView","viewOffset","getParentInjectorViewOffset","parentView","includeViewProviders","setIncludeViewProviders","BLOOM_MASK","BLOOM_BUCKET_BITS","nextNgElementId","NOT_FOUND","getOrCreateNodeInjectorForNode","existingInjectorIndex","getInjectorIndex","firstCreatePass","injectorIndex","insertBloom","blueprint","parentLoc","getParentInjectorLocation","parentIndex","declarationViewOffset","lViewCursor","getTNodeFromLView","diPublicInInjector","bloomAdd","bloomHash","notFoundValueOrThrow","lookupTokenUsingModuleInjector","moduleInjector","previousInjectImplementation","getOrCreateInjectable","embeddedInjectorValue","lookupTokenUsingEmbeddedInjector","currentLView","nodeInjectorValue","lookupTokenUsingNodeInjector","embeddedViewInjector","embeddedViewInjectorValue","bloomHashBitOrFactory","tokenId","createNodeInjector","previousTView","hostTElementNode","shouldSearchParent","bloomHasToken","searchTokensOnInjector","currentTView","injectableIdx","locateDirectiveOrProvider","getNodeInjectable","canAccessViewProviders","isHostSpecialCase","nodeProviderIndexes","providerIndexes","tInjectables","injectablesStart","directivesStart","cptViewProvidersCount","providerTokenOrDef","isFactory","throwCyclicDependencyError","depPath","previousIncludeViewProviders","registerPreOrderHooks","directiveIndex","directiveDef","wrappedOnChanges","preOrderHooks","preOrderCheckHooks","injectorView","isFirstHostTNode","NodeInjector","_tNode","_lView","ɵɵgetInheritedFactory","ownConstructor","ownFactory","getFactoryOf","objectPrototype","tViewType","ɵɵinjectAttribute","attrNameToInject","injectAttributeImpl","attrsLength","ANNOTATIONS","PARAMETERS","PROP_METADATA","makeDecorator","parentClass","additionalProcessing","typeFn","metaCtor","makeMetadataCtor","DecoratorFactory","annotationInstance","ngMetadataName","annotationCls","makeParamDecorator","ParamDecoratorFactory","ParamDecorator","annotation","unusedKey","makePropDecorator","PropDecoratorFactory","decoratorInstance","PropDecorator","attributeName","_desc","isViewQuery","emitDistinctChangesOnly","FactoryTarget","R3TemplateDependencyKind","getCompilerFacade","globalNg","ɵcompilerFacade","Directive","Injectable","Pipe","NgModule","addToArray","removeFromArray","newArray","keyValueArraySet","keyValueArray","keyValueArrayIndexOf","arrayInsert2","value1","value2","previousEnd","keyValueArrayGet","_arrayIndexOfSorted","ES5_DELEGATE_CTOR","ES2015_INHERITED_CLASS","ES2015_INHERITED_CLASS_WITH_CTOR","ES2015_INHERITED_CLASS_WITH_DELEGATE_CTOR","ReflectionCapabilities","_reflect","_zipTypesAndAnnotations","paramAnnotations","_ownParameters","parentCtor","isDelegateCtor","typeStr","tsickleCtorParams","ctorParam","convertTsickleDecoratorIntoMetadata","getParentCtor","_ownAnnotations","typeOrFunc","annotations","ownAnnotations","_ownPropMetadata","propMetadata","parentPropMetadata","ownPropMetadata","hasLifecycleHook","lcProperty","decoratorInvocations","decoratorInvocation","parentProto","getReflect","reflectDependencies","convertDependencies","reflectDependency","componentResourceResolutionQueue","componentDefPendingResolution","componentNeedsResolution","templateUrl","styleUrls","modules","checkForDuplicateNgModules","registerNgModuleType","ngModuleType","assertSameOrNotExisting","incoming","Important","DashCase","COMMENT_DISALLOWED","COMMENT_DELIMITER","COMMENT_DELIMITER_ESCAPED","escapeCommentText","TRACKED_LVIEWS","uniqueIdCounter","MONKEY_PATCH_KEY_NAME","attachPatchData","registerLView","_icuContainerIterate","icuContainerIterate","tIcuContainerNode","getLViewParent","getFirstLContainer","getNearestLContainer","getNextLContainer","applyToElementOrContainer","lNodeToHandle","beforeNode","rNode","nativeAppendChild","nativeInsertBefore","nativeRemoveNode","destroyNode","applyContainer","parentRElement","applyView","createText","updateTextNode","createCommentNode","createElementNode","insertView","indexInContainer","containerLength","declarationLContainer","trackMovedView","declarationContainer","movedViews","insertedComponentLView","lQueries","detachMovedView","declarationViewIndex","insertionLContainer","removeIndex","viewToDetach","removedLView","removeViewFromContainer","destroyLView","destroyViewTree","rootView","lViewOrLContainer","cleanUpView","firstView","executeOnDestroys","toCall","callContext","processCleanups","tCleanup","lCleanup","lastLCleanupIndex","targetIdx","instanceCleanupFn","unregisterLView","getParentRElement","getClosestRElement","nativeAppendOrInsertBefore","nativeParentNode","getInsertInFrontOfRNode","_getInsertInFrontOfRNodeWithI18n","getInsertInFrontOfRNodeWithNoI18n","_processI18nInsertBefore","policy$1","setI18nHandling","getInsertInFrontOfRNodeWithI18n","processI18nInsertBefore","childRNode","childTNode","parentRNode","getFirstNativeNode","tNodeType","getBeforeNodeForView","elIcuContainerChild","rNodeOrLContainer","projectionNodes","getProjectionNodes","componentHost","slotIdx","viewIndexInContainer","nextViewIndex","firstTNodeOfView","isHostElement","nativeParent","nativeRemoveChild","applyNodes","isProjection","rawSlotValue","nextRNode","applyProjectionRecursive","projectionNext","tProjectionNode","componentLView","nodeToProjectOrRNodes","writeDirectClass","setupStaticAttributes","mergedAttrs","writeDirectStyle","getPolicy$1","trustedTypes","createPolicy","createHTML","createScript","createScriptURL","trustedHTMLFromString","ɵɵvalidateIframeAttribute","attrValue","srcdoc","getDocument","trustedHTMLFromStringBypass","trustedScriptFromStringBypass","trustedScriptURLFromStringBypass","SafeValueImpl","SafeHtmlImpl","getTypeName","SafeStyleImpl","SafeScriptImpl","SafeUrlImpl","SafeResourceUrlImpl","unwrapSafeValue","allowSanitizationBypassAndThrow","getSanitizationBypassType","bypassSanitizationTrustHtml","trustedHtml","bypassSanitizationTrustStyle","trustedStyle","bypassSanitizationTrustScript","trustedScript","bypassSanitizationTrustUrl","trustedUrl","bypassSanitizationTrustResourceUrl","trustedResourceUrl","getInertBodyHelper","defaultDoc","inertDocumentHelper","InertDocumentHelper","isDOMParserAvailable","DOMParserHelper","getInertBodyElement","inertDocument","inertHtml","inertBodyElement","templateEl","inertBody","stripCustomNsAttrs","elAttrs","SAFE_URL_PATTERN","_sanitizeUrl","tagSet","tags","sets","VOID_ELEMENTS","OPTIONAL_END_TAG_BLOCK_ELEMENTS","OPTIONAL_END_TAG_INLINE_ELEMENTS","OPTIONAL_END_TAG_ELEMENTS","BLOCK_ELEMENTS","INLINE_ELEMENTS","VALID_ELEMENTS","URI_ATTRS","HTML_ATTRS","ARIA_ATTRS","VALID_ATTRS","SKIP_TRAVERSING_CONTENT_IF_INVALID_ELEMENTS","SanitizingHtmlSerializer","sanitizedSomething","sanitizeChildren","traverseContent","startElement","endElement","checkClobberedElement","elAttr","encodeEntities","DOCUMENT_POSITION_CONTAINED_BY","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","inertBodyHelper","_sanitizeHtml","unsafeHtmlInput","unsafeHtml","mXSSAttempts","parsedHtml","getTemplateContent","isTemplateElement","SecurityContext","ɵɵsanitizeHtml","getSanitizer","sanitize","HTML","ɵɵsanitizeStyle","unsafeStyle","STYLE","ɵɵsanitizeUrl","unsafeUrl","ɵɵsanitizeResourceUrl","unsafeResourceUrl","RESOURCE_URL","ɵɵsanitizeScript","unsafeScript","SCRIPT","ɵɵtrustConstantHtml","ɵɵtrustConstantResourceUrl","trustedScriptURLFromString","ɵɵsanitizeUrlOrResourceUrl","getUrlSanitizer","ENVIRONMENT_INITIALIZER","INJECTOR_DEF_TYPES","NullInjector","importProvidersFrom","internalImportProvidersFrom","ɵfromNgModule","checkForStandaloneCmp","providersOut","dedup","injectorTypesWithProviders","internalSource","walkProviderTree","processInjectorTypesWithProviders","typesWithProviders","deepForEachProvider","provider","defType","injDef","cmpDef","isDuplicate","importTypesWithProviders","imported","defProviders","USE_VALUE$1","isValueProvider","isExistingProvider","isFactoryProvider","isTypeProvider","INJECTOR_SCOPE","NOT_YET","CIRCULAR","NULL_INJECTOR$1","getNullInjector","EnvironmentInjector","R3Injector","scopes","records","_ngOnDestroyHooks","_onDestroyHooks","forEachSingleProvider","processProvider","makeRecord","injectorDefTypes","assertNotDestroyed","previousInjector","couldBeInjectableType","injectableDefInScope","injectableDefOrInjectorDefFactory","hydrate","nextInjector","resolveInjectorInitializers","initializers","providerToRecord","providerToFactory","multiRecord","hasOnDestroy","getUndecoratedInjectableFactory","paramLength","inheritedInjectableDef","getInheritedInjectableDef","typeName","unwrappedProvider","classRef","hasDeps","ComponentRef$1","ComponentFactory$1","ERROR_COMPONENT","_NullComponentFactoryResolver","noComponentFactoryError","ComponentFactoryResolver$1","createElementRef","NULL","unwrapElementRef","injectElementRef","RendererFactory2","injectRenderer2","nodeAtIndex","Sanitizer","NOT_FOUND_CHECK_ONLY_ELEMENT_INJECTOR","ERROR_ORIGINAL_ERROR","getOriginalError","ErrorHandler","originalError","_findOriginalError","ɵɵresolveWindow","ɵɵresolveDocument","ɵɵresolveBody","maybeUnwrapFn","classIndexOf","classToSearch","startingIndex","foundIndex","NG_TEMPLATE_SELECTOR","isCssClassMatching","cssClassToMatch","isProjectionMode","isInlineTemplate","hasTagAndTypeMatch","currentSelector","isNodeMatchingSelector","nodeAttrs","nameOnlyMarkerIdx","getNameOnlyMarkerIndex","skipToNextSelector","isPositive","selectorAttrValue","attrIndexInNode","findAttrIndexInNode","nodeAttrValue","compareAgainstClassName","bindingsMode","maybeAttrName","matchTemplateAttribute","isNodeMatchingSelectorList","isSelectorInSelectorList","selectorListLoop","currentSelectorInList","maybeWrapInNotSelector","isNegativeMode","stringifyCSSSelector","currentChunk","valueOrMarker","NO_CHANGE","ɵɵadvance","selectIndexInternal","checkNoChangesMode","angularCoreDiEnv","compileInjectable","ngFactoryDef","getInjectableMetadata","srcMeta","compilerMeta","typeArgumentCount","isUseClassProvider","isUseFactoryProvider","isUseValueProvider","USE_VALUE","isUseExistingProvider","compiler","compileFactory","createInjector","additionalProviders","createInjectorWithoutInjectorInstances","constructResolvingPath","findFirstClosedCycle","injectionError","constructResolvingMessage","wrappedError","addKey","injectors","noAnnotationError","signature","mixingMultiProvidersWithRegularProvidersError","provider1","provider2","ReflectiveKey","displayName","_globalKeyRegistry","numberOfKeys","KeyRegistry","_allKeys","ReflectiveDependency","_EMPTY_LIST","ResolvedReflectiveProvider_","resolvedFactories","multiProvider","resolvedFactory","ResolvedReflectiveFactory","resolveReflectiveFactory","factoryFn","_dependenciesFor","aliasInstance","fromKey","constructDependencies","_extractToken","resolveReflectiveProvider","resolveReflectiveProviders","resolvedProviderMap","mergeResolvedReflectiveProviders","normalizedProvidersMap","resolvedProvider","_normalizeProviders","invalidProviderError","_createDependency","paramMetadata","UNDEFINED","ReflectiveInjector","ResolvedReflectiveProviders","fromResolvedProviders","ReflectiveInjector_","_providers","_constructionCounter","keyIds","objs","_getByKey","resolveAndCreateChild","createChildFromResolved","inj","resolveAndInstantiate","instantiateResolved","_instantiateProvider","getProviderAtIndex","outOfBoundsError","_new","_getMaxNumberOfObjects","cyclicDependencyError","_instantiate","_getByReflectiveDependency","instantiationError","originalException","originalStack","INJECTOR_KEY","_getByKeySelf","_getByKeyDefault","_getObjByKeyId","keyId","_throwOrNull","noProviderError","inj_","_mapProviders","ɵɵdirectiveInject","ɵɵinvalidFactory","refreshContentQueries","queryStartIdx","directiveDefIdx","createLView","tHostNode","rendererFactory","getUniqueLViewId","getOrCreateTNode","createTNodeAtIndex","createTNode","tParent","insertBeforeIndex","directiveStylingLast","propertyBindings","localNames","initialInputs","tViews","stylesWithoutHost","residualStyles","classesWithoutHost","residualClasses","classBindings","styleBindings","allocExpando","numSlotsToAlloc","allocIdx","renderView","executeViewQueryFn","templateFn","executeTemplate","staticContentQueries","staticViewQueries","renderChildComponents","hostLView","renderComponent","incompleteFirstPass","refreshView","hooksInitPhaseCompleted","markTransplantedViewsForRefresh","movedLView","refreshEmbeddedViews","embeddedLView","embeddedTView","processHostBindingOpCodes","hostBindingOpCodes","opCode","directiveIdx","bindingRootIndx","hostBindingFn","refreshChildComponents","refreshComponent","firstUpdatePass","prevSelectedIndex","isUpdatePhase","executeContentQueries","createDirectivesInstances","instantiateAllDirectives","addComponentLogic","hostTNode","getOrCreateComponentTView","componentView","addToViewTree","createRenderer","setInputsFromAttrs","invokeDirectivesHostBindings","saveResolvedLocalsInData","localRefExtractor","localIndex","createTView","constsOrFactory","initialViewLength","createViewBlueprint","expandoStartIndex","directiveRegistry","pipeRegistry","storeCleanupWithContext","cleanupFn","getOrCreateLViewCleanup","getOrCreateTViewCleanup","generatePropertyAliases","aliasMap","propertyAliases","hostDirectiveAliasMap","internalName","addPropertyAlias","elementPropertyInternal","nativeOnly","dataValue","setInputsForProperty","markDirtyIfOnPush","mapPropName","viewIndex","childComponentLView","resolveDirectives","localRefs","hasDirectives","exportsMap","matchResult","findDirectiveDefMatches","hostDirectiveDefs","hostDirectiveMatches","markAsComponentHost","initializeDirectives","cacheMatchingLocalNames","initTNodeFlags","numberOfDirectives","preOrderHooksFound","preOrderCheckHooksFound","configureViewWithDirective","saveNameToExportMap","lifeCycleHooks","initializeInputAndOutputAliases","hostDirectiveDefinitionMap","tViewData","tNodeAttrs","inputsFromAttrs","inputsStore","outputsStore","aliasData","aliasedInputs","aliasedOutputs","generateInitialInputs","elementIndex","getCurrentDirectiveIndex","invokeHostBindingsInCreationMode","directiveFactory","nodeInjectorFactory","registerHostBindingOpCodes","directiveVarsIdx","elementIndx","lastSelectedElementIdx","elementAttributeInternal","setElementAttribute","strValue","initialInputData","inputsToStore","inputConfig","createLContainer","hostNative","componentHostIdx","refreshContainsDirtyView","componentTView","syncViewWithBlueprint","markViewDirty","detectChangesInternal","notifyErrorHandler","begin","viewQueryFn","loadComponentRenderer","currentDef","unwrapLView","textBindingInternal","computeStaticStyling","writeToHost","collectNativeNodes","lNode","lViewInAContainer","lViewFirstChildTNode","nodesInSlot","ViewRef$1","_cdRefInjectingView","_attachedToViewContainer","viewRefs","reattach","checkNoChanges","attachToViewContainerRef","detachFromAppRef","renderDetachView","attachToAppRef","appRef","RootViewRef","componentDef","ComponentFactory","toRefArray","nonMinified","minified","ChainedInjector","stringifyCSSSelectorList","selectorList","isBoundToModule","rootSelectorOrNode","environmentInjector","realEnvironmentInjector","rootViewInjector","hostRenderer","elementName","hostRNode","locateHostElement","elementOrSelector","preserveContent","selectRootElement","getNamespace","rootFlags","rootTView","rootLView","tElementNode","rootComponentDef","rootDirectives","createRootComponentTNode","createRootComponentView","applyRootComponentStyling","viewRenderer","setRootNodeAttributes","extractAttrsAndClassesFromSelector","projectNodes","nodesforSlot","createRootComponent","hostFeatures","rootTNode","LifecycleHooksFeature","ComponentRef","_rootLView","getSuperType","ɵɵInheritDefinitionFeature","superType","shouldInheritFields","inheritanceChain","superDef","writeableDef","maybeUnwrapEmpty","superHostBindings","inheritHostBindings","superViewQuery","superContentQueries","inheritViewQuery","inheritContentQueries","defData","mergeHostAttrsAcrossInheritance","prevViewQuery","prevContentQueries","prevHostBindings","COPY_DIRECTIVE_FIELDS","COPY_COMPONENT_FIELDS","ɵɵCopyDefinitionFeature","defAny","ɵɵHostDirectivesFeature","rawHostDirectives","bindingArrayToMap","matchedDefs","hostDirectiveConfig","hostDirectiveDef","patchDeclaredInputs","exposedInputs","remappedPublicName","_symbolIterator","isListLikeIterable","isJsObject","updateBinding","getBinding","bindingUpdated","bindingUpdated2","exp1","exp2","different","bindingUpdated3","exp3","bindingUpdated4","exp4","ɵɵattribute","interpolationV","isBindingUpdated","interpolation1","interpolation2","interpolation3","interpolation4","interpolation5","interpolation6","i4","v5","interpolation7","i5","v6","interpolation8","i6","v7","ɵɵattributeInterpolate1","interpolatedValue","ɵɵattributeInterpolate2","ɵɵattributeInterpolate3","ɵɵattributeInterpolate4","ɵɵattributeInterpolate5","ɵɵattributeInterpolate6","ɵɵattributeInterpolate7","ɵɵattributeInterpolate8","ɵɵattributeInterpolateV","interpolated","ɵɵtemplate","attrsIndex","localRefsIndex","adjustedIndex","templateFirstCreatePass","tViewConsts","ɵɵreference","getContextLView","ɵɵproperty","setDirectiveInputsWhichShadowsStyling","ɵɵelementStart","getNamespace$1","elementStartFirstCreatePass","elementStart","getElementDepthCount","increaseElementDepthCount","ɵɵelementEnd","decreaseElementDepthCount","elementEnd","hasClassInput","hasStyleInput","ɵɵelement","ɵɵelementContainerStart","elementContainerStartFirstCreatePass","ɵɵelementContainerEnd","ɵɵelementContainer","ɵɵgetCurrentView","isSubscribable","ɵɵlistener","listenerFn","useCapture","eventTargetResolver","listenerInternal","ɵɵsyntheticHostListener","isTNodeDirectiveHost","processOutputs","lCleanupIndex","idxOrTargetGetter","existingListener","findExistingListener","tNodeIdx","cleanupEventName","listenerIdxInLCleanup","__ngLastListenerFn__","__ngNextListenerFn__","wrapListener","minifiedName","executeListenerWithErrorHandling","wrapWithPreventDefault","wrapListenerIn_markDirtyAndPreventDefault","nextListenerFn","ɵɵnextContext","matchingProjectionSlotIndex","projectionSlots","wildcardNgContentIndex","ngProjectAsAttrVal","getProjectAsAttrValue","ngProjectAsAttrIdx","ɵɵprojectionDef","componentNode","numProjectionSlots","projectionHeads","tails","componentChild","slotIndex","ɵɵprojection","selectorIndex","applyProjection","ɵɵpropertyInterpolate","ɵɵpropertyInterpolate1","ɵɵpropertyInterpolate2","ɵɵpropertyInterpolate3","ɵɵpropertyInterpolate4","ɵɵpropertyInterpolate5","ɵɵpropertyInterpolate6","ɵɵpropertyInterpolate7","ɵɵpropertyInterpolate8","ɵɵpropertyInterpolateV","toTStylingRange","getTStylingRangePrev","tStylingRange","setTStylingRangePrevDuplicate","getTStylingRangeNext","setTStylingRangeNext","setTStylingRangeNextDuplicate","insertTStylingBinding","tStylingKeyWithStatic","isHostBinding","isClassBinding","tBindings","tmplHead","tmplTail","tStylingKey","isKeyDuplicateOfStatic","staticKeyValueArray","setTStylingRangePrev","markDuplicates","markDuplicateOfResidualStyling","residual","isPrevDir","tStylingAtIndex","foundDuplicate","tStylingValueAtCursor","tStyleRangeAtCursor","isStylingMatch","tStylingKeyCursor","parserState","textEnd","keyEnd","valueEnd","getLastParsedKey","getLastParsedValue","parseClassNameNext","consumeClassToken","consumeWhitespace","parseStyleNext","consumeStyleKey","consumeSeparator","consumeStyleValue","ch1","ch2","ch3","lastChIndex","consumeQuotedText","resetParserState","quoteCharCode","ɵɵstyleProp","checkStylingProperty","ɵɵclassProp","ɵɵstyleMap","checkStylingMap","styleKeyValueArraySet","styleStringParser","parseStyle","ɵɵclassMap","classStringParser","parseClassName","stylingFirstUpdatePass","updateStyling","normalizeSuffix","stringParser","hasStylingInputShadow","isInHostBindings","staticPrefix","updateStylingMap","oldKeyValueArray","newKeyValueArray","oldIndex","oldKey","setKey","toStylingKeyValueArray","styleKeyValueArray","unwrappedValue","isHostBindings","wrapInStaticStylingKey","stylingKey","collectStylingFromDirectives","collectStylingFromTAttrs","templateStylingKey","getTemplateHeadTStylingKey","setTemplateHeadTStylingKey","collectResidual","currentDirective","desiredMarker","currentMarker","tRange","higherPriorityValue","getTStylingRangeNextDuplicate","findStylingValue","isStylingValuePresent","getTStylingRangePrevDuplicate","applyStyling","isPrevDirection","rawKey","containsStatics","isStylingMap","valueAtLViewIndex","ɵɵtext","textNative","ɵɵtextInterpolate","ɵɵtextInterpolate1","ɵɵtextInterpolate2","ɵɵtextInterpolate3","ɵɵtextInterpolate4","ɵɵtextInterpolate5","ɵɵtextInterpolate6","ɵɵtextInterpolate7","ɵɵtextInterpolate8","ɵɵtextInterpolateV","ɵɵclassMapInterpolate1","ɵɵclassMapInterpolate2","ɵɵclassMapInterpolate3","ɵɵclassMapInterpolate4","ɵɵclassMapInterpolate5","ɵɵclassMapInterpolate6","ɵɵclassMapInterpolate7","ɵɵclassMapInterpolate8","ɵɵclassMapInterpolateV","ɵɵstyleMapInterpolate1","ɵɵstyleMapInterpolate2","ɵɵstyleMapInterpolate3","ɵɵstyleMapInterpolate4","ɵɵstyleMapInterpolate5","ɵɵstyleMapInterpolate6","ɵɵstyleMapInterpolate7","ɵɵstyleMapInterpolate8","ɵɵstyleMapInterpolateV","ɵɵstylePropInterpolate1","valueSuffix","ɵɵstylePropInterpolate2","ɵɵstylePropInterpolate3","ɵɵstylePropInterpolate4","ɵɵstylePropInterpolate5","ɵɵstylePropInterpolate6","ɵɵstylePropInterpolate7","ɵɵstylePropInterpolate8","ɵɵstylePropInterpolateV","ɵɵhostProperty","ɵɵsyntheticHostProperty","localeEn","LOCALE_DATA","findLocaleData","normalizedLocale","getLocaleData","LocaleDataIndex","PluralCase","LocaleId","DayPeriodsFormat","DayPeriodsStandalone","DaysFormat","DaysStandalone","MonthsFormat","MonthsStandalone","FirstDayOfWeek","WeekendRange","DateFormat","TimeFormat","NumberSymbols","NumberFormats","CurrencyCode","CurrencySymbol","CurrencyName","Currencies","ExtraData","pluralMapping","DEFAULT_LOCALE_ID","ELEMENT_MARKER","ICU_MARKER","I18nCreateOpCode","SHIFT","APPEND_EAGERLY","LOCALE_ID$1","setLocaleId","tNodeInsertBeforeIndex","i18nParent","anchorRNode","addTNodeAndUpdateInsertBeforeIndex","previousTNodes","newTNode","existingTNode","isI18nText","isNewTNodeCreatedBefore","getInsertBeforeIndex","setInsertBeforeIndex","getTIcu","createTNodePlaceholder","getCurrentICUCaseIndex","tIcu","currentCase","currentCaseLViewIndex","getParentFromIcuCreateOpCode","mergedCode","getRefFromIcuCreateOpCode","changeMask","changeMaskCounter","applyMutableOpCodes","mutableOpCodes","rootRNode","rootIdx","textNodeIndex","parentIdx","insertInFrontOf","refIdx","caseIndex","anchorIdx","elementNodeIndex","commentValue","commentNodeIndex","applyUpdateOpCodes","updateOpCodes","bindingsStartIndex","checkBit","skipCodes","sanitizeFn","tNodeOrTagName","rText","applyIcuSwitchCase","applyIcuUpdateCase","activeCaseIndex","getCaseIndex","icuExpression","bindingValue","resolvedCase","getPluralCase","applyIcuSwitchCaseRemove","removeCodes","nodeOrIcuIndex","loadIcuContainerVisitor","_stack","_removes","enterIcu","icuContainerIteratorNext","removeOpCode","tIcuIndex","icuContainerIteratorStart","BINDING_REGEXP","ICU_REGEXP","NESTED_ICU","ICU_BLOCK_REGEXP","MARKER","SUBTEMPLATE_REGEXP","PH_REGEXP","NGSP_UNICODE_REGEXP","i18nStartFirstCreatePass","parentTNodeIndex","subTemplateIndex","createOpCodes","existingTNodeStack","getTranslationForTemplate","isRootTemplateMessage","removeInnerTemplateTranslation","msgParts","replaceNgsp","isClosing","i18nParseTextIntoPartsAndICU","icuStart","createTNodeAndAddOpCode","i18nStartFirstCreatePassProcessTextNode","existingTNodes","isICU","i18nNodeIdx","ensureIcuContainerVisitorLoaded","loader","setTNodeInsertBeforeIndex","hasBinding","generateBindingUpdateOpCodes","destinationNode","bindingStart","maskIndex","sizeIndex","textParts","textValue","toMaskBit","countBindings","opCodes","tagMatched","inTemplate","bindingMask","addUpdateIcuSwitch","mainBinding","setTIcu","valueArr","nestedIcus","icuIndex","parseIcuCase","addUpdateIcuUpdate","parseICUBlock","icuType","blocks","prevPos","braceStack","braces","caseName","unsafeCaseHtml","inertRootNode","walkIcuTree","sharedUpdateOpCodes","addCreateNodeAndAppend","lowerAttrName","addCreateAttribute","addRemoveNode","COMMENT_NODE","isNestedIcu","addRemoveNestedIcu","appendToParentIdx","createAtIdx","icuCreateOpCode","ROOT_TEMPLATE_ID","PP_MULTI_VALUE_PLACEHOLDERS_REGEXP","PP_PLACEHOLDERS_REGEXP","PP_ICU_VARS_REGEXP","PP_ICU_PLACEHOLDERS_REGEXP","PP_ICUS_REGEXP","PP_CLOSE_TEMPLATE_REGEXP","PP_TEMPLATE_ID_REGEXP","ɵɵi18nStart","messageIndex","tI18n","applyCreateOpCodes","isComment","appendNow","ɵɵi18nEnd","ɵɵi18n","ɵɵi18nAttributes","i18nAttributesFirstPass","previousElementIndex","ɵɵi18nExp","setMaskBit","hasChange","ɵɵi18nApply","applyI18n","ɵɵi18nPostprocess","replacements","i18nPostprocess","templateIdsStack","phs","tmpl","placeholders","templateId","isCloseTemplateTag","currentTemplateId","resolveProvider","lInjectablesBlueprint","providerFactory","beginIndex","existingFactoryIndex","registerDestroyHooksIfSupported","existingProvidersFactoryIndex","existingViewProvidersFactoryIndex","doesProvidersFactoryExist","doesViewProvidersFactoryExist","multiFactory","componentProviders","multiFactoryAdd","multiViewProvidersFactoryResolver","multiProvidersFactoryResolver","contextIndex","indexInFactory","providerIsTypeProvider","providerIsClassProvider","isClassProvider","existingCallbacksIndex","isComponentProvider","lData","multiResolve","factories","componentCount","multiProviders","ɵɵProvidersFeature","viewProviders","processProvidersFn","NgModuleRef$1","NgModuleFactory$1","_bootstrapComponents","destroyCbs","_r3Injector","NgModuleFactory","moduleType","EnvironmentNgModuleRefAdapter","createEnvironmentInjector","debugName","StandaloneService","cachedInjectors","getOrCreateStandaloneInjector","standaloneInjector","ɵɵStandaloneFeature","setClassMetadata","ɵɵpureFunction0","slotOffset","pureFn","ɵɵpureFunction1","pureFunction1Internal","ɵɵpureFunction2","pureFunction2Internal","ɵɵpureFunction3","pureFunction3Internal","ɵɵpureFunction4","pureFunction4Internal","ɵɵpureFunction5","exp5","ɵɵpureFunction6","exp6","ɵɵpureFunction7","exp7","ɵɵpureFunction8","exp8","ɵɵpureFunctionV","exps","pureFunctionVInternal","getPureFunctionReturnValue","returnValueIndex","lastReturnValue","bindingRoot","ɵɵpipe","pipeName","getPipeDef","pipeFactory","pipeInstance","ɵɵpipeBind1","isPure","ɵɵpipeBind2","ɵɵpipeBind3","ɵɵpipeBind4","ɵɵpipeBindV","EventEmitter_","__isAsync","nextFn","errorFn","completeFn","_wrapInTimeout","symbolIterator","QueryList","_changes","_emitDistinctChangesOnly","_changesDetected","resultsTree","identityAccessor","newResultFlat","valueA","valueB","notifyOnChanges","setDirty","injectTemplateRef","createTemplateRef","ViewEngineTemplateRef","R3TemplateRef","_declarationLView","_declarationTContainer","declarationViewLQueries","injectViewContainerRef","previousTNode","createContainerRef","VE_ViewContainerRef","R3ViewContainerRef","_hostTNode","_hostLView","getViewRefs","indexOrOptions","componentFactoryOrType","isComponentFactory","contextInjector","viewAttachedToContainer","prevIdx","prevLContainer","prevVCRef","adjustedIdx","_adjustIndex","addViewToContainer","parentNativeNode","getOrCreateViewRefs","viewRefsArr","commentNode","nativeNextSibling","LQuery_","queryList","LQueries_","tQueries","noOfInheritedQueries","viewLQueries","tQuery","getByIndex","parentLQuery","indexInDeclarationView","dirtyQueriesWithMatches","getTQuery","TQueryMetadata_","TQueries_","queriesForTemplateRef","childQueryIndex","tqueryClone","tquery","TQuery_","crossesNgTemplate","_appliesToNextNode","_declarationNodeIndex","isApplyingToNode","matchTNode","addMatch","declarationNodeIdx","matchTNodeWithReadOption","getIdxOfMatchingSelector","nodeMatchIdx","directiveOrProviderIdx","matchIdx","createResultForNode","matchingIdx","createResultByTNodeType","createSpecialToken","materializeViewResults","queryIndex","lQuery","tQueryMatches","matchedNodeIdx","collectQueryResults","lViewResults","embeddedLViews","ɵɵqueryRefresh","isCreationMode","ɵɵviewQuery","createTQuery","createLQuery","ɵɵcontentQuery","saveContentQueryAndDirectiveIndex","tViewContentQueries","lastSavedDirectiveIndex","ɵɵloadQuery","loadQueryInternal","ɵɵtemplateRefExtractor","angularCoreEnv","jitOptions","isModuleWithProviders","isNgModule","moduleQueue","flushingModuleQueue","isResolvedDeclaration","declaration","compileNgModule","compileNgModuleDefs","allowDuplicateDeclarationsInRoot","expandModuleWithProviders","compileInjector","enqueueModuleForDelayedScoping","setScopeOnDeclaredComponents","transitiveScopes","transitiveScopesFor","patchComponentDefWithScope","ngSelectorScope","compilation","transitiveScopesForNgModule","exported","importedScope","declared","exportedType","exportedScope","compilationDepth","compileComponent","ngComponentDef","maybeQueueResolutionOfComponentResources","addDirectiveFactoryDef","getJitOptions","preserveWhitespaces","defaultEncapsulation","directiveMetadata","typeSourceSpan","createParseSourceSpan","interpolation","usesInheritance","addDirectiveDefToUndecoratedParents","getStandaloneDefFunctions","cachedDirectiveDefs","cachedPipeDefs","rawDep","flushModuleScopingQueueAsMuchAsPossible","hasSelectorScope","compileDirective","ngDirectiveDef","getDirectiveMetadata","sourceMapUrl","facade","extendsDirectlyFromObject","extractQueriesMetadata","isContentQuery","usesOnChanges","extractExportAs","viewQueries","shouldAddAbstractDirective","convertToR3QueryPredicate","splitByComma","convertToR3QueryMetadata","ann","isQueryAnn","queriesMeta","isInputAnnotation","piece","LIFECYCLE_HOOKS","metadataName","getPipeMetadata","compilePipe","ngPipeDef","bindingPropertyName","hostPropertyName","APP_INITIALIZER","ApplicationInitStatus","appInits","initialized","donePromise","rej","runInitializers","asyncInitPromises","initResult","observableAsPromise","_appIdRandomProviderFactory","_randomChar","PLATFORM_INITIALIZER","APP_BOOTSTRAP_LISTENER","Console","getGlobalLocale","$localize","MissingTranslationStrategy","Warning","Ignore","ModuleWithComponentFactories","componentFactories","Compiler","compileModuleSync","compileModuleAsync","compileModuleAndAllComponentsSync","compileModuleAndAllComponentsAsync","clearCacheFor","getModuleId","scheduleMicroTask","enableLongStackTrace","shouldCoalesceEventChangeDetection","shouldCoalesceRunChangeDetection","hasPendingMacrotasks","hasPendingMicrotasks","onUnstable","onMicrotaskEmpty","assertZonePatched","_nesting","_outer","_inner","TaskTrackingZoneSpec","fork","longStackTraceZoneSpec","lastRequestAnimationFrameId","nativeRequestAnimationFrame","getNativeRequestAnimationFrame","nativeCancelAnimationFrame","unpatchedRequestAnimationFrame","__symbol__","unpatchedCancelAnimationFrame","forkInnerZoneWithAngularBehavior","delayChangeDetectionForEventsDelegate","delayChangeDetectionForEvents","isCheckStableRunning","fakeTopEventTask","scheduleEventTask","updateMicroTaskStatus","checkStable","isAngularZone","onInvokeTask","task","applyThis","applyArgs","invokeTask","onInvoke","onHasTask","hasTaskState","hasTask","_hasPendingMicrotasks","microTask","macroTask","onHandleError","isInAngularZone","runTask","EMPTY_PAYLOAD","cancelTask","NoopNgZone","TESTABILITY","TESTABILITY_GETTER","Testability","testabilityGetter","_pendingCount","_isZoneStable","_didWork","taskTrackingZone","_testabilityGetter","setTestabilityGetter","addToWindow","_watchAngularEvents","assertNotInAngularZone","_runCallbacksIfReady","increasePendingRequestCount","decreasePendingRequestCount","timeoutId","doneCb","getPendingTasks","updateCb","macroTasks","creationLocation","addCallback","whenStable","getPendingRequestCount","registerApplication","unregisterApplication","findProviders","exactMatch","TestabilityRegistry","_applications","testability","unregisterAllApplications","getTestability","getAllTestabilities","getAllRootElements","findTestabilityInTree","findInAncestors","_platformInjector","ALLOW_MULTIPLE_PLATFORMS","PLATFORM_DESTROY_LISTENERS","NG_DEV_MODE","runPlatformInitializers","inits","createPlatformFactory","parentPlatformFactory","extraProviders","getPlatform","platformProviders","createPlatform","PlatformRef","createPlatformInjector","assertPlatform","requiredToken","_modules","_destroyListeners","bootstrapModuleFactory","moduleFactory","getNgZone","getNgZoneOptions","ngZoneInjector","moduleRef","exceptionHandler","_callAndReportToErrorHandler","initStatus","_moduleDoBootstrap","bootstrapModule","compilerOptions","optionsReducer","compileNgModuleFactory","ApplicationRef","ngDoBootstrap","destroyListeners","ngZoneEventCoalescing","ngZoneRunCoalescing","ngZoneToUse","_exceptionHandler","_bootstrapListeners","_views","_runningTick","_stable","componentTypes","_onMicrotaskEmptySubscription","isCurrentlyStable","stableSub","unstableSub","assertInAngularZone","merge$1","componentOrFactory","warnIfDestroyed","cf","selectorOrNode","_loadComponent","enableProdMode","injectChangeDetectorRef","createViewRef","isPipe","hostComponentView","DefaultIterableDifferFactory","DefaultIterableDiffer","trackByIdentity","_linkedRecords","_unlinkedRecords","_previousItHead","_itHead","_itTail","_additionsHead","_additionsTail","_movesHead","_movesTail","_removalsHead","_removalsTail","_identityChangesHead","_identityChangesTail","nextIt","nextRemove","addRemoveOffset","moveOffsets","getPreviousIndex","adjPreviousIndex","_nextRemoved","localMovePreviousIndex","localCurrentIndex","forEachPreviousItem","_nextPrevious","_nextAdded","forEachMovedItem","_nextMoved","_nextIdentityChange","itemTrackBy","mayBeDirty","trackById","_verifyReinsertion","_addIdentityChange","_mismatch","iterateListLike","_truncate","isDirty","previousRecord","_prev","_remove","_reinsertAfter","_moveAfter","_addAfter","IterableChangeRecord_","reinsertRecord","_addToMoves","nextRecord","_addToRemovals","_unlink","prevRecord","_prevRemoved","_insertAfter","_DuplicateMap","_prevDup","_nextDup","_DuplicateItemRecordList","atOrAfterIndex","recordList","moveOffset","DefaultKeyValueDifferFactory","DefaultKeyValueDiffer","_records","_mapHead","_appendAfter","_previousMapHead","_changesHead","_changesTail","_nextChanged","_maybeAddToChanges","_getOrCreateRecordForKey","_insertBeforeOrAppend","KeyValueChangeRecord_","_addToAdditions","_addToChanges","defaultIterableDiffersFactory","copied","defaultKeyValueDiffersFactory","keyValDiff","iterableDiff","platformCore","ApplicationModule","coerceToBoolean","BaseControlValueAccessor","onTouched","BuiltInControlValueAccessor","CHECKBOX_VALUE_ACCESSOR","CheckboxControlValueAccessor","DEFAULT_VALUE_ACCESSOR","DefaultValueAccessor","COMPOSITION_BUFFER_MODE","_compositionMode","_composing","_isAndroid","ɵgetDOM","getUserAgent","normalizedValue","_handleInput","_compositionStart","_compositionEnd","NG_DEV_MODE$1","isEmptyInputValue","hasValidLength","NG_VALIDATORS","NG_ASYNC_VALIDATORS","EMAIL_REGEXP","minValidator","maxValidator","requiredValidator","requiredTrueValidator","emailValidator","minLength","minLengthValidator","maxLengthValidator","patternValidator","composeAsync","email","minlength","requiredLength","actualLength","nullValidator","requiredPattern","actualValue","isPresent","ɵisObservable","mergeErrors","arrayOfErrors","executeValidators","normalizeValidators","isValidatorFn","presentValidators","composeValidators","composeAsyncValidators","controlValidators","dirValidator","getControlValidators","_rawValidators","getControlAsyncValidators","_rawAsyncValidators","makeValidatorsArray","hasValidator","addValidators","currentValidators","validatorsToAdd","removeValidators","AbstractControlDirective","_onDestroyCallbacks","untouched","_setValidators","_composedValidatorFn","_setAsyncValidators","_composedAsyncValidatorFn","_registerOnDestroy","_invokeOnDestroyCallbacks","getError","ControlContainer","formDirective","NgControl","valueAccessor","AbstractControlStatus","cd","isTouched","isUntouched","isInvalid","isPending","isSubmitted","NgControlStatus","NgControlStatusGroup","describeKey","isFormGroup","VALID","PENDING","DISABLED","pickValidators","validatorOrOpts","isOptionsObj","pickAsyncValidators","assertControlPresent","isGroup","noControlsError","missingControlError","assertAllValuesPresent","missingControlValueError","_pendingDirty","_hasOwnPendingAsyncValidator","_pendingTouched","_onCollectionChange","_onDisabledChange","_assignValidators","_assignAsyncValidators","validatorFn","asyncValidatorFn","_updateOn","addAsyncValidators","removeAsyncValidators","hasAsyncValidator","clearValidators","clearAsyncValidators","markAsTouched","markAllAsTouched","markAsUntouched","_updateTouched","markAsPristine","_updatePristine","markAsPending","skipPristineCheck","_parentMarkedDirty","_updateValue","_updateAncestors","getRawValue","_setInitialStatus","_cancelExistingSubscription","_runValidator","_calculateStatus","_runAsyncValidator","_allControlsDisabled","_asyncValidationSubscription","_updateControlsErrors","currPath","_initObservables","_anyControlsHaveStatus","_anyControls","_anyControlsDirty","_anyControlsTouched","_registerOnCollectionChange","_setUpdateStrategy","parentDirty","coerceToValidator","coerceToAsyncValidator","_setUpControls","addControl","controlName","_reduceChildren","_syncPendingControls","subtreeUpdated","_reduceValue","UntypedFormGroup","FormRecord","CALL_SET_DISABLED_STATE","setDisabledStateDefault","controlPath","setUpControl","callSetDisabledState","setUpValidators","setUpViewChangePipeline","_pendingValue","_pendingChange","setUpModelChangePipeline","emitModelEvent","viewToModelUpdate","_unregisterOnChange","setUpBlurPipeline","setUpDisabledChangeHandler","onDisabledChange","_unregisterOnDisabledChange","cleanUpControl","validateControlPresenceOnChange","cleanUpValidators","registerOnValidatorChange","onValidatorChange","isControlUpdated","updatedValidators","updatedAsyncValidators","emitModelToViewChange","setUpFormContainer","isPropertyUpdated","viewModel","syncPendingControls","selectValueAccessor","valueAccessors","defaultAccessor","builtinAccessor","customAccessor","isBuiltInAccessor","formDirectiveProvider$1","NgForm","resolvedPromise$1","_directives","ngSubmit","_findContainer","getControl","addFormGroup","removeFormGroup","getFormGroup","updateModel","onSubmit","removeListItem","isFormControlState","_applyFormState","nonNullable","initialValueIsDefault","emitViewToModelChange","UntypedFormControl","AbstractFormGroupDirective","_checkParentType","modelGroupProvider","NgModelGroup","formControlBinding$1","NgModel","_registered","_checkForErrors","_checkName","oldName","_getPath","_setUpControl","_updateDisabled","_isStandalone","_setUpStandalone","disabledValue","ɵcoerceToBoolean","ɵNgNoValidate","NUMBER_VALUE_ACCESSOR","NumberValueAccessor","RADIO_VALUE_ACCESSOR","RadioControlValueAccessor","RadioControlRegistryModule","RadioControlRegistry","_accessors","accessor","_isSameGroup","fireUncheck","controlPair","_control","_registry","setDisabledStateFired","formControlName","RANGE_VALUE_ACCESSOR","RangeValueAccessor","NG_MODEL_WITH_FORM_CONTROL_WARNING","formControlBinding","FormControlDirective","_ngModelWarningConfig","_ngModelWarningSent","_isControlChanged","previousForm","_ngModelWarningSentOnce","formDirectiveProvider","_updateDomValue","_checkFormPresent","_updateValidators","_updateRegistrations","_oldForm","removeListItem$1","_setUpFormContainer","_cleanUpFormContainer","addFormArray","removeFormArray","getFormArray","oldCtrl","newCtrl","cleanUpFormContainer","formGroupNameProvider","FormGroupName","_hasInvalidParent","formArrayNameProvider","FormArrayName","controlNameBinding","FormControlName","_added","SELECT_VALUE_ACCESSOR","SelectControlValueAccessor","_buildValueString$1","_optionMap","_idCounter","valueString","_getOptionId","_getOptionValue","_registerOption","_extractId$1","NgSelectOption","ngValue","_setElementValue","SELECT_MULTIPLE_VALUE_ACCESSOR","SelectMultipleControlValueAccessor","_buildValueString","optionSelectedStateSetter","selectedOptions","_extractId","ɵNgSelectMultipleOption","toFloat","AbstractValidatorDirective","_validator","inputName","normalizeInput","createValidator","MAX_VALIDATOR","MaxValidator","MIN_VALIDATOR","MinValidator","REQUIRED_VALIDATOR","RequiredValidator","CHECKBOX_REQUIRED_VALIDATOR","CheckboxRequiredValidator","EMAIL_VALIDATOR","EmailValidator","MIN_LENGTH_VALIDATOR","MinLengthValidator","MAX_LENGTH_VALIDATOR","MaxLengthValidator","PATTERN_VALIDATOR","PatternValidator","ɵInternalFormsSharedModule","_registerControl","UntypedFormArray","isAbstractControlOptions","FormBuilder","useNonNullable","nnfb","reducedControls","_reduceControls","createdControls","_createControl","NonNullableFormBuilder","UntypedFormBuilder","controlsConfig","FormsModule","ReactiveFormsModule","warnOnNgModelWithFormControl","GenericBrowserDomAdapter","ɵDomAdapter","supportsDOMEvents","BrowserDomAdapter","ɵsetRootDomAdapter","onAndCancel","getDefaultDocument","createHtmlDocument","isElementNode","isShadowRoot","DocumentFragment","getBaseElementHref","baseElement","urlParsingNode","resetBaseElement","getCookie","TRANSITION_ID","SERVER_TRANSITION_PROVIDERS","appInitializerFactory","transitionId","dom","BrowserXhr","EVENT_MANAGER_PLUGINS","EventManager","_eventNameToPlugin","_findPluginFor","addGlobalEventListener","EventManagerPlugin","SharedStylesHost","_stylesSet","addStyles","onStylesAdded","getAllStyles","DomSharedStylesHost","_hostNodes","_addStylesToHost","styleNodes","styleEl","addHost","hostNode","removeHost","styleNode","NAMESPACE_URIS","svg","xhtml","xlink","xmlns","COMPONENT_REGEX","HOST_ATTR","CONTENT_ATTR","flattenStyles","compId","decoratePreventDefault","DomRendererFactory2","eventManager","sharedStylesHost","appId","rendererByCompId","defaultRenderer","DefaultDomRenderer2","EmulatedEncapsulationDomRenderer2","applyToHost","ShadowDomRenderer","newChild","isTemplateNode","refChild","oldChild","namespaceUri","setAttributeNS","removeAttributeNS","contentAttr","shimContentAttribute","componentShortId","hostAttr","shimHostAttribute","hostEl","nodeOrShadowRoot","DomEventsPlugin","MODIFIER_KEYS","Del","Left","Right","Up","Down","Menu","Scroll","Win","MODIFIER_KEY_GETTERS","alt","KeyEventsPlugin","parseEventName","parsedEvent","outsideHandler","eventCallback","fullKey","domEventName","_normalizeKey","codeIX","modifierName","fullKeyCode","keycode","modifierGetter","matchEventFullKeyCode","keyName","INTERNAL_BROWSER_PLATFORM_PROVIDERS","ɵPLATFORM_BROWSER_ID","initDomAdapter","makeCurrent","ɵsetDocument","platformBrowser","BROWSER_MODULE_PROVIDERS_MARKER","TESTABILITY_PROVIDERS","ɵTESTABILITY_GETTER","BrowserGetTestability","ɵglobal","testabilities","didWork","decrement","didWork_","ɵTESTABILITY","BROWSER_MODULE_PROVIDERS","ɵINJECTOR_SCOPE","BrowserModule","providersAlreadyPresent","Meta","_dom","forceCreation","_getOrCreateElement","addTags","attrSelector","getTags","updateTag","_parseSelector","_setMetaElementAttributes","removeTag","removeTagElement","_containsAttributes","_getMetaKeyMap","META_KEYS_MAP","createMeta","httpEquiv","setTitle","newTitle","createTitle","TransferState","onSerializeCallbacks","onSerialize","retrieveTransferredState","unescapeHtml","unescapedText","BrowserTransferStateModule","EVENT_NAMES","panstart","panmove","panend","pancancel","panleft","panright","panup","pandown","pinchstart","pinchmove","pinchend","pinchcancel","pinchin","pinchout","press","pressup","rotatestart","rotatemove","rotateend","rotatecancel","swipeleft","swiperight","swipeup","swipedown","doubletap","HAMMER_LOADER","buildHammer","HammerGesturesPlugin","_loaderPromise","isCustomEvent","cancelRegistration","eventObj","HammerModule","ɵConsole","DomSanitizerImpl","ɵallowSanitizationBypassAndThrow","ɵunwrapSafeValue","ɵ_sanitizeHtml","ɵ_sanitizeUrl","ɵXSS_SECURITY_URL","ɵbypassSanitizationTrustHtml","ɵbypassSanitizationTrustStyle","bypassSecurityTrustScript","ɵbypassSanitizationTrustScript","ɵbypassSanitizationTrustUrl","bypassSecurityTrustResourceUrl","ɵbypassSanitizationTrustResourceUrl","domSanitizerImplFactory","placement","middleware","isRTL","getElementRects","initialPlacement","middlewareData","_x4","rootBoundary","elementContext","altBoundary","getClippingRect","contextElement","getDocumentElement","getOffsetParent","convertOffsetParentRelativeRectToViewportRelativeRect","main","mainAxis","crossAxis","fallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","overflows","limiter","G0","userAgentData","brands","brand","backdropFilter","WebkitBackdropFilter","willChange","contain","visualViewport","assignedSlot","ancestorScroll","ancestorResize","elementResize","animationFrame","ResizeObserver","OPTION_IS_DEEP","headerToolbar","footerToolbar","eventSources","resources","OPTION_INPUT_NAMES","deepCopy","mapHash","deepEqual","dummyContainer$1","OffscreenFragmentComponent","dummyContainer","TransportContainerComponent","rootEl","rootElRef","replaceEl","inPlaceOf","applyElAttrs","reportEl","elAttrsChange","previousAttrs","currentAttrs","FullCalendarComponent","changeDetector","optionSnapshot","customRenderingMap","templateMap","customRenderingStore","CustomRenderingStore","customRenderingArray","handleCustomRendering","deepChangeDetection","buildInputOptions","optionVal","optionName","Calendar","buildExtraOptions","newProcessedOptions","changedOptionNames","oldOptionNames","pauseRendering","resetOptions","resumeRendering","customRenderings","getApi","inputValue","customRenderingMetaMap","customRenderingReplacesEl","trackCustomRendering","customRendering","FullCalendarModule","injectStyles","globalLocales","MINIMAL_RAW_EN_LOCALE","RAW_EN_LOCALE","organizeRawLocales","explicitRawLocales","defaultCode","allRawLocales","rawLocaleMap","rawLocale","buildLocale","inputSingular","queryLocale","codeArg","queryRawLocale","simpleId","parseLocale","mergeProps","simpleNumberFormat","NumberFormat","createPlugin","premiumReleaseDate","reducers","isLoadingFuncs","contextInit","eventRefiners","eventDefMemberAdders","eventSourceRefiners","isDraggableTransformers","eventDragMutationMassagers","eventDefMutationAppliers","dateSelectionTransformers","datePointTransforms","dateSpanTransforms","viewPropsTransformers","isPropsValid","externalDefTransforms","viewContainerAppends","eventDropTransformers","componentInteractions","calendarInteractions","themeClasses","eventSourceDefs","cmdFormatter","recurringTypes","namedTimeZonedImpl","initialView","elementDraggingImpl","optionChangeHandlers","scrollGridImpl","listenerRefiners","optionRefiners","propSetHandlers","buildBuildPluginHooks","currentHooks","currentOverrideDefs","currentGlobalDefs","overrideDefs","globalDefs","isArraysEqual","buildPluginHooks","pluginDefs","currentPluginIds","addDefs","defs","combineHooks","hooks0","hooks1","compareOptionalDates","date0","StandardTheme","Theme","ensureViewDef","defaultConfigs","overrideConfigs","viewDef","buildViewDef","overrideConfig","queryProp","theComponent","rawOptions","parseViewConfigs","parseViewConfig","createViewHookComponent","viewProps","ViewContextType","ContentContainer","elTag","elClasses","buildViewClassNames","viewSpec","renderProps","nextDayThreshold","generatorName","customGenerator","classNameGenerator","didMount","willUnmount","buildViewSpecs","defaultInputs","optionOverrides","dynamicOptionOverrides","localeDefaults","viewDefs","compileViewDefs","buildViewSpec","durationInput","durationUnit","singleUnit","singleUnitOverrides","createDurationCached","durationInputMap","greatestDurationDenominator","queryButtonText","optionsSubset","buttonTextMap","buttonTextKey","queryButtonTitle","buttonKey","optionDefaults","buttonTextOverride","buttonTextDefault","BASE_OPTION_DEFAULTS","buttonTitleOverride","buttonHint","buttonTitleDefault","tableCellShaded","buttonGroup","buttonActive","baseIconClass","iconClasses","rtlIconClasses","iconOverrideOption","iconOverrideCustomButtonOption","iconOverridePrefix","initEventSources","calendarOptions","dateProfile","activeRange","addSources","parseInitialSources","refiners","buildEventSourceRefiners","rawSources","initialEvents","rawSource","parseEventSource","reduceEventSources","removeSource","eventSourceHash","sourceId","filterHash","eventSource","fetchDirtySources","fetchSourcesByIds","sourceIds","arrayToHash","excludeStaticSources","isRefetch","receiveResponse","sourceHash","fetchId","fetchRange","latestFetchId","isFetching","computeEventSourcesLoading","isSourceDirty","doesSourceNeedRange","lazyFetching","prevSources","sourceIdHash","nextSources","fetchSource","calendarApi","sourceDef","pluginHooks","sourceDefId","fetch","rawEvents","eventSourceSuccess","errorHandled","eventSourceFailure","failure","ignoreRange","reduceDateSelection","currentSelection","reduceSelectedEvent","currentInstanceId","eventInstanceId","reduceEventDrag","currentDrag","newDrag","affectedEvents","mutatedEvents","isEvent","reduceEventResize","currentResize","newResize","parseToolbars","calendarOptionOverrides","theme","viewSpecs","parseToolbar","sectionStrHash","sectionWidgets","viewsWithButtons","sectionName","sectionRes","parseSection","widgets","sectionStr","calendarCustomButtons","customButtons","calendarButtonTextOverrides","calendarButtonText","calendarButtonHintOverrides","calendarButtonHints","sectionSubstrs","buttonGroupStr","buttonName","customButtonProps","buttonClick","buttonIcon","getCustomButtonIconClass","getIconClass","changeView","textFallback","formatWithOrdinals","prevOrNext","navUnit","ViewImpl","getCurrentData","dateEnv","viewTitle","activeStart","activeEnd","currentStart","currentRange","currentEnd","getOption","handleEventSources","unfoundSources","hashValuesToArray","_raw","newInputs","inputFound","unfoundSource","addEventSource","globalPlugins","parseMeta","refined","successCallback","unpromisify","buildRangeApiWithTimeZone","extraParams","startParam","endParam","timeZoneParam","requestParams","buildRequestParams","customRequestParams","formatIso","requestJson","daysOfWeek","endTime","startRecur","endRecur","recurringData","createMarker","subtractDurations","allDayGuess","typeData","framingRange","clippedFramingRange","intersectRanges","expandRanges","dowHash","dayMarker","startOfDay","endMarker","instanceStarts","instanceStart","addDays","handleDateProfile","viewApi","eventStore","handleEventStore","hasHandlers","buildEventApis","TaskRunner","runTaskOption","drainedOption","delayedRunner","DelayedRunner","drain","pause","resume","completedTasks","drained","buildTitle","viewOptions","currentRangeUnit","formatRange","createFormatter","titleFormat","buildTitleFormat","diffWholeDays","isEndExclusive","isRangeAllDay","defaultSeparator","titleRangeSeparator","CalendarDataManager","computeCurrentViewData","_computeCurrentViewData","buildDateEnv","buildDateEnv$1","buildTheme","buildDateProfileGenerator","memoizeObjArg","buildViewApi","buildViewUiProps","buildEventUiBySource","isPropsEqual","buildEventUiBases","parseContextBusinessHours","Emitter","actionRunner","_handleAction","updateData","currentCalendarOptionsInput","currentCalendarOptionsRefined","currentViewOptionsInput","currentViewOptionsRefined","currentCalendarOptionsRefiners","optionsForRefining","optionsForHandling","optionsData","computeOptionsData","currentViewType","currentViewData","currentDataManager","setThisContext","getInitialDate","dateProfileGenerator","rangeContainsMarker","calendarContext","businessHours","eventUiBases","createEmptyEventStore","renderableEventStore","dateSelection","eventSelection","eventDrag","eventResize","selectionConfig","contextAndState","computeIsLoading","reduceDynamicOptionOverrides","rawOptionValue","reduceViewType","reduceCurrentDate","reduceDateProfile","currentDateProfile","dateMarker","buildPrev","buildNext","reduceEventStore","progressiveEventRendering","eventUiSingleBase","eventUiBySource","wasLoading","isLoading","onAction","oldData","changeHandlers","oldCalendarOptions","newCalendarOptions","reduceEventSourcesNewTimeZone","rezoneEventStoreDates","stableOptionOverrides","stableDynamicOptionOverrides","stableCalendarOptionsData","refinedOptions","availableLocaleData","processRawCalendarOptions","warnUnknownOptions","weekNumberCalculation","firstDay","defaultRangeSeparator","toolbarConfig","availableRawLocales","mergeRawOptions","BASE_OPTION_REFINERS","CALENDAR_LISTENER_REFINERS","CALENDAR_OPTION_REFINERS","currentRaw","currentRefined","anyChanges","COMPLEX_OPTION_COMPARATORS","processRawViewOptions","dateProfileGeneratorClass","usesMinMaxTime","slotMinTime","slotMaxTime","showNonCurrentDates","dayCount","dateAlignment","dateIncrement","hiddenDays","weekends","nowInput","validRangeInput","validRange","visibleRangeInput","visibleRange","fixedWeekCount","VIEW_OPTION_REFINERS","explicitLocale","DateEnv","calendarSystem","namedTimeZoneImpl","themeSystem","DateProfileGenerator","eventDefs","defId","createEventUi","eventDisplay","editable","startEditable","eventStartEditable","durationEditable","eventDurationEditable","constraint","eventConstraint","overlap","eventOverlap","allow","eventAllow","eventBackgroundColor","eventBorderColor","eventTextColor","eventColor","selectConstraint","selectOverlap","selectAllow","isLoadingFunc","parseBusinessHours","viewName","ToolbarSection","BaseComponent","widgetGroups","widgetGroup","renderWidgetGroup","isOnlyButtons","titleId","isPressed","activeButton","isTodayEnabled","isPrevEnabled","isNextEnabled","buttonClasses","groupClassName","Toolbar","startContent","endContent","extraClassName","forceLtr","centerContent","renderSection","ViewHarness","handleEl","setRef","elRef","updateAvailableWidth","handleResize","liquid","labeledById","addResizeHandler","removeResizeHandler","EventClicking","handleSegClick","segEl","getElSeg","isValidSegDownEl","hasUrlContainer","elementClosest","EventImpl","eventRange","jsEvent","listenBySelector","EventHovering","handleEventElRemove","currentSegEl","handleSegLeave","handleSegEnter","removeHoverListeners","listenToHoverBySelector","publicEvName","CalendarContent","PureComponent","buildViewContext","buildViewPropTransformers","buildToolbarProps","headerRef","createRef","footerRef","interactionsStore","viewLabelId","getUniqueDomId","registerInteractiveComponent","settingsInput","parseInteractionSettings","interactions","TheInteractionClass","interactionSettingsStore","unregisterInteractiveComponent","resizeRunner","handleWindowResize","windowResizeDelay","viewAspectRatio","toolbarProps","getNow","viewVGrow","viewHeight","isHeightAuto","forPrint","contentHeight","viewContext","buildAppendContent","CalendarInteractionClass","prevProps","interaction","Fragment","transformers","ViewComponent","todayInfo","prevInfo","nextInfo","theClasses","TheClass","CalendarImpl","isRendering","isRendered","currentClassNames","customContentRenderId","handleAction","renderRunner","tryDrain","handleData","currentData","rerenderDelay","handleRenderRequest","flushSync","CalendarRoot","setClassNames","setHeight","RenderId","ensureElHasStyles","wasRendering","updateSize","batchRendering","applyStyleProp","injectedStyleEls","rootHasStyles","injectStylesInParent","injectedStyleEl","parentEl","getNonceValue","queriedNonceValue","queryNonceValue","metaWithNonce","elWithNonce","isRunning","pauseDepths","isPaused","removeElement","elementMatches","findElements","allMatches","findDirectChildren","PIXEL_PROP_RE","applyStyle","getEventTargetViaRoot","guid$1","attachedHandler","buildDelegationHandler","matchedChild","currentMatchedChild","mouseOverEv","realOnMouseLeave","mouseLeaveEv","transitionEventNames","whenTransitionDone","realCallback","createAriaClickAttrs","createAriaKeyboardAttrs","guidNumber","disableCursor","enableCursor","preventSelection","allowSelection","preventContextMenu","allowContextMenu","parseFieldSpecs","specs","compareByFieldSpecs","obj0","fieldSpecs","compareByFieldSpec","fieldSpec","flexibleCompare","fallbackText","compareNumbers","isInt","computeSmallestCellWidth","cellEl","allWidthEl","contentWidthEl","INTERNAL_UNITS","PARSE_RE","parseString","parseObject","specifiedWeeks","asCleanDays","addDurations","multiplyDuration","asRoughDays","asRoughMs","asRoughMinutes","asRoughSeconds","wholeDivideDurations","numerator","denominator","localRes","equalityFunc","DAY_IDS","addWeeks","dateToUtcArray","arrayToUtcDate","addMs","diffWeeks","diffDays","timeAsMs","weekOfGivenYear","firstWeekStart","dayStart","dateToLocalArray","arrayToLocalDate","getUTCHours","getUTCSeconds","getUTCMilliseconds","isValidDate","buildIsoString","timeZoneOffset","stripZeroTime","formatTimeZoneOffset","formatDayString","formatIsoMonthStr","formatIsoTimeString","doIso","mins","workerFunc","resEquality","teardownFunc","currentArgs","currentRes","newArgs","currentArg","newArg","memoizeArraylike","currentArgSets","currentResults","newArgSets","currentLen","newLen","memoizeHashlike","currentArgHash","currentResHash","newArgHash","newResHash","EXTENDED_SETTINGS_AND_SEVERITIES","omitZeroMinute","omitCommas","STANDARD_DATE_PROP_SEVERITIES","timeZoneName","MERIDIEM_RE","COMMA_RE","MULTI_SPACE_RE","LTR_RE","UTC_RE","NativeFormatter","formatSettings","standardDateProps","extendedSettings","severity","buildFormattingFunc","betterDefaultSeparator","diffSeverity","computeMarkerDiffSeverity","getMarkerYear","getMarkerMonth","getMarkerDay","biggestUnitForPartial","full0","full1","partialDateProps","computePartialFormattingOptions","biggestUnit","partialOptions","partialFormattingFunc","partial0","partial1","insertion","findCommonInsertion","found0","before0","after0","found1","before1","after1","getLargestUnit","standardDatePropCnt","formatWeekNumber","computeWeekNumber","buildNativeFormattingFunc","sanitizeSettings","zeroFormat","normalFormat","zeroProps","postProcess","injectTzoStr","tzoStr","expandZonedMarker","dateInfo","markerToArray","createVerboseFormattingArg","startInfo","localeCodes","CmdFormatter","cmdStr","FuncFormatter","navLinkDayClick","navLinkWeekClick","bootstrapFontAwesome","buttonIcons","defaultAllDayEventDuration","defaultTimedEventDuration","scrollTime","scrollTimeReset","dayPopoverFormat","slotDuration","snapDuration","forceEventDuration","dayHeaders","dayHeaderFormat","dayHeaderClassNames","dayHeaderContent","dayHeaderDidMount","dayHeaderWillUnmount","dayCellClassNames","dayCellContent","dayCellDidMount","dayCellWillUnmount","weekNumberClassNames","weekNumberContent","weekNumberDidMount","weekNumberWillUnmount","viewClassNames","viewDidMount","viewWillUnmount","nowIndicator","nowIndicatorClassNames","nowIndicatorContent","nowIndicatorDidMount","nowIndicatorWillUnmount","dragRevertDuration","dragScroll","allDayMaintainDuration","unselectAuto","dropAccept","eventOrder","eventOrderStrict","longPressDelay","eventDragMinDistance","expandRows","weekNumberFormat","eventResizableFromStart","displayEventTime","displayEventEnd","eventDataTransform","stickyHeaderDates","stickyFooterScrollbar","defaultAllDay","eventClassNames","eventContent","eventDidMount","eventWillUnmount","droppable","unselectCancel","slotLabelFormat","slotLaneClassNames","slotLaneContent","slotLaneDidMount","slotLaneWillUnmount","slotLabelClassNames","slotLabelContent","slotLabelDidMount","slotLabelWillUnmount","dayMaxEvents","dayMaxEventRows","dayMinWidth","slotLabelInterval","allDayClassNames","allDayContent","allDayDidMount","allDayWillUnmount","slotMinWidth","navLinks","eventTimeFormat","selectMinDistance","selectable","selectLongPressDelay","eventLongPressDelay","selectMirror","eventMaxStack","eventMinHeight","eventMinWidth","eventShortHeight","slotEventOverlap","eventInteractive","moreLinkClick","moreLinkClassNames","moreLinkContent","moreLinkDidMount","moreLinkWillUnmount","monthStartFormat","datesSet","eventsSet","eventAdd","eventChange","eventRemove","windowResize","eventClick","eventMouseEnter","eventMouseLeave","_unmount","_beforeprint","_afterprint","_noEventDrop","_noEventResize","_resize","_scrollRequest","isMaybeObjectsEqual","isMaybeArraysEqual","optionSets","refineProps","propObjs","complexPropsMap","complexObjs","newHash","HANDLER_RE","getUnequalProps","compareObjs","oldProps","newProps","equalityFuncs","isObjValsEqual","val0","collectFromHash","calendarSystemClassMap","registerCalendarSystem","theClass","GregorianCalendarSystem","arrayToMarker","ISO_RE","isNamedTimeZone","canComputeOffset","createCalendarSystem","weekDow","weekDoy","weekNumberFunc","createMarkerMeta","createNowMarker","timestampToMarker","isTimeUnspecified","forcedTzo","getYear","addYears","addMonths","diffWholeYears","diffWholeMonths","greatestWholeUnit","diffWholeWeeks","diffHours","diffMinutes","diffSeconds","countDurationsBetween","asRoughYears","asRoughMonths","startOfYear","startOfMonth","startOfWeek","startOfHour","startOfMinute","startOfSecond","nextW","dateOptions","offsetForMarker","forcedStartTzo","forcedEndTzo","extraOptions","omitTimeZoneOffset","omitTime","timestampToArray","offsetForArray","setIconOverride","iconOverrideHash","iconClassesCopy","applyIconOverridePrefix","runBeforeFlush","oldDebounceRendering","preact","callbackQ","execCallbackSync","FakeComponent","createContext","ContextType","origProvider","_props","ScrollResponder","execFunc","handleScrollRequest","queuedRequest","fireInitialScroll","isDatesNew","createScrollResponder","nextProps","propEquality","stateEquality","safeSetState","addPropsEquality","addStateEquality","ContentInjector","queuedDomNodes","currentDomNodes","defaultGenerator","buildElAttrs","innerContent","currentGeneratorMeta","customGeneratorRes","domNodes","hasCustomRenderingHandler","applyQueueudDomNodes","triggerCustomRendering","generatorMeta","containerEl","reportNewContainerEl","isTruthy","newNode","extraClassNames","elStyle","isNonHandlerPropsEqual","InnerContent","InnerContentInjector","generatedClassNames","generateClassNames","renderId","containerComponent","parentProps","ViewContainer","invertRanges","ranges","constraintRange","dateRange","invertedRanges","compareRanges","range0","range1","rangesIntersect","rangeContainsRange","outerRange","innerRange","computeAlignedDayRange","timedRange","dayCnt","computeVisibleDayRange","startDay","endDay","endTimeMS","isMultiDayRange","diffDates","largeUnit","diffDayAndTime","m0day","m1day","initialDateInput","nowDate","initHiddenDays","forceToValid","prevDate","nextDate","currentInfo","renderRange","buildValidRange","trimHiddenDays","constrainMarkerToRange","buildCurrentRangeInfo","buildRenderRange","adjustActiveRange","buildDateIncrement","simpleInput","refineRange","buildRangeFromDuration","buildRangeFromDayCount","buildCustomVisibleRange","getFallbackDuration","computeRes","isHiddenDay","skipHiddenDays","runningCount","customAlignment","rangeInput","parseRange","isHiddenDayHash","inc","isExclusive","createEventInstance","instanceId","expandRecurring","recurringDef","allDay","expandRecurringRanges","eventDef","typeId","EVENT_NON_DATE_REFINERS","groupId","interactive","EVENT_DATE_REFINERS","EVENT_REFINERS","extendedProps","parseEvent","allowOpenRange","buildEventRefiners","defIdMap","instanceIdMap","refineEventDef","computeIsDefaultAllDay","recurringRes","parseRecurring","parseEventDef","singleRes","parseSingle","startMeta","endMeta","startMarker","hasEnd","startInput","publicId","EVENT_UI_REFINERS","memberAdder","parseEvents","rawEvent","eventTupleToStore","getRelevantEvents","newStore","filterEventStoreDefs","lookDef","isEventDefsGrouped","def0","def1","mergeEventStores","store0","store1","filterFunc","parseClassNames","EMPTY_EVENT_UI","constraints","allows","normalizeConstraint","combineEventUis","uis","combineTwoEventUis","item0","item1","EVENT_SOURCE_REFINERS","rawObj","metaRes","buildEventSourceMeta","receiveRawEvents","subset","transformRawEvents","excludeEventsBySourceId","resetRawEvents","existingEventStore","buildPublicIdMaps","newEventStore","expandRange","excludeSubEventStore","master","filteredDefs","filteredInstances","calEachTransform","sourceEachTransform","transformEachRawEvent","refinedEvents","refinedEvent","oldDateEnv","newDateEnv","thisContext","addToHash","removeFromHash","attachedHandlers","optionHandler","DEF_DEFAULTS","refineInputs","rawDefs","rawDef","triggerDateSelect","pev","buildDateSpanApiWithContext","origEvent","dateSpan","buildDateSpanApi","buildRangeApi","getDefaultEventEnd","applyMutationToEventStore","eventConfigBase","eventConfigs","compileEventUis","applyMutationToEventDef","applyMutationToEventInstance","eventConfig","standardProps","startDelta","endDelta","applier","eventInstance","forceAllDay","clearEnd","datesDelta","EventSourceImpl","internalEventSource","refetch","_def","_instance","setProp","mutate","setExtendedProp","granularity","maintainDuration","endInput","setDates","instanceRange","durationsEqual","deltaInput","moveEnd","moveDates","setAllDay","formatInput","relevantEvents","oldEvent","relatedEvents","asStore","eventApiToStore","startStr","endStr","collapseColor","collapseExtendedProps","eventApi","excludeInstance","eventApis","excludeInstanceId","sliceEventStore","inverseBgByGroupId","inverseBgByDefId","defByGroupId","bgRanges","fgRanges","eventUis","origRange","normalRange","slicedRange","isStart","isEnd","invertedRange","bg","fg","hasBgRendering","setElSeg","fcSeg","compileEventUi","sortEventSegs","segs","eventOrderSpecs","buildSegCompareObj","_seg","computeSegDraggable","computeSegStartResizable","buildSegTimeText","defaultDisplayEventTime","defaultDisplayEventEnd","startOverride","endOverride","wholeEventStart","wholeEventEnd","segStart","segEnd","isStartDay","isEndDay","getSegMeta","todayRange","segRange","isPast","isToday","getEventClassNames","isMirror","isStartResizable","isEndResizable","isResizing","isSelected","buildEventRangeKey","getSegAnchorAttrs","STANDARD_PROPS","parseDateSpan","defaultDuration","parseOpenDateSpan","isDateSpansEqual","span0","span1","isSpanPropsEqual","normalizedSuccessCallback","normalizedFailureCallback","isResolved","wrappedSuccess","wrappedFailure","JsonRequestError","fetchOptions","fetchRes","parsedResponse","canVGrowWithinCell","getCanVGrowWithinCell","computeCanVGrowWithinCell","handleBeforePrint","handleAfterPrint","isHitComboAllowed","useEventCenter","interactionSettingsToStore","setOption","getAvailableLocaleCodes","handlerName","dateOrRange","zoomTo","spec","getUnitViewSpec","viewTypes","gotoDate","zonedDateInput","incrementDate","dateOrObj","endDate","selectionInput","triggerDateUnselect","eventInput","sourceInput","triggerEventAdd","sourceApi","getEventSourceById","newEventApi","getEventById","getEvents","removeAllEvents","getEventSources","sourceApis","internalId","removeAllEventSources","refetchEvents","scrollToTime","timeInput","pointInsideRect","intersectRects","rect1","rect2","translateRect","constrainPoint","getRectCenter","diffPoints","point1","point2","EMPTY_EVENT_STORE","Splitter","getKeysForEventDefs","_getKeysForEventDefs","splitDateSelection","_splitDateSpan","splitEventStore","_splitEventStore","splitIndividualUi","_splitIndividualUi","splitEventDrag","_splitInteraction","splitEventResize","eventUiBuilders","splitProps","keyInfos","getKeyInfo","defKeys","dateSelections","individualUi","eventStores","eventDrags","eventResizes","buildEventUiForKey","keyInfo","buildEventUi","dateSpans","getKeysForDateSpan","getKeysForEventDef","splitStores","splitHashes","splitStates","affectedStores","mutatedKeysByDefId","mutatedStores","populate","allUi","eventUiForKey","stuff","getDateMeta","isOther","getDayClassNames","getSlotClassNames","DAY_FORMAT","WEEK_FORMAT","buildNavLinkAttrs","dateStr","zonedDate","handleInteraction","customAction","_scrollbarWidths","_isRtlScrollbarOnLeft","getIsRtlScrollbarOnLeft","computeIsRtlScrollbarOnLeft","outerEl","getScrollbarWidths","computeScrollbarWidths","computeScrollbarWidthsForEl","computeEdges","borderLeft","borderLeftWidth","borderRight","borderRightWidth","borderTop","borderBottom","badScrollbarWidths","scrollbarLeftRight","scrollbarBottom","scrollbarLeft","scrollbarRight","computeInnerRect","goWithinPadding","doFromWindowViewport","outerRect","computeRect","getClippingParents","PositionCache","originEl","originClientRect","buildElHorizontals","buildElVerticals","originClientLeft","lefts","rights","originClientTop","tops","bottoms","leftToIndex","leftPosition","topToIndex","topPosition","getWidth","getHeight","topIndex","similarTo","otherCache","similarNumArrays","ScrollController","getMaxScrollTop","getScrollHeight","getClientHeight","getMaxScrollLeft","getScrollWidth","getClientWidth","canScrollVertically","canScrollHorizontally","canScrollUp","getScrollTop","canScrollDown","canScrollLeft","getScrollLeft","canScrollRight","ElementScrollController","setScrollTop","setScrollLeft","WindowScrollController","DateComponent","prepareHits","queryHit","elWidth","elHeight","isValidDateDownEl","SegHierarchy","strictOrder","allowReslicing","maxCoord","maxStackCnt","levelCoords","entriesByLevel","stackCnts","addSegs","hiddenEntries","insertEntry","findInsertion","isInsertionValid","insertEntryAt","handleInvalidInsertion","levelCoord","stackCnt","touchingEntry","splitEntry","barrier","partCnt","splitHiddenEntries","entrySpan","barrierSpan","intersectSpans","lateral","insertAt","buildEntryKey","newEntry","levelCnt","candidateCoord","touchingLevel","touchingLateral","trackingLevel","trackingCoord","trackingEntry","trackingEntries","searchRes","binarySearch","getEntrySpanEnd","lateralIndex","trackingEntryBottom","destLevel","destLateral","toRects","groupIntersectingEntries","merges","filteredMerges","hungryMerge","joinSpans","searchVal","getItemVal","middleIndex","middleVal","ElementDragging","setMirrorIsVisible","setMirrorNeedsRevert","setAutoScrollEnabled","DRAG_META_REFINERS","parseDragMeta","leftoverProps","CLASS_NAME","renderInner$1","TableDateCell","dayMeta","navLinkAttrs","colCnt","extraRenderProps","colSpan","extraDataAttrs","InnerContainer","isSticky","WEEKDAY_FORMAT","TableDowCell","dateMeta","NowTimer","initialNowDate","initialNowQueriedMs","computeTiming","unroundedNow","currentUnitStart","nextUnitStart","waitMs","buildDayRange","DayHeader","createDayHeaderFormatter","datesRepDistinctDays","renderIntro","explicitFormat","dateCnt","computeFallbackHeaderFormat","DaySeriesModel","cnt","sliceRange","firstIndex","getDateDayIndex","clippedFirstIndex","clippedLastIndex","dayOffset","DayTableModel","daySeries","breakOnWeeks","daysPerRow","rowCnt","cells","buildCells","headerDates","buildHeaderDates","row","buildCell","seriesSeg","firstCol","lastCol","Slicer","sliceBusinessHours","_sliceBusinessHours","sliceDateSelection","_sliceDateSpan","_sliceEventStore","sliceEventDrag","_sliceInteraction","sliceEventResize","forceDayIfListItem","sliceProps","extraArgs","eventSegs","dateSelectionSegs","businessHourSegs","fgEventSegs","bgEventSegs","sliceNowDate","computeActiveRange","rangeRes","sliceEventRanges","affectedInstances","activeDateSpanRange","fabricateEventRange","eventRanges","sliceEventRange","isComponentAllDay","isInteractionValid","isNewPropsValid","isDateSelectionValid","calendarState","dateSpanMeta","filterConfig","isInteractionPropsValid","subjectEventStore","subjectDefs","subjectInstances","subjectConfigs","otherEventStore","excludeInstances","removals","otherDefs","otherInstances","otherConfigs","subjectInstanceId","subjectInstance","subjectRange","subjectConfig","subjectDef","allConstraintsPass","eventOverlapFunc","otherInstanceId","otherInstance","calendarEventStore","subjectAllow","subjectDateSpan","origDef","origInstance","isDateSelectionPropsValid","relevantEventStore","relevantDefs","relevantInstances","selectionRange","selectOverlapFunc","relevantInstanceId","relevantInstance","selectionAllow","businessHoursUnexpanded","anyRangesContainRange","constraintToRanges","eventStoreToRanges","outerRanges","VISIBLE_HIDDEN_RE","Scroller","liquidIsAbsolute","isAbsolute","overcomeLeft","overcomeRight","overcomeBottom","needsXScrolling","realClientWidth","getYScrollbarWidth","needsYScrolling","realClientHeight","getXScrollbarWidth","RefMap","masterCallback","currentMap","depths","handleValue","added","refCallback","collect","computeShrinkWidth","chunkEls","shrinkCells","largestWidth","shrinkCell","getSectionHasLiquidHeight","sectionConfig","getAllowYScrolling","renderChunkContent","chunkConfig","isHeader","tableClassName","syncRowHeights","tableMinWidth","tableColGroupNode","rowContent","isColPropsEqual","cols0","cols1","renderMicroColGroup","cols","shrinkWidth","colNodes","colProps","sanitizeShrinkWidth","hasShrinkWidth","getScrollGridClassNames","getSectionClassNames","wholeTableVGrow","renderScrollShim","getStickyHeaderDates","getStickyFooterScrollbar","SimpleScrollGrid","processCols","scrollerRefs","scrollerElRefs","_handleScrollerEl","forceYScrollbars","scrollerClientWidths","scrollerClientHeights","handleSizing","computeScrollerDims","sectionConfigs","sections","microColGroupNode","collapsibleWidth","currentConfig","configCnt","configI","headSectionNodes","bodySectionNodes","footSectionNodes","isBuggy","roleAttrs","outerContent","renderChunkTd","isLiquid","sectionKey","rowSyncHeights","reportRowHeightChange","scrollerEl","section","getSectionByKey","scrollerElRef","scroller","harnessEl","EventContainer","timeText","disableDragging","disableResizing","isDateSelecting","StandardEvent","defaultTimeFormat","renderInnerContent$1","eventContentArg","innerProps","NowIndicatorContainer","isAxis","DAY_NUM_FORMAT","DayCellContainer","refineRenderProps","isMonthStart","showDayNumber","hasCustomDayCellContent","dayNumberText","BgEvent","renderInnerContent","renderFill","fillType","WeekNumberContainer","renderInner","Popover","handleRootEl","handleDocumentMouseDown","handleCloseClick","handleDocumentKeyDown","createPortal","extraAttrs","alignmentEl","alignGridTop","alignmentRect","computeClippedClientRect","clippingParents","clippingParent","popoverDims","popoverTop","popoverLeft","MorePopover","startDate","extraDateSpan","dayEl","MoreLinkContainer","isPopoverOpen","popoverId","handleLinkEl","linkEl","computeRange","buildPublicSeg","allDayDate","allSegs","hiddenSegs","handlePopoverClose","moreCnt","shortText","renderMoreLinkInner","alignmentElRef","popoverContent","updateParentEl","computeEarliestSegStart","computeLatestSegEnd","pickEarliestStart","seg0","seg1","pickLatestEnd","dayGrid","DayTableView","TableDateProfileGenerator","dayGridDay","dayGridWeek","dayGridMonth","dayGridYear","splitSegsByRow","byRow","splitSegsByFirstCol","byCol","splitInteractionByRow","DEFAULT_TABLE_EVENT_TIME_FORMAT","hasListItemDisplay","TableBlockEvent","TableListItemEvent","TableCellMoreLink","compileSegs","invisibleSegs","singlePlacements","isForcedInvisible","DEFAULT_WEEK_NUM_FORMAT","TableCell","dayNumberId","shouldDisplayMonthStart","currentEndIncl","currentFirstYear","currentFirstMonth","currentLastYear","currentLastMonth","renderTopInner","innerElRef","showWeekNumber","forceDayTop","fgContentElRef","fgContent","moreMarginTop","bgContent","computeFgSegPlacement","eventInstanceHeights","DayGridSegHierarchy","hiddenConsumes","segInputs","unknownHeightSegs","eventHeight","segRects","singleColPlacements","multiColPlacements","leftoverMargins","placeRects","allRects","rectsByEachCol","groupRectsByEachCol","currentHeight","currentMarginTop","resliceSeg","absoluteTop","multiPlacements","isFirstCol","moreCnts","moreMarginTops","hiddenEntry","hiddenSpan","spanStart","spanEnd","forceHidden","excludeHidden","touchingEntryId","placeholderEntry","placeholderEntryId","TableRow","cellElRefs","frameElRefs","fgElRefs","segHarnessRefs","framePositions","isForced","updateSizing","businessHoursByCol","bgEventSegsByCol","highlightSegsByCol","getHighlightSegs","mirrorSegsByCol","getMirrorSegs","cell","normalFgNodes","renderFgSegs","mirrorFgNodes","buildMirrorPlacements","mirrorSegs","colPlacements","topsByInstanceId","buildAbsoluteTopHash","placements","showDayNumbers","showWeekNumbers","renderFillSegs","cellMinHeight","currentProps","segPlacements","leftRightCss","isExternalSizingChange","frameEls","newPositionCache","oldInstanceHeights","newInstanceHeights","queryEventInstanceHeights","limitByContentHeight","computeMaxContentHeight","segElMap","firstKey","fcContainerEl","getCellEls","elMap","TableRows","splitBusinessHourSegs","splitBgEventSegs","splitFgEventSegs","splitDateSelectionSegs","rowRefs","businessHourSegsByRow","bgEventSegsByRow","fgEventSegsByRow","dateSelectionSegsByRow","eventDragByRow","eventResizeByRow","renderRowIntro","isSegAllDay","firstCellEl","rowPositions","rowObj","colPositions","getCellRange","getCellEl","Table","needsScrollReset","limitViaBalanced","colGroupNode","requestScrollReset","flushScrollReset","subjectEl","getScrollSubjectEl","scrollEl","DayTableSlicer","dayTableModel","DayTable","slicer","tableRef","headerAlignElRef","buildDayTableRenderRange","endOfWeek","snapToWeek","lastMonthRenderStart","TableView","headerElRef","renderSimpleLayout","headerRowContent","bodyContent","renderHScrollLayout","ScrollGrid","colGroups","buildDayTableModel","headerContent","contentArg","ignoreMouseDepth","listenerCnt","isWindowTouchMoveCancelled","PointerDragging","handleSelector","shouldIgnoreMove","shouldWatchScroll","isTouchDragging","wasTouchScroll","handleMouseDown","shouldIgnoreMouse","isPrimaryMouseButton","tryStart","createEventFromMouse","initScrollWatch","handleMouseMove","handleMouseUp","recordCoords","handleTouchStart","createEventFromTouch","targetEl","handleTouchMove","handleTouchEnd","handleTouchScroll","startIgnoringMouse","prevScrollX","prevPageX","prevScrollY","prevPageY","origPageX","origPageY","listenerCreated","onWindowTouchMove","listenerDestroyed","querySubjectEl","downEl","destroyScrollWatch","cancelTouchScroll","ElementMirror","sourceEl","mirrorEl","sourceElRect","origScreenX","origScreenY","updateElPosition","handleMove","setIsVisible","needsRevertAnimation","doRevertAnimation","finalSourceElRect","getMirrorEl","boxSizing","ScrollGeomCache","scrollController","doesListening","handleScrollChange","origScrollTop","origScrollLeft","computeClientRect","ElementScrollGeomCache","WindowScrollGeomCache","AutoScroller","scrollQuery","maxVelocity","pointerScreenX","pointerScreenY","isAnimating","scrollCaches","everMovedUp","everMovedDown","everMovedLeft","everMovedRight","computeBestEdge","handleSide","msSinceRequest","requestAnimation","scrollStartEl","buildCaches","yDelta","xDelta","scrollCache","invDistance","bestSide","leftDist","rightDist","topDist","bottomDist","queryScrollEls","FeaturefulElementDragging","touchScrollAllowed","mirrorNeedsRevert","isInteracting","isDelayEnded","isDistanceSurpassed","delayTimeoutId","onPointerDown","pointer","startDelay","handleDistanceSurpassed","onPointerMove","distanceSq","autoScroller","onPointerUp","tryStopDrag","handleDelayEnd","tryStartDrag","stopDrag","setIgnoreMove","OffsetTracker","origRect","computeLeft","computeTop","isWithinClipping","isIgnoredClipping","HitDragging","droppableStore","useSubjectCenter","requireInitial","initialHit","movingHit","finalHit","handlePointerDown","processFirstCoord","handleDragStart","handleDragMove","handlePointerUp","releaseHits","handleDragEnd","subjectRect","origPoint","adjustedPoint","queryHitForOffset","slicedSubjectRect","coordAdjust","forceHandle","hit","isHitsEqual","offsetTrackers","interactionSettings","bestHit","offsetTracker","originLeft","originTop","hit0","hit1","buildDatePointApiWithContext","buildDatePointApi","DateClicking","hitDragging","DateSelecting","dragSelection","canSelect","getComponentTouchDelay$1","handleHitUpdate","joinHitsIntoSelection","dateSpan0","dateSpan1","EventDragging","subjectSeg","receivingContext","validMutation","mutatedRelevantEvents","origTarget","initialContext","getComponentTouchDelay","fixedMirrorParent","receivingOptions","computeEventMutation","massagers","massager","displayDrag","clearDrag","updatedEventApi","eventChangeArg","eventRemoveArg","draggedEl","addedEventDef","addedEventInstance","addedEventApi","eventAddArg","SELECTOR","nextContext","prevContext","initialCalendar","EventResizing","draggingSegEl","draggingSeg","querySegEl","computeMutation","isFromStart","OPTION_REFINERS","LISTENER_REFINERS","dateClick","eventDragStart","eventDragStop","eventDrop","eventResizeStart","eventResizeStop","eventReceive","eventLeave","ExternalElementDragging","suppliedDragMeta","droppableEvent","dragMeta","buildDragMeta","canDropElOnCalendar","computeEventForDateSpan","defProps","finalView","addingEvents","getDragMetaFromEl","getEmbeddedElData","prefixedName","InferredElementDragging","mirrorSelector","currentMirrorEl","handlePointerMove","ThirdPartyDraggable","containerOrSettings","itemSelector","UnselectAuto","isRecentPointerDateSelect","matchesCancel","matchesEvent","onSelect","selectInfo","onDocumentPointerDown","onDocumentPointerUp","documentPointer","ListViewHeaderRow","textId","cellId","dayDate","listDayFormat","sideText","listDaySideFormat","sideNavLinkAttrs","DEFAULT_TIME_FORMAT","ListViewEventRow","timeHeaderId","eventHeaderId","dateHeaderId","renderEventInnerContent","interactiveAttrs","buildTimeContent","doAllDay","renderAllDayInner","ListView","computeDateVars","eventStoreToSegs","_eventStoreToSegs","dateHeaderIdRoot","setRootEl","dayDates","dayRanges","renderSegList","renderEmptyMessage","noEventsContent","renderNoEventsInner","noEventsClassNames","noEventsDidMount","noEventsWillUnmount","segsByDay","groupSegsByDay","innerNodes","daySegs","eventRangesToSegs","eventRangeToSegs","viewEnd","createFalsableFormatter","listDay","listWeek","listMonth","listYear","AllDaySplitter","timed","DEFAULT_SLAT_LABEL_FORMAT","TimeColsAxisCell","isLabeled","isoTimeStr","labelFormat","TimeBodyAxis","slatMetas","slatMeta","TimeColsView","allDaySplitter","slatCoords","handleScrollTopRequest","renderHeadAxis","rowKey","frameHeight","renderTableRowAxis","rowHeight","handleSlatCoords","timeContent","isNowIndicator","nowIndicatorTop","safeComputeTop","getAllDayMaxEventProps","TimeColsSlatsCoords","startOfDayDate","timeMs","computeTimeTop","computeDateTop","slatIndex","slatRemainder","slatCoverage","TimeColsSlatsBody","slatElRefs","TimeColsSlats","onCoords","collectSlatEls","splitSegsByCol","segsByCol","splitInteractionByCol","TimeColMoreLink","renderPlainFgSegs","buildPositioning","hiddenGroups","web","buildWeb","siblingRange","findNextLevelSegs","subjectLevel","subjectLateral","subjectEntry","afterSubject","searchIndex","lateralStart","lateralEnd","nextLevelRes","buildNodes","nextLevelNodes","stretchWeb","topLevelNodes","totalThickness","stretchNode","startCoord","prevThickness","endCoord","allThickness","thicknessFraction","newChildren","newThickness","webToRects","cmpDescPressures","extractNode","processNode","stackDepth","stackForward","processNodes","keyFunc","workFunc","computeSegVCoords","colDate","vcoords","TimeColEvent","isShort","TimeCol","isSelectMirror","interactionAffectedInstances","sortedFgSegs","renderNowIndicator","nowIndicatorSegs","segIsInvisible","renderPositionedFgSegs","segVCoords","computeFgSegPlacements","dumbSegs","segRect","dumbSeg","renderHiddenGroups","segPlacement","vStyle","computeSegVStyle","hStyle","computeSegHStyle","isInset","hiddenGroup","positionCss","compileSegsFromEntries","segEntries","segEntry","segHCoords","shouldOverlap","nearCoord","farCoord","hiddenInstances","TimeColsContent","splitNowIndicatorSegs","nowIndicatorSegsByRow","updateCoords","onColCoords","collectCellEls","TimeCols","processSlotOptions","onScrollTopRequest","handleColCoords","colCoords","onSlatCoords","scrollResponder","snapsPerSlot","colIndex","slatTop","slatHeight","snapIndex","snapDurationOverride","DayTimeColsSlicer","DayTimeCols","buildDayRanges","timeColsRef","STOCK_SUB_DURATIONS","buildSlatMetas","explicitLabelInterval","slatTime","slatIterator","labelInterval","computeLabelInterval","slotsPerLabel","metas","buildTimeColsModel","allDaySlot","timeGrid","DayTimeColsView","hasAttachedAxis","hasDetachedAxis","timeGridContent","timeGridDay","timeGridWeek","ng2ViewsBuilder","viewsObject","$default","id$1","Ng2ViewConfig","MergeInjector","UIView","_uiViewData","parentFqn","_viewConfigUpdated","_deregisterUiCanExitHook","_invokeUiCanExitHook","_deregisterUiOnParamsChangedHook","_invokeUiOnParamsChangedHook","_deregisterUIView","uiCanExitFn","uiCanExit","$transition$","uiOnParamsChanged","viewState","getNodeSchema","toSchema","fromSchema","changedToParams","changedKeys","newValues","_disposeLast","_applyUpdatedConfig","_getComponentInjector","componentClass","_componentTarget","_applyInputBindings","newProviders","parentInject","PARENT_INJECT","parentComponentInjector","mergedParentInjector","explicitBoundProps","renamedInputProp","explicitInputTuples","implicitInputTuples","AnchorUISref","openInNewTab","UISref","_anchorUISref","targetState$","_emit","_statesSub","uiSref","uiParams","uiOptions","newTarget","getOptions","inactiveStatus","exact","targetStates","pathMatches","targetParamVals","tailNode","spreadToSubPaths","appendPath","mergeSrefStatus","UISrefStatus","_hostUiSref","_globals","uiSrefStatus","transEvents$","transStart$","transResult","transFinish$","withHostSref","childrenSrefs","_srefs$","_srefs","_srefChangesSub","srefs","targetStates$","sref","getSrefStatus","srefTarget","pathMatchesTarget","isStartEvent","activePath","_setStatus","UISrefActive","rnd","_classesEq","activeEq","_UIROUTER_DIRECTIVES","UIROUTER_DIRECTIVES","UIROUTER_ROOT_MODULE","UIROUTER_MODULE_TOKEN","UIROUTER_STATES","applyModuleConfig","applyRootModuleConfig","loadNgModule","moduleToLoad","ng2Injector","loadModuleFactory","applyNgModule","ng2Module","originalName","originalState","replacementName","newRootModules","multiProviderParentChildDelta","newChildModules","newStateObjects","replacementState","newParentStates","childVals","parentVals","ng2LazyLoadBuilder","loadNgModuleFn","loadChildren","Ng2LocationServices","hashWithPrefix","urlPath","Ng2LocationConfig","uiRouterFactory","rootModules","ng2InjectorResolvable","moduleConfig","appInitializer","parentUIViewInjectFactory","_UIROUTER_INSTANCE_PROVIDERS","fnStateService","fnTransitionService","fnUrlMatcherFactory","fnUrlRouter","fnUrlService","fnViewService","fnStateRegistry","fnGlobals","_UIROUTER_SERVICE_PROVIDERS","UIROUTER_PROVIDERS","onTransitionReady","deferInitialRender","makeRootProviders","makeChildProviders","useHash","UIRouterModule","copyTextToClipboard","previouslyFocusedElement","originalRange","execCommand","CookieService","documentIsAccessible","escapedName","encodedURIComponent","getCookieRegExp","safeDecodeURIComponent","cookies","currentCookie","expiresOrOptions","secure","sameSite","optionsBody","expires","toUTCString","expiresDate","deleteAll","zero$1","LITERALS$1","L_CODES$1","D_CODES$1","MAX_MATCH$1","MAX_BITS$1","sym_next","sym_buf","_tr_stored_block$1","LENGTH_CODES$1","block_mask","BL_CODES$1","sym_end","adler32_1","crc32_1","constants$2","Z_NO_FLUSH$2","Z_FULL_FLUSH$1","Z_FINISH$3","Z_BLOCK$1","Z_OK$3","Z_STREAM_END$3","Z_STREAM_ERROR$2","Z_DATA_ERROR$2","Z_BUF_ERROR$1","Z_DEFAULT_COMPRESSION$1","Z_DEFAULT_STRATEGY$1","Z_DEFLATED$2","slide_hash","HASH","min_block","high_water","deflateStateCheck","deflate_1$2","level_flags","gzhead_extra","TextEncoder","TextDecoder","zstream","toString$1","Z_NO_FLUSH$1","Z_FINISH$2","Z_OK$2","Z_STREAM_END$2","Z_DEFLATED$1","Deflate$1","deflate$1","flush_mode","_flush_mode","deflate_1$1","deflateRaw$1","gzip$1","constants","BAD$1","inffast","inftrees","Z_FINISH$1","Z_OK$1","Z_STREAM_END$1","Z_NEED_DICT$1","Z_STREAM_ERROR$1","Z_DATA_ERROR$1","Z_MEM_ERROR$1","inflateStateCheck","inflate_1$2","dictid","gzheader","Inflate$1","last_avail_out","inflate_1$1","inflateRaw$1","deflate_1","asyncGeneratorStep"],"sourceRoot":"webpack:///","sources":["./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/@datorama/akita/__ivy_ngcc__/fesm2015/datorama-akita.js","./node_modules/@kolkov/ngx-gallery/__ivy_ngcc__/fesm2015/kolkov-ngx-gallery.js","./node_modules/@ng-select/ng-option-highlight/__ivy_ngcc__/fesm2015/ng-select-ng-option-highlight.js","./node_modules/@ng-select/ng-select/__ivy_ngcc__/fesm2015/ng-select-ng-select.js","./node_modules/@ngneat/content-loader/__ivy_ngcc__/fesm2015/ngneat-content-loader.js","./node_modules/@ngx-formly/core/node_modules/tslib/tslib.es6.js","./node_modules/@ngx-formly/core/__ivy_ngcc__/fesm2015/ngx-formly-core.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/common/common.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/common/coreservices.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/common/glob.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/common/hof.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/common/predicates.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/common/queue.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/common/safeConsole.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/common/strings.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/common/trace.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/globals.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/hooks/lazyLoad.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/interface.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/params/param.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/params/paramType.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/params/paramTypes.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/params/stateParams.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/path/pathNode.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/path/pathUtils.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/resolve/interface.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/resolve/resolvable.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/resolve/resolveContext.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/router.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/state/stateBuilder.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/state/stateMatcher.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/state/stateObject.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/state/stateQueueManager.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/state/stateRegistry.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/state/stateService.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/state/targetState.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/transition/hookBuilder.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/transition/hookRegistry.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/transition/interface.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/transition/rejectFactory.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/transition/transition.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/transition/transitionEventType.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/transition/transitionHook.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/hooks/coreResolvables.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/hooks/redirectTo.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/hooks/onEnterExitRetain.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/hooks/resolve.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/hooks/views.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/hooks/updateGlobals.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/hooks/url.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/hooks/ignoredTransition.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/hooks/invalidTransition.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/transition/transitionService.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/url/urlConfig.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/url/urlMatcher.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/url/urlMatcherFactory.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/url/urlRouter.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/url/urlRule.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/url/urlRules.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/url/urlService.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/vanilla/baseLocationService.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/vanilla/browserLocationConfig.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/vanilla/hashLocationService.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/vanilla/injector.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/vanilla/memoryLocationConfig.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/vanilla/memoryLocationService.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/vanilla/plugins.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/vanilla/pushStateLocationService.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/vanilla/q.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/vanilla/utils.js","./node_modules/@uirouter/core/__ivy_ngcc__/lib-esm/view/view.js","./node_modules/@uirouter/rx/lib-esm/ui-router-rx.js","./node_modules/@w11k/ngx-componentdestroyed/dist/es2015/index.js","./node_modules/@xeokit/xeokit-bim-viewer/dist/xeokit-bim-viewer.es.js","./node_modules/@xeokit/xeokit-sdk/dist/xeokit-sdk.es.js","./node_modules/atoa/atoa.js","./node_modules/byte-base64/lib.js","./node_modules/chart.js/dist/Chart.js","./node_modules/chartjs-plugin-datalabels/dist/chartjs-plugin-datalabels.js","./node_modules/contra/debounce.js","./node_modules/contra/emitter.js","./node_modules/create-point-cb/dist/bundle.js","./node_modules/crossvent/src/crossvent.js","./node_modules/crossvent/src/eventmap.js","./node_modules/custom-event/index.js","./node_modules/d/auto-bind.js","./node_modules/d/index.js","./node_modules/d/lazy.js","./node_modules/dom-plane/dist/bundle.js","./node_modules/dragula/classes.js","./node_modules/dragula/dist/dragula.min.js","./node_modules/dragula/dragula.js","./node_modules/es5-ext/array/#/concat/index.js","./node_modules/es5-ext/array/#/concat/is-implemented.js","./node_modules/es5-ext/array/#/concat/shim.js","./node_modules/es5-ext/array/#/e-index-of.js","./node_modules/es5-ext/array/#/is-copy.js","./node_modules/es5-ext/array/#/remove.js","./node_modules/es5-ext/array/#/splice/index.js","./node_modules/es5-ext/array/#/splice/is-implemented.js","./node_modules/es5-ext/array/#/splice/shim.js","./node_modules/es5-ext/array/_is-extensible.js","./node_modules/es5-ext/array/_sub-array-dummy-safe.js","./node_modules/es5-ext/array/_sub-array-dummy.js","./node_modules/es5-ext/array/from/index.js","./node_modules/es5-ext/array/from/is-implemented.js","./node_modules/es5-ext/array/from/shim.js","./node_modules/es5-ext/array/is-plain-array.js","./node_modules/es5-ext/array/to-array.js","./node_modules/es5-ext/array/valid-array.js","./node_modules/es5-ext/error/custom.js","./node_modules/es5-ext/function/_define-length.js","./node_modules/es5-ext/function/identity.js","./node_modules/es5-ext/function/invoke.js","./node_modules/es5-ext/function/is-arguments.js","./node_modules/es5-ext/function/is-function.js","./node_modules/es5-ext/function/noop.js","./node_modules/es5-ext/function/valid-function.js","./node_modules/es5-ext/math/sign/index.js","./node_modules/es5-ext/math/sign/is-implemented.js","./node_modules/es5-ext/math/sign/shim.js","./node_modules/es5-ext/node_modules/d/index.js","./node_modules/es5-ext/node_modules/es6-symbol/index.js","./node_modules/es5-ext/node_modules/es6-symbol/is-implemented.js","./node_modules/es5-ext/node_modules/es6-symbol/is-symbol.js","./node_modules/es5-ext/node_modules/es6-symbol/lib/private/generate-name.js","./node_modules/es5-ext/node_modules/es6-symbol/lib/private/setup/standard-symbols.js","./node_modules/es5-ext/node_modules/es6-symbol/lib/private/setup/symbol-registry.js","./node_modules/es5-ext/node_modules/es6-symbol/polyfill.js","./node_modules/es5-ext/node_modules/es6-symbol/validate-symbol.js","./node_modules/es5-ext/number/is-nan/index.js","./node_modules/es5-ext/number/is-nan/is-implemented.js","./node_modules/es5-ext/number/is-nan/shim.js","./node_modules/es5-ext/number/to-integer.js","./node_modules/es5-ext/number/to-pos-integer.js","./node_modules/es5-ext/object/_iterate.js","./node_modules/es5-ext/object/assign/index.js","./node_modules/es5-ext/object/assign/is-implemented.js","./node_modules/es5-ext/object/assign/shim.js","./node_modules/es5-ext/object/copy.js","./node_modules/es5-ext/object/create.js","./node_modules/es5-ext/object/eq.js","./node_modules/es5-ext/object/for-each.js","./node_modules/es5-ext/object/is-callable.js","./node_modules/es5-ext/object/is-object.js","./node_modules/es5-ext/object/is-value.js","./node_modules/es5-ext/object/keys/index.js","./node_modules/es5-ext/object/keys/is-implemented.js","./node_modules/es5-ext/object/keys/shim.js","./node_modules/es5-ext/object/map.js","./node_modules/es5-ext/object/mixin-prototypes.js","./node_modules/es5-ext/object/mixin.js","./node_modules/es5-ext/object/normalize-options.js","./node_modules/es5-ext/object/set-prototype-of/index.js","./node_modules/es5-ext/object/set-prototype-of/is-implemented.js","./node_modules/es5-ext/object/set-prototype-of/shim.js","./node_modules/es5-ext/object/valid-callable.js","./node_modules/es5-ext/object/valid-value.js","./node_modules/es5-ext/string/#/contains/index.js","./node_modules/es5-ext/string/#/contains/is-implemented.js","./node_modules/es5-ext/string/#/contains/shim.js","./node_modules/es5-ext/string/is-string.js","./node_modules/es6-symbol/index.js","./node_modules/es6-symbol/is-implemented.js","./node_modules/es6-symbol/is-symbol.js","./node_modules/event-emitter/node_modules/d/index.js","./node_modules/es6-symbol/polyfill.js","./node_modules/es6-symbol/validate-symbol.js","./node_modules/event-emitter/index.js","./node_modules/ext/global-this/implementation.js","./node_modules/ext/global-this/index.js","./node_modules/ext/global-this/is-implemented.js","./node_modules/flatpickr/dist/esm/types/options.js","./node_modules/flatpickr/dist/esm/l10n/default.js","./node_modules/flatpickr/dist/esm/utils/index.js","./node_modules/flatpickr/dist/esm/utils/dom.js","./node_modules/flatpickr/dist/esm/utils/formatting.js","./node_modules/flatpickr/dist/esm/utils/dates.js","./node_modules/flatpickr/dist/esm/index.js","./node_modules/flatpickr/dist/esm/utils/polyfills.js","./node_modules/fuse.js/dist/fuse.js","./node_modules/hammerjs/hammer.js","./node_modules/jquery-ui/ui/core.js","./node_modules/jquery-ui/ui/data.js","./node_modules/jquery-ui/ui/disable-selection.js","./node_modules/jquery-ui/ui/focusable.js","./node_modules/jquery-ui/ui/form-reset-mixin.js","./node_modules/jquery-ui/ui/form.js","./node_modules/jquery-ui/ui/ie.js","./node_modules/jquery-ui/ui/keycode.js","./node_modules/jquery-ui/ui/labels.js","./node_modules/jquery-ui/ui/plugin.js","./node_modules/jquery-ui/ui/position.js","./node_modules/jquery-ui/ui/safe-active-element.js","./node_modules/jquery-ui/ui/safe-blur.js","./node_modules/jquery-ui/ui/scroll-parent.js","./node_modules/jquery-ui/ui/tabbable.js","./node_modules/jquery-ui/ui/unique-id.js","./node_modules/jquery-ui/ui/version.js","./node_modules/jquery-ui/ui/widget.js","./node_modules/jquery-ui/ui/widgets/button.js","./node_modules/jquery-ui/ui/widgets/checkboxradio.js","./node_modules/jquery-ui/ui/widgets/controlgroup.js","./node_modules/jquery-ui/ui/widgets/dialog.js","./node_modules/jquery-ui/ui/widgets/draggable.js","./node_modules/jquery-ui/ui/widgets/mouse.js","./node_modules/jquery-ui/ui/widgets/resizable.js","./node_modules/jquery-ui/ui/widgets/sortable.js","./node_modules/jquery-ui/ui/widgets/tooltip.js","./node_modules/jquery-ujs/src/rails.js","./node_modules/jquery.caret/dist/jquery.caret.js","./node_modules/jquery/dist/jquery.js","./node_modules/lodash/lodash.js","./node_modules/mark.js/dist/jquery.mark.min.js","./node_modules/memoizee/ext/dispose.js","./node_modules/memoizee/ext/ref-counter.js","./node_modules/memoizee/lib/configure-map.js","./node_modules/memoizee/lib/methods.js","./node_modules/memoizee/lib/resolve-length.js","./node_modules/memoizee/lib/resolve-normalize.js","./node_modules/memoizee/lib/resolve-resolve.js","./node_modules/memoizee/methods-plain.js","./node_modules/memoizee/normalizers/get-1.js","./node_modules/memoizee/normalizers/get-fixed.js","./node_modules/memoizee/normalizers/get-primitive-fixed.js","./node_modules/memoizee/plain.js","./node_modules/mime/Mime.js","./node_modules/mime/index.js","./node_modules/mime/types/other.js","./node_modules/mime/types/standard.js","./node_modules/moment-timezone/builds/moment-timezone-with-data.min.js","./node_modules/moment-timezone/index.js","./node_modules/moment-timezone/moment-timezone.js","./node_modules/moment/locale/af.js","./node_modules/moment/locale/ar-dz.js","./node_modules/moment/locale/ar-kw.js","./node_modules/moment/locale/ar-ly.js","./node_modules/moment/locale/ar-ma.js","./node_modules/moment/locale/ar-sa.js","./node_modules/moment/locale/ar-tn.js","./node_modules/moment/locale/ar.js","./node_modules/moment/locale/az.js","./node_modules/moment/locale/be.js","./node_modules/moment/locale/bg.js","./node_modules/moment/locale/bm.js","./node_modules/moment/locale/bn-bd.js","./node_modules/moment/locale/bn.js","./node_modules/moment/locale/bo.js","./node_modules/moment/locale/br.js","./node_modules/moment/locale/bs.js","./node_modules/moment/locale/ca.js","./node_modules/moment/locale/cs.js","./node_modules/moment/locale/cv.js","./node_modules/moment/locale/cy.js","./node_modules/moment/locale/da.js","./node_modules/moment/locale/de-at.js","./node_modules/moment/locale/de-ch.js","./node_modules/moment/locale/de.js","./node_modules/moment/locale/dv.js","./node_modules/moment/locale/el.js","./node_modules/moment/locale/en-au.js","./node_modules/moment/locale/en-ca.js","./node_modules/moment/locale/en-gb.js","./node_modules/moment/locale/en-ie.js","./node_modules/moment/locale/en-il.js","./node_modules/moment/locale/en-in.js","./node_modules/moment/locale/en-nz.js","./node_modules/moment/locale/en-sg.js","./node_modules/moment/locale/eo.js","./node_modules/moment/locale/es-do.js","./node_modules/moment/locale/es-mx.js","./node_modules/moment/locale/es-us.js","./node_modules/moment/locale/es.js","./node_modules/moment/locale/et.js","./node_modules/moment/locale/eu.js","./node_modules/moment/locale/fa.js","./node_modules/moment/locale/fi.js","./node_modules/moment/locale/fil.js","./node_modules/moment/locale/fo.js","./node_modules/moment/locale/fr-ca.js","./node_modules/moment/locale/fr-ch.js","./node_modules/moment/locale/fr.js","./node_modules/moment/locale/fy.js","./node_modules/moment/locale/ga.js","./node_modules/moment/locale/gd.js","./node_modules/moment/locale/gl.js","./node_modules/moment/locale/gom-deva.js","./node_modules/moment/locale/gom-latn.js","./node_modules/moment/locale/gu.js","./node_modules/moment/locale/he.js","./node_modules/moment/locale/hi.js","./node_modules/moment/locale/hr.js","./node_modules/moment/locale/hu.js","./node_modules/moment/locale/hy-am.js","./node_modules/moment/locale/id.js","./node_modules/moment/locale/is.js","./node_modules/moment/locale/it-ch.js","./node_modules/moment/locale/it.js","./node_modules/moment/locale/ja.js","./node_modules/moment/locale/jv.js","./node_modules/moment/locale/ka.js","./node_modules/moment/locale/kk.js","./node_modules/moment/locale/km.js","./node_modules/moment/locale/kn.js","./node_modules/moment/locale/ko.js","./node_modules/moment/locale/ku.js","./node_modules/moment/locale/ky.js","./node_modules/moment/locale/lb.js","./node_modules/moment/locale/lo.js","./node_modules/moment/locale/lt.js","./node_modules/moment/locale/lv.js","./node_modules/moment/locale/me.js","./node_modules/moment/locale/mi.js","./node_modules/moment/locale/mk.js","./node_modules/moment/locale/ml.js","./node_modules/moment/locale/mn.js","./node_modules/moment/locale/mr.js","./node_modules/moment/locale/ms-my.js","./node_modules/moment/locale/ms.js","./node_modules/moment/locale/mt.js","./node_modules/moment/locale/my.js","./node_modules/moment/locale/nb.js","./node_modules/moment/locale/ne.js","./node_modules/moment/locale/nl-be.js","./node_modules/moment/locale/nl.js","./node_modules/moment/locale/nn.js","./node_modules/moment/locale/oc-lnc.js","./node_modules/moment/locale/pa-in.js","./node_modules/moment/locale/pl.js","./node_modules/moment/locale/pt-br.js","./node_modules/moment/locale/pt.js","./node_modules/moment/locale/ro.js","./node_modules/moment/locale/ru.js","./node_modules/moment/locale/sd.js","./node_modules/moment/locale/se.js","./node_modules/moment/locale/si.js","./node_modules/moment/locale/sk.js","./node_modules/moment/locale/sl.js","./node_modules/moment/locale/sq.js","./node_modules/moment/locale/sr-cyrl.js","./node_modules/moment/locale/sr.js","./node_modules/moment/locale/ss.js","./node_modules/moment/locale/sv.js","./node_modules/moment/locale/sw.js","./node_modules/moment/locale/ta.js","./node_modules/moment/locale/te.js","./node_modules/moment/locale/tet.js","./node_modules/moment/locale/tg.js","./node_modules/moment/locale/th.js","./node_modules/moment/locale/tk.js","./node_modules/moment/locale/tl-ph.js","./node_modules/moment/locale/tlh.js","./node_modules/moment/locale/tr.js","./node_modules/moment/locale/tzl.js","./node_modules/moment/locale/tzm-latn.js","./node_modules/moment/locale/tzm.js","./node_modules/moment/locale/ug-cn.js","./node_modules/moment/locale/uk.js","./node_modules/moment/locale/ur.js","./node_modules/moment/locale/uz-latn.js","./node_modules/moment/locale/uz.js","./node_modules/moment/locale/vi.js","./node_modules/moment/locale/x-pseudo.js","./node_modules/moment/locale/yo.js","./node_modules/moment/locale/zh-cn.js","./node_modules/moment/locale/zh-hk.js","./node_modules/moment/locale/zh-mo.js","./node_modules/moment/locale/zh-tw.js","./node_modules/moment/moment.js","./node_modules/mousetrap/mousetrap.js","./node_modules/ng-dynamic-component/__ivy_ngcc__/fesm2015/ng-dynamic-component.js","./node_modules/lodash-es/_listCacheClear.js","./node_modules/lodash-es/eq.js","./node_modules/lodash-es/_assocIndexOf.js","./node_modules/lodash-es/_listCacheDelete.js","./node_modules/lodash-es/_listCacheGet.js","./node_modules/lodash-es/_listCacheHas.js","./node_modules/lodash-es/_listCacheSet.js","./node_modules/lodash-es/_ListCache.js","./node_modules/lodash-es/_stackClear.js","./node_modules/lodash-es/_stackDelete.js","./node_modules/lodash-es/_stackGet.js","./node_modules/lodash-es/_stackHas.js","./node_modules/lodash-es/_freeGlobal.js","./node_modules/lodash-es/_root.js","./node_modules/lodash-es/_Symbol.js","./node_modules/lodash-es/_getRawTag.js","./node_modules/lodash-es/_objectToString.js","./node_modules/lodash-es/_baseGetTag.js","./node_modules/lodash-es/isObject.js","./node_modules/lodash-es/isFunction.js","./node_modules/lodash-es/_coreJsData.js","./node_modules/lodash-es/_isMasked.js","./node_modules/lodash-es/_toSource.js","./node_modules/lodash-es/_baseIsNative.js","./node_modules/lodash-es/_getValue.js","./node_modules/lodash-es/_getNative.js","./node_modules/lodash-es/_Map.js","./node_modules/lodash-es/_nativeCreate.js","./node_modules/lodash-es/_hashClear.js","./node_modules/lodash-es/_hashDelete.js","./node_modules/lodash-es/_hashGet.js","./node_modules/lodash-es/_hashHas.js","./node_modules/lodash-es/_hashSet.js","./node_modules/lodash-es/_Hash.js","./node_modules/lodash-es/_mapCacheClear.js","./node_modules/lodash-es/_isKeyable.js","./node_modules/lodash-es/_getMapData.js","./node_modules/lodash-es/_mapCacheDelete.js","./node_modules/lodash-es/_mapCacheGet.js","./node_modules/lodash-es/_mapCacheHas.js","./node_modules/lodash-es/_mapCacheSet.js","./node_modules/lodash-es/_MapCache.js","./node_modules/lodash-es/_stackSet.js","./node_modules/lodash-es/_Stack.js","./node_modules/lodash-es/_arrayEach.js","./node_modules/lodash-es/_defineProperty.js","./node_modules/lodash-es/_baseAssignValue.js","./node_modules/lodash-es/_assignValue.js","./node_modules/lodash-es/_copyObject.js","./node_modules/lodash-es/_baseTimes.js","./node_modules/lodash-es/isObjectLike.js","./node_modules/lodash-es/_baseIsArguments.js","./node_modules/lodash-es/isArguments.js","./node_modules/lodash-es/isArray.js","./node_modules/lodash-es/stubFalse.js","./node_modules/lodash-es/isBuffer.js","./node_modules/lodash-es/_isIndex.js","./node_modules/lodash-es/isLength.js","./node_modules/lodash-es/_baseIsTypedArray.js","./node_modules/lodash-es/_baseUnary.js","./node_modules/lodash-es/_nodeUtil.js","./node_modules/lodash-es/isTypedArray.js","./node_modules/lodash-es/_arrayLikeKeys.js","./node_modules/lodash-es/_isPrototype.js","./node_modules/lodash-es/_overArg.js","./node_modules/lodash-es/_nativeKeys.js","./node_modules/lodash-es/_baseKeys.js","./node_modules/lodash-es/isArrayLike.js","./node_modules/lodash-es/keys.js","./node_modules/lodash-es/_baseAssign.js","./node_modules/lodash-es/_nativeKeysIn.js","./node_modules/lodash-es/_baseKeysIn.js","./node_modules/lodash-es/keysIn.js","./node_modules/lodash-es/_baseAssignIn.js","./node_modules/lodash-es/_cloneBuffer.js","./node_modules/lodash-es/_copyArray.js","./node_modules/lodash-es/_arrayFilter.js","./node_modules/lodash-es/stubArray.js","./node_modules/lodash-es/_getSymbols.js","./node_modules/lodash-es/_copySymbols.js","./node_modules/lodash-es/_arrayPush.js","./node_modules/lodash-es/_getPrototype.js","./node_modules/lodash-es/_getSymbolsIn.js","./node_modules/lodash-es/_copySymbolsIn.js","./node_modules/lodash-es/_baseGetAllKeys.js","./node_modules/lodash-es/_getAllKeys.js","./node_modules/lodash-es/_getAllKeysIn.js","./node_modules/lodash-es/_DataView.js","./node_modules/lodash-es/_Promise.js","./node_modules/lodash-es/_Set.js","./node_modules/lodash-es/_WeakMap.js","./node_modules/lodash-es/_getTag.js","./node_modules/lodash-es/_initCloneArray.js","./node_modules/lodash-es/_Uint8Array.js","./node_modules/lodash-es/_cloneArrayBuffer.js","./node_modules/lodash-es/_cloneDataView.js","./node_modules/lodash-es/_cloneRegExp.js","./node_modules/lodash-es/_cloneSymbol.js","./node_modules/lodash-es/_cloneTypedArray.js","./node_modules/lodash-es/_initCloneByTag.js","./node_modules/lodash-es/_baseCreate.js","./node_modules/lodash-es/_initCloneObject.js","./node_modules/lodash-es/_baseIsMap.js","./node_modules/lodash-es/isMap.js","./node_modules/lodash-es/_baseIsSet.js","./node_modules/lodash-es/isSet.js","./node_modules/lodash-es/_baseClone.js","./node_modules/lodash-es/cloneDeep.js","./node_modules/ng2-charts/__ivy_ngcc__/fesm2015/ng2-charts.js","./node_modules/ng2-dragula/__ivy_ngcc__/dist/fesm2015/ng2-dragula.js","./node_modules/observable-array/create-read-only.js","./node_modules/observable-array/create.js","./node_modules/observable-array/filter-map-slice-sorted.js","./node_modules/observable-array/index.js","./node_modules/observable-array/is-observable-array.js","./node_modules/observable-array/length.js","./node_modules/observable-array/valid-observable-array.js","./node_modules/observable-value/_and-or.js","./node_modules/observable-value/_eq.js","./node_modules/observable-value/_reduce.js","./node_modules/observable-value/add.js","./node_modules/observable-value/and.js","./node_modules/observable-value/create-read-only.js","./node_modules/observable-value/eq-sloppy.js","./node_modules/observable-value/eq.js","./node_modules/observable-value/gt-or-eq.js","./node_modules/observable-value/gt.js","./node_modules/observable-value/index.js","./node_modules/observable-value/is-observable-value.js","./node_modules/observable-value/is-observable.js","./node_modules/observable-value/lt-or-eq.js","./node_modules/observable-value/lt.js","./node_modules/observable-value/map.js","./node_modules/observable-value/not.js","./node_modules/observable-value/or.js","./node_modules/observable-value/subtract.js","./node_modules/observable-value/symbol-is-observable.js","./node_modules/preact/hooks/dist/hooks.module.js","./node_modules/preact/compat/dist/compat.module.js","./node_modules/preact/dist/preact.module.js","./node_modules/reactivestates/dist/es2015/nil.js","./node_modules/reactivestates/dist/es2015/log.js","./node_modules/reactivestates/dist/es2015/State.js","./node_modules/reactivestates/dist/es2015/Combiner.js","./node_modules/reactivestates/dist/es2015/StatesGroup.js","./node_modules/reactivestates/dist/es2015/DerivedState.js","./node_modules/reactivestates/dist/es2015/InputState.js","./node_modules/reactivestates/dist/es2015/MultiInputState.js","./node_modules/reflect-metadata/Reflect.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/innerSubscribe.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/interval.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/never.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/observable/zip.js","./node_modules/rxjs/_esm2015/internal/operators/audit.js","./node_modules/rxjs/_esm2015/internal/operators/auditTime.js","./node_modules/rxjs/_esm2015/internal/operators/buffer.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/debounce.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/rxjs/_esm2015/internal/operators/groupBy.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mapTo.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/pairwise.js","./node_modules/rxjs/_esm2015/internal/operators/pluck.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/reduce.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/shareReplay.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/takeWhile.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throttle.js","./node_modules/rxjs/_esm2015/internal/operators/throttleTime.js","./node_modules/rxjs/_esm2015/internal/util/TimeoutError.js","./node_modules/rxjs/_esm2015/internal/operators/timeoutWith.js","./node_modules/rxjs/_esm2015/internal/operators/timeout.js","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js","./node_modules/rxjs/_esm2015/internal/util/Immediate.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/asap.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isObservable.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/rxjs/internal/Observable.js","./node_modules/rxjs/internal/Observer.js","./node_modules/rxjs/internal/Subscriber.js","./node_modules/rxjs/internal/Subscription.js","./node_modules/rxjs/internal/config.js","./node_modules/rxjs/internal/observable/empty.js","./node_modules/rxjs/internal/operators/take.js","./node_modules/rxjs/internal/symbol/observable.js","./node_modules/rxjs/internal/symbol/rxSubscriber.js","./node_modules/rxjs/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/internal/util/UnsubscriptionError.js","./node_modules/rxjs/internal/util/canReportError.js","./node_modules/rxjs/internal/util/hostReportError.js","./node_modules/rxjs/internal/util/identity.js","./node_modules/rxjs/internal/util/isArray.js","./node_modules/rxjs/internal/util/isFunction.js","./node_modules/rxjs/internal/util/isObject.js","./node_modules/rxjs/internal/util/pipe.js","./node_modules/rxjs/internal/util/toSubscriber.js","./node_modules/screenfull/dist/screenfull.js","./node_modules/ticky/ticky-browser.js","./node_modules/ts-action-operators/esm2015/ofType.js","./node_modules/ts-action/esm2015/action.js","./node_modules/type-func/dist/bundle.js","./node_modules/type/function/is.js","./node_modules/type/object/is.js","./node_modules/type/plain-function/is.js","./node_modules/type/prototype/is.js","./node_modules/type/value/is.js","./node_modules/typedjson/lib/esm/helpers.js","./node_modules/typedjson/lib/esm/json-array-member.js","./node_modules/typedjson/lib/esm/json-member.js","./node_modules/typedjson/lib/esm/json-object.js","./node_modules/typedjson/lib/esm/metadata.js","./node_modules/typedjson/lib/esm/options-base.js","./node_modules/typedjson/lib/esm/deserializer.js","./node_modules/typedjson/lib/esm/serializer.js","./node_modules/typedjson/lib/esm/parser.js","./node_modules/typedjson/lib/esm/type-descriptor.js","./node_modules/urijs/src/IPv6.js","./node_modules/urijs/src/SecondLevelDomains.js","./node_modules/urijs/src/URI.js","./node_modules/urijs/src/URITemplate.js","./node_modules/urijs/src/punycode.js","./node_modules/uuid/dist/esm-browser/rng.js","./node_modules/uuid/dist/esm-browser/regex.js","./node_modules/uuid/dist/esm-browser/validate.js","./node_modules/uuid/dist/esm-browser/stringify.js","./node_modules/uuid/dist/esm-browser/v4.js","./node_modules/urijs/src/URI.js-exposed","./node_modules/lodash/lodash.js-exposed","./node_modules/dragula/dist/dragula.min.js-exposed","./node_modules/jquery/dist/jquery.js-exposed","./node_modules/moment/moment.js-exposed","./node_modules/mousetrap/mousetrap.js-exposed","./node_modules/tslib/tslib.es6.js","./node_modules/@fullcalendar/core/locales-all.cjs","./node_modules/@fullcalendar/core/locales/af.cjs","./node_modules/@fullcalendar/core/locales/ar-dz.cjs","./node_modules/@fullcalendar/core/locales/ar-kw.cjs","./node_modules/@fullcalendar/core/locales/ar-ly.cjs","./node_modules/@fullcalendar/core/locales/ar-ma.cjs","./node_modules/@fullcalendar/core/locales/ar-sa.cjs","./node_modules/@fullcalendar/core/locales/ar-tn.cjs","./node_modules/@fullcalendar/core/locales/ar.cjs","./node_modules/@fullcalendar/core/locales/az.cjs","./node_modules/@fullcalendar/core/locales/bg.cjs","./node_modules/@fullcalendar/core/locales/bn.cjs","./node_modules/@fullcalendar/core/locales/bs.cjs","./node_modules/@fullcalendar/core/locales/ca.cjs","./node_modules/@fullcalendar/core/locales/cs.cjs","./node_modules/@fullcalendar/core/locales/cy.cjs","./node_modules/@fullcalendar/core/locales/da.cjs","./node_modules/@fullcalendar/core/locales/de-at.cjs","./node_modules/@fullcalendar/core/locales/de.cjs","./node_modules/@fullcalendar/core/locales/el.cjs","./node_modules/@fullcalendar/core/locales/en-au.cjs","./node_modules/@fullcalendar/core/locales/en-gb.cjs","./node_modules/@fullcalendar/core/locales/en-nz.cjs","./node_modules/@fullcalendar/core/locales/eo.cjs","./node_modules/@fullcalendar/core/locales/es-us.cjs","./node_modules/@fullcalendar/core/locales/es.cjs","./node_modules/@fullcalendar/core/locales/et.cjs","./node_modules/@fullcalendar/core/locales/eu.cjs","./node_modules/@fullcalendar/core/locales/fa.cjs","./node_modules/@fullcalendar/core/locales/fi.cjs","./node_modules/@fullcalendar/core/locales/fr-ca.cjs","./node_modules/@fullcalendar/core/locales/fr-ch.cjs","./node_modules/@fullcalendar/core/locales/fr.cjs","./node_modules/@fullcalendar/core/locales/gl.cjs","./node_modules/@fullcalendar/core/locales/he.cjs","./node_modules/@fullcalendar/core/locales/hi.cjs","./node_modules/@fullcalendar/core/locales/hr.cjs","./node_modules/@fullcalendar/core/locales/hu.cjs","./node_modules/@fullcalendar/core/locales/hy-am.cjs","./node_modules/@fullcalendar/core/locales/id.cjs","./node_modules/@fullcalendar/core/locales/is.cjs","./node_modules/@fullcalendar/core/locales/it.cjs","./node_modules/@fullcalendar/core/locales/ja.cjs","./node_modules/@fullcalendar/core/locales/ka.cjs","./node_modules/@fullcalendar/core/locales/kk.cjs","./node_modules/@fullcalendar/core/locales/km.cjs","./node_modules/@fullcalendar/core/locales/ko.cjs","./node_modules/@fullcalendar/core/locales/ku.cjs","./node_modules/@fullcalendar/core/locales/lb.cjs","./node_modules/@fullcalendar/core/locales/lt.cjs","./node_modules/@fullcalendar/core/locales/lv.cjs","./node_modules/@fullcalendar/core/locales/mk.cjs","./node_modules/@fullcalendar/core/locales/ms.cjs","./node_modules/@fullcalendar/core/locales/nb.cjs","./node_modules/@fullcalendar/core/locales/ne.cjs","./node_modules/@fullcalendar/core/locales/nl.cjs","./node_modules/@fullcalendar/core/locales/nn.cjs","./node_modules/@fullcalendar/core/locales/pl.cjs","./node_modules/@fullcalendar/core/locales/pt-br.cjs","./node_modules/@fullcalendar/core/locales/pt.cjs","./node_modules/@fullcalendar/core/locales/ro.cjs","./node_modules/@fullcalendar/core/locales/ru.cjs","./node_modules/@fullcalendar/core/locales/si-lk.cjs","./node_modules/@fullcalendar/core/locales/sk.cjs","./node_modules/@fullcalendar/core/locales/sl.cjs","./node_modules/@fullcalendar/core/locales/sm.cjs","./node_modules/@fullcalendar/core/locales/sq.cjs","./node_modules/@fullcalendar/core/locales/sr-cyrl.cjs","./node_modules/@fullcalendar/core/locales/sr.cjs","./node_modules/@fullcalendar/core/locales/sv.cjs","./node_modules/@fullcalendar/core/locales/ta-in.cjs","./node_modules/@fullcalendar/core/locales/th.cjs","./node_modules/@fullcalendar/core/locales/tr.cjs","./node_modules/@fullcalendar/core/locales/ug.cjs","./node_modules/@fullcalendar/core/locales/uk.cjs","./node_modules/@fullcalendar/core/locales/uz-cy.cjs","./node_modules/@fullcalendar/core/locales/uz.cjs","./node_modules/@fullcalendar/core/locales/vi.cjs","./node_modules/@fullcalendar/core/locales/zh-cn.cjs","./node_modules/@fullcalendar/core/locales/zh-tw.cjs","./node_modules/@angular/cdk/fesm2020/observers.mjs","./node_modules/@angular/cdk/fesm2020/layout.mjs","./node_modules/@angular/cdk/fesm2020/a11y.mjs","./node_modules/@angular/cdk/fesm2020/keycodes.mjs","./node_modules/@angular/cdk/fesm2020/bidi.mjs","./node_modules/@angular/cdk/fesm2020/coercion.mjs","./node_modules/@angular/cdk/fesm2020/drag-drop.mjs","./node_modules/@angular/cdk/fesm2020/platform.mjs","./node_modules/@angular/cdk/fesm2020/portal.mjs","./node_modules/@angular/cdk/fesm2020/collections.mjs","./node_modules/@angular/cdk/fesm2020/scrolling.mjs","./node_modules/@angular/cdk/fesm2020/text-field.mjs","./node_modules/@angular/common/fesm2020/common.mjs","./node_modules/@angular/common/fesm2020/http.mjs","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/@angular/core/fesm2020/core.mjs","./node_modules/@angular/forms/fesm2020/forms.mjs","./node_modules/@angular/platform-browser/fesm2020/platform-browser.mjs","./node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs","./node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs","./node_modules/@fullcalendar/angular/fesm2020/fullcalendar-angular.mjs","./node_modules/@fullcalendar/core/index.js","./node_modules/@fullcalendar/core/internal-common.js","./node_modules/@fullcalendar/daygrid/index.js","./node_modules/@fullcalendar/daygrid/internal.js","./node_modules/@fullcalendar/interaction/index.js","./node_modules/@fullcalendar/list/internal.js","./node_modules/@fullcalendar/list/index.js","./node_modules/@fullcalendar/timegrid/internal.js","./node_modules/@fullcalendar/timegrid/index.js","./node_modules/@uirouter/angular/fesm2020/uirouter-angular.mjs","./node_modules/copy-text-to-clipboard/index.js","./node_modules/ngx-cookie-service/fesm2020/ngx-cookie-service.mjs","./node_modules/pako/dist/pako.esm.mjs","./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js"],"sourcesContent":["import { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function delay(delay, scheduler = async) {\n const absoluteDelay = isDate(delay);\n const delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return (source) => source.lift(new DelayOperator(delayFor, scheduler));\n}\nclass DelayOperator {\n constructor(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n call(subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n }\n}\nclass DelaySubscriber extends Subscriber {\n constructor(destination, delay, scheduler) {\n super(destination);\n this.delay = delay;\n this.scheduler = scheduler;\n this.queue = [];\n this.active = false;\n this.errored = false;\n }\n static dispatch(state) {\n const source = state.source;\n const queue = source.queue;\n const scheduler = state.scheduler;\n const destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n const delay = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n }\n _schedule(scheduler) {\n this.active = true;\n const destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n }\n scheduleNotification(notification) {\n if (this.errored === true) {\n return;\n }\n const scheduler = this.scheduler;\n const message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n }\n _next(value) {\n this.scheduleNotification(Notification.createNext(value));\n }\n _error(err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n }\n _complete() {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n }\n}\nclass DelayMessage {\n constructor(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n}\n","import { distinctUntilChanged, map, auditTime, tap, filter, switchMap, skip, delay, take, debounceTime, pairwise, finalize, first } from 'rxjs/operators';\nimport { of, EMPTY, combineLatest, Subject, ReplaySubject, BehaviorSubject, isObservable, from, merge, defer } from 'rxjs';\nimport { __rest, __decorate, __metadata } from 'tslib';\n\nimport * as ɵngcc0 from '@angular/core';\nconst currentAction = {\n type: null,\n entityIds: null,\n skip: false,\n payload: null\n};\nlet customActionActive = false;\nfunction resetCustomAction() {\n customActionActive = false;\n}\n// public API for custom actions. Custom action always wins\nfunction logAction(type, entityIds, payload) {\n setAction(type, entityIds, payload);\n customActionActive = true;\n}\nfunction setAction(type, entityIds, payload) {\n if (customActionActive === false) {\n currentAction.type = type;\n currentAction.entityIds = entityIds;\n currentAction.payload = payload;\n }\n}\nfunction setSkipAction(skip = true) {\n currentAction.skip = skip;\n}\nfunction action(action, entityIds) {\n return function (target, propertyKey, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args) {\n logAction(action, entityIds);\n return originalMethod.apply(this, args);\n };\n return descriptor;\n };\n}\n\n// @internal\nfunction hasEntity(entities, id) {\n return entities.hasOwnProperty(id);\n}\n\n// @internal\nfunction isArray(value) {\n return Array.isArray(value);\n}\n\n// @internal\nfunction hasActiveState(state) {\n return state.hasOwnProperty('active');\n}\n// @internal\nfunction isMultiActiveState(active) {\n return isArray(active);\n}\n// @internal\nfunction resolveActiveEntity({ active, ids, entities }) {\n if (isMultiActiveState(active)) {\n return getExitingActives(active, ids);\n }\n if (hasEntity(entities, active) === false) {\n return null;\n }\n return active;\n}\n// @internal\nfunction getExitingActives(currentActivesIds, newIds) {\n const filtered = currentActivesIds.filter(id => newIds.indexOf(id) > -1);\n /** Return the same reference if nothing has changed */\n if (filtered.length === currentActivesIds.length) {\n return currentActivesIds;\n }\n return filtered;\n}\n\n// @internal\nfunction addEntities({ state, entities, idKey, options = {}, preAddEntity }) {\n let newEntities = {};\n let newIds = [];\n let hasNewEntities = false;\n for (const entity of entities) {\n if (hasEntity(state.entities, entity[idKey]) === false) {\n // evaluate the middleware first to support dynamic ids\n const current = preAddEntity(entity);\n const entityId = current[idKey];\n newEntities[entityId] = current;\n if (options.prepend)\n newIds.unshift(entityId);\n else\n newIds.push(entityId);\n hasNewEntities = true;\n }\n }\n return hasNewEntities\n ? {\n newState: Object.assign(Object.assign({}, state), { entities: Object.assign(Object.assign({}, state.entities), newEntities), ids: options.prepend ? [...newIds, ...state.ids] : [...state.ids, ...newIds] }),\n newIds\n }\n : null;\n}\n\n// @internal\nfunction isNil(v) {\n return v === null || v === undefined;\n}\n\n// @internal\nfunction coerceArray(value) {\n if (isNil(value)) {\n return [];\n }\n return Array.isArray(value) ? value : [value];\n}\n\n/**\n * Add item to a collection\n *\n * @example\n *\n *\n * store.update(state => ({\n * comments: arrayAdd(state.comments, { id: 2 })\n * }))\n *\n */\nfunction arrayAdd(arr, newEntity, options = {}) {\n const newEntities = coerceArray(newEntity);\n const toArr = arr || [];\n return options.prepend ? [...newEntities, ...toArr] : [...toArr, ...newEntities];\n}\n\nconst DEFAULT_ID_KEY = 'id';\n\n// @internal\nfunction isEmpty(arr) {\n if (isArray(arr)) {\n return arr.length === 0;\n }\n return false;\n}\n\n// @internal\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n\n// @internal\nfunction find(collection, idsOrPredicate, idKey) {\n const result = [];\n if (isFunction(idsOrPredicate)) {\n for (const entity of collection) {\n if (idsOrPredicate(entity) === true) {\n result.push(entity);\n }\n }\n }\n else {\n const toSet = coerceArray(idsOrPredicate).reduce((acc, current) => acc.add(current), new Set());\n for (const entity of collection) {\n if (toSet.has(entity[idKey])) {\n result.push(entity);\n }\n }\n }\n return result;\n}\n// @internal\nfunction distinctUntilArrayItemChanged() {\n return distinctUntilChanged((prevCollection, currentCollection) => {\n if (prevCollection === currentCollection) {\n return true;\n }\n if (!isArray(prevCollection) || !isArray(currentCollection)) {\n return false;\n }\n if (isEmpty(prevCollection) && isEmpty(currentCollection)) {\n return true;\n }\n if (prevCollection.length !== currentCollection.length) {\n return false;\n }\n const isOneOfItemReferenceChanged = currentCollection.some((item, i) => {\n return prevCollection[i] !== item;\n });\n // return false means there is a change and we want to call next()\n return isOneOfItemReferenceChanged === false;\n });\n}\nfunction arrayFind(idsOrPredicate, idKey) {\n return function (source) {\n return source.pipe(map((collection) => {\n // which means the user deleted the root entity or set the collection to nil\n if (isArray(collection) === false) {\n return collection;\n }\n return find(collection, idsOrPredicate, idKey || DEFAULT_ID_KEY);\n }), distinctUntilArrayItemChanged(), map((value) => {\n if (isArray(value) === false) {\n return value;\n }\n if (isArray(idsOrPredicate) || isFunction(idsOrPredicate)) {\n return value;\n }\n return value[0];\n }));\n };\n}\n\n// @internal\nfunction isObject(value) {\n const type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n// @internal\nfunction not(pred) {\n return function (...args) {\n return !pred(...args);\n };\n}\n\n/**\n * Remove item from collection\n *\n * @example\n *\n *\n * store.update(state => ({\n * names: arrayRemove(state.names, ['one', 'second'])\n * }))\n */\nfunction arrayRemove(arr, identifier, idKey = DEFAULT_ID_KEY) {\n let identifiers;\n let filterFn;\n if (isFunction(identifier)) {\n filterFn = not(identifier);\n }\n else {\n identifiers = coerceArray(identifier);\n filterFn = (current) => {\n return identifiers.includes(isObject(current) ? current[idKey] : current) === false;\n };\n }\n if (Array.isArray(arr)) {\n return arr.filter(filterFn);\n }\n}\n\n/**\n * Create an array value comparator for a specific key of the value.\n * @param prop The property of the value to be compared.\n */\nfunction byKey(prop) {\n return (a, b) => a[prop] === b[prop];\n}\n/**\n * Create an array value comparator for the id field of an array value.\n */\nfunction byId() {\n return byKey('id');\n}\n/**\n * Adds or removes a value from an array by comparing its values. If a matching value exists it is removed, otherwise\n * it is added to the array.\n *\n * @param array The array to modify.\n * @param newValue The new value to toggle.\n * @param compare A compare function to determine equality of array values. Default is an equality test by object identity.\n */\nfunction arrayToggle(array, newValue, compare = (a, b) => a === b) {\n const index = array.findIndex((oldValue) => compare(newValue, oldValue));\n return !!~index ? [...array.slice(0, index), ...array.slice(index + 1)] : [...array, newValue];\n}\n\n/**\n * Update item in a collection\n *\n * @example\n *\n *\n * store.update(1, entity => ({\n * comments: arrayUpdate(entity.comments, 1, { name: 'newComment' })\n * }))\n */\nfunction arrayUpdate(arr, predicateOrIds, obj, idKey = DEFAULT_ID_KEY) {\n let condition;\n if (isFunction(predicateOrIds)) {\n condition = predicateOrIds;\n }\n else {\n const ids = coerceArray(predicateOrIds);\n condition = (item) => ids.includes(isObject(item) ? item[idKey] : item) === true;\n }\n const updateFn = (state) => state.map((entity, index) => {\n if (condition(entity, index) === true) {\n return isObject(entity)\n ? Object.assign(Object.assign({}, entity), obj) : obj;\n }\n return entity;\n });\n return updateFn(arr);\n}\n\n/**\n * Upsert item in a collection\n *\n * @example\n *\n *\n * store.update(1, entity => ({\n * comments: arrayUpsert(entity.comments, 1, { name: 'newComment' })\n * }))\n */\nfunction arrayUpsert(arr, id, obj, idKey = DEFAULT_ID_KEY) {\n const entityIsObject = isObject(obj);\n const entityExists = arr.some(entity => (entityIsObject ? entity[idKey] === id : entity === id));\n if (entityExists) {\n return arrayUpdate(arr, id, obj, idKey);\n }\n else {\n return arrayAdd(arr, entityIsObject ? Object.assign(Object.assign({}, obj), { [idKey]: id }) : obj);\n }\n}\n\n/**\n *\n * Helper function for checking if we have data in cache\n *\n * export class ProductsService {\n * constructor(private productsStore: ProductsStore) {}\n\n * get(): Observable {\n * const request = this.http.get().pipe(\n * tap(this.productsStore.set(response))\n * );\n *\n * return cacheable(this.productsStore, request);\n * }\n * }\n */\nfunction cacheable(store, request$, options = { emitNext: false }) {\n if (store._cache().value) {\n return options.emitNext ? of(undefined) : EMPTY;\n }\n return request$;\n}\n\nfunction combineQueries(observables) {\n return combineLatest(observables).pipe(auditTime(0));\n}\n\nlet CONFIG = {\n resettable: false,\n ttl: null,\n producerFn: undefined\n};\nfunction akitaConfig(config) {\n CONFIG = Object.assign(Object.assign({}, CONFIG), config);\n}\n// @internal\nfunction getAkitaConfig() {\n return CONFIG;\n}\nfunction getGlobalProducerFn() {\n return CONFIG.producerFn;\n}\n\n// @internal\nfunction isDefined(val) {\n return isNil(val) === false;\n}\n\n// @internal\nconst $$deleteStore = new Subject();\n// @internal\nconst $$addStore = new ReplaySubject(50, 5000);\n// @internal\nconst $$updateStore = new Subject();\n// @internal\nfunction dispatchDeleted(storeName) {\n $$deleteStore.next(storeName);\n}\n// @internal\nfunction dispatchAdded(storeName) {\n $$addStore.next(storeName);\n}\n// @internal\nfunction dispatchUpdate(storeName, action) {\n $$updateStore.next({ storeName, action });\n}\n\nconst isBrowser = typeof window !== 'undefined';\nconst isNotBrowser = !isBrowser;\n// export const isNativeScript = typeof global !== 'undefined' && (global).__runtimeVersion !== 'undefined'; TODO is this used?\nconst hasLocalStorage = () => {\n try {\n return typeof localStorage !== 'undefined';\n }\n catch (_a) {\n return false;\n }\n};\nconst hasSessionStorage = () => {\n try {\n return typeof sessionStorage !== 'undefined';\n }\n catch (_a) {\n return false;\n }\n};\n\n// @internal\nconst __stores__ = {};\n// @internal\nconst __queries__ = {};\nif (isBrowser) {\n window.$$stores = __stores__;\n window.$$queries = __queries__;\n}\n\n// @internal\nfunction capitalize(value) {\n return value && value.charAt(0).toUpperCase() + value.slice(1);\n}\n\nlet subs = [];\nfunction akitaDevtools(ngZoneOrOptions, options = {}) {\n if (isNotBrowser)\n return;\n if (!window.__REDUX_DEVTOOLS_EXTENSION__) {\n return;\n }\n subs.length &&\n subs.forEach((s) => {\n if (s.unsubscribe) {\n s.unsubscribe();\n }\n else {\n s && s();\n }\n });\n const isAngular = ngZoneOrOptions && ngZoneOrOptions['run'];\n if (!isAngular) {\n ngZoneOrOptions = ngZoneOrOptions || {};\n ngZoneOrOptions.run = (cb) => cb();\n options = ngZoneOrOptions;\n }\n const defaultOptions = { name: 'Akita', shallow: true, storesWhitelist: [] };\n const merged = Object.assign({}, defaultOptions, options);\n const storesWhitelist = merged.storesWhitelist;\n const devTools = window.__REDUX_DEVTOOLS_EXTENSION__.connect(merged);\n let appState = {};\n const isAllowed = (storeName) => {\n if (!storesWhitelist.length) {\n return true;\n }\n return storesWhitelist.indexOf(storeName) > -1;\n };\n subs.push($$addStore.subscribe((storeName) => {\n if (isAllowed(storeName) === false)\n return;\n appState = Object.assign(Object.assign({}, appState), { [storeName]: __stores__[storeName]._value() });\n devTools.send({ type: `[${capitalize(storeName)}] - @@INIT` }, appState);\n }));\n subs.push($$deleteStore.subscribe((storeName) => {\n if (isAllowed(storeName) === false)\n return;\n delete appState[storeName];\n devTools.send({ type: `[${storeName}] - Delete Store` }, appState);\n }));\n subs.push($$updateStore.subscribe(({ storeName, action }) => {\n if (isAllowed(storeName) === false)\n return;\n const { type, entityIds, skip } = action, rest = __rest(action, [\"type\", \"entityIds\", \"skip\"]);\n const payload = rest.payload;\n if (skip) {\n setSkipAction(false);\n return;\n }\n const store = __stores__[storeName];\n if (!store) {\n return;\n }\n if (options.shallow === false && appState[storeName]) {\n const isEqual = JSON.stringify(store._value()) === JSON.stringify(appState[storeName]);\n if (isEqual)\n return;\n }\n appState = Object.assign(Object.assign({}, appState), { [storeName]: store._value() });\n const normalize = capitalize(storeName);\n let msg = isDefined(entityIds) ? `[${normalize}] - ${type} (ids: ${entityIds})` : `[${normalize}] - ${type}`;\n if (options.logTrace) {\n console.group(msg);\n console.trace();\n console.groupEnd();\n }\n if (options.sortAlphabetically) {\n const sortedAppState = Object.keys(appState)\n .sort()\n .reduce((acc, storeName) => {\n acc[storeName] = appState[storeName];\n return acc;\n }, {});\n devTools.send(Object.assign({ type: msg }, payload), sortedAppState);\n return;\n }\n devTools.send(Object.assign({ type: msg }, payload), appState);\n }));\n subs.push(devTools.subscribe((message) => {\n if (message.type === 'DISPATCH') {\n const payloadType = message.payload.type;\n if (payloadType === 'COMMIT') {\n devTools.init(appState);\n return;\n }\n if (message.state) {\n const rootState = JSON.parse(message.state);\n for (let i = 0, keys = Object.keys(rootState); i < keys.length; i++) {\n const storeName = keys[i];\n if (__stores__[storeName]) {\n ngZoneOrOptions.run(() => {\n __stores__[storeName]._setState(() => rootState[storeName], false);\n });\n }\n }\n }\n }\n }));\n}\n\nvar Order;\n(function (Order) {\n Order[\"ASC\"] = \"asc\";\n Order[\"DESC\"] = \"desc\";\n})(Order || (Order = {}));\n// @internal\nfunction compareValues(key, order = Order.ASC) {\n return function (a, b) {\n if (!a.hasOwnProperty(key) || !b.hasOwnProperty(key)) {\n return 0;\n }\n const varA = typeof a[key] === 'string' ? a[key].toUpperCase() : a[key];\n const varB = typeof b[key] === 'string' ? b[key].toUpperCase() : b[key];\n let comparison = 0;\n if (varA > varB) {\n comparison = 1;\n }\n else if (varA < varB) {\n comparison = -1;\n }\n return order == Order.DESC ? comparison * -1 : comparison;\n };\n}\n\n// @internal\nfunction entitiesToArray(state, options) {\n let arr = [];\n const { ids, entities } = state;\n const { filterBy, limitTo, sortBy, sortByOrder } = options;\n for (let i = 0; i < ids.length; i++) {\n const entity = entities[ids[i]];\n if (!filterBy) {\n arr.push(entity);\n continue;\n }\n const toArray = coerceArray(filterBy);\n const allPass = toArray.every(fn => fn(entity, i));\n if (allPass) {\n arr.push(entity);\n }\n }\n if (sortBy) {\n let _sortBy = isFunction(sortBy) ? sortBy : compareValues(sortBy, sortByOrder);\n arr = arr.sort((a, b) => _sortBy(a, b, state));\n }\n const length = Math.min(limitTo || arr.length, arr.length);\n return length === arr.length ? arr : arr.slice(0, length);\n}\n\n// @internal\nfunction entitiesToMap(state, options) {\n const map = {};\n const { filterBy, limitTo } = options;\n const { ids, entities } = state;\n if (!filterBy && !limitTo) {\n return entities;\n }\n const hasLimit = isNil(limitTo) === false;\n if (filterBy && hasLimit) {\n let count = 0;\n for (let i = 0, length = ids.length; i < length; i++) {\n if (count === limitTo)\n break;\n const id = ids[i];\n const entity = entities[id];\n const allPass = coerceArray(filterBy).every(fn => fn(entity, i));\n if (allPass) {\n map[id] = entity;\n count++;\n }\n }\n }\n else {\n const finalLength = Math.min(limitTo || ids.length, ids.length);\n for (let i = 0; i < finalLength; i++) {\n const id = ids[i];\n const entity = entities[id];\n if (!filterBy) {\n map[id] = entity;\n continue;\n }\n const allPass = coerceArray(filterBy).every(fn => fn(entity, i));\n if (allPass) {\n map[id] = entity;\n }\n }\n }\n return map;\n}\n\nvar EntityActions;\n(function (EntityActions) {\n EntityActions[\"Set\"] = \"Set\";\n EntityActions[\"Add\"] = \"Add\";\n EntityActions[\"Update\"] = \"Update\";\n EntityActions[\"Remove\"] = \"Remove\";\n})(EntityActions || (EntityActions = {}));\n\nclass EntityService {\n}\n\nlet __DEV__ = true;\nfunction enableAkitaProdMode() {\n __DEV__ = false;\n if (isBrowser) {\n delete window.$$stores;\n delete window.$$queries;\n }\n}\n// @internal\nfunction isDev() {\n return __DEV__;\n}\n\n// @internal\nfunction getActiveEntities(idOrOptions, ids, currentActive) {\n let result;\n if (isArray(idOrOptions)) {\n result = idOrOptions;\n }\n else {\n if (isObject(idOrOptions)) {\n if (isNil(currentActive))\n return;\n idOrOptions = Object.assign({ wrap: true }, idOrOptions);\n const currentIdIndex = ids.indexOf(currentActive);\n if (idOrOptions.prev) {\n const isFirst = currentIdIndex === 0;\n if (isFirst && !idOrOptions.wrap)\n return;\n result = isFirst ? ids[ids.length - 1] : ids[currentIdIndex - 1];\n }\n else if (idOrOptions.next) {\n const isLast = ids.length === currentIdIndex + 1;\n if (isLast && !idOrOptions.wrap)\n return;\n result = isLast ? ids[0] : ids[currentIdIndex + 1];\n }\n }\n else {\n if (idOrOptions === currentActive)\n return;\n result = idOrOptions;\n }\n }\n return result;\n}\n\n// @internal\nconst getInitialEntitiesState = () => ({\n entities: {},\n ids: [],\n loading: true,\n error: null\n});\n\n// @internal\nfunction isUndefined(value) {\n return value === undefined;\n}\n\n// @internal\nfunction removeEntities({ state, ids }) {\n if (isNil(ids))\n return removeAllEntities(state);\n const entities = state.entities;\n let newEntities = {};\n for (const id of state.ids) {\n if (ids.includes(id) === false) {\n newEntities[id] = entities[id];\n }\n }\n const newState = Object.assign(Object.assign({}, state), { entities: newEntities, ids: state.ids.filter(current => ids.includes(current) === false) });\n if (hasActiveState(state)) {\n newState.active = resolveActiveEntity(newState);\n }\n return newState;\n}\n// @internal\nfunction removeAllEntities(state) {\n return Object.assign(Object.assign({}, state), { entities: {}, ids: [], active: isMultiActiveState(state.active) ? [] : null });\n}\n\n// @internal\nfunction toEntitiesObject(entities, idKey, preAddEntity) {\n const acc = {\n entities: {},\n ids: []\n };\n for (const entity of entities) {\n // evaluate the middleware first to support dynamic ids\n const current = preAddEntity(entity);\n acc.entities[current[idKey]] = current;\n acc.ids.push(current[idKey]);\n }\n return acc;\n}\n\n// @internal\nfunction isEntityState(state) {\n return state.entities && state.ids;\n}\n// @internal\nfunction applyMiddleware(entities, preAddEntity) {\n let mapped = {};\n for (const id of Object.keys(entities)) {\n mapped[id] = preAddEntity(entities[id]);\n }\n return mapped;\n}\n// @internal\nfunction setEntities({ state, entities, idKey, preAddEntity, isNativePreAdd }) {\n let newEntities;\n let newIds;\n if (isArray(entities)) {\n const resolve = toEntitiesObject(entities, idKey, preAddEntity);\n newEntities = resolve.entities;\n newIds = resolve.ids;\n }\n else if (isEntityState(entities)) {\n newEntities = isNativePreAdd ? entities.entities : applyMiddleware(entities.entities, preAddEntity);\n newIds = entities.ids;\n }\n else {\n // it's an object\n newEntities = isNativePreAdd ? entities : applyMiddleware(entities, preAddEntity);\n newIds = Object.keys(newEntities).map(id => (isNaN(id) ? id : Number(id)));\n }\n const newState = Object.assign(Object.assign({}, state), { entities: newEntities, ids: newIds, loading: false });\n if (hasActiveState(state)) {\n newState.active = resolveActiveEntity(newState);\n }\n return newState;\n}\n\n// @internal\nfunction deepFreeze(o) {\n Object.freeze(o);\n const oIsFunction = typeof o === 'function';\n const hasOwnProp = Object.prototype.hasOwnProperty;\n Object.getOwnPropertyNames(o).forEach(function (prop) {\n if (hasOwnProp.call(o, prop) &&\n (oIsFunction ? prop !== 'caller' && prop !== 'callee' && prop !== 'arguments' : true) &&\n o[prop] !== null &&\n (typeof o[prop] === 'object' || typeof o[prop] === 'function') &&\n !Object.isFrozen(o[prop])) {\n deepFreeze(o[prop]);\n }\n });\n return o;\n}\n\n// @internal\nclass AkitaError extends Error {\n constructor(message) {\n super(message);\n }\n}\n// @internal\nfunction assertStoreHasName(name, className) {\n if (!name) {\n console.error(`@StoreConfig({ name }) is missing in ${className}`);\n }\n}\n\n// @internal\nfunction toBoolean(value) {\n return value != null && `${value}` !== 'false';\n}\n\n// @internal\nfunction isPlainObject(value) {\n return toBoolean(value) && value.constructor.name === 'Object';\n}\n\nconst configKey = 'akitaConfig';\nfunction StoreConfig(metadata) {\n return function (constructor) {\n constructor[configKey] = { idKey: 'id' };\n for (let i = 0, keys = Object.keys(metadata); i < keys.length; i++) {\n const key = keys[i];\n /* name is preserved read only key */\n if (key === 'name') {\n constructor[configKey]['storeName'] = metadata[key];\n }\n else {\n constructor[configKey][key] = metadata[key];\n }\n }\n };\n}\n\n// @internal\nconst transactionFinished = new Subject();\n// @internal\nconst transactionInProcess = new BehaviorSubject(false);\n// @internal\nconst transactionManager = {\n activeTransactions: 0,\n batchTransaction: null\n};\n// @internal\nfunction startBatch() {\n if (!isTransactionInProcess()) {\n transactionManager.batchTransaction = new Subject();\n }\n transactionManager.activeTransactions++;\n transactionInProcess.next(true);\n}\n// @internal\nfunction endBatch() {\n if (--transactionManager.activeTransactions === 0) {\n transactionManager.batchTransaction.next(true);\n transactionManager.batchTransaction.complete();\n transactionInProcess.next(false);\n transactionFinished.next(true);\n }\n}\n// @internal\nfunction isTransactionInProcess() {\n return transactionManager.activeTransactions > 0;\n}\n// @internal\nfunction commit() {\n return transactionManager.batchTransaction ? transactionManager.batchTransaction.asObservable() : of(true);\n}\n/**\n * A logical transaction.\n * Use this transaction to optimize the dispatch of all the stores.\n * The following code will update the store, BUT emits only once\n *\n * @example\n * applyTransaction(() => {\n * this.todosStore.add(new Todo(1, title));\n * this.todosStore.add(new Todo(2, title));\n * });\n *\n */\nfunction applyTransaction(action, thisArg = undefined) {\n startBatch();\n try {\n return action.apply(thisArg);\n }\n finally {\n logAction('@Transaction');\n endBatch();\n }\n}\n/**\n * A logical transaction.\n * Use this transaction to optimize the dispatch of all the stores.\n *\n * The following code will update the store, BUT emits only once.\n *\n * @example\n * @transaction\n * addTodos() {\n * this.todosStore.add(new Todo(1, title));\n * this.todosStore.add(new Todo(2, title));\n * }\n *\n *\n */\nfunction transaction() {\n return function (target, propertyKey, descriptor) {\n const originalMethod = descriptor.value;\n descriptor.value = function (...args) {\n return applyTransaction(() => {\n return originalMethod.apply(this, args);\n }, this);\n };\n return descriptor;\n };\n}\n/**\n *\n * RxJS custom operator that wraps the callback inside transaction\n *\n * @example\n *\n * return http.get().pipe(\n * withTransaction(response > {\n * store.setActive(1);\n * store.update();\n * store.updateEntity(1, {});\n * })\n * )\n *\n */\nfunction withTransaction(next) {\n return function (source) {\n return source.pipe(tap(value => applyTransaction(() => next(value))));\n };\n}\n\n/**\n *\n * Store for managing any type of data\n *\n * @example\n *\n * export interface SessionState {\n * token: string;\n * userDetails: UserDetails\n * }\n *\n * export function createInitialState(): SessionState {\n * return {\n * token: '',\n * userDetails: null\n * };\n * }\n *\n * @StoreConfig({ name: 'session' })\n * export class SessionStore extends Store {\n * constructor() {\n * super(createInitialState());\n * }\n * }\n */\nclass Store {\n constructor(initialState, options = {}) {\n this.options = options;\n this.inTransaction = false;\n this.cache = {\n active: new BehaviorSubject(false),\n ttl: null,\n };\n this.onInit(initialState);\n }\n /**\n * Set the loading state\n *\n * @example\n *\n * store.setLoading(true)\n *\n */\n setLoading(loading = false) {\n if (loading !== this._value().loading) {\n isDev() && setAction('Set Loading');\n this._setState((state) => (Object.assign(Object.assign({}, state), { loading })));\n }\n }\n /**\n *\n * Set whether the data is cached\n *\n * @example\n *\n * store.setHasCache(true)\n * store.setHasCache(false)\n * store.setHasCache(true, { restartTTL: true })\n *\n */\n setHasCache(hasCache, options = { restartTTL: false }) {\n if (hasCache !== this.cache.active.value) {\n this.cache.active.next(hasCache);\n }\n if (options.restartTTL) {\n const ttlConfig = this.getCacheTTL();\n if (ttlConfig) {\n if (this.cache.ttl !== null) {\n clearTimeout(this.cache.ttl);\n }\n this.cache.ttl = setTimeout(() => this.setHasCache(false), ttlConfig);\n }\n }\n }\n /**\n *\n * Sometimes we need to access the store value from a store\n *\n * @example middleware\n *\n */\n getValue() {\n return this.storeValue;\n }\n /**\n * Set the error state\n *\n * @example\n *\n * store.setError({text: 'unable to load data' })\n *\n */\n setError(error) {\n if (error !== this._value().error) {\n isDev() && setAction('Set Error');\n this._setState((state) => (Object.assign(Object.assign({}, state), { error })));\n }\n }\n // @internal\n _select(project) {\n return this.store.asObservable().pipe(map((snapshot) => project(snapshot.state)), distinctUntilChanged());\n }\n // @internal\n _value() {\n return this.storeValue;\n }\n // @internal\n _cache() {\n return this.cache.active;\n }\n // @internal\n get config() {\n return this.constructor[configKey] || {};\n }\n // @internal\n get storeName() {\n return this.config.storeName || this.options.storeName || this.options.name;\n }\n // @internal\n get deepFreeze() {\n return this.config.deepFreezeFn || this.options.deepFreezeFn || deepFreeze;\n }\n // @internal\n get cacheConfig() {\n return this.config.cache || this.options.cache;\n }\n get _producerFn() {\n return this.config.producerFn || this.options.producerFn || getGlobalProducerFn();\n }\n // @internal\n get resettable() {\n return isDefined(this.config.resettable) ? this.config.resettable : this.options.resettable;\n }\n // @internal\n _setState(newState, _dispatchAction = true) {\n if (isFunction(newState)) {\n const _newState = newState(this._value());\n this.storeValue = __DEV__ ? this.deepFreeze(_newState) : _newState;\n }\n else {\n this.storeValue = newState;\n }\n if (!this.store) {\n this.store = new BehaviorSubject({ state: this.storeValue });\n if (isDev()) {\n this.store.subscribe(({ action }) => {\n if (action) {\n dispatchUpdate(this.storeName, action);\n }\n });\n }\n return;\n }\n if (isTransactionInProcess()) {\n this.handleTransaction();\n return;\n }\n this.dispatch(this.storeValue, _dispatchAction);\n }\n /**\n *\n * Reset the current store back to the initial value\n *\n * @example\n *\n * store.reset()\n *\n */\n reset() {\n if (this.isResettable()) {\n isDev() && setAction('Reset');\n this._setState(() => Object.assign({}, this._initialState));\n this.setHasCache(false);\n }\n else {\n isDev() && console.warn(`You need to enable the reset functionality`);\n }\n }\n update(stateOrCallback) {\n isDev() && setAction('Update');\n let newState;\n const currentState = this._value();\n if (isFunction(stateOrCallback)) {\n newState = isFunction(this._producerFn) ? this._producerFn(currentState, stateOrCallback) : stateOrCallback(currentState);\n }\n else {\n newState = stateOrCallback;\n }\n const withHook = this.akitaPreUpdate(currentState, Object.assign(Object.assign({}, currentState), newState));\n const resolved = isPlainObject(currentState) ? withHook : new currentState.constructor(withHook);\n this._setState(resolved);\n }\n updateStoreConfig(newOptions) {\n this.options = Object.assign(Object.assign({}, this.options), newOptions);\n }\n // @internal\n akitaPreUpdate(_, nextState) {\n return nextState;\n }\n /**\n *\n * @deprecated\n *\n * This method will be removed in v7\n *\n * Akita isn't coupled to Angular and should not use Angular\n * specific code\n *\n */\n ngOnDestroy() {\n this.destroy();\n }\n /**\n *\n * Destroy the store\n *\n * @example\n *\n * store.destroy()\n *\n */\n destroy() {\n const hmrEnabled = isBrowser ? window.hmrEnabled : false;\n if (!hmrEnabled && this === __stores__[this.storeName]) {\n delete __stores__[this.storeName];\n dispatchDeleted(this.storeName);\n this.setHasCache(false);\n this.cache.active.complete();\n this.store.complete();\n }\n }\n onInit(initialState) {\n __stores__[this.storeName] = this;\n this._setState(() => initialState);\n dispatchAdded(this.storeName);\n if (this.isResettable()) {\n this._initialState = initialState;\n }\n isDev() && assertStoreHasName(this.storeName, this.constructor.name);\n }\n dispatch(state, _dispatchAction = true) {\n let action = undefined;\n if (_dispatchAction) {\n action = currentAction;\n resetCustomAction();\n }\n this.store.next({ state, action });\n }\n watchTransaction() {\n commit().subscribe(() => {\n this.inTransaction = false;\n this.dispatch(this._value());\n });\n }\n isResettable() {\n if (this.resettable === false) {\n return false;\n }\n return this.resettable || getAkitaConfig().resettable;\n }\n handleTransaction() {\n if (!this.inTransaction) {\n this.watchTransaction();\n this.inTransaction = true;\n }\n }\n getCacheTTL() {\n return (this.cacheConfig && this.cacheConfig.ttl) || getAkitaConfig().ttl;\n }\n}\nStore.ɵfac = function Store_Factory(t) { ɵngcc0.ɵɵinvalidFactory(); };\nStore.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: Store });\n\n// @internal\nfunction updateEntities({ state, ids, idKey, newStateOrFn, preUpdateEntity, producerFn, onEntityIdChanges }) {\n const updatedEntities = {};\n let isUpdatingIdKey = false;\n let idToUpdate;\n for (const id of ids) {\n // if the entity doesn't exist don't do anything\n if (hasEntity(state.entities, id) === false) {\n continue;\n }\n const oldEntity = state.entities[id];\n let newState;\n if (isFunction(newStateOrFn)) {\n newState = isFunction(producerFn) ? producerFn(oldEntity, newStateOrFn) : newStateOrFn(oldEntity);\n }\n else {\n newState = newStateOrFn;\n }\n const isIdChanged = newState.hasOwnProperty(idKey) && newState[idKey] !== oldEntity[idKey];\n let newEntity;\n idToUpdate = id;\n if (isIdChanged) {\n isUpdatingIdKey = true;\n idToUpdate = newState[idKey];\n }\n const merged = Object.assign(Object.assign({}, oldEntity), newState);\n if (isPlainObject(oldEntity)) {\n newEntity = merged;\n }\n else {\n /**\n * In case that new state is class of it's own, there's\n * a possibility that it will be different than the old\n * class.\n * For example, Old state is an instance of animal class\n * and new state is instance of person class.\n * To avoid run over new person class with the old animal\n * class we check if the new state is a class of it's own.\n * If so, use it. Otherwise, use the old state class\n */\n if (isPlainObject(newState)) {\n newEntity = new oldEntity.constructor(merged);\n }\n else {\n newEntity = new newState.constructor(merged);\n }\n }\n updatedEntities[idToUpdate] = preUpdateEntity(oldEntity, newEntity);\n }\n let updatedIds = state.ids;\n let stateEntities = state.entities;\n if (isUpdatingIdKey) {\n const [id] = ids;\n const _a = state.entities, _b = id, deletedEntity = _a[_b], rest = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n stateEntities = rest;\n updatedIds = state.ids.map((current) => (current === id ? idToUpdate : current));\n onEntityIdChanges(id, idToUpdate);\n }\n return Object.assign(Object.assign({}, state), { entities: Object.assign(Object.assign({}, stateEntities), updatedEntities), ids: updatedIds });\n}\n\nvar _a, _b;\n/**\n *\n * Store for managing a collection of entities\n *\n * @example\n *\n * export interface WidgetsState extends EntityState { }\n *\n * @StoreConfig({ name: 'widgets' })\n * export class WidgetsStore extends EntityStore {\n * constructor() {\n * super();\n * }\n * }\n *\n *\n */\nclass EntityStore extends Store {\n constructor(initialState = {}, options = {}) {\n super(Object.assign(Object.assign({}, getInitialEntitiesState()), initialState), options);\n this.options = options;\n this.entityActions = new Subject();\n this.entityIdChanges = new Subject();\n }\n // @internal\n get selectEntityAction$() {\n return this.entityActions.asObservable();\n }\n // @internal\n get selectEntityIdChanges$() {\n return this.entityIdChanges.asObservable();\n }\n // @internal\n get idKey() {\n return this.config.idKey || this.options.idKey || DEFAULT_ID_KEY;\n }\n /**\n *\n * Replace current collection with provided collection\n *\n * @example\n *\n * this.store.set([Entity, Entity])\n * this.store.set({ids: [], entities: {}})\n * this.store.set({ 1: {}, 2: {}})\n *\n */\n set(entities, options = {}) {\n if (isNil(entities))\n return;\n isDev() && setAction('Set Entity');\n const isNativePreAdd = this.akitaPreAddEntity === EntityStore.prototype.akitaPreAddEntity;\n this.setHasCache(true, { restartTTL: true });\n this._setState((state) => {\n const newState = setEntities({\n state,\n entities,\n idKey: this.idKey,\n preAddEntity: this.akitaPreAddEntity,\n isNativePreAdd,\n });\n if (isUndefined(options.activeId) === false) {\n newState.active = options.activeId;\n }\n return newState;\n });\n if (this.hasInitialUIState()) {\n this.handleUICreation();\n }\n this.entityActions.next({ type: EntityActions.Set, ids: this.ids });\n }\n /**\n * Add entities\n *\n * @example\n *\n * this.store.add([Entity, Entity])\n * this.store.add(Entity)\n * this.store.add(Entity, { prepend: true })\n *\n * this.store.add(Entity, { loading: false })\n */\n add(entities, options = { loading: false }) {\n const collection = coerceArray(entities);\n if (isEmpty(collection))\n return;\n const data = addEntities({\n state: this._value(),\n preAddEntity: this.akitaPreAddEntity,\n entities: collection,\n idKey: this.idKey,\n options,\n });\n if (data) {\n isDev() && setAction('Add Entity');\n data.newState.loading = options.loading;\n this._setState(() => data.newState);\n if (this.hasInitialUIState()) {\n this.handleUICreation(true);\n }\n this.entityActions.next({ type: EntityActions.Add, ids: data.newIds });\n }\n }\n update(idsOrFnOrState, newStateOrFn) {\n if (isUndefined(newStateOrFn)) {\n super.update(idsOrFnOrState);\n return;\n }\n let ids = [];\n if (isFunction(idsOrFnOrState)) {\n // We need to filter according the predicate function\n ids = this.ids.filter((id) => idsOrFnOrState(this.entities[id]));\n }\n else {\n // If it's nil we want all of them\n ids = isNil(idsOrFnOrState) ? this.ids : coerceArray(idsOrFnOrState);\n }\n if (isEmpty(ids))\n return;\n isDev() && setAction('Update Entity', ids);\n let entityIdChanged;\n this._setState((state) => updateEntities({\n idKey: this.idKey,\n ids,\n preUpdateEntity: this.akitaPreUpdateEntity,\n state,\n newStateOrFn,\n producerFn: this._producerFn,\n onEntityIdChanges: (oldId, newId) => {\n entityIdChanged = { oldId, newId };\n this.entityIdChanges.next(Object.assign(Object.assign({}, entityIdChanged), { pending: true }));\n },\n }));\n if (entityIdChanged) {\n this.entityIdChanges.next(Object.assign(Object.assign({}, entityIdChanged), { pending: false }));\n }\n this.entityActions.next({ type: EntityActions.Update, ids });\n }\n upsert(ids, newState, onCreate, options = {}) {\n const toArray = coerceArray(ids);\n const predicate = (isUpdate) => (id) => hasEntity(this.entities, id) === isUpdate;\n const baseClass = isFunction(onCreate) ? options.baseClass : onCreate ? onCreate.baseClass : undefined;\n const isClassBased = isFunction(baseClass);\n const updateIds = toArray.filter(predicate(true));\n const newEntities = toArray.filter(predicate(false)).map((id) => {\n const newStateObj = typeof newState === 'function' ? newState({}) : newState;\n const entity = isFunction(onCreate) ? onCreate(id, newStateObj) : newStateObj;\n const withId = Object.assign(Object.assign({}, entity), { [this.idKey]: id });\n if (isClassBased) {\n return new baseClass(withId);\n }\n return withId;\n });\n // it can be any of the three types\n this.update(updateIds, newState);\n this.add(newEntities);\n isDev() && logAction('Upsert Entity');\n }\n /**\n *\n * Upsert entity collection (idKey must be present)\n *\n * @example\n *\n * store.upsertMany([ { id: 1 }, { id: 2 }]);\n *\n * store.upsertMany([ { id: 1 }, { id: 2 }], { loading: true });\n * store.upsertMany([ { id: 1 }, { id: 2 }], { baseClass: Todo });\n *\n */\n upsertMany(entities, options = {}) {\n const addedIds = [];\n const updatedIds = [];\n const updatedEntities = {};\n // Update the state directly to optimize performance\n for (const entity of entities) {\n const withPreCheckHook = this.akitaPreCheckEntity(entity);\n const id = withPreCheckHook[this.idKey];\n if (hasEntity(this.entities, id)) {\n const prev = this._value().entities[id];\n const merged = Object.assign(Object.assign({}, this._value().entities[id]), withPreCheckHook);\n const next = options.baseClass ? new options.baseClass(merged) : merged;\n const withHook = this.akitaPreUpdateEntity(prev, next);\n const nextId = withHook[this.idKey];\n updatedEntities[nextId] = withHook;\n updatedIds.push(nextId);\n }\n else {\n const newEntity = options.baseClass ? new options.baseClass(withPreCheckHook) : withPreCheckHook;\n const withHook = this.akitaPreAddEntity(newEntity);\n const nextId = withHook[this.idKey];\n addedIds.push(nextId);\n updatedEntities[nextId] = withHook;\n }\n }\n isDev() && logAction('Upsert Many');\n this._setState((state) => (Object.assign(Object.assign({}, state), { ids: addedIds.length ? [...state.ids, ...addedIds] : state.ids, entities: Object.assign(Object.assign({}, state.entities), updatedEntities), loading: !!options.loading })));\n updatedIds.length && this.entityActions.next({ type: EntityActions.Update, ids: updatedIds });\n addedIds.length && this.entityActions.next({ type: EntityActions.Add, ids: addedIds });\n if (addedIds.length && this.hasUIStore()) {\n this.handleUICreation(true);\n }\n }\n /**\n *\n * Replace one or more entities (except the id property)\n *\n *\n * @example\n *\n * this.store.replace(5, newEntity)\n * this.store.replace([1,2,3], newEntity)\n */\n replace(ids, newState) {\n const toArray = coerceArray(ids);\n if (isEmpty(toArray))\n return;\n const replaced = {};\n for (const id of toArray) {\n replaced[id] = Object.assign(Object.assign({}, newState), { [this.idKey]: id });\n }\n isDev() && setAction('Replace Entity', ids);\n this._setState((state) => (Object.assign(Object.assign({}, state), { entities: Object.assign(Object.assign({}, state.entities), replaced) })));\n }\n /**\n *\n * Move entity inside the collection\n *\n *\n * @example\n *\n * this.store.move(fromIndex, toIndex)\n */\n move(from, to) {\n const ids = this.ids.slice();\n ids.splice(to < 0 ? ids.length + to : to, 0, ids.splice(from, 1)[0]);\n isDev() && setAction('Move Entity');\n this._setState((state) => (Object.assign(Object.assign({}, state), { \n // Change the entities reference so that selectAll emit\n entities: Object.assign({}, state.entities), ids })));\n }\n remove(idsOrFn) {\n if (isEmpty(this.ids))\n return;\n const idPassed = isDefined(idsOrFn);\n // null means remove all\n let ids = [];\n if (isFunction(idsOrFn)) {\n ids = this.ids.filter((entityId) => idsOrFn(this.entities[entityId]));\n }\n else {\n ids = idPassed ? coerceArray(idsOrFn) : this.ids;\n }\n if (isEmpty(ids))\n return;\n isDev() && setAction('Remove Entity', ids);\n this._setState((state) => removeEntities({ state, ids }));\n if (!idPassed) {\n this.setHasCache(false);\n }\n this.handleUIRemove(ids);\n this.entityActions.next({ type: EntityActions.Remove, ids });\n }\n /**\n *\n * Update the active entity\n *\n * @example\n *\n * this.store.updateActive({ completed: true })\n * this.store.updateActive(active => {\n * return {\n * config: {\n * ..active.config,\n * date\n * }\n * }\n * })\n */\n updateActive(newStateOrCallback) {\n const ids = coerceArray(this.active);\n isDev() && setAction('Update Active', ids);\n this.update(ids, newStateOrCallback);\n }\n setActive(idOrOptions) {\n const active = getActiveEntities(idOrOptions, this.ids, this.active);\n if (active === undefined) {\n return;\n }\n isDev() && setAction('Set Active', active);\n this._setActive(active);\n }\n /**\n * Add active entities\n *\n * @example\n *\n * store.addActive(2);\n * store.addActive([3, 4, 5]);\n */\n addActive(ids) {\n const toArray = coerceArray(ids);\n if (isEmpty(toArray))\n return;\n const everyExist = toArray.every((id) => this.active.indexOf(id) > -1);\n if (everyExist)\n return;\n isDev() && setAction('Add Active', ids);\n this._setState((state) => {\n /** Protect against case that one of the items in the array exist */\n const uniques = Array.from(new Set([...state.active, ...toArray]));\n return Object.assign(Object.assign({}, state), { active: uniques });\n });\n }\n /**\n * Remove active entities\n *\n * @example\n *\n * store.removeActive(2)\n * store.removeActive([3, 4, 5])\n */\n removeActive(ids) {\n const toArray = coerceArray(ids);\n if (isEmpty(toArray))\n return;\n const someExist = toArray.some((id) => this.active.indexOf(id) > -1);\n if (!someExist)\n return;\n isDev() && setAction('Remove Active', ids);\n this._setState((state) => {\n return Object.assign(Object.assign({}, state), { active: Array.isArray(state.active) ? state.active.filter((currentId) => toArray.indexOf(currentId) === -1) : null });\n });\n }\n /**\n * Toggle active entities\n *\n * @example\n *\n * store.toggle(2)\n * store.toggle([3, 4, 5])\n */\n toggleActive(ids) {\n const toArray = coerceArray(ids);\n const filterExists = (remove) => (id) => this.active.includes(id) === remove;\n const remove = toArray.filter(filterExists(true));\n const add = toArray.filter(filterExists(false));\n this.removeActive(remove);\n this.addActive(add);\n isDev() && logAction('Toggle Active');\n }\n /**\n *\n * Create sub UI store for managing Entity's UI state\n *\n * @example\n *\n * export type ProductUI = {\n * isLoading: boolean;\n * isOpen: boolean\n * }\n *\n * interface ProductsUIState extends EntityState {}\n *\n * export class ProductsStore EntityStore {\n * ui: EntityUIStore;\n *\n * constructor() {\n * super();\n * this.createUIStore();\n * }\n *\n * }\n */\n createUIStore(initialState = {}, storeConfig = {}) {\n const defaults = { name: `UI/${this.storeName}`, idKey: this.idKey };\n this.ui = new EntityUIStore(initialState, Object.assign(Object.assign({}, defaults), storeConfig));\n return this.ui;\n }\n // @internal\n destroy() {\n super.destroy();\n if (this.ui instanceof EntityStore) {\n this.ui.destroy();\n }\n this.entityActions.complete();\n }\n // @internal\n akitaPreUpdateEntity(_, nextEntity) {\n return nextEntity;\n }\n // @internal\n akitaPreAddEntity(newEntity) {\n return newEntity;\n }\n // @internal\n akitaPreCheckEntity(newEntity) {\n return newEntity;\n }\n get ids() {\n return this._value().ids;\n }\n get entities() {\n return this._value().entities;\n }\n get active() {\n return this._value().active;\n }\n _setActive(ids) {\n this._setState((state) => {\n return Object.assign(Object.assign({}, state), { active: ids });\n });\n }\n handleUICreation(add = false) {\n const ids = this.ids;\n const isFunc = isFunction(this.ui._akitaCreateEntityFn);\n let uiEntities;\n const createFn = (id) => {\n const current = this.entities[id];\n const ui = isFunc ? this.ui._akitaCreateEntityFn(current) : this.ui._akitaCreateEntityFn;\n return Object.assign({ [this.idKey]: current[this.idKey] }, ui);\n };\n if (add) {\n uiEntities = this.ids.filter((id) => isUndefined(this.ui.entities[id])).map(createFn);\n }\n else {\n uiEntities = ids.map(createFn);\n }\n add ? this.ui.add(uiEntities) : this.ui.set(uiEntities);\n }\n hasInitialUIState() {\n return this.hasUIStore() && isUndefined(this.ui._akitaCreateEntityFn) === false;\n }\n handleUIRemove(ids) {\n if (this.hasUIStore()) {\n this.ui.remove(ids);\n }\n }\n hasUIStore() {\n return this.ui instanceof EntityUIStore;\n }\n}\n__decorate([\n transaction(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object, Object, Object, Object]),\n __metadata(\"design:returntype\", void 0)\n], EntityStore.prototype, \"upsert\", null);\n__decorate([\n transaction(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof T !== \"undefined\" && T) === \"function\" ? _b : Object]),\n __metadata(\"design:returntype\", void 0)\n], EntityStore.prototype, \"toggleActive\", null);\n// @internal\nclass EntityUIStore extends EntityStore {\n constructor(initialState = {}, storeConfig = {}) {\n super(initialState, storeConfig);\n }\n /**\n *\n * Set the initial UI entity state. This function will determine the entity's\n * initial state when we call `set()` or `add()`.\n *\n * @example\n *\n * constructor() {\n * super();\n * this.createUIStore().setInitialEntityState(entity => ({ isLoading: false, isOpen: true }));\n * this.createUIStore().setInitialEntityState({ isLoading: false, isOpen: true });\n * }\n *\n */\n setInitialEntityState(createFn) {\n this._akitaCreateEntityFn = createFn;\n }\n}\n\n/**\n * @example\n *\n * query.selectEntity(2).pipe(filterNil)\n * @deprecated Use the operator function filterNilValue()\n */\nconst filterNil = (source) => source.pipe(filter((value) => value !== null && typeof value !== 'undefined'));\n/**\n * @example\n *\n * query.selectEntity(2).pipe(filterNilValue())\n */\nfunction filterNilValue() {\n return filter((value) => value !== null && value !== undefined);\n}\n\nconst queryConfigKey = 'akitaQueryConfig';\nfunction QueryConfig(metadata) {\n return function (constructor) {\n constructor[queryConfigKey] = {};\n for (let i = 0, keys = Object.keys(metadata); i < keys.length; i++) {\n const key = keys[i];\n constructor[queryConfigKey][key] = metadata[key];\n }\n };\n}\n\n// @internal\nfunction isString(value) {\n return typeof value === 'string';\n}\n\nfunction compareKeys(keysOrFuncs) {\n return function (prevState, currState) {\n const isFns = isFunction(keysOrFuncs[0]);\n // Return when they are NOT changed\n return keysOrFuncs.some(keyOrFunc => {\n if (isFns) {\n return keyOrFunc(prevState) !== keyOrFunc(currState);\n }\n return prevState[keyOrFunc] !== currState[keyOrFunc];\n }) === false;\n };\n}\n\nclass Query {\n constructor(store) {\n this.store = store;\n this.__store__ = store;\n if (isDev()) {\n // @internal\n __queries__[store.storeName] = this;\n }\n }\n select(project) {\n let mapFn;\n if (isFunction(project)) {\n mapFn = project;\n }\n else if (isString(project)) {\n mapFn = state => state[project];\n }\n else if (Array.isArray(project)) {\n return this.store\n ._select(state => state)\n .pipe(distinctUntilChanged(compareKeys(project)), map(state => {\n if (isFunction(project[0])) {\n return project.map(func => func(state));\n }\n return project.reduce((acc, k) => {\n acc[k] = state[k];\n return acc;\n }, {});\n }));\n }\n else {\n mapFn = state => state;\n }\n return this.store._select(mapFn);\n }\n /**\n * Select the loading state\n *\n * @example\n *\n * this.query.selectLoading().subscribe(isLoading => {})\n */\n selectLoading() {\n return this.select(state => state.loading);\n }\n /**\n * Select the error state\n *\n * @example\n *\n * this.query.selectError().subscribe(error => {})\n */\n selectError() {\n return this.select(state => state.error);\n }\n /**\n * Get the store's value\n *\n * @example\n *\n * this.query.getValue()\n *\n */\n getValue() {\n return this.store._value();\n }\n /**\n * Select the cache state\n *\n * @example\n *\n * this.query.selectHasCache().pipe(\n * switchMap(hasCache => {\n * return hasCache ? of() : http().pipe(res => store.set(res))\n * })\n * )\n */\n selectHasCache() {\n return this.store._cache().asObservable();\n }\n /**\n * Whether we've cached data\n *\n * @example\n *\n * this.query.getHasCache()\n *\n */\n getHasCache() {\n return this.store._cache().value;\n }\n // @internal\n get config() {\n return this.constructor[queryConfigKey];\n }\n}\n\n// @internal\nfunction findEntityByPredicate(predicate, entities) {\n for (const entityId of Object.keys(entities)) {\n if (predicate(entities[entityId]) === true) {\n return entityId;\n }\n }\n return undefined;\n}\n// @internal\nfunction getEntity(id, project) {\n return function (entities) {\n const entity = entities[id];\n if (isUndefined(entity)) {\n return undefined;\n }\n if (!project) {\n return entity;\n }\n if (isString(project)) {\n return entity[project];\n }\n return project(entity);\n };\n}\n\n// @internal\nfunction mapSkipUndefined(arr, callbackFn) {\n return arr.reduce((result, value, index, array) => {\n const val = callbackFn(value, index, array);\n if (val !== undefined) {\n result.push(val);\n }\n return result;\n }, []);\n}\n\n// @internal\nfunction sortByOptions(options, config) {\n options.sortBy = options.sortBy || (config && config.sortBy);\n options.sortByOrder = options.sortByOrder || (config && config.sortByOrder);\n}\n\n/**\n *\n * The Entity Query is similar to the general Query, with additional functionality tailored for EntityStores.\n *\n * class WidgetsQuery extends QueryEntity {\n * constructor(protected store: WidgetsStore) {\n * super(store);\n * }\n * }\n *\n *\n *\n */\nclass QueryEntity extends Query {\n constructor(store, options = {}) {\n super(store);\n this.options = options;\n this.__store__ = store;\n }\n selectAll(options = {\n asObject: false,\n }) {\n return this.select((state) => state.entities).pipe(map(() => this.getAll(options)));\n }\n getAll(options = { asObject: false, filterBy: undefined, limitTo: undefined }) {\n if (options.asObject) {\n return entitiesToMap(this.getValue(), options);\n }\n sortByOptions(options, this.config || this.options);\n return entitiesToArray(this.getValue(), options);\n }\n selectMany(ids, project) {\n if (!ids || !ids.length)\n return of([]);\n return this.select((state) => state.entities).pipe(map((entities) => mapSkipUndefined(ids, (id) => getEntity(id, project)(entities))), distinctUntilArrayItemChanged());\n }\n selectEntity(idOrPredicate, project) {\n let id = idOrPredicate;\n if (isFunction(idOrPredicate)) {\n // For performance reason we expect the entity to be in the store\n id = findEntityByPredicate(idOrPredicate, this.getValue().entities);\n }\n return this.select((state) => state.entities).pipe(map(getEntity(id, project)), distinctUntilChanged());\n }\n /**\n * Get an entity by id\n *\n * @example\n *\n * this.query.getEntity(1);\n */\n getEntity(id) {\n return this.getValue().entities[id];\n }\n /**\n * Select the active entity's id\n *\n * @example\n *\n * this.query.selectActiveId()\n */\n selectActiveId() {\n return this.select((state) => state.active);\n }\n /**\n * Get the active id\n *\n * @example\n *\n * this.query.getActiveId()\n */\n getActiveId() {\n return this.getValue().active;\n }\n selectActive(project) {\n if (isArray(this.getActive())) {\n return this.selectActiveId().pipe(switchMap((ids) => this.selectMany(ids, project)));\n }\n return this.selectActiveId().pipe(switchMap((ids) => this.selectEntity(ids, project)));\n }\n getActive() {\n const activeId = this.getActiveId();\n if (isArray(activeId)) {\n return activeId.map((id) => this.getValue().entities[id]);\n }\n return toBoolean(activeId) ? this.getEntity(activeId) : undefined;\n }\n /**\n * Select the store's entity collection length\n *\n * @example\n *\n * this.query.selectCount()\n * this.query.selectCount(entity => entity.completed)\n */\n selectCount(predicate) {\n return this.select((state) => state.entities).pipe(map(() => this.getCount(predicate)));\n }\n /**\n * Get the store's entity collection length\n *\n * @example\n *\n * this.query.getCount()\n * this.query.getCount(entity => entity.completed)\n */\n getCount(predicate) {\n if (isFunction(predicate)) {\n return this.getAll().filter(predicate).length;\n }\n return this.getValue().ids.length;\n }\n selectLast(project) {\n return this.selectAt((ids) => ids[ids.length - 1], project);\n }\n selectFirst(project) {\n return this.selectAt((ids) => ids[0], project);\n }\n selectEntityAction(actionOrActions) {\n if (isNil(actionOrActions)) {\n return this.store.selectEntityAction$;\n }\n const project = isArray(actionOrActions) ? (action) => action : ({ ids }) => ids;\n const actions = coerceArray(actionOrActions);\n return this.store.selectEntityAction$.pipe(filter(({ type }) => actions.includes(type)), map((action) => project(action)));\n }\n hasEntity(projectOrIds) {\n if (isNil(projectOrIds)) {\n return this.getValue().ids.length > 0;\n }\n if (isFunction(projectOrIds)) {\n return this.getAll().some(projectOrIds);\n }\n if (isArray(projectOrIds)) {\n return projectOrIds.every((id) => id in this.getValue().entities);\n }\n return projectOrIds in this.getValue().entities;\n }\n /**\n * Returns whether entity store has an active entity\n *\n * @example\n *\n * this.query.hasActive()\n * this.query.hasActive(3)\n *\n */\n hasActive(id) {\n const active = this.getValue().active;\n const isIdProvided = isDefined(id);\n if (Array.isArray(active)) {\n if (isIdProvided) {\n return active.includes(id);\n }\n return active.length > 0;\n }\n return isIdProvided ? active === id : isDefined(active);\n }\n /**\n *\n * Create sub UI query for querying Entity's UI state\n *\n * @example\n *\n *\n * export class ProductsQuery extends QueryEntity {\n * ui: EntityUIQuery;\n *\n * constructor(protected store: ProductsStore) {\n * super(store);\n * this.createUIQuery();\n * }\n *\n * }\n */\n createUIQuery() {\n this.ui = new EntityUIQuery(this.__store__.ui);\n }\n selectAt(mapFn, project) {\n return this.select((state) => state.ids).pipe(map(mapFn), distinctUntilChanged(), switchMap((id) => this.selectEntity(id, project)));\n }\n}\n// @internal\nclass EntityUIQuery extends QueryEntity {\n constructor(store) {\n super(store);\n }\n}\n\nfunction createStore(initialState, options) {\n return new Store(initialState, options);\n}\nfunction createQuery(store) {\n return new Query(store);\n}\nfunction createEntityStore(initialState, options) {\n return new EntityStore(initialState, options);\n}\nfunction createEntityQuery(store, options = {}) {\n return new QueryEntity(store, options);\n}\n\n/**\n * @internal\n *\n * @example\n *\n * getValue(state, 'todos.ui')\n *\n */\nfunction getValue(obj, prop) {\n /** return the whole state */\n if (prop.split('.').length === 1) {\n return obj;\n }\n const removeStoreName = prop\n .split('.')\n .slice(1)\n .join('.');\n return removeStoreName.split('.').reduce((acc, part) => acc && acc[part], obj);\n}\n\n/**\n * Generate random guid\n *\n * @example\n *\n * {\n * id: guid()\n * }\n *\n * @remarks this isn't a GUID, but a 10 char random alpha-num\n */\nfunction guid() {\n return Math.random()\n .toString(36)\n .slice(2);\n}\n\n// @internal\nfunction isNumber(value) {\n return !isArray(value) && value - parseFloat(value) + 1 >= 0;\n}\n\n/**\n * @internal\n *\n * @example\n * setValue(state, 'todos.ui', { filter: {} })\n */\nfunction setValue(obj, prop, val, replace = false) {\n const split = prop.split('.');\n if (split.length === 1) {\n return Object.assign(Object.assign({}, obj), val);\n }\n obj = Object.assign({}, obj);\n const lastIndex = split.length - 2;\n const removeStoreName = prop.split('.').slice(1);\n removeStoreName.reduce((acc, part, index) => {\n if (index !== lastIndex) {\n acc[part] = Object.assign({}, acc[part]);\n return acc && acc[part];\n }\n acc[part] = replace || Array.isArray(acc[part]) || !isObject(acc[part]) ? val : Object.assign(Object.assign({}, acc[part]), val);\n return acc && acc[part];\n }, obj);\n return obj;\n}\n\nlet skipStorageUpdate = false;\nconst _persistStateInit = new ReplaySubject(1);\nfunction selectPersistStateInit() {\n return _persistStateInit.asObservable();\n}\nfunction setSkipStorageUpdate(skip) {\n skipStorageUpdate = skip;\n}\nfunction getSkipStorageUpdate() {\n return skipStorageUpdate;\n}\nfunction isPromise(v) {\n return v && isFunction(v.then);\n}\nfunction observify(asyncOrValue) {\n if (isPromise(asyncOrValue) || isObservable(asyncOrValue)) {\n return from(asyncOrValue);\n }\n return of(asyncOrValue);\n}\nfunction persistState(params) {\n const defaults = {\n key: 'AkitaStores',\n enableInNonBrowser: false,\n storage: !hasLocalStorage() ? params.storage : localStorage,\n deserialize: JSON.parse,\n serialize: JSON.stringify,\n include: [],\n select: [],\n persistOnDestroy: false,\n preStorageUpdate: function (storeName, state) {\n return state;\n },\n preStoreUpdate: function (storeName, state) {\n return state;\n },\n skipStorageUpdate: getSkipStorageUpdate,\n preStorageUpdateOperator: () => (source) => source,\n };\n const { storage, enableInNonBrowser, deserialize, serialize, include, select, key, preStorageUpdate, persistOnDestroy, preStorageUpdateOperator, preStoreUpdate, skipStorageUpdate } = Object.assign({}, defaults, params);\n if ((isNotBrowser && !enableInNonBrowser) || !storage)\n return;\n const hasInclude = include.length > 0;\n const hasSelect = select.length > 0;\n let includeStores;\n let selectStores;\n if (hasInclude) {\n includeStores = include.reduce((acc, path) => {\n if (isFunction(path)) {\n acc.fns.push(path);\n }\n else {\n const storeName = path.split('.')[0];\n acc[storeName] = path;\n }\n return acc;\n }, { fns: [] });\n }\n if (hasSelect) {\n selectStores = select.reduce((acc, selectFn) => {\n acc[selectFn.storeName] = selectFn;\n return acc;\n }, {});\n }\n let stores = {};\n let acc = {};\n let subscriptions = [];\n const buffer = [];\n function _save(v) {\n observify(v).subscribe(() => {\n const next = buffer.shift();\n next && _save(next);\n });\n }\n // when we use the local/session storage we perform the serialize, otherwise we let the passed storage implementation to do it\n const isLocalStorage = (hasLocalStorage() && storage === localStorage) || (hasSessionStorage() && storage === sessionStorage);\n observify(storage.getItem(key)).subscribe((value) => {\n let storageState = isObject(value) ? value : deserialize(value || '{}');\n function save(storeCache) {\n storageState['$cache'] = Object.assign(Object.assign({}, (storageState['$cache'] || {})), storeCache);\n storageState = Object.assign({}, storageState, acc);\n buffer.push(storage.setItem(key, isLocalStorage ? serialize(storageState) : storageState));\n _save(buffer.shift());\n }\n function subscribe(storeName, path) {\n stores[storeName] = __stores__[storeName]\n ._select((state) => getValue(state, path))\n .pipe(skip(1), map((store) => {\n if (hasSelect && selectStores[storeName]) {\n return selectStores[storeName](store);\n }\n return store;\n }), filter(() => skipStorageUpdate() === false), preStorageUpdateOperator())\n .subscribe((data) => {\n acc[storeName] = preStorageUpdate(storeName, data);\n Promise.resolve().then(() => save({ [storeName]: __stores__[storeName]._cache().getValue() }));\n });\n }\n function setInitial(storeName, store, path) {\n if (storeName in storageState) {\n setAction('@PersistState');\n store._setState((state) => {\n return setValue(state, path, preStoreUpdate(storeName, storageState[storeName], state));\n });\n const hasCache = storageState['$cache'] ? storageState['$cache'][storeName] : false;\n __stores__[storeName].setHasCache(hasCache, { restartTTL: true });\n }\n }\n subscriptions.push($$deleteStore.subscribe((storeName) => {\n if (stores[storeName]) {\n if (persistOnDestroy === false) {\n save({ [storeName]: false });\n }\n stores[storeName].unsubscribe();\n delete stores[storeName];\n }\n }));\n subscriptions.push($$addStore.subscribe((storeName) => {\n if (storeName === 'router') {\n return;\n }\n const store = __stores__[storeName];\n if (hasInclude) {\n let path = includeStores[storeName];\n if (!path) {\n const passPredicate = includeStores.fns.some((fn) => fn(storeName));\n if (passPredicate) {\n path = storeName;\n }\n else {\n return;\n }\n }\n setInitial(storeName, store, path);\n subscribe(storeName, path);\n }\n else {\n setInitial(storeName, store, storeName);\n subscribe(storeName, storeName);\n }\n }));\n _persistStateInit.next();\n });\n return {\n destroy() {\n subscriptions.forEach((s) => s.unsubscribe());\n for (let i = 0, keys = Object.keys(stores); i < keys.length; i++) {\n const storeName = keys[i];\n stores[storeName].unsubscribe();\n }\n stores = {};\n },\n clear() {\n storage.clear();\n },\n clearStore(storeName) {\n if (isNil(storeName)) {\n const value = observify(storage.setItem(key, '{}'));\n value.subscribe();\n return;\n }\n const value = storage.getItem(key);\n observify(value).subscribe((v) => {\n const storageState = deserialize(v || '{}');\n if (storageState[storeName]) {\n delete storageState[storeName];\n const value = observify(storage.setItem(key, serialize(storageState)));\n value.subscribe();\n }\n });\n },\n };\n}\n\nclass AkitaPlugin {\n constructor(query, config) {\n this.query = query;\n if (config && config.resetFn) {\n if (getAkitaConfig().resettable) {\n this.onReset(config.resetFn);\n }\n }\n }\n /** This method is responsible for getting access to the query. */\n getQuery() {\n return this.query;\n }\n /** This method is responsible for getting access to the store. */\n getStore() {\n return this.getQuery().__store__;\n }\n /** This method is responsible tells whether the plugin is entityBased or not. */\n isEntityBased(entityId) {\n return toBoolean(entityId);\n }\n /** This method is responsible for selecting the source; it can be the whole store or one entity. */\n selectSource(entityId, property) {\n if (this.isEntityBased(entityId)) {\n return this.getQuery().selectEntity(entityId).pipe(filterNilValue());\n }\n if (property) {\n return this.getQuery().select((state) => getValue(state, this.withStoreName(property)));\n }\n return this.getQuery().select();\n }\n getSource(entityId, property) {\n if (this.isEntityBased(entityId)) {\n return this.getQuery().getEntity(entityId);\n }\n const state = this.getQuery().getValue();\n if (property) {\n return getValue(state, this.withStoreName(property));\n }\n return state;\n }\n withStoreName(prop) {\n return `${this.storeName}.${prop}`;\n }\n get storeName() {\n return this.getStore().storeName;\n }\n /** This method is responsible for updating the store or one entity; it can be the whole store or one entity. */\n updateStore(newState, entityId, property, replace = false) {\n if (this.isEntityBased(entityId)) {\n const store = this.getStore();\n replace ? store.replace(entityId, newState) : store.update(entityId, newState);\n }\n else {\n if (property) {\n this.getStore()._setState((state) => {\n return setValue(state, this.withStoreName(property), newState, true);\n });\n return;\n }\n const nextState = replace ? newState : (state) => (Object.assign(Object.assign({}, state), newState));\n this.getStore()._setState(nextState);\n }\n }\n /**\n * Function to invoke upon reset\n */\n onReset(fn) {\n const original = this.getStore().reset;\n this.getStore().reset = (...params) => {\n /** It should run after the plugin destroy method */\n setTimeout(() => {\n original.apply(this.getStore(), params);\n fn();\n });\n };\n }\n}\n\nconst ɵ0 = (head, current) => JSON.stringify(head) !== JSON.stringify(current);\nconst dirtyCheckDefaultParams = {\n comparator: ɵ0,\n};\nfunction getNestedPath(nestedObj, path) {\n const pathAsArray = path.split('.');\n return pathAsArray.reduce((obj, key) => (obj && obj[key] !== 'undefined' ? obj[key] : undefined), nestedObj);\n}\nclass DirtyCheckPlugin extends AkitaPlugin {\n constructor(query, params, _entityId) {\n super(query);\n this.query = query;\n this.params = params;\n this._entityId = _entityId;\n this.dirty = new BehaviorSubject(false);\n this.active = false;\n this._reset = new Subject();\n this.isDirty$ = this.dirty.asObservable().pipe(distinctUntilChanged());\n this.reset$ = this._reset.asObservable();\n this.params = Object.assign(Object.assign({}, dirtyCheckDefaultParams), params);\n if (this.params.watchProperty) {\n const watchProp = coerceArray(this.params.watchProperty);\n if (query instanceof QueryEntity && watchProp.includes('entities') && !watchProp.includes('ids')) {\n watchProp.push('ids');\n }\n this.params.watchProperty = watchProp;\n }\n }\n reset(params = {}) {\n let currentValue = this.head;\n if (isFunction(params.updateFn)) {\n if (this.isEntityBased(this._entityId)) {\n currentValue = params.updateFn(this.head, this.getQuery().getEntity(this._entityId));\n }\n else {\n currentValue = params.updateFn(this.head, this.getQuery().getValue());\n }\n }\n logAction(`@DirtyCheck - Revert`);\n this.updateStore(currentValue, this._entityId);\n this._reset.next();\n }\n setHead() {\n if (!this.active) {\n this.activate();\n this.active = true;\n }\n else {\n this.head = this._getHead();\n }\n this.updateDirtiness(false);\n return this;\n }\n isDirty() {\n return !!this.dirty.value;\n }\n hasHead() {\n return !!this.getHead();\n }\n destroy() {\n this.head = null;\n this.subscription && this.subscription.unsubscribe();\n this._reset && this._reset.complete();\n }\n isPathDirty(path) {\n const head = this.getHead();\n const current = this.getQuery().getValue();\n const currentPathValue = getNestedPath(current, path);\n const headPathValue = getNestedPath(head, path);\n return this.params.comparator(currentPathValue, headPathValue);\n }\n getHead() {\n return this.head;\n }\n activate() {\n this.head = this._getHead();\n /** if we are tracking specific properties select only the relevant ones */\n const sources = this.params.watchProperty\n ? this.params.watchProperty.map((prop) => this.query\n .select((state) => state[prop])\n .pipe(map((val) => ({\n val,\n __akitaKey: prop,\n }))))\n : [this.selectSource(this._entityId)];\n this.subscription = combineLatest(sources)\n .pipe(skip(1))\n .subscribe((currentState) => {\n if (isUndefined(this.head))\n return;\n /** __akitaKey is used to determine if we are tracking a specific property or a store change */\n const isChange = currentState.some((state) => {\n const head = state.__akitaKey ? this.head[state.__akitaKey] : this.head;\n const compareTo = state.__akitaKey ? state.val : state;\n return this.params.comparator(head, compareTo);\n });\n this.updateDirtiness(isChange);\n });\n }\n updateDirtiness(isDirty) {\n this.dirty.next(isDirty);\n }\n _getHead() {\n let head = this.getSource(this._entityId);\n if (this.params.watchProperty) {\n head = this.getWatchedValues(head);\n }\n return head;\n }\n getWatchedValues(source) {\n return this.params.watchProperty.reduce((watched, prop) => {\n watched[prop] = source[prop];\n return watched;\n }, {});\n }\n}\n\n/**\n * Each plugin that wants to add support for entities should extend this interface.\n */\nclass EntityCollectionPlugin {\n constructor(query, entityIds) {\n this.query = query;\n this.entityIds = entityIds;\n this.entities = new Map();\n }\n /**\n * Get the entity plugin instance.\n */\n getEntity(id) {\n return this.entities.get(id);\n }\n /**\n * Whether the entity plugin exist.\n */\n hasEntity(id) {\n return this.entities.has(id);\n }\n /**\n * Remove the entity plugin instance.\n */\n removeEntity(id) {\n this.destroy(id);\n return this.entities.delete(id);\n }\n /**\n * Set the entity plugin instance.\n */\n createEntity(id, plugin) {\n return this.entities.set(id, plugin);\n }\n /**\n * If the user passes `entityIds` we take them; otherwise, we take all.\n */\n getIds() {\n return isUndefined(this.entityIds) ? this.query.getValue().ids : coerceArray(this.entityIds);\n }\n /**\n * When you call one of the plugin methods, you can pass id/ids or undefined which means all.\n */\n resolvedIds(ids) {\n return isUndefined(ids) ? this.getIds() : coerceArray(ids);\n }\n /**\n * Call this method when you want to activate the plugin on init or when you need to listen to add/remove of entities dynamically.\n *\n * For example in your plugin you may do the following:\n *\n * this.query.select(state => state.ids).pipe(skip(1)).subscribe(ids => this.activate(ids));\n */\n rebase(ids, actions = {}) {\n /**\n *\n * If the user passes `entityIds` & we have new ids check if we need to add/remove instances.\n *\n * This phase will be called only upon update.\n */\n if (toBoolean(ids)) {\n /**\n * Which means all\n */\n if (isUndefined(this.entityIds)) {\n for (let i = 0, len = ids.length; i < len; i++) {\n const entityId = ids[i];\n if (this.hasEntity(entityId) === false) {\n isFunction(actions.beforeAdd) && actions.beforeAdd(entityId);\n const plugin = this.instantiatePlugin(entityId);\n this.entities.set(entityId, plugin);\n isFunction(actions.afterAdd) && actions.afterAdd(plugin);\n }\n }\n this.entities.forEach((plugin, entityId) => {\n if (ids.indexOf(entityId) === -1) {\n isFunction(actions.beforeRemove) && actions.beforeRemove(plugin);\n this.removeEntity(entityId);\n }\n });\n }\n else {\n /**\n * Which means the user passes specific ids\n */\n const _ids = coerceArray(this.entityIds);\n for (let i = 0, len = _ids.length; i < len; i++) {\n const entityId = _ids[i];\n /** The Entity in current ids and doesn't exist, add it. */\n if (ids.indexOf(entityId) > -1 && this.hasEntity(entityId) === false) {\n isFunction(actions.beforeAdd) && actions.beforeAdd(entityId);\n const plugin = this.instantiatePlugin(entityId);\n this.entities.set(entityId, plugin);\n isFunction(actions.afterAdd) && actions.afterAdd(plugin);\n }\n else {\n this.entities.forEach((plugin, entityId) => {\n /** The Entity not in current ids and exists, remove it. */\n if (ids.indexOf(entityId) === -1 && this.hasEntity(entityId) === true) {\n isFunction(actions.beforeRemove) && actions.beforeRemove(plugin);\n this.removeEntity(entityId);\n }\n });\n }\n }\n }\n }\n else {\n /**\n * Otherwise, start with the provided ids or all.\n */\n this.getIds().forEach(id => {\n if (!this.hasEntity(id))\n this.createEntity(id, this.instantiatePlugin(id));\n });\n }\n }\n /**\n * Listen for add/remove entities.\n */\n selectIds() {\n return this.query.select(state => state.ids);\n }\n /**\n * Base method for activation, you can override it if you need to.\n */\n activate(ids) {\n this.rebase(ids);\n }\n /**\n * Loop over each id and invoke the plugin method.\n */\n forEachId(ids, cb) {\n const _ids = this.resolvedIds(ids);\n for (let i = 0, len = _ids.length; i < len; i++) {\n const id = _ids[i];\n if (this.hasEntity(id)) {\n cb(this.getEntity(id));\n }\n }\n }\n}\n\nclass EntityDirtyCheckPlugin extends EntityCollectionPlugin {\n constructor(query, params = {}) {\n super(query, params.entityIds);\n this.query = query;\n this.params = params;\n this._someDirty = new Subject();\n this.someDirty$ = merge(this.query.select(state => state.entities), this._someDirty.asObservable()).pipe(auditTime(0), map(() => this.checkSomeDirty()));\n this.params = Object.assign(Object.assign({}, dirtyCheckDefaultParams), params);\n // TODO lazy activate?\n this.activate();\n this.selectIds()\n .pipe(skip(1))\n .subscribe(ids => {\n super.rebase(ids, { afterAdd: plugin => plugin.setHead() });\n });\n }\n setHead(ids) {\n if (this.params.entityIds && ids) {\n const toArray = coerceArray(ids);\n const someAreWatched = coerceArray(this.params.entityIds).some(id => toArray.indexOf(id) > -1);\n if (someAreWatched === false) {\n return this;\n }\n }\n this.forEachId(ids, e => e.setHead());\n this._someDirty.next();\n return this;\n }\n hasHead(id) {\n if (this.entities.has(id)) {\n const entity = this.getEntity(id);\n return entity.hasHead();\n }\n return false;\n }\n reset(ids, params = {}) {\n this.forEachId(ids, e => e.reset(params));\n }\n isDirty(id, asObservable = true) {\n if (this.entities.has(id)) {\n const entity = this.getEntity(id);\n return asObservable ? entity.isDirty$ : entity.isDirty();\n }\n return false;\n }\n someDirty() {\n return this.checkSomeDirty();\n }\n isPathDirty(id, path) {\n if (this.entities.has(id)) {\n const head = this.getEntity(id).getHead();\n const current = this.query.getEntity(id);\n const currentPathValue = getNestedPath(current, path);\n const headPathValue = getNestedPath(head, path);\n return this.params.comparator(currentPathValue, headPathValue);\n }\n return null;\n }\n destroy(ids) {\n this.forEachId(ids, e => e.destroy());\n /** complete only when the plugin destroys */\n if (!ids) {\n this._someDirty.complete();\n }\n }\n instantiatePlugin(id) {\n return new DirtyCheckPlugin(this.query, this.params, id);\n }\n checkSomeDirty() {\n const entitiesIds = this.resolvedIds();\n for (const id of entitiesIds) {\n if (this.getEntity(id).isDirty()) {\n return true;\n }\n }\n return false;\n }\n}\n\nconst paginatorDefaults = {\n pagesControls: false,\n range: false,\n startWith: 1,\n cacheTimeout: undefined,\n clearStoreWithCache: true,\n};\nclass PaginatorPlugin extends AkitaPlugin {\n constructor(query, config = {}) {\n super(query, {\n resetFn: () => {\n this.initial = false;\n this.destroy({ clearCache: true, currentPage: 1 });\n },\n });\n this.query = query;\n this.config = config;\n /** Save current filters, sorting, etc. in cache */\n this.metadata = new Map();\n this.pages = new Map();\n this.pagination = {\n currentPage: 1,\n perPage: 0,\n total: 0,\n lastPage: 0,\n data: [],\n };\n /**\n * When the user navigates to a different page and return\n * we don't want to call `clearCache` on first time.\n */\n this.initial = true;\n /**\n * Proxy to the query loading\n */\n this.isLoading$ = this.query.selectLoading().pipe(delay(0));\n this.config = Object.assign(Object.assign({}, paginatorDefaults), config);\n const { startWith, cacheTimeout } = this.config;\n this.page = new BehaviorSubject(startWith);\n if (isObservable(cacheTimeout)) {\n this.clearCacheSubscription = cacheTimeout.subscribe(() => this.clearCache());\n }\n }\n /**\n * Listen to page changes\n */\n get pageChanges() {\n return this.page.asObservable();\n }\n /**\n * Get the current page number\n */\n get currentPage() {\n return this.pagination.currentPage;\n }\n /**\n * Check if current page is the first one\n */\n get isFirst() {\n return this.currentPage === 1;\n }\n /**\n * Check if current page is the last one\n */\n get isLast() {\n return this.currentPage === this.pagination.lastPage;\n }\n /**\n * Whether to generate an array of pages for *ngFor\n * [1, 2, 3, 4]\n */\n withControls() {\n this.config.pagesControls = true;\n return this;\n }\n /**\n * Whether to generate the `from` and `to` keys\n * [1, 2, 3, 4]\n */\n withRange() {\n this.config.range = true;\n return this;\n }\n /**\n * Set the loading state\n */\n setLoading(value = true) {\n this.getStore().setLoading(value);\n }\n /**\n * Update the pagination object and add the page\n */\n update(response) {\n this.pagination = response;\n this.addPage(response.data);\n }\n /**\n *\n * Set the ids and add the page to store\n */\n addPage(data) {\n this.pages.set(this.currentPage, { ids: data.map((entity) => entity[this.getStore().idKey]) });\n this.getStore().upsertMany(data);\n }\n /**\n * Clear the cache.\n */\n clearCache(options = {}) {\n if (!this.initial) {\n logAction('@Pagination - Clear Cache');\n if (options.clearStore !== false && (this.config.clearStoreWithCache || options.clearStore)) {\n this.getStore().remove();\n }\n this.pages = new Map();\n this.metadata = new Map();\n }\n this.initial = false;\n }\n clearPage(page) {\n this.pages.delete(page);\n }\n /**\n * Clear the cache timeout and optionally the pages\n */\n destroy({ clearCache, currentPage } = {}) {\n if (this.clearCacheSubscription) {\n this.clearCacheSubscription.unsubscribe();\n }\n if (clearCache) {\n this.clearCache();\n }\n if (!isUndefined(currentPage)) {\n this.setPage(currentPage);\n }\n this.initial = true;\n }\n /**\n * Whether the provided page is active\n */\n isPageActive(page) {\n return this.currentPage === page;\n }\n /**\n * Set the current page\n */\n setPage(page) {\n if (page !== this.currentPage || !this.hasPage(page)) {\n this.page.next((this.pagination.currentPage = page));\n }\n }\n /**\n * Increment current page\n */\n nextPage() {\n if (this.currentPage !== this.pagination.lastPage) {\n this.setPage(this.pagination.currentPage + 1);\n }\n }\n /**\n * Decrement current page\n */\n prevPage() {\n if (this.pagination.currentPage > 1) {\n this.setPage(this.pagination.currentPage - 1);\n }\n }\n /**\n * Set current page to last\n */\n setLastPage() {\n this.setPage(this.pagination.lastPage);\n }\n /**\n * Set current page to first\n */\n setFirstPage() {\n this.setPage(1);\n }\n /**\n * Check if page exists in cache\n */\n hasPage(page) {\n return this.pages.has(page);\n }\n /**\n * Get the current page if it's in cache, otherwise invoke the request\n */\n getPage(req) {\n let page = this.pagination.currentPage;\n if (this.hasPage(page)) {\n return this.selectPage(page);\n }\n else {\n this.setLoading(true);\n return from(req()).pipe(switchMap((config) => {\n page = config.currentPage;\n applyTransaction(() => {\n this.setLoading(false);\n this.update(config);\n });\n return this.selectPage(page);\n }));\n }\n }\n getQuery() {\n return this.query;\n }\n refreshCurrentPage() {\n if (isNil(this.currentPage) === false) {\n this.clearPage(this.currentPage);\n this.setPage(this.currentPage);\n }\n }\n getFrom() {\n if (this.isFirst) {\n return 1;\n }\n return (this.currentPage - 1) * this.pagination.perPage + 1;\n }\n getTo() {\n if (this.isLast) {\n return this.pagination.total;\n }\n return this.currentPage * this.pagination.perPage;\n }\n /**\n * Select the page\n */\n selectPage(page) {\n return this.query.selectAll({ asObject: true }).pipe(take(1), map((entities) => {\n const response = Object.assign(Object.assign({}, this.pagination), { data: this.pages.get(page).ids.map((id) => entities[id]) });\n const { range, pagesControls } = this.config;\n /** If no total - calc it */\n if (isNaN(this.pagination.total)) {\n if (response.lastPage === 1) {\n response.total = response.data ? response.data.length : 0;\n }\n else {\n response.total = response.perPage * response.lastPage;\n }\n this.pagination.total = response.total;\n }\n if (range) {\n response.from = this.getFrom();\n response.to = this.getTo();\n }\n if (pagesControls) {\n response.pageControls = generatePages(this.pagination.total, this.pagination.perPage);\n }\n return response;\n }));\n }\n}\n__decorate([\n action('@Pagination - New Page'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", [Object]),\n __metadata(\"design:returntype\", void 0)\n], PaginatorPlugin.prototype, \"update\", null);\n\n/**\n * Generate an array so we can ngFor them to navigate between pages\n */\nfunction generatePages(total, perPage) {\n const len = Math.ceil(total / perPage);\n const arr = [];\n for (let i = 0; i < len; i++) {\n arr.push(i + 1);\n }\n return arr;\n}\n/** backward compatibility */\nconst Paginator = PaginatorPlugin;\n\nclass PersistNgFormPlugin extends AkitaPlugin {\n constructor(query, factoryFnOrPath, params = {}) {\n super(query);\n this.query = query;\n this.factoryFnOrPath = factoryFnOrPath;\n this.params = params;\n this.params = Object.assign({ debounceTime: 300, formKey: 'akitaForm', emitEvent: false, arrControlFactory: v => this.builder.control(v) }, params);\n this.isRootKeys = toBoolean(factoryFnOrPath) === false;\n this.isKeyBased = isString(factoryFnOrPath) || this.isRootKeys;\n }\n setForm(form, builder) {\n this.form = form;\n this.builder = builder;\n this.activate();\n return this;\n }\n reset(initialState) {\n let value;\n if (initialState) {\n value = initialState;\n }\n else {\n value = this.isKeyBased ? this.initialValue : this.factoryFnOrPath();\n }\n if (this.isKeyBased) {\n Object.keys(this.initialValue).forEach(stateKey => {\n const value = this.initialValue[stateKey];\n if (Array.isArray(value) && this.builder) {\n const formArray = this.form.controls[stateKey];\n this.cleanArray(formArray);\n value.forEach((v, i) => {\n this.form.get(stateKey).insert(i, this.params.arrControlFactory(v));\n });\n }\n });\n }\n this.form.patchValue(value, { emitEvent: this.params.emitEvent });\n const storeValue = this.isKeyBased ? setValue(this.getQuery().getValue(), `${this.getStore().storeName}.${this.factoryFnOrPath}`, value) : { [this.params.formKey]: value };\n this.updateStore(storeValue);\n }\n cleanArray(control) {\n while (control.length !== 0) {\n control.removeAt(0);\n }\n }\n resolveInitialValue(formValue, root) {\n if (!formValue)\n return;\n return Object.keys(formValue).reduce((acc, stateKey) => {\n const value = root[stateKey];\n if (Array.isArray(value) && this.builder) {\n const factory = this.params.arrControlFactory;\n this.cleanArray(this.form.get(stateKey));\n value.forEach((v, i) => {\n this.form.get(stateKey).insert(i, factory(v));\n });\n }\n acc[stateKey] = root[stateKey];\n return acc;\n }, {});\n }\n activate() {\n let path;\n if (this.isKeyBased) {\n if (this.isRootKeys) {\n this.initialValue = this.resolveInitialValue(this.form.value, this.getQuery().getValue());\n this.form.patchValue(this.initialValue, { emitEvent: this.params.emitEvent });\n }\n else {\n path = `${this.getStore().storeName}.${this.factoryFnOrPath}`;\n const root = getValue(this.getQuery().getValue(), path);\n this.initialValue = this.resolveInitialValue(root, root);\n this.form.patchValue(this.initialValue, { emitEvent: this.params.emitEvent });\n }\n }\n else {\n if (!this.getQuery().getValue()[this.params.formKey]) {\n logAction('@PersistNgFormPlugin activate');\n this.updateStore({ [this.params.formKey]: this.factoryFnOrPath() });\n }\n const value = this.getQuery().getValue()[this.params.formKey];\n this.form.patchValue(value);\n }\n this.formChanges = this.form.valueChanges.pipe(debounceTime(this.params.debounceTime)).subscribe(value => {\n logAction('@PersistForm - Update');\n let newState;\n if (this.isKeyBased) {\n if (this.isRootKeys) {\n newState = state => (Object.assign(Object.assign({}, state), value));\n }\n else {\n newState = state => setValue(state, path, value);\n }\n }\n else {\n newState = () => ({ [this.params.formKey]: value });\n }\n this.updateStore(newState(this.getQuery().getValue()));\n });\n }\n destroy() {\n this.formChanges && this.formChanges.unsubscribe();\n this.form = null;\n this.builder = null;\n }\n}\n\nclass StateHistoryPlugin extends AkitaPlugin {\n constructor(query, params = {}, _entityId) {\n super(query, {\n resetFn: () => this.clear(),\n });\n this.query = query;\n this.params = params;\n this._entityId = _entityId;\n /** Allow skipping an update from outside */\n this.skip = false;\n this.history = {\n past: [],\n present: null,\n future: [],\n };\n /** Skip the update when redo/undo */\n this.skipUpdate = false;\n params.maxAge = !!params.maxAge ? params.maxAge : 10;\n params.comparator = params.comparator || (() => true);\n this.activate();\n }\n /**\n * Observable stream representing whether the history plugin has an available past\n *\n */\n get hasPast$() {\n return this._hasPast$;\n }\n /**\n * Observable stream representing whether the history plugin has an available future\n *\n */\n get hasFuture$() {\n return this._hasFuture$;\n }\n get hasPast() {\n return this.history.past.length > 0;\n }\n get hasFuture() {\n return this.history.future.length > 0;\n }\n get property() {\n return this.params.watchProperty;\n }\n /* Updates the hasPast$ hasFuture$ observables*/\n updateHasHistory() {\n this.hasFutureSubject.next(this.hasFuture);\n this.hasPastSubject.next(this.hasPast);\n }\n activate() {\n this.hasPastSubject = new BehaviorSubject(false);\n this._hasPast$ = this.hasPastSubject.asObservable().pipe(distinctUntilChanged());\n this.hasFutureSubject = new BehaviorSubject(false);\n this._hasFuture$ = this.hasFutureSubject.asObservable().pipe(distinctUntilChanged());\n this.history.present = this.getSource(this._entityId, this.property);\n this.subscription = this\n .selectSource(this._entityId, this.property)\n .pipe(pairwise())\n .subscribe(([past, present]) => {\n if (this.skip) {\n this.skip = false;\n return;\n }\n /**\n * comparator: (prev, current) => isEqual(prev, current) === false\n */\n const shouldUpdate = this.params.comparator(past, present);\n if (!this.skipUpdate && shouldUpdate) {\n if (this.history.past.length === this.params.maxAge) {\n this.history.past = this.history.past.slice(1);\n }\n this.history.past = [...this.history.past, past];\n this.history.present = present;\n this.updateHasHistory();\n }\n });\n }\n undo() {\n if (this.history.past.length > 0) {\n const { past, present } = this.history;\n const previous = past[past.length - 1];\n this.history.past = past.slice(0, past.length - 1);\n this.history.present = previous;\n this.history.future = [present, ...this.history.future];\n this.update();\n }\n }\n redo() {\n if (this.history.future.length > 0) {\n const { past, present } = this.history;\n const next = this.history.future[0];\n const newFuture = this.history.future.slice(1);\n this.history.past = [...past, present];\n this.history.present = next;\n this.history.future = newFuture;\n this.update('Redo');\n }\n }\n jumpToPast(index) {\n if (index < 0 || index >= this.history.past.length)\n return;\n const { past, future, present } = this.history;\n /**\n *\n * const past = [1, 2, 3, 4, 5];\n * const present = 6;\n * const future = [7, 8, 9];\n * const index = 2;\n *\n * newPast = past.slice(0, index) = [1, 2];\n * newPresent = past[index] = 3;\n * newFuture = [...past.slice(index + 1),present, ...future] = [4, 5, 6, 7, 8, 9];\n *\n */\n const newPast = past.slice(0, index);\n const newFuture = [...past.slice(index + 1), present, ...future];\n const newPresent = past[index];\n this.history.past = newPast;\n this.history.present = newPresent;\n this.history.future = newFuture;\n this.update();\n }\n jumpToFuture(index) {\n if (index < 0 || index >= this.history.future.length)\n return;\n const { past, future, present } = this.history;\n /**\n *\n * const past = [1, 2, 3, 4, 5];\n * const present = 6;\n * const future = [7, 8, 9, 10]\n * const index = 1\n *\n * newPast = [...past, present, ...future.slice(0, index) = [1, 2, 3, 4, 5, 6, 7];\n * newPresent = future[index] = 8;\n * newFuture = futrue.slice(index+1) = [9, 10];\n *\n */\n const newPast = [...past, present, ...future.slice(0, index)];\n const newPresent = future[index];\n const newFuture = future.slice(index + 1);\n this.history.past = newPast;\n this.history.present = newPresent;\n this.history.future = newFuture;\n this.update('Redo');\n }\n /**\n *\n * jump n steps in the past or forward\n *\n */\n jump(n) {\n if (n > 0)\n return this.jumpToFuture(n - 1);\n if (n < 0)\n return this.jumpToPast(this.history.past.length + n);\n }\n /**\n * Clear the history\n *\n * @param customUpdateFn Callback function for only clearing part of the history\n *\n * @example\n *\n * stateHistory.clear((history) => {\n * return {\n * past: history.past,\n * present: history.present,\n * future: []\n * };\n * });\n */\n clear(customUpdateFn) {\n this.history = isFunction(customUpdateFn)\n ? customUpdateFn(this.history)\n : {\n past: [],\n present: null,\n future: [],\n };\n this.updateHasHistory();\n }\n destroy(clearHistory = false) {\n if (clearHistory) {\n this.clear();\n }\n this.subscription.unsubscribe();\n }\n ignoreNext() {\n this.skip = true;\n }\n update(action = 'Undo') {\n this.skipUpdate = true;\n logAction(`@StateHistory - ${action}`);\n this.updateStore(this.history.present, this._entityId, this.property, true);\n this.updateHasHistory();\n this.skipUpdate = false;\n }\n}\n\nclass EntityStateHistoryPlugin extends EntityCollectionPlugin {\n constructor(query, params = {}) {\n super(query, params.entityIds);\n this.query = query;\n this.params = params;\n params.maxAge = toBoolean(params.maxAge) ? params.maxAge : 10;\n this.activate();\n this.selectIds()\n .pipe(skip(1))\n .subscribe((ids) => this.activate(ids));\n }\n redo(ids) {\n this.forEachId(ids, (e) => e.redo());\n }\n undo(ids) {\n this.forEachId(ids, (e) => e.undo());\n }\n hasPast(id) {\n if (this.hasEntity(id)) {\n return this.getEntity(id).hasPast;\n }\n }\n hasFuture(id) {\n if (this.hasEntity(id)) {\n return this.getEntity(id).hasFuture;\n }\n }\n jumpToFuture(ids, index) {\n this.forEachId(ids, (e) => e.jumpToFuture(index));\n }\n jumpToPast(ids, index) {\n this.forEachId(ids, (e) => e.jumpToPast(index));\n }\n clear(ids, customUpdateFn) {\n this.forEachId(ids, (e) => e.clear(customUpdateFn));\n }\n destroy(ids, clearHistory = false) {\n this.forEachId(ids, (e) => e.destroy(clearHistory));\n }\n ignoreNext(ids) {\n this.forEachId(ids, (e) => e.ignoreNext());\n }\n instantiatePlugin(id) {\n return new StateHistoryPlugin(this.query, this.params, id);\n }\n}\n\n/**\n * Reset stores back to their initial state\n *\n * @example\n *\n * resetStores()\n * resetStores({\n * exclude: ['auth']\n * })\n */\nfunction resetStores(options) {\n const defaults = {\n exclude: []\n };\n options = Object.assign({}, defaults, options);\n const stores = Object.keys(__stores__);\n applyTransaction(() => {\n for (const store of stores) {\n const s = __stores__[store];\n if (!options.exclude) {\n s.reset();\n }\n else {\n if (options.exclude.indexOf(s.storeName) === -1) {\n s.reset();\n }\n }\n }\n });\n}\n\nvar StoreAction;\n(function (StoreAction) {\n StoreAction[\"Update\"] = \"UPDATE\";\n})(StoreAction || (StoreAction = {}));\nconst StoreActionMapping = {\n [StoreAction.Update]: 'update',\n};\nvar EntityStoreAction;\n(function (EntityStoreAction) {\n EntityStoreAction[\"Update\"] = \"UPDATE\";\n EntityStoreAction[\"AddEntities\"] = \"ADD_ENTITIES\";\n EntityStoreAction[\"SetEntities\"] = \"SET_ENTITIES\";\n EntityStoreAction[\"UpdateEntities\"] = \"UPDATE_ENTITIES\";\n EntityStoreAction[\"RemoveEntities\"] = \"REMOVE_ENTITIES\";\n EntityStoreAction[\"UpsertEntities\"] = \"UPSERT_ENTITIES\";\n EntityStoreAction[\"UpsertManyEntities\"] = \"UPSERT_MANY_ENTITIES\";\n})(EntityStoreAction || (EntityStoreAction = {}));\nconst EntityStoreActionMapping = {\n [EntityStoreAction.Update]: 'update',\n [EntityStoreAction.AddEntities]: 'add',\n [EntityStoreAction.SetEntities]: 'set',\n [EntityStoreAction.UpdateEntities]: 'update',\n [EntityStoreAction.RemoveEntities]: 'remove',\n [EntityStoreAction.UpsertEntities]: 'upsert',\n [EntityStoreAction.UpsertManyEntities]: 'upsertMany',\n};\n/**\n * Get a {@link Store} from the global store registry.\n * @param storeClass The {@link Store} class of the instance to be returned.\n */\nfunction getStore(storeClass) {\n return getStoreByName(storeClass[configKey]['storeName']);\n}\n/**\n * Get a {@link Store} from the global store registry.\n * @param storeName The {@link Store} name of the instance to be returned.\n */\nfunction getStoreByName(storeName) {\n const store = __stores__[storeName];\n if (isNil(store)) {\n throw new AkitaError(`${store.storeName} doesn't exist`);\n }\n return store;\n}\n/**\n * Get a {@link EntityStore} from the global store registry.\n * @param storeClass The {@link EntityStore} class of the instance to be returned.\n */\nfunction getEntityStore(storeClass) {\n return getStore(storeClass);\n}\n/**\n * Get a {@link EntityStore} from the global store registry.\n * @param storeName The {@link EntityStore} name of the instance to be returned.\n */\nfunction getEntityStoreByName(storeName) {\n return getStoreByName(storeName);\n}\nfunction runStoreAction(storeClassOrName, action, operation) {\n const store = typeof storeClassOrName === 'string' ? getStoreByName(storeClassOrName) : getStore(storeClassOrName);\n operation(store[StoreActionMapping[action]].bind(store));\n}\nfunction runEntityStoreAction(storeClassOrName, action, operation) {\n const store = typeof storeClassOrName === 'string' ? getEntityStoreByName(storeClassOrName) : getEntityStore(storeClassOrName);\n operation(store[EntityStoreActionMapping[action]].bind(store));\n}\n\nfunction setLoading(store) {\n return function (source) {\n return defer(() => {\n store.setLoading(true);\n return source.pipe(finalize(() => store.setLoading(false)));\n });\n };\n}\n\nfunction setLoadingAndError(store) {\n return function (source) {\n return defer(() => {\n store.setLoading(true);\n store.setError(null);\n return source.pipe(tap({\n error(err) {\n store.setLoading(false);\n store.setError(err);\n },\n complete() {\n store.setLoading(false);\n },\n }));\n });\n };\n}\n\nclass SnapshotManager {\n /**\n * Get a snapshot of the whole state or a specific stores\n * Use it ONLY for things such as saving the state in the server\n */\n getStoresSnapshot(stores = []) {\n let acc = {};\n const hasInclude = stores.length > 0;\n const keys = hasInclude ? stores : Object.keys(__stores__);\n for (let i = 0; i < keys.length; i++) {\n let storeName = keys[i];\n if (storeName !== 'router') {\n acc[storeName] = __stores__[storeName]._value();\n }\n }\n return acc;\n }\n setStoresSnapshot(stores, options) {\n const mergedOptions = Object.assign({ skipStorageUpdate: false, lazy: false }, options);\n mergedOptions.skipStorageUpdate && setSkipStorageUpdate(true);\n let normalizedStores = stores;\n if (isString(stores)) {\n normalizedStores = JSON.parse(normalizedStores);\n }\n const size = Object.keys(normalizedStores).length;\n if (mergedOptions.lazy) {\n $$addStore\n .pipe(filter(name => normalizedStores.hasOwnProperty(name)), take(size))\n .subscribe(name => __stores__[name]._setState(() => normalizedStores[name]));\n }\n else {\n for (let i = 0, keys = Object.keys(normalizedStores); i < keys.length; i++) {\n const storeName = keys[i];\n if (__stores__[storeName]) {\n __stores__[storeName]._setState(() => normalizedStores[storeName]);\n }\n }\n }\n mergedOptions.skipStorageUpdate && setSkipStorageUpdate(false);\n }\n}\nconst snapshotManager = new SnapshotManager();\n\n// @internal\nfunction toEntitiesIds(entities, idKey = DEFAULT_ID_KEY) {\n const ids = [];\n for (const entity of entities) {\n ids.push(entity[idKey]);\n }\n return ids;\n}\n\n/**\n * Track id updates of an entity and re-evaluation the query with the changed entity id.\n * Hint: Don't place the operator after other operators in the same pipeline as those will be skipped on\n * re-evaluation. Also, it can't be used with the selection operator, e.g selectEntity(1, e => e.title)\n * @param query The query from which the entity is selected.\n * @example\n *\n * query.selectEntity(1).pipe(trackIdChanges(query)).subscribe(entity => { ... })\n *\n */\nfunction trackIdChanges(query) {\n return (source) => source.lift(new TrackIdChanges(query));\n}\nclass TrackIdChanges {\n constructor(query) {\n this.query = query;\n }\n call(subscriber, source) {\n return source\n .pipe(first(), switchMap((entity) => {\n let currId = entity[this.query.__store__.config.idKey];\n let pending = false;\n return merge(of({ newId: undefined, oldId: currId, pending: false }), this.query.__store__.selectEntityIdChanges$).pipe(\n // the new id must differ form the old id\n filter((change) => change.oldId === currId), \n // extract the current pending state of the id update\n tap((change) => (pending = change.pending)), \n // only update the selection query if the id update is already applied to the store\n filter((change) => change.newId !== currId && !pending), \n // build a selection query for the new entity id\n switchMap((change) => this.query\n .selectEntity((currId = change.newId || currId))\n // skip undefined value if pending.\n .pipe(filter(() => !pending))));\n }))\n .subscribe(subscriber);\n }\n}\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { $$addStore, $$deleteStore, $$updateStore, AkitaPlugin, DEFAULT_ID_KEY, DirtyCheckPlugin, EntityActions, EntityCollectionPlugin, EntityDirtyCheckPlugin, EntityService, EntityStateHistoryPlugin, EntityStore, EntityStoreAction, EntityUIQuery, EntityUIStore, Order, Paginator, PaginatorPlugin, PersistNgFormPlugin, Query, QueryConfig, QueryEntity, SnapshotManager, StateHistoryPlugin, Store, StoreAction, StoreConfig, __DEV__, __stores__, action, addEntities, akitaConfig, akitaDevtools, applyTransaction, arrayAdd, arrayFind, arrayRemove, arrayToggle, arrayUpdate, arrayUpsert, byId, byKey, cacheable, coerceArray, combineQueries, commit, compareValues, configKey, createEntityQuery, createEntityStore, createQuery, createStore, currentAction, dirtyCheckDefaultParams, dispatchAdded, dispatchDeleted, dispatchUpdate, distinctUntilArrayItemChanged, enableAkitaProdMode, endBatch, entitiesToArray, entitiesToMap, filterNil, filterNilValue, find, getActiveEntities, getAkitaConfig, getEntityStore, getEntityStoreByName, getExitingActives, getInitialEntitiesState, getNestedPath, getStore, getStoreByName, getValue, guid, hasActiveState, hasEntity, isArray, isDefined, isDev, isEmpty, isEntityState, isFunction, isMultiActiveState, isNil, isNotBrowser, isNumber, isObject, isPlainObject, isString, isTransactionInProcess, isUndefined, logAction, persistState, queryConfigKey, removeAllEntities, removeEntities, resetCustomAction, resetStores, resolveActiveEntity, runEntityStoreAction, runStoreAction, selectPersistStateInit, setAction, setEntities, setLoading, setLoadingAndError, setSkipAction, setValue, snapshotManager, sortByOptions, startBatch, toBoolean, toEntitiesIds, toEntitiesObject, trackIdChanges, transaction, transactionManager, updateEntities, withTransaction, isBrowser as ɵa };\n\n","import { __decorate } from 'tslib';\nimport { Renderer2, ɵɵdefineInjectable, ɵɵinject, Injectable, EventEmitter, ElementRef, ChangeDetectorRef, Input, Output, ViewChild, HostListener, Component, ChangeDetectionStrategy, HostBinding, ViewEncapsulation, NgModule } from '@angular/core';\nimport { DomSanitizer, HammerGestureConfig, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';\nimport { CommonModule } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/platform-browser';\nimport * as ɵngcc2 from '@angular/common';\n\nconst _c0 = [\"previewImage\"];\nfunction NgxGalleryPreviewComponent_ngx_gallery_arrows_0_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-arrows\", 15);\n ɵngcc0.ɵɵlistener(\"prevClick\", function NgxGalleryPreviewComponent_ngx_gallery_arrows_0_Template_ngx_gallery_arrows_prevClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r11.showPrev()); })(\"nextClick\", function NgxGalleryPreviewComponent_ngx_gallery_arrows_0_Template_ngx_gallery_arrows_nextClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r13.showNext()); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"prevDisabled\", !ctx_r0.canShowPrev())(\"nextDisabled\", !ctx_r0.canShowNext())(\"arrowPrevIcon\", ctx_r0.arrowPrevIcon)(\"arrowNextIcon\", ctx_r0.arrowNextIcon);\n} }\nfunction NgxGalleryPreviewComponent_ngx_gallery_action_3_Template(rf, ctx) { if (rf & 1) {\n const _r16 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-action\", 16);\n ɵngcc0.ɵɵlistener(\"closeClick\", function NgxGalleryPreviewComponent_ngx_gallery_action_3_Template_ngx_gallery_action_closeClick_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r16); const action_r14 = restoredCtx.$implicit; const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(action_r14.onClick($event, ctx_r15.index)); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const action_r14 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"icon\", action_r14.icon)(\"disabled\", action_r14.disabled)(\"titleText\", action_r14.titleText);\n} }\nfunction NgxGalleryPreviewComponent_a_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"a\", 17);\n ɵngcc0.ɵɵelement(1, \"i\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"href\", ctx_r2.src, ɵngcc0.ɵɵsanitizeUrl);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"ngx-gallery-icon-content \", ctx_r2.downloadIcon, \"\");\n} }\nfunction NgxGalleryPreviewComponent_ngx_gallery_action_5_Template(rf, ctx) { if (rf & 1) {\n const _r18 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-action\", 18);\n ɵngcc0.ɵɵlistener(\"closeClick\", function NgxGalleryPreviewComponent_ngx_gallery_action_5_Template_ngx_gallery_action_closeClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r17 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r17.zoomOut()); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"icon\", ctx_r3.zoomOutIcon)(\"disabled\", !ctx_r3.canZoomOut());\n} }\nfunction NgxGalleryPreviewComponent_ngx_gallery_action_6_Template(rf, ctx) { if (rf & 1) {\n const _r20 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-action\", 18);\n ɵngcc0.ɵɵlistener(\"closeClick\", function NgxGalleryPreviewComponent_ngx_gallery_action_6_Template_ngx_gallery_action_closeClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r20); const ctx_r19 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r19.zoomIn()); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"icon\", ctx_r4.zoomInIcon)(\"disabled\", !ctx_r4.canZoomIn());\n} }\nfunction NgxGalleryPreviewComponent_ngx_gallery_action_7_Template(rf, ctx) { if (rf & 1) {\n const _r22 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-action\", 7);\n ɵngcc0.ɵɵlistener(\"closeClick\", function NgxGalleryPreviewComponent_ngx_gallery_action_7_Template_ngx_gallery_action_closeClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r22); const ctx_r21 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r21.rotateLeft()); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"icon\", ctx_r5.rotateLeftIcon);\n} }\nfunction NgxGalleryPreviewComponent_ngx_gallery_action_8_Template(rf, ctx) { if (rf & 1) {\n const _r24 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-action\", 7);\n ɵngcc0.ɵɵlistener(\"closeClick\", function NgxGalleryPreviewComponent_ngx_gallery_action_8_Template_ngx_gallery_action_closeClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r24); const ctx_r23 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r23.rotateRight()); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"icon\", ctx_r6.rotateRightIcon);\n} }\nfunction NgxGalleryPreviewComponent_ngx_gallery_action_9_Template(rf, ctx) { if (rf & 1) {\n const _r26 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-action\", 7);\n ɵngcc0.ɵɵlistener(\"closeClick\", function NgxGalleryPreviewComponent_ngx_gallery_action_9_Template_ngx_gallery_action_closeClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r26); const ctx_r25 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r25.manageFullscreen()); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"icon\", \"ngx-gallery-fullscreen \" + ctx_r7.fullscreenIcon);\n} }\nfunction NgxGalleryPreviewComponent_img_15_Template(rf, ctx) { if (rf & 1) {\n const _r30 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"img\", 19, 20);\n ɵngcc0.ɵɵlistener(\"click\", function NgxGalleryPreviewComponent_img_15_Template_img_click_0_listener($event) { return $event.stopPropagation(); })(\"mouseenter\", function NgxGalleryPreviewComponent_img_15_Template_img_mouseenter_0_listener() { ɵngcc0.ɵɵrestoreView(_r30); const ctx_r29 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r29.imageMouseEnter()); })(\"mouseleave\", function NgxGalleryPreviewComponent_img_15_Template_img_mouseleave_0_listener() { ɵngcc0.ɵɵrestoreView(_r30); const ctx_r31 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r31.imageMouseLeave()); })(\"mousedown\", function NgxGalleryPreviewComponent_img_15_Template_img_mousedown_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r30); const ctx_r32 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r32.mouseDownHandler($event)); })(\"touchstart\", function NgxGalleryPreviewComponent_img_15_Template_img_touchstart_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r30); const ctx_r33 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r33.mouseDownHandler($event)); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r8 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"transform\", ctx_r8.getTransform())(\"left\", ctx_r8.positionLeft + \"px\")(\"top\", ctx_r8.positionTop + \"px\");\n ɵngcc0.ɵɵclassProp(\"ngx-gallery-active\", !ctx_r8.loading)(\"animation\", ctx_r8.animation)(\"ngx-gallery-grab\", ctx_r8.canDragOnZoom());\n ɵngcc0.ɵɵproperty(\"src\", ctx_r8.src, ɵngcc0.ɵɵsanitizeUrl);\n} }\nfunction NgxGalleryPreviewComponent_ngx_gallery_bullets_16_Template(rf, ctx) { if (rf & 1) {\n const _r35 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-bullets\", 21);\n ɵngcc0.ɵɵlistener(\"bulletChange\", function NgxGalleryPreviewComponent_ngx_gallery_bullets_16_Template_ngx_gallery_bullets_bulletChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r35); const ctx_r34 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r34.showAtIndex($event)); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"count\", ctx_r9.images.length)(\"active\", ctx_r9.index);\n} }\nfunction NgxGalleryPreviewComponent_div_17_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 22);\n ɵngcc0.ɵɵlistener(\"click\", function NgxGalleryPreviewComponent_div_17_Template_div_click_0_listener($event) { return $event.stopPropagation(); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r10 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r10.description, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction NgxGalleryImageComponent_div_1_ngx_gallery_action_2_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-action\", 7);\n ɵngcc0.ɵɵlistener(\"closeClick\", function NgxGalleryImageComponent_div_1_ngx_gallery_action_2_Template_ngx_gallery_action_closeClick_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const action_r7 = restoredCtx.$implicit; const image_r3 = ɵngcc0.ɵɵnextContext().$implicit; return ɵngcc0.ɵɵresetView(action_r7.onClick($event, image_r3.index)); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const action_r7 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"icon\", action_r7.icon)(\"disabled\", action_r7.disabled)(\"titleText\", action_r7.titleText);\n} }\nfunction NgxGalleryImageComponent_div_1_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function NgxGalleryImageComponent_div_1_div_3_Template_div_click_0_listener($event) { return $event.stopPropagation(); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const image_r3 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"innerHTML\", ctx_r6.descriptions[image_r3.index], ɵngcc0.ɵɵsanitizeHtml);\n} }\nconst _c1 = function (a0, a1, a2, a3) { return { \"ngx-gallery-active\": a0, \"ngx-gallery-inactive-left\": a1, \"ngx-gallery-inactive-right\": a2, \"ngx-gallery-clickable\": a3 }; };\nfunction NgxGalleryImageComponent_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r14 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 3);\n ɵngcc0.ɵɵlistener(\"click\", function NgxGalleryImageComponent_div_1_Template_div_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r14); const image_r3 = restoredCtx.$implicit; const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r13.handleClick($event, image_r3.index)); });\n ɵngcc0.ɵɵelementStart(1, \"div\", 4);\n ɵngcc0.ɵɵtemplate(2, NgxGalleryImageComponent_div_1_ngx_gallery_action_2_Template, 1, 3, \"ngx-gallery-action\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgxGalleryImageComponent_div_1_div_3_Template, 1, 1, \"div\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const image_r3 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"background-image\", ctx_r0.getSafeUrl(image_r3.src));\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction4(5, _c1, ctx_r0.selectedIndex == image_r3.index, ctx_r0.selectedIndex > image_r3.index, ctx_r0.selectedIndex < image_r3.index, ctx_r0.clickable));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.actions);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.showDescription && ctx_r0.descriptions[image_r3.index]);\n} }\nfunction NgxGalleryImageComponent_ngx_gallery_bullets_2_Template(rf, ctx) { if (rf & 1) {\n const _r16 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-bullets\", 9);\n ɵngcc0.ɵɵlistener(\"bulletChange\", function NgxGalleryImageComponent_ngx_gallery_bullets_2_Template_ngx_gallery_bullets_bulletChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r16); const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r15.show($event)); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"count\", ctx_r1.images.length)(\"active\", ctx_r1.selectedIndex);\n} }\nfunction NgxGalleryImageComponent_ngx_gallery_arrows_3_Template(rf, ctx) { if (rf & 1) {\n const _r18 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-arrows\", 10);\n ɵngcc0.ɵɵlistener(\"prevClick\", function NgxGalleryImageComponent_ngx_gallery_arrows_3_Template_ngx_gallery_arrows_prevClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r17 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r17.showPrev()); })(\"nextClick\", function NgxGalleryImageComponent_ngx_gallery_arrows_3_Template_ngx_gallery_arrows_nextClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r18); const ctx_r19 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r19.showNext()); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMapInterpolate1(\"ngx-gallery-image-size-\", ctx_r2.size, \"\");\n ɵngcc0.ɵɵproperty(\"prevDisabled\", !ctx_r2.canShowPrev())(\"nextDisabled\", !ctx_r2.canShowNext())(\"arrowPrevIcon\", ctx_r2.arrowPrevIcon)(\"arrowNextIcon\", ctx_r2.arrowNextIcon);\n} }\nfunction NgxGalleryThumbnailsComponent_a_2_ngx_gallery_action_2_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-action\", 7);\n ɵngcc0.ɵɵlistener(\"closeClick\", function NgxGalleryThumbnailsComponent_a_2_ngx_gallery_action_2_Template_ngx_gallery_action_closeClick_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const action_r6 = restoredCtx.$implicit; const i_r3 = ɵngcc0.ɵɵnextContext().index; return ɵngcc0.ɵɵresetView(action_r6.onClick($event, i_r3)); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const action_r6 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"icon\", action_r6.icon)(\"disabled\", action_r6.disabled)(\"titleText\", action_r6.titleText);\n} }\nfunction NgxGalleryThumbnailsComponent_a_2_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8)(1, \"span\", 9);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\"+\", ctx_r5.remainingCountValue, \"\");\n} }\nconst _c2 = function (a0, a1) { return { \"ngx-gallery-active\": a0, \"ngx-gallery-clickable\": a1 }; };\nfunction NgxGalleryThumbnailsComponent_a_2_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 3);\n ɵngcc0.ɵɵlistener(\"click\", function NgxGalleryThumbnailsComponent_a_2_Template_a_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r11); const i_r3 = restoredCtx.index; const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r10.handleClick($event, i_r3)); });\n ɵngcc0.ɵɵelementStart(1, \"div\", 4);\n ɵngcc0.ɵɵtemplate(2, NgxGalleryThumbnailsComponent_a_2_ngx_gallery_action_2_Template, 1, 3, \"ngx-gallery-action\", 5);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgxGalleryThumbnailsComponent_a_2_div_3_Template, 3, 1, \"div\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const image_r2 = ctx.$implicit;\n const i_r3 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"background-image\", ctx_r0.getSafeUrl(image_r2))(\"width\", ctx_r0.getThumbnailWidth())(\"height\", ctx_r0.getThumbnailHeight())(\"left\", ctx_r0.getThumbnailLeft(i_r3))(\"top\", ctx_r0.getThumbnailTop(i_r3));\n ɵngcc0.ɵɵproperty(\"href\", ctx_r0.hasLink(i_r3) ? ctx_r0.links[i_r3] : \"#\", ɵngcc0.ɵɵsanitizeUrl)(\"target\", ctx_r0.linkTarget)(\"ngClass\", ɵngcc0.ɵɵpureFunction2(16, _c2, i_r3 == ctx_r0.selectedIndex, ctx_r0.clickable));\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r0.labels[i_r3]);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.actions);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.remainingCount && ctx_r0.remainingCountValue && i_r3 == ctx_r0.rows * ctx_r0.columns - 1);\n} }\nfunction NgxGalleryThumbnailsComponent_ngx_gallery_arrows_3_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-arrows\", 10);\n ɵngcc0.ɵɵlistener(\"prevClick\", function NgxGalleryThumbnailsComponent_ngx_gallery_arrows_3_Template_ngx_gallery_arrows_prevClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r12.moveLeft()); })(\"nextClick\", function NgxGalleryThumbnailsComponent_ngx_gallery_arrows_3_Template_ngx_gallery_arrows_nextClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r14.moveRight()); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"prevDisabled\", !ctx_r1.canMoveLeft())(\"nextDisabled\", !ctx_r1.canMoveRight())(\"arrowPrevIcon\", ctx_r1.arrowPrevIcon)(\"arrowNextIcon\", ctx_r1.arrowNextIcon);\n} }\nfunction NgxGalleryComponent_ngx_gallery_image_1_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-image\", 3);\n ɵngcc0.ɵɵlistener(\"imageClick\", function NgxGalleryComponent_ngx_gallery_image_1_Template_ngx_gallery_image_imageClick_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r2.openPreview($event)); })(\"activeChange\", function NgxGalleryComponent_ngx_gallery_image_1_Template_ngx_gallery_image_activeChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r4.selectFromImage($event)); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"height\", ctx_r0.getImageHeight());\n ɵngcc0.ɵɵproperty(\"images\", ctx_r0.mediumImages)(\"clickable\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.preview)(\"selectedIndex\", ctx_r0.selectedIndex)(\"arrows\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageArrows)(\"arrowsAutoHide\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageArrowsAutoHide)(\"arrowPrevIcon\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.arrowPrevIcon)(\"arrowNextIcon\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.arrowNextIcon)(\"swipe\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageSwipe)(\"animation\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageAnimation)(\"size\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageSize)(\"autoPlay\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageAutoPlay)(\"autoPlayInterval\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageAutoPlayInterval)(\"autoPlayPauseOnHover\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageAutoPlayPauseOnHover)(\"infinityMove\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageInfinityMove)(\"lazyLoading\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.lazyLoading)(\"actions\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageActions)(\"descriptions\", ctx_r0.descriptions)(\"showDescription\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageDescription)(\"bullets\", ctx_r0.currentOptions == null ? null : ctx_r0.currentOptions.imageBullets);\n} }\nconst _c3 = function () { return []; };\nfunction NgxGalleryComponent_ngx_gallery_thumbnails_2_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-gallery-thumbnails\", 4);\n ɵngcc0.ɵɵlistener(\"activeChange\", function NgxGalleryComponent_ngx_gallery_thumbnails_2_Template_ngx_gallery_thumbnails_activeChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r6); const ctx_r5 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r5.selectFromThumbnails($event)); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"margin-top\", ctx_r1.getThumbnailsMarginTop())(\"margin-bottom\", ctx_r1.getThumbnailsMarginBottom())(\"height\", ctx_r1.getThumbnailsHeight());\n ɵngcc0.ɵɵproperty(\"images\", ctx_r1.smallImages)(\"links\", (ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailsAsLinks) ? ctx_r1.links : ɵngcc0.ɵɵpureFunction0(26, _c3))(\"labels\", ctx_r1.labels)(\"linkTarget\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.linkTarget)(\"selectedIndex\", ctx_r1.selectedIndex)(\"columns\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailsColumns)(\"rows\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailsRows)(\"margin\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailMargin)(\"arrows\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailsArrows)(\"arrowsAutoHide\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailsArrowsAutoHide)(\"arrowPrevIcon\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.arrowPrevIcon)(\"arrowNextIcon\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.arrowNextIcon)(\"clickable\", (ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.image) || (ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.preview))(\"swipe\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailsSwipe)(\"size\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailSize)(\"moveSize\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailsMoveSize)(\"order\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailsOrder)(\"remainingCount\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailsRemainingCount)(\"lazyLoading\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.lazyLoading)(\"actions\", ctx_r1.currentOptions == null ? null : ctx_r1.currentOptions.thumbnailActions);\n} }\nconst _c4 = function (a0) { return { \"ngx-gallery-active\": a0 }; };\nfunction NgxGalleryBulletsComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n const _r4 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgxGalleryBulletsComponent_div_0_Template_div_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r4); const i_r2 = restoredCtx.index; const ctx_r3 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r3.handleChange($event, i_r2)); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const i_r2 = ctx.index;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngClass\", ɵngcc0.ɵɵpureFunction1(1, _c4, i_r2 == ctx_r0.active));\n} }\nlet NgxGalleryService = class NgxGalleryService {\n constructor(renderer) {\n this.renderer = renderer;\n this.swipeHandlers = new Map();\n }\n manageSwipe(status, element, id, nextHandler, prevHandler) {\n const handlers = this.getSwipeHandlers(id);\n // swipeleft and swiperight are available only if hammerjs is included\n try {\n if (status && !handlers) {\n this.swipeHandlers.set(id, [\n this.renderer.listen(element.nativeElement, 'swipeleft', () => nextHandler()),\n this.renderer.listen(element.nativeElement, 'swiperight', () => prevHandler())\n ]);\n }\n else if (!status && handlers) {\n handlers.map((handler) => handler());\n this.removeSwipeHandlers(id);\n }\n }\n catch (e) {\n }\n }\n validateUrl(url) {\n if (url.replace) {\n return url.replace(new RegExp(' ', 'g'), '%20')\n .replace(new RegExp('\\'', 'g'), '%27');\n }\n else {\n return url;\n }\n }\n getBackgroundUrl(image) {\n return 'url(\\'' + this.validateUrl(image) + '\\')';\n }\n getSwipeHandlers(id) {\n return this.swipeHandlers.get(id);\n }\n removeSwipeHandlers(id) {\n this.swipeHandlers.delete(id);\n }\n};\nNgxGalleryService.ɵfac = function NgxGalleryService_Factory(t) { return new (t || NgxGalleryService)(ɵngcc0.ɵɵinject(ɵngcc0.Renderer2)); };\nNgxGalleryService.ctorParameters = () => [\n { type: Renderer2 }\n];\nNgxGalleryService.ɵprov = ɵɵdefineInjectable({ factory: function NgxGalleryService_Factory() { return new NgxGalleryService(ɵɵinject(Renderer2)); }, token: NgxGalleryService, providedIn: \"root\" });\n\nlet NgxGalleryPreviewComponent = class NgxGalleryPreviewComponent {\n constructor(sanitization, elementRef, helperService, renderer, changeDetectorRef) {\n this.sanitization = sanitization;\n this.elementRef = elementRef;\n this.helperService = helperService;\n this.renderer = renderer;\n this.changeDetectorRef = changeDetectorRef;\n this.showSpinner = false;\n this.positionLeft = 0;\n this.positionTop = 0;\n this.zoomValue = 1;\n this.loading = false;\n this.rotateValue = 0;\n this.index = 0;\n this.previewOpen = new EventEmitter();\n this.previewClose = new EventEmitter();\n this.activeChange = new EventEmitter();\n this.isOpen = false;\n this.initialX = 0;\n this.initialY = 0;\n this.initialLeft = 0;\n this.initialTop = 0;\n this.isMove = false;\n }\n ngOnInit() {\n if (this.arrows && this.arrowsAutoHide) {\n this.arrows = false;\n }\n }\n ngOnChanges(changes) {\n if (changes.swipe) {\n this.helperService.manageSwipe(this.swipe, this.elementRef, 'preview', () => this.showNext(), () => this.showPrev());\n }\n }\n ngOnDestroy() {\n if (this.keyDownListener) {\n this.keyDownListener();\n }\n }\n onMouseEnter() {\n if (this.arrowsAutoHide && !this.arrows) {\n this.arrows = true;\n }\n }\n onMouseLeave() {\n if (this.arrowsAutoHide && this.arrows) {\n this.arrows = false;\n }\n }\n onKeyDown(e) {\n if (this.isOpen) {\n if (this.keyboardNavigation) {\n if (this.isKeyboardPrev(e)) {\n this.showPrev();\n }\n else if (this.isKeyboardNext(e)) {\n this.showNext();\n }\n }\n if (this.closeOnEsc && this.isKeyboardEsc(e)) {\n this.close();\n }\n }\n }\n open(index) {\n this.previewOpen.emit();\n this.index = index;\n this.isOpen = true;\n this.show(true);\n if (this.forceFullscreen) {\n this.manageFullscreen();\n }\n this.keyDownListener = this.renderer.listen('window', 'keydown', (e) => this.onKeyDown(e));\n }\n close() {\n this.isOpen = false;\n this.closeFullscreen();\n this.previewClose.emit();\n this.stopAutoPlay();\n if (this.keyDownListener) {\n this.keyDownListener();\n }\n }\n imageMouseEnter() {\n if (this.autoPlay && this.autoPlayPauseOnHover) {\n this.stopAutoPlay();\n }\n }\n imageMouseLeave() {\n if (this.autoPlay && this.autoPlayPauseOnHover) {\n this.startAutoPlay();\n }\n }\n startAutoPlay() {\n if (this.autoPlay) {\n this.stopAutoPlay();\n this.timer = setTimeout(() => {\n if (!this.showNext()) {\n this.index = -1;\n this.showNext();\n }\n }, this.autoPlayInterval);\n }\n }\n stopAutoPlay() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }\n showAtIndex(index) {\n this.index = index;\n this.show();\n }\n showNext() {\n if (this.canShowNext()) {\n this.index++;\n if (this.index === this.images.length) {\n this.index = 0;\n }\n this.show();\n return true;\n }\n else {\n return false;\n }\n }\n showPrev() {\n if (this.canShowPrev()) {\n this.index--;\n if (this.index < 0) {\n this.index = this.images.length - 1;\n }\n this.show();\n }\n }\n canShowNext() {\n if (this.loading) {\n return false;\n }\n else if (this.images) {\n return this.infinityMove || this.index < this.images.length - 1;\n }\n else {\n return false;\n }\n }\n canShowPrev() {\n if (this.loading) {\n return false;\n }\n else if (this.images) {\n return this.infinityMove || this.index > 0;\n }\n else {\n return false;\n }\n }\n manageFullscreen() {\n if (this.fullscreen || this.forceFullscreen) {\n const doc = document;\n if (!doc.fullscreenElement && !doc.mozFullScreenElement\n && !doc.webkitFullscreenElement && !doc.msFullscreenElement) {\n this.openFullscreen();\n }\n else {\n this.closeFullscreen();\n }\n }\n }\n getSafeUrl(image) {\n return this.sanitization.bypassSecurityTrustUrl(image);\n }\n zoomIn() {\n if (this.canZoomIn()) {\n this.zoomValue += this.zoomStep;\n if (this.zoomValue > this.zoomMax) {\n this.zoomValue = this.zoomMax;\n }\n }\n }\n zoomOut() {\n if (this.canZoomOut()) {\n this.zoomValue -= this.zoomStep;\n if (this.zoomValue < this.zoomMin) {\n this.zoomValue = this.zoomMin;\n }\n if (this.zoomValue <= 1) {\n this.resetPosition();\n }\n }\n }\n rotateLeft() {\n this.rotateValue -= 90;\n }\n rotateRight() {\n this.rotateValue += 90;\n }\n getTransform() {\n return this.sanitization.bypassSecurityTrustStyle('scale(' + this.zoomValue + ') rotate(' + this.rotateValue + 'deg)');\n }\n canZoomIn() {\n return this.zoomValue < this.zoomMax;\n }\n canZoomOut() {\n return this.zoomValue > this.zoomMin;\n }\n canDragOnZoom() {\n return this.zoom && this.zoomValue > 1;\n }\n mouseDownHandler(e) {\n if (this.canDragOnZoom()) {\n this.initialX = this.getClientX(e);\n this.initialY = this.getClientY(e);\n this.initialLeft = this.positionLeft;\n this.initialTop = this.positionTop;\n this.isMove = true;\n e.preventDefault();\n }\n }\n mouseUpHandler(e) {\n this.isMove = false;\n }\n mouseMoveHandler(e) {\n if (this.isMove) {\n this.positionLeft = this.initialLeft + (this.getClientX(e) - this.initialX);\n this.positionTop = this.initialTop + (this.getClientY(e) - this.initialY);\n }\n }\n getClientX(e) {\n return e.touches && e.touches.length ? e.touches[0].clientX : e.clientX;\n }\n getClientY(e) {\n return e.touches && e.touches.length ? e.touches[0].clientY : e.clientY;\n }\n resetPosition() {\n if (this.zoom) {\n this.positionLeft = 0;\n this.positionTop = 0;\n }\n }\n isKeyboardNext(e) {\n return e.keyCode === 39;\n }\n isKeyboardPrev(e) {\n return e.keyCode === 37;\n }\n isKeyboardEsc(e) {\n return e.keyCode === 27;\n }\n openFullscreen() {\n const element = document.documentElement;\n if (element.requestFullscreen) {\n element.requestFullscreen();\n }\n else if (element.msRequestFullscreen) {\n element.msRequestFullscreen();\n }\n else if (element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n }\n else if (element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n }\n }\n closeFullscreen() {\n if (this.isFullscreen()) {\n const doc = document;\n if (doc.exitFullscreen) {\n doc.exitFullscreen();\n }\n else if (doc.msExitFullscreen) {\n doc.msExitFullscreen();\n }\n else if (doc.mozCancelFullScreen) {\n doc.mozCancelFullScreen();\n }\n else if (doc.webkitExitFullscreen) {\n doc.webkitExitFullscreen();\n }\n }\n }\n isFullscreen() {\n const doc = document;\n return doc.fullscreenElement || doc.webkitFullscreenElement\n || doc.mozFullScreenElement || doc.msFullscreenElement;\n }\n show(first = false) {\n this.loading = true;\n this.stopAutoPlay();\n this.activeChange.emit(this.index);\n if (first || !this.animation) {\n this._show();\n }\n else {\n setTimeout(() => this._show(), 600);\n }\n }\n _show() {\n this.zoomValue = 1;\n this.rotateValue = 0;\n this.resetPosition();\n this.src = this.getSafeUrl(this.images[this.index]);\n this.srcIndex = this.index;\n this.description = this.descriptions[this.index];\n this.changeDetectorRef.markForCheck();\n setTimeout(() => {\n if (this.isLoaded(this.previewImage.nativeElement)) {\n this.loading = false;\n this.startAutoPlay();\n this.changeDetectorRef.markForCheck();\n }\n else {\n setTimeout(() => {\n if (this.loading) {\n this.showSpinner = true;\n this.changeDetectorRef.markForCheck();\n }\n });\n this.previewImage.nativeElement.onload = () => {\n this.loading = false;\n this.showSpinner = false;\n this.previewImage.nativeElement.onload = null;\n this.startAutoPlay();\n this.changeDetectorRef.markForCheck();\n };\n }\n });\n }\n isLoaded(img) {\n if (!img.complete) {\n return false;\n }\n return !(typeof img.naturalWidth !== 'undefined' && img.naturalWidth === 0);\n }\n};\nNgxGalleryPreviewComponent.ɵfac = function NgxGalleryPreviewComponent_Factory(t) { return new (t || NgxGalleryPreviewComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DomSanitizer), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgxGalleryService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgxGalleryPreviewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxGalleryPreviewComponent, selectors: [[\"ngx-gallery-preview\"]], viewQuery: function NgxGalleryPreviewComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.previewImage = _t.first);\n } }, hostBindings: function NgxGalleryPreviewComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgxGalleryPreviewComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function NgxGalleryPreviewComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n } }, inputs: { arrows: \"arrows\", images: \"images\", descriptions: \"descriptions\", showDescription: \"showDescription\", arrowsAutoHide: \"arrowsAutoHide\", swipe: \"swipe\", fullscreen: \"fullscreen\", forceFullscreen: \"forceFullscreen\", closeOnClick: \"closeOnClick\", closeOnEsc: \"closeOnEsc\", keyboardNavigation: \"keyboardNavigation\", arrowPrevIcon: \"arrowPrevIcon\", arrowNextIcon: \"arrowNextIcon\", closeIcon: \"closeIcon\", fullscreenIcon: \"fullscreenIcon\", spinnerIcon: \"spinnerIcon\", autoPlay: \"autoPlay\", autoPlayInterval: \"autoPlayInterval\", autoPlayPauseOnHover: \"autoPlayPauseOnHover\", infinityMove: \"infinityMove\", zoom: \"zoom\", zoomStep: \"zoomStep\", zoomMax: \"zoomMax\", zoomMin: \"zoomMin\", zoomInIcon: \"zoomInIcon\", zoomOutIcon: \"zoomOutIcon\", animation: \"animation\", actions: \"actions\", rotate: \"rotate\", rotateLeftIcon: \"rotateLeftIcon\", rotateRightIcon: \"rotateRightIcon\", download: \"download\", downloadIcon: \"downloadIcon\", bullets: \"bullets\" }, outputs: { previewOpen: \"previewOpen\", previewClose: \"previewClose\", activeChange: \"activeChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 18, vars: 17, consts: [[3, \"prevDisabled\", \"nextDisabled\", \"arrowPrevIcon\", \"arrowNextIcon\", \"prevClick\", \"nextClick\", 4, \"ngIf\"], [1, \"ngx-gallery-preview-top\"], [1, \"ngx-gallery-preview-icons\"], [3, \"icon\", \"disabled\", \"titleText\", \"closeClick\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"ngx-gallery-icon\", \"aria-hidden\", \"true\", \"download\", \"\", 3, \"href\", 4, \"ngIf\"], [3, \"icon\", \"disabled\", \"closeClick\", 4, \"ngIf\"], [3, \"icon\", \"closeClick\", 4, \"ngIf\"], [3, \"icon\", \"closeClick\"], [1, \"ngx-spinner-wrapper\", \"ngx-gallery-center\"], [\"aria-hidden\", \"true\"], [1, \"ngx-gallery-preview-wrapper\", 3, \"click\", \"mouseup\", \"mousemove\", \"touchend\", \"touchmove\"], [1, \"ngx-gallery-preview-img-wrapper\"], [\"class\", \"ngx-gallery-preview-img ngx-gallery-center\", 3, \"src\", \"ngx-gallery-active\", \"animation\", \"ngx-gallery-grab\", \"transform\", \"left\", \"top\", \"click\", \"mouseenter\", \"mouseleave\", \"mousedown\", \"touchstart\", 4, \"ngIf\"], [3, \"count\", \"active\", \"bulletChange\", 4, \"ngIf\"], [\"class\", \"ngx-gallery-preview-text\", 3, \"innerHTML\", \"click\", 4, \"ngIf\"], [3, \"prevDisabled\", \"nextDisabled\", \"arrowPrevIcon\", \"arrowNextIcon\", \"prevClick\", \"nextClick\"], [3, \"icon\", \"disabled\", \"titleText\", \"closeClick\"], [\"aria-hidden\", \"true\", \"download\", \"\", 1, \"ngx-gallery-icon\", 3, \"href\"], [3, \"icon\", \"disabled\", \"closeClick\"], [1, \"ngx-gallery-preview-img\", \"ngx-gallery-center\", 3, \"src\", \"click\", \"mouseenter\", \"mouseleave\", \"mousedown\", \"touchstart\"], [\"previewImage\", \"\"], [3, \"count\", \"active\", \"bulletChange\"], [1, \"ngx-gallery-preview-text\", 3, \"innerHTML\", \"click\"]], template: function NgxGalleryPreviewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgxGalleryPreviewComponent_ngx_gallery_arrows_0_Template, 1, 4, \"ngx-gallery-arrows\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1)(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NgxGalleryPreviewComponent_ngx_gallery_action_3_Template, 1, 3, \"ngx-gallery-action\", 3);\n ɵngcc0.ɵɵtemplate(4, NgxGalleryPreviewComponent_a_4_Template, 2, 4, \"a\", 4);\n ɵngcc0.ɵɵtemplate(5, NgxGalleryPreviewComponent_ngx_gallery_action_5_Template, 1, 2, \"ngx-gallery-action\", 5);\n ɵngcc0.ɵɵtemplate(6, NgxGalleryPreviewComponent_ngx_gallery_action_6_Template, 1, 2, \"ngx-gallery-action\", 5);\n ɵngcc0.ɵɵtemplate(7, NgxGalleryPreviewComponent_ngx_gallery_action_7_Template, 1, 1, \"ngx-gallery-action\", 6);\n ɵngcc0.ɵɵtemplate(8, NgxGalleryPreviewComponent_ngx_gallery_action_8_Template, 1, 1, \"ngx-gallery-action\", 6);\n ɵngcc0.ɵɵtemplate(9, NgxGalleryPreviewComponent_ngx_gallery_action_9_Template, 1, 1, \"ngx-gallery-action\", 6);\n ɵngcc0.ɵɵelementStart(10, \"ngx-gallery-action\", 7);\n ɵngcc0.ɵɵlistener(\"closeClick\", function NgxGalleryPreviewComponent_Template_ngx_gallery_action_closeClick_10_listener() { return ctx.close(); });\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelementStart(11, \"div\", 8);\n ɵngcc0.ɵɵelement(12, \"i\", 9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(13, \"div\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function NgxGalleryPreviewComponent_Template_div_click_13_listener() { return ctx.closeOnClick && ctx.close(); })(\"mouseup\", function NgxGalleryPreviewComponent_Template_div_mouseup_13_listener($event) { return ctx.mouseUpHandler($event); })(\"mousemove\", function NgxGalleryPreviewComponent_Template_div_mousemove_13_listener($event) { return ctx.mouseMoveHandler($event); })(\"touchend\", function NgxGalleryPreviewComponent_Template_div_touchend_13_listener($event) { return ctx.mouseUpHandler($event); })(\"touchmove\", function NgxGalleryPreviewComponent_Template_div_touchmove_13_listener($event) { return ctx.mouseMoveHandler($event); });\n ɵngcc0.ɵɵelementStart(14, \"div\", 11);\n ɵngcc0.ɵɵtemplate(15, NgxGalleryPreviewComponent_img_15_Template, 2, 13, \"img\", 12);\n ɵngcc0.ɵɵtemplate(16, NgxGalleryPreviewComponent_ngx_gallery_bullets_16_Template, 1, 2, \"ngx-gallery-bullets\", 13);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(17, NgxGalleryPreviewComponent_div_17_Template, 1, 1, \"div\", 14);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.arrows);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.actions);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.download && ctx.src);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.zoom);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.zoom);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.rotate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.rotate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.fullscreen);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"icon\", \"ngx-gallery-close \" + ctx.closeIcon);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ngx-gallery-active\", ctx.showSpinner);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"ngx-gallery-icon ngx-gallery-spinner \", ctx.spinnerIcon, \"\");\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.src);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.bullets);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showDescription && ctx.description);\n } }, dependencies: function () { return [ɵngcc2.NgForOf, ɵngcc2.NgIf, NgxGalleryArrowsComponent, NgxGalleryActionComponent, NgxGalleryBulletsComponent]; }, styles: [\".ngx-gallery-active[_nghost-%COMP%]{width:100%;height:100%;position:fixed;left:0;top:0;background:rgba(0,0,0,.7);z-index:10000;display:inline-block;font-size:50px!important}[_nghost-%COMP%]{display:none;font-size:50px!important}[_nghost-%COMP%] .ngx-gallery-arrow[_ngcontent-%COMP%]{font-size:50px!important}ngx-gallery-bullets[_ngcontent-%COMP%]{height:5%;-webkit-box-align:center;align-items:center;padding:0}.ngx-gallery-preview-img[_ngcontent-%COMP%]{opacity:0;max-width:90%;max-height:90%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:-webkit-transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s}.ngx-gallery-preview-img.animation[_ngcontent-%COMP%]{-webkit-transition:opacity .5s linear,-webkit-transform .5s;transition:opacity .5s linear,transform .5s,-webkit-transform .5s}.ngx-gallery-preview-img.ngx-gallery-active[_ngcontent-%COMP%]{opacity:1}.ngx-gallery-preview-img.ngx-gallery-grab[_ngcontent-%COMP%]{cursor:-webkit-grab;cursor:grab}.ngx-gallery-icon.ngx-gallery-spinner[_ngcontent-%COMP%]{font-size:50px;left:0;display:inline-block}[_nghost-%COMP%] .ngx-gallery-preview-top[_ngcontent-%COMP%]{position:absolute;width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:25px}.ngx-gallery-preview-icons[_ngcontent-%COMP%]{float:right}.ngx-gallery-preview-icons[_ngcontent-%COMP%] .ngx-gallery-icon[_ngcontent-%COMP%]{position:relative;margin-right:10px;margin-top:10px;font-size:25px;cursor:pointer;text-decoration:none}.ngx-gallery-preview-icons[_ngcontent-%COMP%] .ngx-gallery-icon.ngx-gallery-icon-disabled[_ngcontent-%COMP%]{cursor:default;opacity:.4}.ngx-spinner-wrapper[_ngcontent-%COMP%]{width:50px;height:50px;display:none}.ngx-spinner-wrapper.ngx-gallery-active[_ngcontent-%COMP%]{display:inline-block}.ngx-gallery-center[_ngcontent-%COMP%]{position:absolute;left:0;right:0;bottom:0;margin:auto;top:0}.ngx-gallery-preview-text[_ngcontent-%COMP%]{width:100%;background:rgba(0,0,0,.7);padding:10px;text-align:center;color:#fff;font-size:16px;-webkit-box-flex:0;flex:0 1 auto;z-index:10}.ngx-gallery-preview-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column}.ngx-gallery-preview-img-wrapper[_ngcontent-%COMP%]{-webkit-box-flex:1;flex:1 1 auto;position:relative}\"], changeDetection: 0 });\nNgxGalleryPreviewComponent.ctorParameters = () => [\n { type: DomSanitizer },\n { type: ElementRef },\n { type: NgxGalleryService },\n { type: Renderer2 },\n { type: ChangeDetectorRef }\n];\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"images\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"descriptions\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"showDescription\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"arrows\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"arrowsAutoHide\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"swipe\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"fullscreen\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"forceFullscreen\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"closeOnClick\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"closeOnEsc\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"keyboardNavigation\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"arrowPrevIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"arrowNextIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"closeIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"fullscreenIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"spinnerIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"autoPlay\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"autoPlayInterval\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"autoPlayPauseOnHover\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"infinityMove\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"zoom\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"zoomStep\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"zoomMax\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"zoomMin\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"zoomInIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"zoomOutIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"animation\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"actions\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"rotate\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"rotateLeftIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"rotateRightIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"download\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"downloadIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryPreviewComponent.prototype, \"bullets\", void 0);\n__decorate([\n Output()\n], NgxGalleryPreviewComponent.prototype, \"previewOpen\", void 0);\n__decorate([\n Output()\n], NgxGalleryPreviewComponent.prototype, \"previewClose\", void 0);\n__decorate([\n Output()\n], NgxGalleryPreviewComponent.prototype, \"activeChange\", void 0);\n__decorate([\n ViewChild('previewImage')\n], NgxGalleryPreviewComponent.prototype, \"previewImage\", void 0);\n__decorate([\n HostListener('mouseenter')\n], NgxGalleryPreviewComponent.prototype, \"onMouseEnter\", null);\n__decorate([\n HostListener('mouseleave')\n], NgxGalleryPreviewComponent.prototype, \"onMouseLeave\", null);\n\nclass NgxGalleryAnimation {\n}\nNgxGalleryAnimation.Fade = 'fade';\nNgxGalleryAnimation.Slide = 'slide';\nNgxGalleryAnimation.Rotate = 'rotate';\nNgxGalleryAnimation.Zoom = 'zoom';\n\nlet NgxGalleryImageComponent = class NgxGalleryImageComponent {\n constructor(sanitization, elementRef, helperService) {\n this.sanitization = sanitization;\n this.elementRef = elementRef;\n this.helperService = helperService;\n this.imageClick = new EventEmitter();\n this.activeChange = new EventEmitter();\n this.canChangeImage = true;\n }\n // @HostBinding('style.display') public display = 'inline-block';\n // @HostBinding('style.background-color') public color = 'lime';\n ngOnInit() {\n if (this.arrows && this.arrowsAutoHide) {\n this.arrows = false;\n }\n if (this.autoPlay) {\n this.startAutoPlay();\n }\n }\n ngOnChanges(changes) {\n if (changes.swipe) {\n this.helperService.manageSwipe(this.swipe, this.elementRef, 'image', () => this.showNext(), () => this.showPrev());\n }\n }\n onMouseEnter() {\n if (this.arrowsAutoHide && !this.arrows) {\n this.arrows = true;\n }\n if (this.autoPlay && this.autoPlayPauseOnHover) {\n this.stopAutoPlay();\n }\n }\n onMouseLeave() {\n if (this.arrowsAutoHide && this.arrows) {\n this.arrows = false;\n }\n if (this.autoPlay && this.autoPlayPauseOnHover) {\n this.startAutoPlay();\n }\n }\n reset(index) {\n this.selectedIndex = index;\n }\n getImages() {\n if (!this.images) {\n return [];\n }\n if (this.lazyLoading) {\n const indexes = [this.selectedIndex];\n const prevIndex = this.selectedIndex - 1;\n if (prevIndex === -1 && this.infinityMove) {\n indexes.push(this.images.length - 1);\n }\n else if (prevIndex >= 0) {\n indexes.push(prevIndex);\n }\n const nextIndex = this.selectedIndex + 1;\n if (nextIndex === this.images.length && this.infinityMove) {\n indexes.push(0);\n }\n else if (nextIndex < this.images.length) {\n indexes.push(nextIndex);\n }\n return this.images.filter((img, i) => indexes.indexOf(i) !== -1);\n }\n else {\n return this.images;\n }\n }\n startAutoPlay() {\n this.stopAutoPlay();\n this.timer = setInterval(() => {\n if (!this.showNext()) {\n this.selectedIndex = -1;\n this.showNext();\n }\n }, this.autoPlayInterval);\n }\n stopAutoPlay() {\n if (this.timer) {\n clearInterval(this.timer);\n }\n }\n handleClick(event, index) {\n if (this.clickable) {\n this.imageClick.emit(index);\n event.stopPropagation();\n event.preventDefault();\n }\n }\n show(index) {\n this.selectedIndex = index;\n this.activeChange.emit(this.selectedIndex);\n this.setChangeTimeout();\n }\n showNext() {\n if (this.canShowNext() && this.canChangeImage) {\n this.selectedIndex++;\n if (this.selectedIndex === this.images.length) {\n this.selectedIndex = 0;\n }\n this.activeChange.emit(this.selectedIndex);\n this.setChangeTimeout();\n return true;\n }\n else {\n return false;\n }\n }\n showPrev() {\n if (this.canShowPrev() && this.canChangeImage) {\n this.selectedIndex--;\n if (this.selectedIndex < 0) {\n this.selectedIndex = this.images.length - 1;\n }\n this.activeChange.emit(this.selectedIndex);\n this.setChangeTimeout();\n }\n }\n setChangeTimeout() {\n this.canChangeImage = false;\n let timeout = 1000;\n if (this.animation === NgxGalleryAnimation.Slide\n || this.animation === NgxGalleryAnimation.Fade) {\n timeout = 500;\n }\n setTimeout(() => {\n this.canChangeImage = true;\n }, timeout);\n }\n canShowNext() {\n if (this.images) {\n return this.infinityMove || this.selectedIndex < this.images.length - 1;\n }\n else {\n return false;\n }\n }\n canShowPrev() {\n if (this.images) {\n return this.infinityMove || this.selectedIndex > 0;\n }\n else {\n return false;\n }\n }\n getSafeUrl(image) {\n return this.sanitization.bypassSecurityTrustStyle(this.helperService.getBackgroundUrl(image));\n }\n};\nNgxGalleryImageComponent.ɵfac = function NgxGalleryImageComponent_Factory(t) { return new (t || NgxGalleryImageComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DomSanitizer), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgxGalleryService)); };\nNgxGalleryImageComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxGalleryImageComponent, selectors: [[\"ngx-gallery-image\"]], hostBindings: function NgxGalleryImageComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgxGalleryImageComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function NgxGalleryImageComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n } }, inputs: { arrows: \"arrows\", selectedIndex: \"selectedIndex\", images: \"images\", clickable: \"clickable\", arrowsAutoHide: \"arrowsAutoHide\", swipe: \"swipe\", animation: \"animation\", size: \"size\", arrowPrevIcon: \"arrowPrevIcon\", arrowNextIcon: \"arrowNextIcon\", autoPlay: \"autoPlay\", autoPlayInterval: \"autoPlayInterval\", autoPlayPauseOnHover: \"autoPlayPauseOnHover\", infinityMove: \"infinityMove\", lazyLoading: \"lazyLoading\", actions: \"actions\", descriptions: \"descriptions\", showDescription: \"showDescription\", bullets: \"bullets\" }, outputs: { imageClick: \"imageClick\", activeChange: \"activeChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 4, vars: 7, consts: [[\"class\", \"ngx-gallery-image\", 3, \"ngClass\", \"background-image\", \"click\", 4, \"ngFor\", \"ngForOf\"], [3, \"count\", \"active\", \"bulletChange\", 4, \"ngIf\"], [3, \"class\", \"prevDisabled\", \"nextDisabled\", \"arrowPrevIcon\", \"arrowNextIcon\", \"prevClick\", \"nextClick\", 4, \"ngIf\"], [1, \"ngx-gallery-image\", 3, \"ngClass\", \"click\"], [1, \"ngx-gallery-icons-wrapper\"], [3, \"icon\", \"disabled\", \"titleText\", \"closeClick\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"ngx-gallery-image-text\", 3, \"innerHTML\", \"click\", 4, \"ngIf\"], [3, \"icon\", \"disabled\", \"titleText\", \"closeClick\"], [1, \"ngx-gallery-image-text\", 3, \"innerHTML\", \"click\"], [3, \"count\", \"active\", \"bulletChange\"], [3, \"prevDisabled\", \"nextDisabled\", \"arrowPrevIcon\", \"arrowNextIcon\", \"prevClick\", \"nextClick\"]], template: function NgxGalleryImageComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtemplate(1, NgxGalleryImageComponent_div_1_Template, 4, 10, \"div\", 0);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, NgxGalleryImageComponent_ngx_gallery_bullets_2_Template, 1, 2, \"ngx-gallery-bullets\", 1);\n ɵngcc0.ɵɵtemplate(3, NgxGalleryImageComponent_ngx_gallery_arrows_3_Template, 1, 7, \"ngx-gallery-arrows\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMapInterpolate2(\"ngx-gallery-image-wrapper ngx-gallery-animation-\", ctx.animation, \" ngx-gallery-image-size-\", ctx.size, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.getImages());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.bullets);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.arrows);\n } }, dependencies: function () { return [ɵngcc2.NgClass, ɵngcc2.NgForOf, ɵngcc2.NgIf, NgxGalleryArrowsComponent, NgxGalleryActionComponent, NgxGalleryBulletsComponent]; }, styles: [\"[_nghost-%COMP%]{width:100%;display:inline-block;position:relative;font-size:25px}.ngx-gallery-image-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;position:absolute;left:0;top:0;overflow:hidden}.ngx-gallery-image[_ngcontent-%COMP%]{background-position:center;background-repeat:no-repeat;height:100%;width:100%;position:absolute;top:0}.ngx-gallery-image-size-cover[_ngcontent-%COMP%] .ngx-gallery-image[_ngcontent-%COMP%]{background-size:cover}.ngx-gallery-image-size-contain[_ngcontent-%COMP%] .ngx-gallery-image[_ngcontent-%COMP%]{background-size:contain}.ngx-gallery-animation-fade[_ngcontent-%COMP%] .ngx-gallery-image[_ngcontent-%COMP%]{left:0;opacity:0;-webkit-transition:.5s ease-in-out;transition:.5s ease-in-out}.ngx-gallery-animation-fade[_ngcontent-%COMP%] .ngx-gallery-image.ngx-gallery-active[_ngcontent-%COMP%]{opacity:1}.ngx-gallery-animation-slide[_ngcontent-%COMP%] .ngx-gallery-image[_ngcontent-%COMP%]{-webkit-transition:.5s ease-in-out;transition:.5s ease-in-out}.ngx-gallery-animation-slide[_ngcontent-%COMP%] .ngx-gallery-image.ngx-gallery-active[_ngcontent-%COMP%]{left:0}.ngx-gallery-animation-slide[_ngcontent-%COMP%] .ngx-gallery-image.ngx-gallery-inactive-left[_ngcontent-%COMP%]{left:-100%}.ngx-gallery-animation-slide[_ngcontent-%COMP%] .ngx-gallery-image.ngx-gallery-inactive-right[_ngcontent-%COMP%]{left:100%}.ngx-gallery-animation-rotate[_ngcontent-%COMP%] .ngx-gallery-image[_ngcontent-%COMP%]{-webkit-transition:1s;transition:1s;-webkit-transform:scale(3.5,3.5) rotate(90deg);transform:scale(3.5,3.5) rotate(90deg);left:0;opacity:0}.ngx-gallery-animation-rotate[_ngcontent-%COMP%] .ngx-gallery-image.ngx-gallery-active[_ngcontent-%COMP%]{-webkit-transform:scale(1,1) rotate(0);transform:scale(1,1) rotate(0);opacity:1}.ngx-gallery-animation-zoom[_ngcontent-%COMP%] .ngx-gallery-image[_ngcontent-%COMP%]{-webkit-transition:1s;transition:1s;-webkit-transform:scale(2.5,2.5);transform:scale(2.5,2.5);left:0;opacity:0}.ngx-gallery-animation-zoom[_ngcontent-%COMP%] .ngx-gallery-image.ngx-gallery-active[_ngcontent-%COMP%]{-webkit-transform:scale(1,1);transform:scale(1,1);opacity:1}.ngx-gallery-image-text[_ngcontent-%COMP%]{width:100%;background:rgba(0,0,0,.7);padding:10px;text-align:center;color:#fff;font-size:16px;position:absolute;bottom:0;z-index:10}\"], changeDetection: 0 });\nNgxGalleryImageComponent.ctorParameters = () => [\n { type: DomSanitizer },\n { type: ElementRef },\n { type: NgxGalleryService }\n];\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"images\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"clickable\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"selectedIndex\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"arrows\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"arrowsAutoHide\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"swipe\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"animation\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"size\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"arrowPrevIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"arrowNextIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"autoPlay\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"autoPlayInterval\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"autoPlayPauseOnHover\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"infinityMove\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"lazyLoading\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"actions\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"descriptions\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"showDescription\", void 0);\n__decorate([\n Input()\n], NgxGalleryImageComponent.prototype, \"bullets\", void 0);\n__decorate([\n Output()\n], NgxGalleryImageComponent.prototype, \"imageClick\", void 0);\n__decorate([\n Output()\n], NgxGalleryImageComponent.prototype, \"activeChange\", void 0);\n__decorate([\n HostListener('mouseenter')\n], NgxGalleryImageComponent.prototype, \"onMouseEnter\", null);\n__decorate([\n HostListener('mouseleave')\n], NgxGalleryImageComponent.prototype, \"onMouseLeave\", null);\n\nclass NgxGalleryOrder {\n}\nNgxGalleryOrder.Column = 1;\nNgxGalleryOrder.Row = 2;\nNgxGalleryOrder.Page = 3;\n\nlet NgxGalleryThumbnailsComponent = class NgxGalleryThumbnailsComponent {\n constructor(sanitization, elementRef, helperService) {\n this.sanitization = sanitization;\n this.elementRef = elementRef;\n this.helperService = helperService;\n this.minStopIndex = 0;\n this.activeChange = new EventEmitter();\n this.index = 0;\n }\n ngOnInit() {\n }\n ngOnChanges(changes) {\n if (changes.selectedIndex) {\n this.validateIndex();\n }\n if (changes.swipe) {\n this.helperService.manageSwipe(this.swipe, this.elementRef, 'thumbnails', () => this.moveRight(), () => this.moveLeft());\n }\n if (this.images) {\n this.remainingCountValue = this.images.length - (this.rows * this.columns);\n }\n }\n onMouseEnter() {\n this.mouseenter = true;\n }\n onMouseLeave() {\n this.mouseenter = false;\n }\n reset(index) {\n this.selectedIndex = index;\n this.setDefaultPosition();\n this.index = 0;\n this.validateIndex();\n }\n getImages() {\n if (!this.images) {\n return [];\n }\n if (this.remainingCount) {\n return this.images.slice(0, this.rows * this.columns);\n }\n else if (this.lazyLoading && this.order !== NgxGalleryOrder.Row) {\n let stopIndex = 0;\n if (this.order === NgxGalleryOrder.Column) {\n stopIndex = (this.index + this.columns + this.moveSize) * this.rows;\n }\n else if (this.order === NgxGalleryOrder.Page) {\n stopIndex = this.index + ((this.columns * this.rows) * 2);\n }\n if (stopIndex <= this.minStopIndex) {\n stopIndex = this.minStopIndex;\n }\n else {\n this.minStopIndex = stopIndex;\n }\n return this.images.slice(0, stopIndex);\n }\n else {\n return this.images;\n }\n }\n handleClick(event, index) {\n if (!this.hasLink(index)) {\n this.selectedIndex = index;\n this.activeChange.emit(index);\n event.stopPropagation();\n event.preventDefault();\n }\n }\n hasLink(index) {\n if (this.links && this.links.length && this.links[index]) {\n return true;\n }\n }\n moveRight() {\n if (this.canMoveRight()) {\n this.index += this.moveSize;\n const maxIndex = this.getMaxIndex() - this.columns;\n if (this.index > maxIndex) {\n this.index = maxIndex;\n }\n this.setThumbnailsPosition();\n }\n }\n moveLeft() {\n if (this.canMoveLeft()) {\n this.index -= this.moveSize;\n if (this.index < 0) {\n this.index = 0;\n }\n this.setThumbnailsPosition();\n }\n }\n canMoveRight() {\n return this.index + this.columns < this.getMaxIndex();\n }\n canMoveLeft() {\n return this.index !== 0;\n }\n getThumbnailLeft(index) {\n let calculatedIndex;\n if (this.order === NgxGalleryOrder.Column) {\n calculatedIndex = Math.floor(index / this.rows);\n }\n else if (this.order === NgxGalleryOrder.Page) {\n calculatedIndex = (index % this.columns) + (Math.floor(index / (this.rows * this.columns)) * this.columns);\n }\n else if (this.order === NgxGalleryOrder.Row && this.remainingCount) {\n calculatedIndex = index % this.columns;\n }\n else {\n calculatedIndex = index % Math.ceil(this.images.length / this.rows);\n }\n return this.getThumbnailPosition(calculatedIndex, this.columns);\n }\n getThumbnailTop(index) {\n let calculatedIndex;\n if (this.order === NgxGalleryOrder.Column) {\n calculatedIndex = index % this.rows;\n }\n else if (this.order === NgxGalleryOrder.Page) {\n calculatedIndex = Math.floor(index / this.columns) - (Math.floor(index / (this.rows * this.columns)) * this.rows);\n }\n else if (this.order === NgxGalleryOrder.Row && this.remainingCount) {\n calculatedIndex = Math.floor(index / this.columns);\n }\n else {\n calculatedIndex = Math.floor(index / Math.ceil(this.images.length / this.rows));\n }\n return this.getThumbnailPosition(calculatedIndex, this.rows);\n }\n getThumbnailWidth() {\n return this.getThumbnailDimension(this.columns);\n }\n getThumbnailHeight() {\n return this.getThumbnailDimension(this.rows);\n }\n setThumbnailsPosition() {\n this.thumbnailsLeft = -((100 / this.columns) * this.index) + '%';\n this.thumbnailsMarginLeft = -((this.margin - (((this.columns - 1)\n * this.margin) / this.columns)) * this.index) + 'px';\n }\n setDefaultPosition() {\n this.thumbnailsLeft = '0px';\n this.thumbnailsMarginLeft = '0px';\n }\n canShowArrows() {\n if (this.remainingCount) {\n return false;\n }\n else {\n return this.arrows && this.images && this.images.length > this.getVisibleCount()\n && (!this.arrowsAutoHide || this.mouseenter);\n }\n }\n validateIndex() {\n if (this.images) {\n let newIndex;\n if (this.order === NgxGalleryOrder.Column) {\n newIndex = Math.floor(this.selectedIndex / this.rows);\n }\n else {\n newIndex = this.selectedIndex % Math.ceil(this.images.length / this.rows);\n }\n if (this.remainingCount) {\n newIndex = 0;\n }\n if (newIndex < this.index || newIndex >= this.index + this.columns) {\n const maxIndex = this.getMaxIndex() - this.columns;\n this.index = newIndex > maxIndex ? maxIndex : newIndex;\n this.setThumbnailsPosition();\n }\n }\n }\n getSafeUrl(image) {\n return this.sanitization.bypassSecurityTrustStyle(this.helperService.getBackgroundUrl(image));\n }\n getThumbnailPosition(index, count) {\n return this.getSafeStyle('calc(' + ((100 / count) * index) + '% + '\n + ((this.margin - (((count - 1) * this.margin) / count)) * index) + 'px)');\n }\n getThumbnailDimension(count) {\n if (this.margin !== 0) {\n return this.getSafeStyle('calc(' + (100 / count) + '% - '\n + (((count - 1) * this.margin) / count) + 'px)');\n }\n else {\n return this.getSafeStyle('calc(' + (100 / count) + '% + 1px)');\n }\n }\n getMaxIndex() {\n if (this.order === NgxGalleryOrder.Page) {\n let maxIndex = (Math.floor(this.images.length / this.getVisibleCount()) * this.columns);\n if (this.images.length % this.getVisibleCount() > this.columns) {\n maxIndex += this.columns;\n }\n else {\n maxIndex += this.images.length % this.getVisibleCount();\n }\n return maxIndex;\n }\n else {\n return Math.ceil(this.images.length / this.rows);\n }\n }\n getVisibleCount() {\n return this.columns * this.rows;\n }\n getSafeStyle(value) {\n return this.sanitization.bypassSecurityTrustStyle(value);\n }\n};\nNgxGalleryThumbnailsComponent.ɵfac = function NgxGalleryThumbnailsComponent_Factory(t) { return new (t || NgxGalleryThumbnailsComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc1.DomSanitizer), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgxGalleryService)); };\nNgxGalleryThumbnailsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxGalleryThumbnailsComponent, selectors: [[\"ngx-gallery-thumbnails\"]], hostBindings: function NgxGalleryThumbnailsComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgxGalleryThumbnailsComponent_mouseenter_HostBindingHandler() { return ctx.onMouseEnter(); })(\"mouseleave\", function NgxGalleryThumbnailsComponent_mouseleave_HostBindingHandler() { return ctx.onMouseLeave(); });\n } }, inputs: { selectedIndex: \"selectedIndex\", images: \"images\", links: \"links\", labels: \"labels\", linkTarget: \"linkTarget\", columns: \"columns\", rows: \"rows\", arrows: \"arrows\", arrowsAutoHide: \"arrowsAutoHide\", margin: \"margin\", clickable: \"clickable\", swipe: \"swipe\", size: \"size\", arrowPrevIcon: \"arrowPrevIcon\", arrowNextIcon: \"arrowNextIcon\", moveSize: \"moveSize\", order: \"order\", remainingCount: \"remainingCount\", lazyLoading: \"lazyLoading\", actions: \"actions\" }, outputs: { activeChange: \"activeChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 4, vars: 9, consts: [[1, \"ngx-gallery-thumbnails\"], [\"class\", \"ngx-gallery-thumbnail\", 3, \"href\", \"target\", \"background-image\", \"width\", \"height\", \"left\", \"top\", \"ngClass\", \"click\", 4, \"ngFor\", \"ngForOf\"], [3, \"prevDisabled\", \"nextDisabled\", \"arrowPrevIcon\", \"arrowNextIcon\", \"prevClick\", \"nextClick\", 4, \"ngIf\"], [1, \"ngx-gallery-thumbnail\", 3, \"href\", \"target\", \"ngClass\", \"click\"], [1, \"ngx-gallery-icons-wrapper\"], [3, \"icon\", \"disabled\", \"titleText\", \"closeClick\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"ngx-gallery-remaining-count-overlay\", 4, \"ngIf\"], [3, \"icon\", \"disabled\", \"titleText\", \"closeClick\"], [1, \"ngx-gallery-remaining-count-overlay\"], [1, \"ngx-gallery-remaining-count\"], [3, \"prevDisabled\", \"nextDisabled\", \"arrowPrevIcon\", \"arrowNextIcon\", \"prevClick\", \"nextClick\"]], template: function NgxGalleryThumbnailsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\")(1, \"div\", 0);\n ɵngcc0.ɵɵtemplate(2, NgxGalleryThumbnailsComponent_a_2_Template, 4, 19, \"a\", 1);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(3, NgxGalleryThumbnailsComponent_ngx_gallery_arrows_3_Template, 1, 4, \"ngx-gallery-arrows\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMapInterpolate1(\"ngx-gallery-thumbnails-wrapper ngx-gallery-thumbnail-size-\", ctx.size, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"transform\", \"translateX(\" + ctx.thumbnailsLeft + \")\")(\"margin-left\", ctx.thumbnailsMarginLeft);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.getImages());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.canShowArrows());\n } }, dependencies: function () { return [ɵngcc2.NgClass, ɵngcc2.NgForOf, ɵngcc2.NgIf, NgxGalleryArrowsComponent, NgxGalleryActionComponent]; }, styles: [\"@charset \\\"UTF-8\\\";[_nghost-%COMP%]{width:100%;display:inline-block;position:relative;font-size:25px}.ngx-gallery-thumbnails-wrapper[_ngcontent-%COMP%]{width:100%;height:100%;position:absolute;overflow:hidden}.ngx-gallery-thumbnails[_ngcontent-%COMP%]{height:100%;width:100%;position:absolute;left:0;-webkit-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform .5s ease-in-out;transition:transform .5s ease-in-out;transition:transform .5s ease-in-out,-webkit-transform .5s ease-in-out;will-change:transform}.ngx-gallery-thumbnails[_ngcontent-%COMP%] .ngx-gallery-thumbnail[_ngcontent-%COMP%]{position:absolute;height:100%;background-position:center;background-repeat:no-repeat;text-decoration:none;border:1px double #000}.ngx-gallery-thumbnails[_ngcontent-%COMP%] .ngx-gallery-thumbnail[_ngcontent-%COMP%] .img[_ngcontent-%COMP%]{background-size:cover;height:100%}.ngx-gallery-thumbnails[_ngcontent-%COMP%] .ngx-gallery-thumbnail.ngx-gallery-active[_ngcontent-%COMP%]{border:1px double #cc4548}.ngx-gallery-thumbnail-size-cover[_ngcontent-%COMP%] .ngx-gallery-thumbnails[_ngcontent-%COMP%] .ngx-gallery-thumbnail[_ngcontent-%COMP%]{background-size:cover}.ngx-gallery-thumbnail-size-contain[_ngcontent-%COMP%] .ngx-gallery-thumbnails[_ngcontent-%COMP%] .ngx-gallery-thumbnail[_ngcontent-%COMP%]{background-size:contain}.ngx-gallery-remaining-count-overlay[_ngcontent-%COMP%]{width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(0,0,0,.4)}.ngx-gallery-remaining-count[_ngcontent-%COMP%]{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff;font-size:30px}\"], changeDetection: 0 });\nNgxGalleryThumbnailsComponent.ctorParameters = () => [\n { type: DomSanitizer },\n { type: ElementRef },\n { type: NgxGalleryService }\n];\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"images\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"links\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"labels\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"linkTarget\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"columns\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"rows\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"arrows\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"arrowsAutoHide\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"margin\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"selectedIndex\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"clickable\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"swipe\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"size\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"arrowPrevIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"arrowNextIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"moveSize\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"order\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"remainingCount\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"lazyLoading\", void 0);\n__decorate([\n Input()\n], NgxGalleryThumbnailsComponent.prototype, \"actions\", void 0);\n__decorate([\n Output()\n], NgxGalleryThumbnailsComponent.prototype, \"activeChange\", void 0);\n__decorate([\n HostListener('mouseenter')\n], NgxGalleryThumbnailsComponent.prototype, \"onMouseEnter\", null);\n__decorate([\n HostListener('mouseleave')\n], NgxGalleryThumbnailsComponent.prototype, \"onMouseLeave\", null);\n\nclass NgxGalleryAction {\n constructor(action) {\n this.icon = action.icon;\n this.disabled = action.disabled ? action.disabled : false;\n this.titleText = action.titleText ? action.titleText : '';\n this.onClick = action.onClick;\n }\n}\n\nclass NgxGalleryLayout {\n}\nNgxGalleryLayout.ThumbnailsTop = 'thumbnails-top';\nNgxGalleryLayout.ThumbnailsBottom = 'thumbnails-bottom';\n\nclass NgxGalleryImageSize {\n}\nNgxGalleryImageSize.Cover = 'cover';\nNgxGalleryImageSize.Contain = 'contain';\n\nclass NgxGalleryOptions {\n constructor(obj) {\n const preventDefaults = obj.breakpoint === undefined ? false : true;\n function use(source, defaultValue) {\n return obj && (source !== undefined || preventDefaults) ? source : defaultValue;\n }\n this.breakpoint = use(obj.breakpoint, undefined);\n this.width = use(obj.width, '500px');\n this.height = use(obj.height, '400px');\n this.fullWidth = use(obj.fullWidth, false);\n this.layout = use(obj.layout, NgxGalleryLayout.ThumbnailsBottom);\n this.startIndex = use(obj.startIndex, 0);\n this.linkTarget = use(obj.linkTarget, '_blank');\n this.lazyLoading = use(obj.lazyLoading, true);\n this.image = use(obj.image, true);\n this.imagePercent = use(obj.imagePercent, 75);\n this.imageArrows = use(obj.imageArrows, true);\n this.imageArrowsAutoHide = use(obj.imageArrowsAutoHide, false);\n this.imageSwipe = use(obj.imageSwipe, false);\n this.imageAnimation = use(obj.imageAnimation, NgxGalleryAnimation.Fade);\n this.imageSize = use(obj.imageSize, NgxGalleryImageSize.Cover);\n this.imageAutoPlay = use(obj.imageAutoPlay, false);\n this.imageAutoPlayInterval = use(obj.imageAutoPlayInterval, 2000);\n this.imageAutoPlayPauseOnHover = use(obj.imageAutoPlayPauseOnHover, false);\n this.imageInfinityMove = use(obj.imageInfinityMove, false);\n if (obj && obj.imageActions && obj.imageActions.length) {\n obj.imageActions = obj.imageActions.map(action => new NgxGalleryAction(action));\n }\n this.imageActions = use(obj.imageActions, []);\n this.imageDescription = use(obj.imageDescription, false);\n this.imageBullets = use(obj.imageBullets, false);\n this.thumbnails = use(obj.thumbnails, true);\n this.thumbnailsColumns = use(obj.thumbnailsColumns, 4);\n this.thumbnailsRows = use(obj.thumbnailsRows, 1);\n this.thumbnailsPercent = use(obj.thumbnailsPercent, 25);\n this.thumbnailsMargin = use(obj.thumbnailsMargin, 10);\n this.thumbnailsArrows = use(obj.thumbnailsArrows, true);\n this.thumbnailsArrowsAutoHide = use(obj.thumbnailsArrowsAutoHide, false);\n this.thumbnailsSwipe = use(obj.thumbnailsSwipe, false);\n this.thumbnailsMoveSize = use(obj.thumbnailsMoveSize, 1);\n this.thumbnailsOrder = use(obj.thumbnailsOrder, NgxGalleryOrder.Column);\n this.thumbnailsRemainingCount = use(obj.thumbnailsRemainingCount, false);\n this.thumbnailsAsLinks = use(obj.thumbnailsAsLinks, false);\n this.thumbnailsAutoHide = use(obj.thumbnailsAutoHide, false);\n this.thumbnailMargin = use(obj.thumbnailMargin, 10);\n this.thumbnailSize = use(obj.thumbnailSize, NgxGalleryImageSize.Cover);\n if (obj && obj.thumbnailActions && obj.thumbnailActions.length) {\n obj.thumbnailActions = obj.thumbnailActions.map(action => new NgxGalleryAction(action));\n }\n this.thumbnailActions = use(obj.thumbnailActions, []);\n this.preview = use(obj.preview, true);\n this.previewDescription = use(obj.previewDescription, true);\n this.previewArrows = use(obj.previewArrows, true);\n this.previewArrowsAutoHide = use(obj.previewArrowsAutoHide, false);\n this.previewSwipe = use(obj.previewSwipe, false);\n this.previewFullscreen = use(obj.previewFullscreen, false);\n this.previewForceFullscreen = use(obj.previewForceFullscreen, false);\n this.previewCloseOnClick = use(obj.previewCloseOnClick, false);\n this.previewCloseOnEsc = use(obj.previewCloseOnEsc, false);\n this.previewKeyboardNavigation = use(obj.previewKeyboardNavigation, false);\n this.previewAnimation = use(obj.previewAnimation, true);\n this.previewAutoPlay = use(obj.previewAutoPlay, false);\n this.previewAutoPlayInterval = use(obj.previewAutoPlayInterval, 2000);\n this.previewAutoPlayPauseOnHover = use(obj.previewAutoPlayPauseOnHover, false);\n this.previewInfinityMove = use(obj.previewInfinityMove, false);\n this.previewZoom = use(obj.previewZoom, false);\n this.previewZoomStep = use(obj.previewZoomStep, 0.1);\n this.previewZoomMax = use(obj.previewZoomMax, 2);\n this.previewZoomMin = use(obj.previewZoomMin, 0.5);\n this.previewRotate = use(obj.previewRotate, false);\n this.previewDownload = use(obj.previewDownload, false);\n this.previewCustom = use(obj.previewCustom, undefined);\n this.previewBullets = use(obj.previewBullets, false);\n this.arrowPrevIcon = use(obj.arrowPrevIcon, 'fa fa-arrow-circle-left');\n this.arrowNextIcon = use(obj.arrowNextIcon, 'fa fa-arrow-circle-right');\n this.closeIcon = use(obj.closeIcon, 'fa fa-times-circle');\n this.fullscreenIcon = use(obj.fullscreenIcon, 'fa fa-arrows-alt');\n this.spinnerIcon = use(obj.spinnerIcon, 'fa fa-spinner fa-pulse fa-3x fa-fw');\n this.zoomInIcon = use(obj.zoomInIcon, 'fa fa-search-plus');\n this.zoomOutIcon = use(obj.zoomOutIcon, 'fa fa-search-minus');\n this.rotateLeftIcon = use(obj.rotateLeftIcon, 'fa fa-undo');\n this.rotateRightIcon = use(obj.rotateRightIcon, 'fa fa-repeat');\n this.downloadIcon = use(obj.downloadIcon, 'fa fa-arrow-circle-down');\n if (obj && obj.actions && obj.actions.length) {\n obj.actions = obj.actions.map(action => new NgxGalleryAction(action));\n }\n this.actions = use(obj.actions, []);\n }\n}\n\nclass NgxGalleryOrderedImage {\n constructor(obj) {\n this.src = obj.src;\n this.index = obj.index;\n }\n}\n\nlet NgxGalleryComponent = class NgxGalleryComponent {\n constructor(myElement) {\n this.myElement = myElement;\n this.options = [{}];\n this.imagesReady = new EventEmitter();\n // tslint:disable-next-line:no-output-native\n this.change = new EventEmitter();\n this.previewOpen = new EventEmitter();\n this.previewClose = new EventEmitter();\n this.previewChange = new EventEmitter();\n this.oldImagesLength = 0;\n this.selectedIndex = 0;\n this.breakpoint = undefined;\n this.prevBreakpoint = undefined;\n }\n ngOnInit() {\n this.options = this.options.map((opt) => new NgxGalleryOptions(opt));\n this.sortOptions();\n this.setBreakpoint();\n this.setOptions();\n this.checkFullWidth();\n if (this.currentOptions) {\n this.selectedIndex = this.currentOptions.startIndex;\n }\n }\n ngDoCheck() {\n if (this.images !== undefined && (this.images.length !== this.oldImagesLength)\n || (this.images !== this.oldImages)) {\n this.oldImagesLength = this.images.length;\n this.oldImages = this.images;\n this.setOptions();\n this.setImages();\n if (this.images && this.images.length) {\n this.imagesReady.emit();\n }\n if (this.image) {\n this.image.reset(this.currentOptions.startIndex);\n }\n if (this.currentOptions.thumbnailsAutoHide && this.currentOptions.thumbnails\n && this.images.length <= 1) {\n this.currentOptions.thumbnails = false;\n this.currentOptions.imageArrows = false;\n }\n this.resetThumbnails();\n }\n }\n ngAfterViewInit() {\n this.checkFullWidth();\n }\n onResize() {\n this.setBreakpoint();\n if (this.prevBreakpoint !== this.breakpoint) {\n this.setOptions();\n this.resetThumbnails();\n }\n if (this.currentOptions && this.currentOptions.fullWidth) {\n if (this.fullWidthTimeout) {\n clearTimeout(this.fullWidthTimeout);\n }\n this.fullWidthTimeout = setTimeout(() => {\n this.checkFullWidth();\n }, 200);\n }\n }\n getImageHeight() {\n return (this.currentOptions && this.currentOptions.thumbnails) ?\n this.currentOptions.imagePercent + '%' : '100%';\n }\n getThumbnailsHeight() {\n if (this.currentOptions && this.currentOptions.image) {\n return 'calc(' + this.currentOptions.thumbnailsPercent + '% - '\n + this.currentOptions.thumbnailsMargin + 'px)';\n }\n else {\n return '100%';\n }\n }\n getThumbnailsMarginTop() {\n if (this.currentOptions && this.currentOptions.layout === NgxGalleryLayout.ThumbnailsBottom) {\n return this.currentOptions.thumbnailsMargin + 'px';\n }\n else {\n return '0px';\n }\n }\n getThumbnailsMarginBottom() {\n if (this.currentOptions && this.currentOptions.layout === NgxGalleryLayout.ThumbnailsTop) {\n return this.currentOptions.thumbnailsMargin + 'px';\n }\n else {\n return '0px';\n }\n }\n openPreview(index) {\n if (this.currentOptions.previewCustom) {\n this.currentOptions.previewCustom(index);\n }\n else {\n this.previewEnabled = true;\n this.preview.open(index);\n }\n }\n onPreviewOpen() {\n this.previewOpen.emit();\n if (this.image && this.image.autoPlay) {\n this.image.stopAutoPlay();\n }\n }\n onPreviewClose() {\n this.previewEnabled = false;\n this.previewClose.emit();\n if (this.image && this.image.autoPlay) {\n this.image.startAutoPlay();\n }\n }\n selectFromImage(index) {\n this.select(index);\n }\n selectFromThumbnails(index) {\n this.select(index);\n if (this.currentOptions && this.currentOptions.thumbnails && this.currentOptions.preview\n && (!this.currentOptions.image || this.currentOptions.thumbnailsRemainingCount)) {\n this.openPreview(this.selectedIndex);\n }\n }\n show(index) {\n this.select(index);\n }\n showNext() {\n this.image.showNext();\n }\n showPrev() {\n this.image.showPrev();\n }\n canShowNext() {\n if (this.images && this.currentOptions) {\n return !!(this.currentOptions.imageInfinityMove || this.selectedIndex < this.images.length - 1);\n }\n else {\n return false;\n }\n }\n canShowPrev() {\n if (this.images && this.currentOptions) {\n return !!(this.currentOptions.imageInfinityMove || this.selectedIndex > 0);\n }\n else {\n return false;\n }\n }\n previewSelect(index) {\n this.previewChange.emit({ index, image: this.images[index] });\n }\n moveThumbnailsRight() {\n this.thumbnails.moveRight();\n }\n moveThumbnailsLeft() {\n this.thumbnails.moveLeft();\n }\n canMoveThumbnailsRight() {\n return this.thumbnails.canMoveRight();\n }\n canMoveThumbnailsLeft() {\n return this.thumbnails.canMoveLeft();\n }\n resetThumbnails() {\n if (this.thumbnails) {\n this.thumbnails.reset(this.currentOptions.startIndex);\n }\n }\n select(index) {\n this.selectedIndex = index;\n this.change.emit({\n index,\n image: this.images[index]\n });\n }\n checkFullWidth() {\n if (this.currentOptions && this.currentOptions.fullWidth) {\n this.width = document.body.clientWidth + 'px';\n this.left = (-(document.body.clientWidth -\n this.myElement.nativeElement.parentNode.innerWidth) / 2) + 'px';\n }\n }\n setImages() {\n this.smallImages = this.images.map((img) => img.small);\n this.mediumImages = this.images.map((img, i) => new NgxGalleryOrderedImage({\n src: img.medium,\n index: i\n }));\n this.bigImages = this.images.map((img) => img.big);\n this.descriptions = this.images.map((img) => img.description);\n this.links = this.images.map((img) => img.url);\n this.labels = this.images.map((img) => img.label);\n }\n setBreakpoint() {\n this.prevBreakpoint = this.breakpoint;\n let breakpoints;\n if (typeof window !== 'undefined') {\n breakpoints = this.options.filter((opt) => opt.breakpoint >= window.innerWidth)\n .map((opt) => opt.breakpoint);\n }\n if (breakpoints && breakpoints.length) {\n this.breakpoint = breakpoints.pop();\n }\n else {\n this.breakpoint = undefined;\n }\n }\n sortOptions() {\n this.options = [\n ...this.options.filter((a) => a.breakpoint === undefined),\n ...this.options\n .filter((a) => a.breakpoint !== undefined)\n .sort((a, b) => b.breakpoint - a.breakpoint)\n ];\n }\n setOptions() {\n this.currentOptions = new NgxGalleryOptions({});\n this.options\n .filter((opt) => opt.breakpoint === undefined || opt.breakpoint >= this.breakpoint)\n .map((opt) => this.combineOptions(this.currentOptions, opt));\n this.width = this.currentOptions.width;\n this.height = this.currentOptions.height;\n }\n combineOptions(first, second) {\n Object.keys(second).map((val) => first[val] = second[val] !== undefined ? second[val] : first[val]);\n }\n};\nNgxGalleryComponent.ɵfac = function NgxGalleryComponent_Factory(t) { return new (t || NgxGalleryComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgxGalleryComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxGalleryComponent, selectors: [[\"ngx-gallery\"]], viewQuery: function NgxGalleryComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgxGalleryPreviewComponent, 5);\n ɵngcc0.ɵɵviewQuery(NgxGalleryImageComponent, 5);\n ɵngcc0.ɵɵviewQuery(NgxGalleryThumbnailsComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.preview = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.image = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.thumbnails = _t.first);\n } }, hostVars: 6, hostBindings: function NgxGalleryComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"resize\", function NgxGalleryComponent_resize_HostBindingHandler() { return ctx.onResize(); }, false, ɵngcc0.ɵɵresolveWindow);\n } if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.width)(\"left\", ctx.left)(\"height\", ctx.height);\n } }, inputs: { options: \"options\", images: \"images\" }, outputs: { imagesReady: \"imagesReady\", change: \"change\", previewOpen: \"previewOpen\", previewClose: \"previewClose\", previewChange: \"previewChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([NgxGalleryService])], decls: 4, vars: 41, consts: [[3, \"height\", \"images\", \"clickable\", \"selectedIndex\", \"arrows\", \"arrowsAutoHide\", \"arrowPrevIcon\", \"arrowNextIcon\", \"swipe\", \"animation\", \"size\", \"autoPlay\", \"autoPlayInterval\", \"autoPlayPauseOnHover\", \"infinityMove\", \"lazyLoading\", \"actions\", \"descriptions\", \"showDescription\", \"bullets\", \"imageClick\", \"activeChange\", 4, \"ngIf\"], [3, \"marginTop\", \"marginBottom\", \"height\", \"images\", \"links\", \"labels\", \"linkTarget\", \"selectedIndex\", \"columns\", \"rows\", \"margin\", \"arrows\", \"arrowsAutoHide\", \"arrowPrevIcon\", \"arrowNextIcon\", \"clickable\", \"swipe\", \"size\", \"moveSize\", \"order\", \"remainingCount\", \"lazyLoading\", \"actions\", \"activeChange\", 4, \"ngIf\"], [3, \"images\", \"descriptions\", \"showDescription\", \"arrowPrevIcon\", \"arrowNextIcon\", \"closeIcon\", \"fullscreenIcon\", \"spinnerIcon\", \"arrows\", \"arrowsAutoHide\", \"swipe\", \"fullscreen\", \"forceFullscreen\", \"closeOnClick\", \"closeOnEsc\", \"keyboardNavigation\", \"animation\", \"autoPlay\", \"autoPlayInterval\", \"autoPlayPauseOnHover\", \"infinityMove\", \"zoom\", \"zoomStep\", \"zoomMax\", \"zoomMin\", \"zoomInIcon\", \"zoomOutIcon\", \"actions\", \"rotate\", \"rotateLeftIcon\", \"rotateRightIcon\", \"download\", \"downloadIcon\", \"bullets\", \"previewClose\", \"previewOpen\", \"activeChange\"], [3, \"images\", \"clickable\", \"selectedIndex\", \"arrows\", \"arrowsAutoHide\", \"arrowPrevIcon\", \"arrowNextIcon\", \"swipe\", \"animation\", \"size\", \"autoPlay\", \"autoPlayInterval\", \"autoPlayPauseOnHover\", \"infinityMove\", \"lazyLoading\", \"actions\", \"descriptions\", \"showDescription\", \"bullets\", \"imageClick\", \"activeChange\"], [3, \"images\", \"links\", \"labels\", \"linkTarget\", \"selectedIndex\", \"columns\", \"rows\", \"margin\", \"arrows\", \"arrowsAutoHide\", \"arrowPrevIcon\", \"arrowNextIcon\", \"clickable\", \"swipe\", \"size\", \"moveSize\", \"order\", \"remainingCount\", \"lazyLoading\", \"actions\", \"activeChange\"]], template: function NgxGalleryComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\");\n ɵngcc0.ɵɵtemplate(1, NgxGalleryComponent_ngx_gallery_image_1_Template, 1, 21, \"ngx-gallery-image\", 0);\n ɵngcc0.ɵɵtemplate(2, NgxGalleryComponent_ngx_gallery_thumbnails_2_Template, 1, 27, \"ngx-gallery-thumbnails\", 1);\n ɵngcc0.ɵɵelementStart(3, \"ngx-gallery-preview\", 2);\n ɵngcc0.ɵɵlistener(\"previewClose\", function NgxGalleryComponent_Template_ngx_gallery_preview_previewClose_3_listener() { return ctx.onPreviewClose(); })(\"previewOpen\", function NgxGalleryComponent_Template_ngx_gallery_preview_previewOpen_3_listener() { return ctx.onPreviewOpen(); })(\"activeChange\", function NgxGalleryComponent_Template_ngx_gallery_preview_activeChange_3_listener($event) { return ctx.previewSelect($event); });\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMapInterpolate1(\"ngx-gallery-layout \", ctx.currentOptions == null ? null : ctx.currentOptions.layout, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.currentOptions == null ? null : ctx.currentOptions.image);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.currentOptions == null ? null : ctx.currentOptions.thumbnails);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ngx-gallery-active\", ctx.previewEnabled);\n ɵngcc0.ɵɵproperty(\"images\", ctx.bigImages)(\"descriptions\", ctx.descriptions)(\"showDescription\", ctx.currentOptions == null ? null : ctx.currentOptions.previewDescription)(\"arrowPrevIcon\", ctx.currentOptions == null ? null : ctx.currentOptions.arrowPrevIcon)(\"arrowNextIcon\", ctx.currentOptions == null ? null : ctx.currentOptions.arrowNextIcon)(\"closeIcon\", ctx.currentOptions == null ? null : ctx.currentOptions.closeIcon)(\"fullscreenIcon\", ctx.currentOptions == null ? null : ctx.currentOptions.fullscreenIcon)(\"spinnerIcon\", ctx.currentOptions == null ? null : ctx.currentOptions.spinnerIcon)(\"arrows\", ctx.currentOptions == null ? null : ctx.currentOptions.previewArrows)(\"arrowsAutoHide\", ctx.currentOptions == null ? null : ctx.currentOptions.previewArrowsAutoHide)(\"swipe\", ctx.currentOptions == null ? null : ctx.currentOptions.previewSwipe)(\"fullscreen\", ctx.currentOptions == null ? null : ctx.currentOptions.previewFullscreen)(\"forceFullscreen\", ctx.currentOptions == null ? null : ctx.currentOptions.previewForceFullscreen)(\"closeOnClick\", ctx.currentOptions == null ? null : ctx.currentOptions.previewCloseOnClick)(\"closeOnEsc\", ctx.currentOptions == null ? null : ctx.currentOptions.previewCloseOnEsc)(\"keyboardNavigation\", ctx.currentOptions == null ? null : ctx.currentOptions.previewKeyboardNavigation)(\"animation\", ctx.currentOptions == null ? null : ctx.currentOptions.previewAnimation)(\"autoPlay\", ctx.currentOptions == null ? null : ctx.currentOptions.previewAutoPlay)(\"autoPlayInterval\", ctx.currentOptions == null ? null : ctx.currentOptions.previewAutoPlayInterval)(\"autoPlayPauseOnHover\", ctx.currentOptions == null ? null : ctx.currentOptions.previewAutoPlayPauseOnHover)(\"infinityMove\", ctx.currentOptions == null ? null : ctx.currentOptions.previewInfinityMove)(\"zoom\", ctx.currentOptions == null ? null : ctx.currentOptions.previewZoom)(\"zoomStep\", ctx.currentOptions == null ? null : ctx.currentOptions.previewZoomStep)(\"zoomMax\", ctx.currentOptions == null ? null : ctx.currentOptions.previewZoomMax)(\"zoomMin\", ctx.currentOptions == null ? null : ctx.currentOptions.previewZoomMin)(\"zoomInIcon\", ctx.currentOptions == null ? null : ctx.currentOptions.zoomInIcon)(\"zoomOutIcon\", ctx.currentOptions == null ? null : ctx.currentOptions.zoomOutIcon)(\"actions\", ctx.currentOptions == null ? null : ctx.currentOptions.actions)(\"rotate\", ctx.currentOptions == null ? null : ctx.currentOptions.previewRotate)(\"rotateLeftIcon\", ctx.currentOptions == null ? null : ctx.currentOptions.rotateLeftIcon)(\"rotateRightIcon\", ctx.currentOptions == null ? null : ctx.currentOptions.rotateRightIcon)(\"download\", ctx.currentOptions == null ? null : ctx.currentOptions.previewDownload)(\"downloadIcon\", ctx.currentOptions == null ? null : ctx.currentOptions.downloadIcon)(\"bullets\", ctx.currentOptions == null ? null : ctx.currentOptions.previewBullets);\n } }, dependencies: [ɵngcc2.NgIf, NgxGalleryImageComponent, NgxGalleryThumbnailsComponent, NgxGalleryPreviewComponent], styles: [\":host{display:inline-block}:host>*{float:left}.ngx-gallery-layout{width:100%;height:100%;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.ngx-gallery-layout.thumbnails-top ngx-gallery-image{-webkit-box-ordinal-group:3;order:2}.ngx-gallery-layout.thumbnails-bottom ngx-gallery-image,.ngx-gallery-layout.thumbnails-top ngx-gallery-thumbnails{-webkit-box-ordinal-group:2;order:1}.ngx-gallery-layout.thumbnails-bottom ngx-gallery-thumbnails{-webkit-box-ordinal-group:3;order:2}*{box-sizing:border-box}.ngx-gallery-icon{color:#fff;position:absolute;display:inline-block}.ngx-gallery-icon .ngx-gallery-icon-content{display:block}ngx-gallery-preview{font-size:25px}ngx-gallery-preview .ngx-gallery-icon{z-index:2000}.ngx-gallery-clickable{cursor:pointer}.ngx-gallery-icons-wrapper .ngx-gallery-icon{position:relative;margin-right:5px;margin-top:5px;font-size:20px;cursor:pointer}.ngx-gallery-icons-wrapper{float:right}\"], encapsulation: 2, changeDetection: 0 });\nNgxGalleryComponent.ctorParameters = () => [\n { type: ElementRef }\n];\n__decorate([\n Input()\n], NgxGalleryComponent.prototype, \"options\", void 0);\n__decorate([\n Input()\n], NgxGalleryComponent.prototype, \"images\", void 0);\n__decorate([\n Output()\n], NgxGalleryComponent.prototype, \"imagesReady\", void 0);\n__decorate([\n Output()\n], NgxGalleryComponent.prototype, \"change\", void 0);\n__decorate([\n Output()\n], NgxGalleryComponent.prototype, \"previewOpen\", void 0);\n__decorate([\n Output()\n], NgxGalleryComponent.prototype, \"previewClose\", void 0);\n__decorate([\n Output()\n], NgxGalleryComponent.prototype, \"previewChange\", void 0);\n__decorate([\n ViewChild(NgxGalleryPreviewComponent)\n], NgxGalleryComponent.prototype, \"preview\", void 0);\n__decorate([\n ViewChild(NgxGalleryImageComponent)\n], NgxGalleryComponent.prototype, \"image\", void 0);\n__decorate([\n ViewChild(NgxGalleryThumbnailsComponent)\n], NgxGalleryComponent.prototype, \"thumbnails\", void 0);\n__decorate([\n HostBinding('style.width')\n], NgxGalleryComponent.prototype, \"width\", void 0);\n__decorate([\n HostBinding('style.height')\n], NgxGalleryComponent.prototype, \"height\", void 0);\n__decorate([\n HostBinding('style.left')\n], NgxGalleryComponent.prototype, \"left\", void 0);\n__decorate([\n HostListener('window:resize')\n], NgxGalleryComponent.prototype, \"onResize\", null);\n\nlet NgxGalleryArrowsComponent = class NgxGalleryArrowsComponent {\n constructor() {\n this.prevClick = new EventEmitter();\n this.nextClick = new EventEmitter();\n }\n ngOnInit() {\n }\n handlePrevClick() {\n this.prevClick.emit();\n }\n handleNextClick() {\n this.nextClick.emit();\n }\n};\nNgxGalleryArrowsComponent.ɵfac = function NgxGalleryArrowsComponent_Factory(t) { return new (t || NgxGalleryArrowsComponent)(); };\nNgxGalleryArrowsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxGalleryArrowsComponent, selectors: [[\"ngx-gallery-arrows\"]], inputs: { prevDisabled: \"prevDisabled\", nextDisabled: \"nextDisabled\", arrowPrevIcon: \"arrowPrevIcon\", arrowNextIcon: \"arrowNextIcon\" }, outputs: { prevClick: \"prevClick\", nextClick: \"nextClick\" }, decls: 6, vars: 10, consts: [[1, \"ngx-gallery-arrows-wrapper\", \"ngx-gallery-arrow-left\"], [\"aria-hidden\", \"true\", 1, \"ngx-gallery-icon\", \"ngx-gallery-arrow\", 3, \"click\"], [1, \"ngx-gallery-arrows-wrapper\", \"ngx-gallery-arrow-right\"]], template: function NgxGalleryArrowsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgxGalleryArrowsComponent_Template_div_click_1_listener() { return ctx.handlePrevClick(); });\n ɵngcc0.ɵɵelement(2, \"i\");\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(3, \"div\", 2)(4, \"div\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgxGalleryArrowsComponent_Template_div_click_4_listener() { return ctx.handleNextClick(); });\n ɵngcc0.ɵɵelement(5, \"i\");\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ngx-gallery-disabled\", ctx.prevDisabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"ngx-gallery-icon-content \", ctx.arrowPrevIcon, \"\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"ngx-gallery-disabled\", ctx.nextDisabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"ngx-gallery-icon-content \", ctx.arrowNextIcon, \"\");\n } }, styles: [\".ngx-gallery-arrow-wrapper[_ngcontent-%COMP%]{position:absolute;height:100%;width:1px;display:table;table-layout:fixed}.ngx-gallery-preview-img-wrapper[_ngcontent-%COMP%] .ngx-gallery-arrow-wrapper[_ngcontent-%COMP%]{z-index:10001}.ngx-gallery-arrow-left[_ngcontent-%COMP%]{left:0}.ngx-gallery-arrow-right[_ngcontent-%COMP%]{right:0}.ngx-gallery-arrow[_ngcontent-%COMP%]{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer}.ngx-gallery-arrow.ngx-gallery-disabled[_ngcontent-%COMP%]{opacity:.6;cursor:default}.ngx-gallery-arrow-left[_ngcontent-%COMP%] .ngx-gallery-arrow[_ngcontent-%COMP%]{left:10px}.ngx-gallery-arrow-right[_ngcontent-%COMP%] .ngx-gallery-arrow[_ngcontent-%COMP%]{right:10px}\"], changeDetection: 0 });\n__decorate([\n Input()\n], NgxGalleryArrowsComponent.prototype, \"prevDisabled\", void 0);\n__decorate([\n Input()\n], NgxGalleryArrowsComponent.prototype, \"nextDisabled\", void 0);\n__decorate([\n Input()\n], NgxGalleryArrowsComponent.prototype, \"arrowPrevIcon\", void 0);\n__decorate([\n Input()\n], NgxGalleryArrowsComponent.prototype, \"arrowNextIcon\", void 0);\n__decorate([\n Output()\n], NgxGalleryArrowsComponent.prototype, \"prevClick\", void 0);\n__decorate([\n Output()\n], NgxGalleryArrowsComponent.prototype, \"nextClick\", void 0);\n\nlet NgxGalleryActionComponent = class NgxGalleryActionComponent {\n constructor() {\n this.disabled = false;\n this.titleText = '';\n this.closeClick = new EventEmitter();\n }\n ngOnInit() {\n }\n handleClick(event) {\n if (!this.disabled) {\n this.closeClick.emit(event);\n }\n event.stopPropagation();\n event.preventDefault();\n }\n};\nNgxGalleryActionComponent.ɵfac = function NgxGalleryActionComponent_Factory(t) { return new (t || NgxGalleryActionComponent)(); };\nNgxGalleryActionComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxGalleryActionComponent, selectors: [[\"ngx-gallery-action\"]], inputs: { disabled: \"disabled\", titleText: \"titleText\", icon: \"icon\" }, outputs: { closeClick: \"closeClick\" }, decls: 2, vars: 6, consts: [[\"aria-hidden\", \"true\", 1, \"ngx-gallery-icon\", 3, \"title\", \"click\"]], template: function NgxGalleryActionComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"click\", function NgxGalleryActionComponent_Template_div_click_0_listener($event) { return ctx.handleClick($event); });\n ɵngcc0.ɵɵelement(1, \"i\");\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ngx-gallery-icon-disabled\", ctx.disabled);\n ɵngcc0.ɵɵpropertyInterpolate(\"title\", ctx.titleText);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMapInterpolate1(\"ngx-gallery-icon-content \", ctx.icon, \"\");\n } }, styles: [\".ngx-gallery-icon[_ngcontent-%COMP%]{color:#fff;z-index:2000;display:inline-block;position:relative;margin-right:10px;margin-top:10px;font-size:25px;cursor:pointer;text-decoration:none}.ngx-gallery-icon[_ngcontent-%COMP%] .ngx-gallery-icon-content[_ngcontent-%COMP%]{display:block}\"], changeDetection: 0 });\n__decorate([\n Input()\n], NgxGalleryActionComponent.prototype, \"icon\", void 0);\n__decorate([\n Input()\n], NgxGalleryActionComponent.prototype, \"disabled\", void 0);\n__decorate([\n Input()\n], NgxGalleryActionComponent.prototype, \"titleText\", void 0);\n__decorate([\n Output()\n], NgxGalleryActionComponent.prototype, \"closeClick\", void 0);\n\nlet NgxGalleryBulletsComponent = class NgxGalleryBulletsComponent {\n constructor() {\n this.active = 0;\n this.bulletChange = new EventEmitter();\n }\n ngOnInit() {\n }\n getBullets() {\n return Array(this.count);\n }\n handleChange(event, index) {\n this.bulletChange.emit(index);\n }\n};\nNgxGalleryBulletsComponent.ɵfac = function NgxGalleryBulletsComponent_Factory(t) { return new (t || NgxGalleryBulletsComponent)(); };\nNgxGalleryBulletsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxGalleryBulletsComponent, selectors: [[\"ngx-gallery-bullets\"]], inputs: { active: \"active\", count: \"count\" }, outputs: { bulletChange: \"bulletChange\" }, decls: 1, vars: 1, consts: [[\"class\", \"ngx-gallery-bullet\", 3, \"ngClass\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngx-gallery-bullet\", 3, \"ngClass\", \"click\"]], template: function NgxGalleryBulletsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgxGalleryBulletsComponent_div_0_Template, 1, 3, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.getBullets());\n } }, dependencies: [ɵngcc2.NgClass, ɵngcc2.NgForOf], styles: [\"[_nghost-%COMP%]{position:absolute;z-index:2000;display:-webkit-inline-box;display:inline-flex;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:0;padding:10px}.ngx-gallery-bullet[_ngcontent-%COMP%]{width:10px;height:10px;border-radius:50%;cursor:pointer;background:#fff}.ngx-gallery-bullet[_ngcontent-%COMP%]:not(:first-child){margin-left:5px}.ngx-gallery-bullet.ngx-gallery-active[_ngcontent-%COMP%], .ngx-gallery-bullet[_ngcontent-%COMP%]:hover{background:#000}\"], changeDetection: 0 });\n__decorate([\n Input()\n], NgxGalleryBulletsComponent.prototype, \"count\", void 0);\n__decorate([\n Input()\n], NgxGalleryBulletsComponent.prototype, \"active\", void 0);\n__decorate([\n Output()\n], NgxGalleryBulletsComponent.prototype, \"bulletChange\", void 0);\n\nlet CustomHammerConfig = class CustomHammerConfig extends HammerGestureConfig {\n constructor() {\n super(...arguments);\n this.overrides = {\n pinch: { enable: false },\n rotate: { enable: false }\n };\n }\n};\nCustomHammerConfig.ɵfac = /*@__PURE__*/ function () { let ɵCustomHammerConfig_BaseFactory; return function CustomHammerConfig_Factory(t) { return (ɵCustomHammerConfig_BaseFactory || (ɵCustomHammerConfig_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(CustomHammerConfig)))(t || CustomHammerConfig); }; }();\nCustomHammerConfig.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CustomHammerConfig, factory: function (t) { return CustomHammerConfig.ɵfac(t); } });\nlet NgxGalleryModule = class NgxGalleryModule {\n};\nNgxGalleryModule.ɵfac = function NgxGalleryModule_Factory(t) { return new (t || NgxGalleryModule)(); };\nNgxGalleryModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxGalleryModule });\nNgxGalleryModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n { provide: HAMMER_GESTURE_CONFIG, useClass: CustomHammerConfig }\n ], imports: [CommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxGalleryService, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxGalleryPreviewComponent, [{\n type: Component,\n args: [{ selector: 'ngx-gallery-preview', template: \"\\n\\n
\\n \\n
\\n\\n\", changeDetection: ChangeDetectionStrategy.OnPush, styles: [\":host.ngx-gallery-active{width:100%;height:100%;position:fixed;left:0;top:0;background:rgba(0,0,0,.7);z-index:10000;display:inline-block;font-size:50px!important}:host{display:none;font-size:50px!important}:host .ngx-gallery-arrow{font-size:50px!important}ngx-gallery-bullets{height:5%;-webkit-box-align:center;align-items:center;padding:0}.ngx-gallery-preview-img{opacity:0;max-width:90%;max-height:90%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-transition:-webkit-transform .5s;transition:transform .5s;transition:transform .5s,-webkit-transform .5s}.ngx-gallery-preview-img.animation{-webkit-transition:opacity .5s linear,-webkit-transform .5s;transition:opacity .5s linear,transform .5s,-webkit-transform .5s}.ngx-gallery-preview-img.ngx-gallery-active{opacity:1}.ngx-gallery-preview-img.ngx-gallery-grab{cursor:-webkit-grab;cursor:grab}.ngx-gallery-icon.ngx-gallery-spinner{font-size:50px;left:0;display:inline-block}:host .ngx-gallery-preview-top{position:absolute;width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:25px}.ngx-gallery-preview-icons{float:right}.ngx-gallery-preview-icons .ngx-gallery-icon{position:relative;margin-right:10px;margin-top:10px;font-size:25px;cursor:pointer;text-decoration:none}.ngx-gallery-preview-icons .ngx-gallery-icon.ngx-gallery-icon-disabled{cursor:default;opacity:.4}.ngx-spinner-wrapper{width:50px;height:50px;display:none}.ngx-spinner-wrapper.ngx-gallery-active{display:inline-block}.ngx-gallery-center{position:absolute;left:0;right:0;bottom:0;margin:auto;top:0}.ngx-gallery-preview-text{width:100%;background:rgba(0,0,0,.7);padding:10px;text-align:center;color:#fff;font-size:16px;-webkit-box-flex:0;flex:0 1 auto;z-index:10}.ngx-gallery-preview-wrapper{width:100%;height:100%;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column}.ngx-gallery-preview-img-wrapper{-webkit-box-flex:1;flex:1 1 auto;position:relative}\"] }]\n }], function () { return [{ type: ɵngcc1.DomSanitizer }, { type: ɵngcc0.ElementRef }, { type: NgxGalleryService }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ChangeDetectorRef }]; }, { previewOpen: [{\n type: Output\n }], previewClose: [{\n type: Output\n }], activeChange: [{\n type: Output\n }], arrows: [{\n type: Input\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], images: [{\n type: Input\n }], descriptions: [{\n type: Input\n }], showDescription: [{\n type: Input\n }], arrowsAutoHide: [{\n type: Input\n }], swipe: [{\n type: Input\n }], fullscreen: [{\n type: Input\n }], forceFullscreen: [{\n type: Input\n }], closeOnClick: [{\n type: Input\n }], closeOnEsc: [{\n type: Input\n }], keyboardNavigation: [{\n type: Input\n }], arrowPrevIcon: [{\n type: Input\n }], arrowNextIcon: [{\n type: Input\n }], closeIcon: [{\n type: Input\n }], fullscreenIcon: [{\n type: Input\n }], spinnerIcon: [{\n type: Input\n }], autoPlay: [{\n type: Input\n }], autoPlayInterval: [{\n type: Input\n }], autoPlayPauseOnHover: [{\n type: Input\n }], infinityMove: [{\n type: Input\n }], zoom: [{\n type: Input\n }], zoomStep: [{\n type: Input\n }], zoomMax: [{\n type: Input\n }], zoomMin: [{\n type: Input\n }], zoomInIcon: [{\n type: Input\n }], zoomOutIcon: [{\n type: Input\n }], animation: [{\n type: Input\n }], actions: [{\n type: Input\n }], rotate: [{\n type: Input\n }], rotateLeftIcon: [{\n type: Input\n }], rotateRightIcon: [{\n type: Input\n }], download: [{\n type: Input\n }], downloadIcon: [{\n type: Input\n }], bullets: [{\n type: Input\n }], previewImage: [{\n type: ViewChild,\n args: ['previewImage']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxGalleryImageComponent, [{\n type: Component,\n args: [{ selector: 'ngx-gallery-image', template: \"\\n\\n\\n\", changeDetection: ChangeDetectionStrategy.OnPush, styles: [\":host{width:100%;display:inline-block;position:relative;font-size:25px}.ngx-gallery-image-wrapper{width:100%;height:100%;position:absolute;left:0;top:0;overflow:hidden}.ngx-gallery-image{background-position:center;background-repeat:no-repeat;height:100%;width:100%;position:absolute;top:0}.ngx-gallery-image-size-cover .ngx-gallery-image{background-size:cover}.ngx-gallery-image-size-contain .ngx-gallery-image{background-size:contain}.ngx-gallery-animation-fade .ngx-gallery-image{left:0;opacity:0;-webkit-transition:.5s ease-in-out;transition:.5s ease-in-out}.ngx-gallery-animation-fade .ngx-gallery-image.ngx-gallery-active{opacity:1}.ngx-gallery-animation-slide .ngx-gallery-image{-webkit-transition:.5s ease-in-out;transition:.5s ease-in-out}.ngx-gallery-animation-slide .ngx-gallery-image.ngx-gallery-active{left:0}.ngx-gallery-animation-slide .ngx-gallery-image.ngx-gallery-inactive-left{left:-100%}.ngx-gallery-animation-slide .ngx-gallery-image.ngx-gallery-inactive-right{left:100%}.ngx-gallery-animation-rotate .ngx-gallery-image{-webkit-transition:1s;transition:1s;-webkit-transform:scale(3.5,3.5) rotate(90deg);transform:scale(3.5,3.5) rotate(90deg);left:0;opacity:0}.ngx-gallery-animation-rotate .ngx-gallery-image.ngx-gallery-active{-webkit-transform:scale(1,1) rotate(0);transform:scale(1,1) rotate(0);opacity:1}.ngx-gallery-animation-zoom .ngx-gallery-image{-webkit-transition:1s;transition:1s;-webkit-transform:scale(2.5,2.5);transform:scale(2.5,2.5);left:0;opacity:0}.ngx-gallery-animation-zoom .ngx-gallery-image.ngx-gallery-active{-webkit-transform:scale(1,1);transform:scale(1,1);opacity:1}.ngx-gallery-image-text{width:100%;background:rgba(0,0,0,.7);padding:10px;text-align:center;color:#fff;font-size:16px;position:absolute;bottom:0;z-index:10}\"] }]\n }], function () { return [{ type: ɵngcc1.DomSanitizer }, { type: ɵngcc0.ElementRef }, { type: NgxGalleryService }]; }, { imageClick: [{\n type: Output\n }], activeChange: [{\n type: Output\n }], arrows: [{\n type: Input\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], selectedIndex: [{\n type: Input\n }], images: [{\n type: Input\n }], clickable: [{\n type: Input\n }], arrowsAutoHide: [{\n type: Input\n }], swipe: [{\n type: Input\n }], animation: [{\n type: Input\n }], size: [{\n type: Input\n }], arrowPrevIcon: [{\n type: Input\n }], arrowNextIcon: [{\n type: Input\n }], autoPlay: [{\n type: Input\n }], autoPlayInterval: [{\n type: Input\n }], autoPlayPauseOnHover: [{\n type: Input\n }], infinityMove: [{\n type: Input\n }], lazyLoading: [{\n type: Input\n }], actions: [{\n type: Input\n }], descriptions: [{\n type: Input\n }], showDescription: [{\n type: Input\n }], bullets: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxGalleryThumbnailsComponent, [{\n type: Component,\n args: [{ selector: 'ngx-gallery-thumbnails', template: \"\\n\\n\", changeDetection: ChangeDetectionStrategy.OnPush, styles: [\"@charset \\\"UTF-8\\\";:host{width:100%;display:inline-block;position:relative;font-size:25px}.ngx-gallery-thumbnails-wrapper{width:100%;height:100%;position:absolute;overflow:hidden}.ngx-gallery-thumbnails{height:100%;width:100%;position:absolute;left:0;-webkit-transform:translateX(0);transform:translateX(0);-webkit-transition:-webkit-transform .5s ease-in-out;transition:transform .5s ease-in-out;transition:transform .5s ease-in-out,-webkit-transform .5s ease-in-out;will-change:transform}.ngx-gallery-thumbnails .ngx-gallery-thumbnail{position:absolute;height:100%;background-position:center;background-repeat:no-repeat;text-decoration:none;border:1px double #000}.ngx-gallery-thumbnails .ngx-gallery-thumbnail .img{background-size:cover;height:100%}.ngx-gallery-thumbnails .ngx-gallery-thumbnail.ngx-gallery-active{border:1px double #cc4548}.ngx-gallery-thumbnail-size-cover .ngx-gallery-thumbnails .ngx-gallery-thumbnail{background-size:cover}.ngx-gallery-thumbnail-size-contain .ngx-gallery-thumbnails .ngx-gallery-thumbnail{background-size:contain}.ngx-gallery-remaining-count-overlay{width:100%;height:100%;position:absolute;left:0;top:0;background-color:rgba(0,0,0,.4)}.ngx-gallery-remaining-count{position:absolute;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#fff;font-size:30px}\"] }]\n }], function () { return [{ type: ɵngcc1.DomSanitizer }, { type: ɵngcc0.ElementRef }, { type: NgxGalleryService }]; }, { activeChange: [{\n type: Output\n }], onMouseEnter: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseLeave: [{\n type: HostListener,\n args: ['mouseleave']\n }], selectedIndex: [{\n type: Input\n }], images: [{\n type: Input\n }], links: [{\n type: Input\n }], labels: [{\n type: Input\n }], linkTarget: [{\n type: Input\n }], columns: [{\n type: Input\n }], rows: [{\n type: Input\n }], arrows: [{\n type: Input\n }], arrowsAutoHide: [{\n type: Input\n }], margin: [{\n type: Input\n }], clickable: [{\n type: Input\n }], swipe: [{\n type: Input\n }], size: [{\n type: Input\n }], arrowPrevIcon: [{\n type: Input\n }], arrowNextIcon: [{\n type: Input\n }], moveSize: [{\n type: Input\n }], order: [{\n type: Input\n }], remainingCount: [{\n type: Input\n }], lazyLoading: [{\n type: Input\n }], actions: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxGalleryComponent, [{\n type: Component,\n args: [{ selector: 'ngx-gallery', template: \"\\n\", encapsulation: ViewEncapsulation.None, providers: [NgxGalleryService], changeDetection: ChangeDetectionStrategy.OnPush, styles: [\":host{display:inline-block}:host>*{float:left}.ngx-gallery-layout{width:100%;height:100%;display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.ngx-gallery-layout.thumbnails-top ngx-gallery-image{-webkit-box-ordinal-group:3;order:2}.ngx-gallery-layout.thumbnails-bottom ngx-gallery-image,.ngx-gallery-layout.thumbnails-top ngx-gallery-thumbnails{-webkit-box-ordinal-group:2;order:1}.ngx-gallery-layout.thumbnails-bottom ngx-gallery-thumbnails{-webkit-box-ordinal-group:3;order:2}*{box-sizing:border-box}.ngx-gallery-icon{color:#fff;position:absolute;display:inline-block}.ngx-gallery-icon .ngx-gallery-icon-content{display:block}ngx-gallery-preview{font-size:25px}ngx-gallery-preview .ngx-gallery-icon{z-index:2000}.ngx-gallery-clickable{cursor:pointer}.ngx-gallery-icons-wrapper .ngx-gallery-icon{position:relative;margin-right:5px;margin-top:5px;font-size:20px;cursor:pointer}.ngx-gallery-icons-wrapper{float:right}\"] }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { options: [{\n type: Input\n }], imagesReady: [{\n type: Output\n }], change: [{\n type: Output\n }], previewOpen: [{\n type: Output\n }], previewClose: [{\n type: Output\n }], previewChange: [{\n type: Output\n }], onResize: [{\n type: HostListener,\n args: ['window:resize']\n }], width: [{\n type: HostBinding,\n args: ['style.width']\n }], left: [{\n type: HostBinding,\n args: ['style.left']\n }], height: [{\n type: HostBinding,\n args: ['style.height']\n }], images: [{\n type: Input\n }], preview: [{\n type: ViewChild,\n args: [NgxGalleryPreviewComponent]\n }], image: [{\n type: ViewChild,\n args: [NgxGalleryImageComponent]\n }], thumbnails: [{\n type: ViewChild,\n args: [NgxGalleryThumbnailsComponent]\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxGalleryArrowsComponent, [{\n type: Component,\n args: [{ selector: 'ngx-gallery-arrows', template: \"\\n\\n\", changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-gallery-arrow-wrapper{position:absolute;height:100%;width:1px;display:table;table-layout:fixed}.ngx-gallery-preview-img-wrapper .ngx-gallery-arrow-wrapper{z-index:10001}.ngx-gallery-arrow-left{left:0}.ngx-gallery-arrow-right{right:0}.ngx-gallery-arrow{top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer}.ngx-gallery-arrow.ngx-gallery-disabled{opacity:.6;cursor:default}.ngx-gallery-arrow-left .ngx-gallery-arrow{left:10px}.ngx-gallery-arrow-right .ngx-gallery-arrow{right:10px}\"] }]\n }], function () { return []; }, { prevClick: [{\n type: Output\n }], nextClick: [{\n type: Output\n }], prevDisabled: [{\n type: Input\n }], nextDisabled: [{\n type: Input\n }], arrowPrevIcon: [{\n type: Input\n }], arrowNextIcon: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxGalleryActionComponent, [{\n type: Component,\n args: [{ selector: 'ngx-gallery-action', template: \"\\n\", changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".ngx-gallery-icon{color:#fff;z-index:2000;display:inline-block;position:relative;margin-right:10px;margin-top:10px;font-size:25px;cursor:pointer;text-decoration:none}.ngx-gallery-icon .ngx-gallery-icon-content{display:block}\"] }]\n }], function () { return []; }, { disabled: [{\n type: Input\n }], titleText: [{\n type: Input\n }], closeClick: [{\n type: Output\n }], icon: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxGalleryBulletsComponent, [{\n type: Component,\n args: [{ selector: 'ngx-gallery-bullets', template: \"\\n\", changeDetection: ChangeDetectionStrategy.OnPush, styles: [\":host{position:absolute;z-index:2000;display:-webkit-inline-box;display:inline-flex;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);bottom:0;padding:10px}.ngx-gallery-bullet{width:10px;height:10px;border-radius:50%;cursor:pointer;background:#fff}.ngx-gallery-bullet:not(:first-child){margin-left:5px}.ngx-gallery-bullet.ngx-gallery-active,.ngx-gallery-bullet:hover{background:#000}\"] }]\n }], function () { return []; }, { active: [{\n type: Input\n }], bulletChange: [{\n type: Output\n }], count: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CustomHammerConfig, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxGalleryModule, [{\n type: NgModule,\n args: [{\n declarations: [\n NgxGalleryComponent,\n NgxGalleryImageComponent,\n NgxGalleryArrowsComponent,\n NgxGalleryThumbnailsComponent,\n NgxGalleryPreviewComponent,\n NgxGalleryActionComponent,\n NgxGalleryBulletsComponent\n ],\n imports: [CommonModule],\n exports: [NgxGalleryComponent],\n providers: [\n { provide: HAMMER_GESTURE_CONFIG, useClass: CustomHammerConfig }\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxGalleryModule, { declarations: function () { return [NgxGalleryComponent, NgxGalleryImageComponent, NgxGalleryArrowsComponent, NgxGalleryThumbnailsComponent, NgxGalleryPreviewComponent, NgxGalleryActionComponent, NgxGalleryBulletsComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgxGalleryComponent]; } }); })();\n\nclass NgxGalleryImage {\n constructor(obj) {\n this.small = obj.small;\n this.medium = obj.medium;\n this.big = obj.big;\n this.description = obj.description;\n this.url = obj.url;\n this.label = obj.label;\n }\n}\n\n/*\n * Public API Surface of ngx-gallery\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CustomHammerConfig, NgxGalleryAction, NgxGalleryAnimation, NgxGalleryArrowsComponent, NgxGalleryBulletsComponent, NgxGalleryComponent, NgxGalleryImage, NgxGalleryImageSize, NgxGalleryLayout, NgxGalleryModule, NgxGalleryOptions, NgxGalleryOrder, NgxGalleryOrderedImage, NgxGalleryPreviewComponent, NgxGalleryService, NgxGalleryThumbnailsComponent, NgxGalleryImageComponent as ɵa, NgxGalleryActionComponent as ɵb };\n\n","import { __decorate } from 'tslib';\nimport { ElementRef, Renderer2, Input, Directive, NgModule } from '@angular/core';\n\nimport * as ɵngcc0 from '@angular/core';\nlet NgOptionHighlightDirective = class NgOptionHighlightDirective {\n constructor(elementRef, renderer) {\n this.elementRef = elementRef;\n this.renderer = renderer;\n this.element = this.elementRef.nativeElement;\n }\n ngOnChanges() {\n if (this._canHighlight) {\n this._highlightLabel();\n }\n }\n ngAfterViewInit() {\n this.label = this.element.innerHTML;\n if (this._canHighlight) {\n this._highlightLabel();\n }\n }\n _escapeRegExp(str) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n _highlightLabel() {\n const label = this.label;\n if (!this.term) {\n this._setInnerHtml(label);\n return;\n }\n const alternationString = this._escapeRegExp(this.term).replace(' ', '|');\n const termRegex = new RegExp(alternationString, 'gi');\n this._setInnerHtml(label.replace(termRegex, `$&`));\n }\n get _canHighlight() {\n return this._isDefined(this.term) && this._isDefined(this.label);\n }\n _setInnerHtml(html) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'innerHTML', html);\n }\n _isDefined(value) {\n return value !== undefined && value !== null;\n }\n};\nNgOptionHighlightDirective.ɵfac = function NgOptionHighlightDirective_Factory(t) { return new (t || NgOptionHighlightDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nNgOptionHighlightDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgOptionHighlightDirective, selectors: [[\"\", \"ngOptionHighlight\", \"\"]], inputs: { term: [\"ngOptionHighlight\", \"term\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgOptionHighlightDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 }\n];\n__decorate([\n Input('ngOptionHighlight')\n], NgOptionHighlightDirective.prototype, \"term\", void 0);\n\nlet NgOptionHighlightModule = class NgOptionHighlightModule {\n};\nNgOptionHighlightModule.ɵfac = function NgOptionHighlightModule_Factory(t) { return new (t || NgOptionHighlightModule)(); };\nNgOptionHighlightModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgOptionHighlightModule });\nNgOptionHighlightModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgOptionHighlightDirective, [{\n type: Directive,\n args: [{\n selector: '[ngOptionHighlight]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }]; }, { term: [{\n type: Input,\n args: ['ngOptionHighlight']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgOptionHighlightModule, [{\n type: NgModule,\n args: [{\n declarations: [NgOptionHighlightDirective],\n exports: [NgOptionHighlightDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgOptionHighlightModule, { declarations: [NgOptionHighlightDirective], exports: [NgOptionHighlightDirective] }); })();\n\n/*\n * Public API Surface of ng-option-highlight\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgOptionHighlightDirective, NgOptionHighlightModule };\n\n","import { Directive, ElementRef, Input, TemplateRef, Injectable, ɵɵdefineInjectable, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Renderer2, NgZone, Optional, Inject, Output, ViewChild, HostListener, InjectionToken, forwardRef, Attribute, ChangeDetectorRef, HostBinding, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { takeUntil, auditTime, startWith, tap, debounceTime, filter, map } from 'rxjs/operators';\nimport { animationFrameScheduler, asapScheduler, Subject, fromEvent, merge } from 'rxjs';\nimport { DOCUMENT, CommonModule } from '@angular/common';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/value-utils.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nconst _c0 = [\"content\"];\nconst _c1 = [\"scroll\"];\nconst _c2 = [\"padding\"];\nconst _c3 = function (a0) { return { searchTerm: a0 }; };\nfunction NgDropdownPanelComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵelementContainer(1, 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.headerTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r0.filterValue));\n} }\nfunction NgDropdownPanelComponent_div_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵelementContainer(1, 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.footerTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r4.filterValue));\n} }\nconst _c4 = [\"*\"];\nconst _c5 = [\"searchInput\"];\nfunction NgSelectComponent_ng_container_4_div_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 15);\n ɵngcc0.ɵɵlistener(\"click\", function NgSelectComponent_ng_container_4_div_1_ng_template_1_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const item_r7 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(2); return ɵngcc0.ɵɵresetView(ctx_r11.unselect(item_r7)); });\n ɵngcc0.ɵɵtext(1, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(2, \"span\", 16);\n} if (rf & 2) {\n const item_r7 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r9 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngItemLabel\", item_r7.label)(\"escape\", ctx_r9.escapeHTML);\n} }\nfunction NgSelectComponent_ng_container_4_div_1_ng_template_3_Template(rf, ctx) { }\nconst _c6 = function (a0, a1, a2) { return { item: a0, clear: a1, label: a2 }; };\nfunction NgSelectComponent_ng_container_4_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_container_4_div_1_ng_template_1_Template, 3, 2, \"ng-template\", null, 13, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_container_4_div_1_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r7 = ctx.$implicit;\n const _r8 = ɵngcc0.ɵɵreference(2);\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"ng-value-disabled\", item_r7.disabled);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r6.labelTemplate || _r8)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(4, _c6, item_r7.value, ctx_r6.clearItem, item_r7.label));\n} }\nfunction NgSelectComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_container_4_div_1_Template, 4, 8, \"div\", 11);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.selectedItems)(\"ngForTrackBy\", ctx_r0.trackByOption);\n} }\nfunction NgSelectComponent_5_ng_template_0_Template(rf, ctx) { }\nconst _c7 = function (a0, a1) { return { items: a0, clear: a1 }; };\nfunction NgSelectComponent_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgSelectComponent_5_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.multiLabelTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c7, ctx_r1.selectedValues, ctx_r1.clearItem));\n} }\nfunction NgSelectComponent_ng_container_9_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 19);\n} }\nfunction NgSelectComponent_ng_container_9_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_container_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_container_9_ng_template_1_Template, 1, 0, \"ng-template\", null, 17, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_container_9_ng_template_3_Template, 0, 0, \"ng-template\", 18);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r16 = ɵngcc0.ɵɵreference(2);\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.loadingSpinnerTemplate || _r16);\n} }\nfunction NgSelectComponent_span_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 20)(1, \"span\", 21);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵpropertyInterpolate(\"title\", ctx_r4.clearAllText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 27);\n} if (rf & 2) {\n const item_r24 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r26 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngItemLabel\", item_r24.label)(\"escape\", ctx_r26.escapeHTML);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_3_Template(rf, ctx) { }\nconst _c8 = function (a0, a1, a2, a3) { return { item: a0, item$: a1, index: a2, searchTerm: a3 }; };\nfunction NgSelectComponent_ng_dropdown_panel_13_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r30 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 25);\n ɵngcc0.ɵɵlistener(\"click\", function NgSelectComponent_ng_dropdown_panel_13_div_2_Template_div_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r30); const item_r24 = restoredCtx.$implicit; const ctx_r29 = ɵngcc0.ɵɵnextContext(2); return ɵngcc0.ɵɵresetView(ctx_r29.toggleItem(item_r24)); })(\"mouseover\", function NgSelectComponent_ng_dropdown_panel_13_div_2_Template_div_mouseover_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r30); const item_r24 = restoredCtx.$implicit; const ctx_r31 = ɵngcc0.ɵɵnextContext(2); return ɵngcc0.ɵɵresetView(ctx_r31.onItemHover(item_r24)); });\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_1_Template, 1, 2, \"ng-template\", null, 26, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r24 = ctx.$implicit;\n const _r25 = ɵngcc0.ɵɵreference(2);\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"ng-option-disabled\", item_r24.disabled)(\"ng-option-selected\", item_r24.selected)(\"ng-optgroup\", item_r24.children)(\"ng-option\", !item_r24.children)(\"ng-option-child\", !!item_r24.parent)(\"ng-option-marked\", item_r24 === ctx_r19.itemsList.markedItem);\n ɵngcc0.ɵɵattribute(\"role\", item_r24.children ? \"group\" : \"option\")(\"aria-selected\", item_r24.selected)(\"id\", item_r24 == null ? null : item_r24.htmlId);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", item_r24.children ? ctx_r19.optgroupTemplate || _r25 : ctx_r19.optionTemplate || _r25)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction4(17, _c8, item_r24.value, item_r24, item_r24.index, ctx_r19.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\")(1, \"span\", 30);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r33 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r33.addTagText);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"\\\"\", ctx_r33.searchTerm, \"\\\"\");\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_3_Template(rf, ctx) { if (rf & 1) {\n const _r36 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 28);\n ɵngcc0.ɵɵlistener(\"mouseover\", function NgSelectComponent_ng_dropdown_panel_13_div_3_Template_div_mouseover_0_listener() { ɵngcc0.ɵɵrestoreView(_r36); const ctx_r35 = ɵngcc0.ɵɵnextContext(2); return ɵngcc0.ɵɵresetView(ctx_r35.itemsList.unmarkItem()); })(\"click\", function NgSelectComponent_ng_dropdown_panel_13_div_3_Template_div_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r36); const ctx_r37 = ɵngcc0.ɵɵnextContext(2); return ɵngcc0.ɵɵresetView(ctx_r37.selectTag()); });\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_1_Template, 4, 2, \"ng-template\", null, 29, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r32 = ɵngcc0.ɵɵreference(2);\n const ctx_r20 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"ng-option-marked\", !ctx_r20.itemsList.markedItem);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r20.tagTemplate || _r32)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(4, _c3, ctx_r20.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 32);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r39 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r39.notFoundText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_1_Template, 2, 1, \"ng-template\", null, 31, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r38 = ɵngcc0.ɵɵreference(2);\n const ctx_r21 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r21.notFoundTemplate || _r38)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r21.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 32);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r42 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r42.typeToSearchText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_1_Template, 2, 1, \"ng-template\", null, 33, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_3_Template, 0, 0, \"ng-template\", 18);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r41 = ɵngcc0.ɵɵreference(2);\n const ctx_r22 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r22.typeToSearchTemplate || _r41);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 32);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r45 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r45.loadingText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_1_Template, 2, 1, \"ng-template\", null, 34, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r44 = ɵngcc0.ɵɵreference(2);\n const ctx_r23 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r23.loadingTextTemplate || _r44)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r23.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_Template(rf, ctx) { if (rf & 1) {\n const _r48 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ng-dropdown-panel\", 22);\n ɵngcc0.ɵɵlistener(\"update\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_update_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r47 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r47.viewPortItems = $event); })(\"scroll\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_scroll_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r49 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r49.scroll.emit($event)); })(\"scrollToEnd\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_scrollToEnd_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r50 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r50.scrollToEnd.emit($event)); })(\"outsideClick\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_outsideClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r51 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r51.close()); });\n ɵngcc0.ɵɵelementContainerStart(1);\n ɵngcc0.ɵɵtemplate(2, NgSelectComponent_ng_dropdown_panel_13_div_2_Template, 4, 22, \"div\", 23);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_div_3_Template, 4, 6, \"div\", 24);\n ɵngcc0.ɵɵelementContainerEnd();\n ɵngcc0.ɵɵtemplate(4, NgSelectComponent_ng_dropdown_panel_13_ng_container_4_Template, 4, 4, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(5, NgSelectComponent_ng_dropdown_panel_13_ng_container_5_Template, 4, 1, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(6, NgSelectComponent_ng_dropdown_panel_13_ng_container_6_Template, 4, 4, \"ng-container\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"ng-select-multiple\", ctx_r5.multiple);\n ɵngcc0.ɵɵproperty(\"virtualScroll\", ctx_r5.virtualScroll)(\"bufferAmount\", ctx_r5.bufferAmount)(\"appendTo\", ctx_r5.appendTo)(\"position\", ctx_r5.dropdownPosition)(\"headerTemplate\", ctx_r5.headerTemplate)(\"footerTemplate\", ctx_r5.footerTemplate)(\"filterValue\", ctx_r5.searchTerm)(\"items\", ctx_r5.itemsList.filteredItems)(\"markedItem\", ctx_r5.itemsList.markedItem)(\"ngClass\", ctx_r5.appendTo ? ctx_r5.classes : null)(\"id\", ctx_r5.dropdownId);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r5.viewPortItems)(\"ngForTrackBy\", ctx_r5.trackByOption);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showAddTag);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showNoItemsFound());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showTypeToSearch());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.loading && ctx_r5.itemsList.filteredItems.length === 0);\n} }\nconst unescapedHTMLExp = /[&<>\"']/g;\n/** @type {?} */\nconst hasUnescapedHTMLExp = RegExp(unescapedHTMLExp.source);\n/** @type {?} */\nconst htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\n/**\n * @param {?} string\n * @return {?}\n */\nfunction escapeHTML(string) {\n return (string && hasUnescapedHTMLExp.test(string)) ?\n string.replace(unescapedHTMLExp, (/**\n * @param {?} chr\n * @return {?}\n */\n chr => htmlEscapes[chr])) :\n string;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isObject(value) {\n return typeof value === 'object' && isDefined(value);\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isPromise(value) {\n return value instanceof Promise;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isFunction(value) {\n return value instanceof Function;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-templates.directive.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass NgItemLabelDirective {\n /**\n * @param {?} element\n */\n constructor(element) {\n this.element = element;\n this.escape = true;\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n this.element.nativeElement.innerHTML = this.escape ?\n escapeHTML(this.ngItemLabel) :\n this.ngItemLabel;\n }\n}\nNgItemLabelDirective.ɵfac = function NgItemLabelDirective_Factory(t) { return new (t || NgItemLabelDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgItemLabelDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgItemLabelDirective, selectors: [[\"\", \"ngItemLabel\", \"\"]], inputs: { escape: \"escape\", ngItemLabel: \"ngItemLabel\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nNgItemLabelDirective.ctorParameters = () => [\n { type: ElementRef }\n];\nNgItemLabelDirective.propDecorators = {\n ngItemLabel: [{ type: Input }],\n escape: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgItemLabelDirective, [{\n type: Directive,\n args: [{ selector: '[ngItemLabel]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { escape: [{\n type: Input\n }], ngItemLabel: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n NgItemLabelDirective.prototype.ngItemLabel;\n /** @type {?} */\n NgItemLabelDirective.prototype.escape;\n /**\n * @type {?}\n * @private\n */\n NgItemLabelDirective.prototype.element;\n}\nclass NgOptionTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgOptionTemplateDirective.ɵfac = function NgOptionTemplateDirective_Factory(t) { return new (t || NgOptionTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgOptionTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgOptionTemplateDirective, selectors: [[\"\", \"ng-option-tmp\", \"\"]] });\n/** @nocollapse */\nNgOptionTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgOptionTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-option-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgOptionTemplateDirective.prototype.template;\n}\nclass NgOptgroupTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgOptgroupTemplateDirective.ɵfac = function NgOptgroupTemplateDirective_Factory(t) { return new (t || NgOptgroupTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgOptgroupTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgOptgroupTemplateDirective, selectors: [[\"\", \"ng-optgroup-tmp\", \"\"]] });\n/** @nocollapse */\nNgOptgroupTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgOptgroupTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-optgroup-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgOptgroupTemplateDirective.prototype.template;\n}\nclass NgLabelTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgLabelTemplateDirective.ɵfac = function NgLabelTemplateDirective_Factory(t) { return new (t || NgLabelTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgLabelTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgLabelTemplateDirective, selectors: [[\"\", \"ng-label-tmp\", \"\"]] });\n/** @nocollapse */\nNgLabelTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgLabelTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-label-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgLabelTemplateDirective.prototype.template;\n}\nclass NgMultiLabelTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgMultiLabelTemplateDirective.ɵfac = function NgMultiLabelTemplateDirective_Factory(t) { return new (t || NgMultiLabelTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgMultiLabelTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgMultiLabelTemplateDirective, selectors: [[\"\", \"ng-multi-label-tmp\", \"\"]] });\n/** @nocollapse */\nNgMultiLabelTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgMultiLabelTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-multi-label-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgMultiLabelTemplateDirective.prototype.template;\n}\nclass NgHeaderTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgHeaderTemplateDirective.ɵfac = function NgHeaderTemplateDirective_Factory(t) { return new (t || NgHeaderTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgHeaderTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgHeaderTemplateDirective, selectors: [[\"\", \"ng-header-tmp\", \"\"]] });\n/** @nocollapse */\nNgHeaderTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgHeaderTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-header-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgHeaderTemplateDirective.prototype.template;\n}\nclass NgFooterTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgFooterTemplateDirective.ɵfac = function NgFooterTemplateDirective_Factory(t) { return new (t || NgFooterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgFooterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgFooterTemplateDirective, selectors: [[\"\", \"ng-footer-tmp\", \"\"]] });\n/** @nocollapse */\nNgFooterTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgFooterTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-footer-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgFooterTemplateDirective.prototype.template;\n}\nclass NgNotFoundTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgNotFoundTemplateDirective.ɵfac = function NgNotFoundTemplateDirective_Factory(t) { return new (t || NgNotFoundTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgNotFoundTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgNotFoundTemplateDirective, selectors: [[\"\", \"ng-notfound-tmp\", \"\"]] });\n/** @nocollapse */\nNgNotFoundTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgNotFoundTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-notfound-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgNotFoundTemplateDirective.prototype.template;\n}\nclass NgTypeToSearchTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgTypeToSearchTemplateDirective.ɵfac = function NgTypeToSearchTemplateDirective_Factory(t) { return new (t || NgTypeToSearchTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgTypeToSearchTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgTypeToSearchTemplateDirective, selectors: [[\"\", \"ng-typetosearch-tmp\", \"\"]] });\n/** @nocollapse */\nNgTypeToSearchTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgTypeToSearchTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-typetosearch-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgTypeToSearchTemplateDirective.prototype.template;\n}\nclass NgLoadingTextTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgLoadingTextTemplateDirective.ɵfac = function NgLoadingTextTemplateDirective_Factory(t) { return new (t || NgLoadingTextTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgLoadingTextTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgLoadingTextTemplateDirective, selectors: [[\"\", \"ng-loadingtext-tmp\", \"\"]] });\n/** @nocollapse */\nNgLoadingTextTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgLoadingTextTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-loadingtext-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgLoadingTextTemplateDirective.prototype.template;\n}\nclass NgTagTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgTagTemplateDirective.ɵfac = function NgTagTemplateDirective_Factory(t) { return new (t || NgTagTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgTagTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgTagTemplateDirective, selectors: [[\"\", \"ng-tag-tmp\", \"\"]] });\n/** @nocollapse */\nNgTagTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgTagTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-tag-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgTagTemplateDirective.prototype.template;\n}\nclass NgLoadingSpinnerTemplateDirective {\n /**\n * @param {?} template\n */\n constructor(template) {\n this.template = template;\n }\n}\nNgLoadingSpinnerTemplateDirective.ɵfac = function NgLoadingSpinnerTemplateDirective_Factory(t) { return new (t || NgLoadingSpinnerTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgLoadingSpinnerTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgLoadingSpinnerTemplateDirective, selectors: [[\"\", \"ng-loadingspinner-tmp\", \"\"]] });\n/** @nocollapse */\nNgLoadingSpinnerTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgLoadingSpinnerTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-loadingspinner-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nif (false) {\n /** @type {?} */\n NgLoadingSpinnerTemplateDirective.prototype.template;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/console.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ConsoleService {\n /**\n * @param {?} message\n * @return {?}\n */\n warn(message) {\n console.warn(message);\n }\n}\nConsoleService.ɵfac = function ConsoleService_Factory(t) { return new (t || ConsoleService)(); };\n/** @nocollapse */ ConsoleService.ɵprov = ɵɵdefineInjectable({ factory: function ConsoleService_Factory() { return new ConsoleService(); }, token: ConsoleService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ConsoleService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/id.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction newId() {\n // First character is an 'a', it's good practice to tag id to begin with a letter\n return 'axxxxxxxxxxx'.replace(/[x]/g, (/**\n * @param {?} _\n * @return {?}\n */\n function (_) {\n // tslint:disable-next-line:no-bitwise\n /** @type {?} */\n const val = Math.random() * 16 | 0;\n return val.toString(16);\n }));\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/search-helper.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n};\n/**\n * @param {?} text\n * @return {?}\n */\nfunction stripSpecialChars(text) {\n /** @type {?} */\n const match = (/**\n * @param {?} a\n * @return {?}\n */\n (a) => {\n return diacritics[a] || a;\n });\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/items-list.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ItemsList {\n /**\n * @param {?} _ngSelect\n * @param {?} _selectionModel\n */\n constructor(_ngSelect, _selectionModel) {\n this._ngSelect = _ngSelect;\n this._selectionModel = _selectionModel;\n this._items = [];\n this._filteredItems = [];\n this._markedIndex = -1;\n }\n /**\n * @return {?}\n */\n get items() {\n return this._items;\n }\n /**\n * @return {?}\n */\n get filteredItems() {\n return this._filteredItems;\n }\n /**\n * @return {?}\n */\n get markedIndex() {\n return this._markedIndex;\n }\n /**\n * @return {?}\n */\n get selectedItems() {\n return this._selectionModel.value;\n }\n /**\n * @return {?}\n */\n get markedItem() {\n return this._filteredItems[this._markedIndex];\n }\n /**\n * @return {?}\n */\n get noItemsToSelect() {\n return this._ngSelect.hideSelected && this._items.length === this.selectedItems.length;\n }\n /**\n * @return {?}\n */\n get maxItemsSelected() {\n return this._ngSelect.multiple && this._ngSelect.maxSelectedItems <= this.selectedItems.length;\n }\n /**\n * @return {?}\n */\n get lastSelectedItem() {\n /** @type {?} */\n let i = this.selectedItems.length - 1;\n for (; i >= 0; i--) {\n /** @type {?} */\n let item = this.selectedItems[i];\n if (!item.disabled) {\n return item;\n }\n }\n return null;\n }\n /**\n * @param {?} items\n * @return {?}\n */\n setItems(items) {\n this._items = items.map((/**\n * @param {?} item\n * @param {?} index\n * @return {?}\n */\n (item, index) => this.mapItem(item, index)));\n if (this._ngSelect.groupBy) {\n this._groups = this._groupBy(this._items, this._ngSelect.groupBy);\n this._items = this._flatten(this._groups);\n }\n else {\n this._groups = new Map();\n this._groups.set(undefined, this._items);\n }\n this._filteredItems = [...this._items];\n }\n /**\n * @param {?} item\n * @return {?}\n */\n select(item) {\n if (item.selected || this.maxItemsSelected) {\n return;\n }\n /** @type {?} */\n const multiple = this._ngSelect.multiple;\n if (!multiple) {\n this.clearSelected();\n }\n this._selectionModel.select(item, multiple, this._ngSelect.selectableGroupAsModel);\n if (this._ngSelect.hideSelected) {\n this._hideSelected(item);\n }\n }\n /**\n * @param {?} item\n * @return {?}\n */\n unselect(item) {\n if (!item.selected) {\n return;\n }\n this._selectionModel.unselect(item, this._ngSelect.multiple);\n if (this._ngSelect.hideSelected && isDefined(item.index) && this._ngSelect.multiple) {\n this._showSelected(item);\n }\n }\n /**\n * @param {?} value\n * @return {?}\n */\n findItem(value) {\n /** @type {?} */\n let findBy;\n if (this._ngSelect.compareWith) {\n findBy = (/**\n * @param {?} item\n * @return {?}\n */\n item => this._ngSelect.compareWith(item.value, value));\n }\n else if (this._ngSelect.bindValue) {\n findBy = (/**\n * @param {?} item\n * @return {?}\n */\n item => !item.children && this.resolveNested(item.value, this._ngSelect.bindValue) === value);\n }\n else {\n findBy = (/**\n * @param {?} item\n * @return {?}\n */\n item => item.value === value ||\n !item.children && item.label && item.label === this.resolveNested(value, this._ngSelect.bindLabel));\n }\n return this._items.find((/**\n * @param {?} item\n * @return {?}\n */\n item => findBy(item)));\n }\n /**\n * @param {?} item\n * @return {?}\n */\n addItem(item) {\n /** @type {?} */\n const option = this.mapItem(item, this._items.length);\n this._items.push(option);\n this._filteredItems.push(option);\n return option;\n }\n /**\n * @param {?=} keepDisabled\n * @return {?}\n */\n clearSelected(keepDisabled = false) {\n this._selectionModel.clear(keepDisabled);\n this._items.forEach((/**\n * @param {?} item\n * @return {?}\n */\n item => {\n item.selected = keepDisabled && item.selected && item.disabled;\n item.marked = false;\n }));\n if (this._ngSelect.hideSelected) {\n this.resetFilteredItems();\n }\n }\n /**\n * @param {?} term\n * @return {?}\n */\n findByLabel(term) {\n term = stripSpecialChars(term).toLocaleLowerCase();\n return this.filteredItems.find((/**\n * @param {?} item\n * @return {?}\n */\n item => {\n /** @type {?} */\n const label = stripSpecialChars(item.label).toLocaleLowerCase();\n return label.substr(0, term.length) === term;\n }));\n }\n /**\n * @param {?} term\n * @return {?}\n */\n filter(term) {\n if (!term) {\n this.resetFilteredItems();\n return;\n }\n this._filteredItems = [];\n term = this._ngSelect.searchFn ? term : stripSpecialChars(term).toLocaleLowerCase();\n /** @type {?} */\n const match = this._ngSelect.searchFn || this._defaultSearchFn;\n /** @type {?} */\n const hideSelected = this._ngSelect.hideSelected;\n for (const key of Array.from(this._groups.keys())) {\n /** @type {?} */\n const matchedItems = [];\n for (const item of this._groups.get(key)) {\n if (hideSelected && (item.parent && item.parent.selected || item.selected)) {\n continue;\n }\n /** @type {?} */\n const searchItem = this._ngSelect.searchFn ? item.value : item;\n if (match(term, searchItem)) {\n matchedItems.push(item);\n }\n }\n if (matchedItems.length > 0) {\n const [last] = matchedItems.slice(-1);\n if (last.parent) {\n /** @type {?} */\n const head = this._items.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x === last.parent));\n this._filteredItems.push(head);\n }\n this._filteredItems.push(...matchedItems);\n }\n }\n }\n /**\n * @return {?}\n */\n resetFilteredItems() {\n if (this._filteredItems.length === this._items.length) {\n return;\n }\n if (this._ngSelect.hideSelected && this.selectedItems.length > 0) {\n this._filteredItems = this._items.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => !x.selected));\n }\n else {\n this._filteredItems = this._items;\n }\n }\n /**\n * @return {?}\n */\n unmarkItem() {\n this._markedIndex = -1;\n }\n /**\n * @return {?}\n */\n markNextItem() {\n this._stepToItem(+1);\n }\n /**\n * @return {?}\n */\n markPreviousItem() {\n this._stepToItem(-1);\n }\n /**\n * @param {?} item\n * @return {?}\n */\n markItem(item) {\n this._markedIndex = this._filteredItems.indexOf(item);\n }\n /**\n * @param {?=} markDefault\n * @return {?}\n */\n markSelectedOrDefault(markDefault) {\n if (this._filteredItems.length === 0) {\n return;\n }\n /** @type {?} */\n const lastMarkedIndex = this._getLastMarkedIndex();\n if (lastMarkedIndex > -1) {\n this._markedIndex = lastMarkedIndex;\n }\n else {\n this._markedIndex = markDefault ? this.filteredItems.findIndex((/**\n * @param {?} x\n * @return {?}\n */\n x => !x.disabled)) : -1;\n }\n }\n /**\n * @param {?} option\n * @param {?} key\n * @return {?}\n */\n resolveNested(option, key) {\n if (!isObject(option)) {\n return option;\n }\n if (key.indexOf('.') === -1) {\n return option[key];\n }\n else {\n /** @type {?} */\n let keys = key.split('.');\n /** @type {?} */\n let value = option;\n for (let i = 0, len = keys.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[keys[i]];\n }\n return value;\n }\n }\n /**\n * @param {?} item\n * @param {?} index\n * @return {?}\n */\n mapItem(item, index) {\n /** @type {?} */\n const label = isDefined(item.$ngOptionLabel) ? item.$ngOptionLabel : this.resolveNested(item, this._ngSelect.bindLabel);\n /** @type {?} */\n const value = isDefined(item.$ngOptionValue) ? item.$ngOptionValue : item;\n return {\n index: index,\n label: isDefined(label) ? label.toString() : '',\n value: value,\n disabled: item.disabled,\n htmlId: `${this._ngSelect.dropdownId}-${index}`,\n };\n }\n /**\n * @return {?}\n */\n mapSelectedItems() {\n /** @type {?} */\n const multiple = this._ngSelect.multiple;\n for (const selected of this.selectedItems) {\n /** @type {?} */\n const value = this._ngSelect.bindValue ? this.resolveNested(selected.value, this._ngSelect.bindValue) : selected.value;\n /** @type {?} */\n const item = isDefined(value) ? this.findItem(value) : null;\n this._selectionModel.unselect(selected, multiple);\n this._selectionModel.select(item || selected, multiple, this._ngSelect.selectableGroupAsModel);\n }\n if (this._ngSelect.hideSelected) {\n this._filteredItems = this.filteredItems.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => this.selectedItems.indexOf(x) === -1));\n }\n }\n /**\n * @private\n * @param {?} item\n * @return {?}\n */\n _showSelected(item) {\n this._filteredItems.push(item);\n if (item.parent) {\n /** @type {?} */\n const parent = item.parent;\n /** @type {?} */\n const parentExists = this._filteredItems.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x === parent));\n if (!parentExists) {\n this._filteredItems.push(parent);\n }\n }\n else if (item.children) {\n for (const child of item.children) {\n child.selected = false;\n this._filteredItems.push(child);\n }\n }\n this._filteredItems = [...this._filteredItems.sort((/**\n * @param {?} a\n * @param {?} b\n * @return {?}\n */\n (a, b) => (a.index - b.index)))];\n }\n /**\n * @private\n * @param {?} item\n * @return {?}\n */\n _hideSelected(item) {\n this._filteredItems = this._filteredItems.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x !== item));\n if (item.parent) {\n /** @type {?} */\n const children = item.parent.children;\n if (children.every((/**\n * @param {?} x\n * @return {?}\n */\n x => x.selected))) {\n this._filteredItems = this._filteredItems.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x !== item.parent));\n }\n }\n else if (item.children) {\n this._filteredItems = this.filteredItems.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.parent !== item));\n }\n }\n /**\n * @private\n * @param {?} search\n * @param {?} opt\n * @return {?}\n */\n _defaultSearchFn(search, opt) {\n /** @type {?} */\n const label = stripSpecialChars(opt.label).toLocaleLowerCase();\n return label.indexOf(search) > -1;\n }\n /**\n * @private\n * @param {?} steps\n * @return {?}\n */\n _getNextItemIndex(steps) {\n if (steps > 0) {\n return (this._markedIndex === this._filteredItems.length - 1) ? 0 : (this._markedIndex + 1);\n }\n return (this._markedIndex <= 0) ? (this._filteredItems.length - 1) : (this._markedIndex - 1);\n }\n /**\n * @private\n * @param {?} steps\n * @return {?}\n */\n _stepToItem(steps) {\n if (this._filteredItems.length === 0 || this._filteredItems.every((/**\n * @param {?} x\n * @return {?}\n */\n x => x.disabled))) {\n return;\n }\n this._markedIndex = this._getNextItemIndex(steps);\n if (this.markedItem.disabled) {\n this._stepToItem(steps);\n }\n }\n /**\n * @private\n * @return {?}\n */\n _getLastMarkedIndex() {\n if (this._ngSelect.hideSelected) {\n return -1;\n }\n if (this._markedIndex > -1 && this.markedItem === undefined) {\n return -1;\n }\n /** @type {?} */\n const selectedIndex = this._filteredItems.indexOf(this.lastSelectedItem);\n if (this.lastSelectedItem && selectedIndex < 0) {\n return -1;\n }\n return Math.max(this.markedIndex, selectedIndex);\n }\n /**\n * @private\n * @param {?} items\n * @param {?} prop\n * @return {?}\n */\n _groupBy(items, prop) {\n /** @type {?} */\n const groups = new Map();\n if (items.length === 0) {\n return groups;\n }\n // Check if items are already grouped by given key.\n if (Array.isArray(items[0].value[(/** @type {?} */ (prop))])) {\n for (const item of items) {\n /** @type {?} */\n const children = (item.value[(/** @type {?} */ (prop))] || []).map((/**\n * @param {?} x\n * @param {?} index\n * @return {?}\n */\n (x, index) => this.mapItem(x, index)));\n groups.set(item, children);\n }\n return groups;\n }\n /** @type {?} */\n const isFnKey = isFunction(this._ngSelect.groupBy);\n /** @type {?} */\n const keyFn = (/**\n * @param {?} item\n * @return {?}\n */\n (item) => {\n /** @type {?} */\n let key = isFnKey ? ((/** @type {?} */ (prop)))(item.value) : item.value[(/** @type {?} */ (prop))];\n return isDefined(key) ? key : undefined;\n });\n // Group items by key.\n for (const item of items) {\n /** @type {?} */\n let key = keyFn(item);\n /** @type {?} */\n const group = groups.get(key);\n if (group) {\n group.push(item);\n }\n else {\n groups.set(key, [item]);\n }\n }\n return groups;\n }\n /**\n * @private\n * @param {?} groups\n * @return {?}\n */\n _flatten(groups) {\n /** @type {?} */\n const isGroupByFn = isFunction(this._ngSelect.groupBy);\n /** @type {?} */\n const items = [];\n for (const key of Array.from(groups.keys())) {\n /** @type {?} */\n let i = items.length;\n if (key === undefined) {\n /** @type {?} */\n const withoutGroup = groups.get(undefined) || [];\n items.push(...withoutGroup.map((/**\n * @param {?} x\n * @return {?}\n */\n x => (Object.assign(Object.assign({}, x), { index: i++ })))));\n continue;\n }\n /** @type {?} */\n const isObjectKey = isObject(key);\n /** @type {?} */\n const parent = {\n label: isObjectKey ? '' : String(key),\n children: undefined,\n parent: null,\n index: i++,\n disabled: !this._ngSelect.selectableGroup,\n htmlId: newId(),\n };\n /** @type {?} */\n const groupKey = isGroupByFn ? this._ngSelect.bindLabel : (/** @type {?} */ (this._ngSelect.groupBy));\n /** @type {?} */\n const groupValue = this._ngSelect.groupValue || ((/**\n * @return {?}\n */\n () => {\n if (isObjectKey) {\n return ((/** @type {?} */ (key))).value;\n }\n return { [groupKey]: key };\n }));\n /** @type {?} */\n const children = groups.get(key).map((/**\n * @param {?} x\n * @return {?}\n */\n x => {\n x.parent = parent;\n x.children = undefined;\n x.index = i++;\n return x;\n }));\n parent.children = children;\n parent.value = groupValue(key, children.map((/**\n * @param {?} x\n * @return {?}\n */\n x => x.value)));\n items.push(parent);\n items.push(...children);\n }\n return items;\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._groups;\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._items;\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._filteredItems;\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._markedIndex;\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._ngSelect;\n /**\n * @type {?}\n * @private\n */\n ItemsList.prototype._selectionModel;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-select.types.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction NgOption() { }\nif (false) {\n /** @type {?|undefined} */\n NgOption.prototype.index;\n /** @type {?|undefined} */\n NgOption.prototype.htmlId;\n /** @type {?|undefined} */\n NgOption.prototype.selected;\n /** @type {?|undefined} */\n NgOption.prototype.disabled;\n /** @type {?|undefined} */\n NgOption.prototype.marked;\n /** @type {?|undefined} */\n NgOption.prototype.label;\n /** @type {?|undefined} */\n NgOption.prototype.value;\n /** @type {?|undefined} */\n NgOption.prototype.parent;\n /** @type {?|undefined} */\n NgOption.prototype.children;\n /* Skipping unhandled member: [name: string]: any;*/\n}\n/** @enum {number} */\nconst KeyCode = {\n Tab: 9,\n Enter: 13,\n Esc: 27,\n Space: 32,\n ArrowUp: 38,\n ArrowDown: 40,\n Backspace: 8,\n};\nKeyCode[KeyCode.Tab] = 'Tab';\nKeyCode[KeyCode.Enter] = 'Enter';\nKeyCode[KeyCode.Esc] = 'Esc';\nKeyCode[KeyCode.Space] = 'Space';\nKeyCode[KeyCode.ArrowUp] = 'ArrowUp';\nKeyCode[KeyCode.ArrowDown] = 'ArrowDown';\nKeyCode[KeyCode.Backspace] = 'Backspace';\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-dropdown-panel.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @record\n */\nfunction ItemsRangeResult() { }\nif (false) {\n /** @type {?} */\n ItemsRangeResult.prototype.scrollHeight;\n /** @type {?} */\n ItemsRangeResult.prototype.topPadding;\n /** @type {?} */\n ItemsRangeResult.prototype.start;\n /** @type {?} */\n ItemsRangeResult.prototype.end;\n}\n/**\n * @record\n */\nfunction PanelDimensions() { }\nif (false) {\n /** @type {?} */\n PanelDimensions.prototype.itemHeight;\n /** @type {?} */\n PanelDimensions.prototype.panelHeight;\n /** @type {?} */\n PanelDimensions.prototype.itemsPerViewport;\n}\nclass NgDropdownPanelService {\n constructor() {\n this._dimensions = {\n itemHeight: 0,\n panelHeight: 0,\n itemsPerViewport: 0\n };\n }\n /**\n * @return {?}\n */\n get dimensions() {\n return this._dimensions;\n }\n /**\n * @param {?} scrollPos\n * @param {?} itemsLength\n * @param {?} buffer\n * @return {?}\n */\n calculateItems(scrollPos, itemsLength, buffer) {\n /** @type {?} */\n const d = this._dimensions;\n /** @type {?} */\n const scrollHeight = d.itemHeight * itemsLength;\n /** @type {?} */\n const scrollTop = Math.max(0, scrollPos);\n /** @type {?} */\n const indexByScrollTop = scrollTop / scrollHeight * itemsLength;\n /** @type {?} */\n let end = Math.min(itemsLength, Math.ceil(indexByScrollTop) + (d.itemsPerViewport + 1));\n /** @type {?} */\n const maxStartEnd = end;\n /** @type {?} */\n const maxStart = Math.max(0, maxStartEnd - d.itemsPerViewport);\n /** @type {?} */\n let start = Math.min(maxStart, Math.floor(indexByScrollTop));\n /** @type {?} */\n let topPadding = d.itemHeight * Math.ceil(start) - (d.itemHeight * Math.min(start, buffer));\n topPadding = !isNaN(topPadding) ? topPadding : 0;\n start = !isNaN(start) ? start : -1;\n end = !isNaN(end) ? end : -1;\n start -= buffer;\n start = Math.max(0, start);\n end += buffer;\n end = Math.min(itemsLength, end);\n return {\n topPadding,\n scrollHeight,\n start,\n end\n };\n }\n /**\n * @param {?} itemHeight\n * @param {?} panelHeight\n * @return {?}\n */\n setDimensions(itemHeight, panelHeight) {\n /** @type {?} */\n const itemsPerViewport = Math.max(1, Math.floor(panelHeight / itemHeight));\n this._dimensions = {\n itemHeight,\n panelHeight,\n itemsPerViewport\n };\n }\n /**\n * @param {?} itemTop\n * @param {?} itemHeight\n * @param {?} lastScroll\n * @return {?}\n */\n getScrollTo(itemTop, itemHeight, lastScroll) {\n const { panelHeight } = this.dimensions;\n /** @type {?} */\n const itemBottom = itemTop + itemHeight;\n /** @type {?} */\n const top = lastScroll;\n /** @type {?} */\n const bottom = top + panelHeight;\n if (panelHeight >= itemBottom && lastScroll === itemTop) {\n return null;\n }\n if (itemBottom > bottom) {\n return top + itemBottom - bottom;\n }\n else if (itemTop <= top) {\n return itemTop;\n }\n return null;\n }\n}\nNgDropdownPanelService.ɵfac = function NgDropdownPanelService_Factory(t) { return new (t || NgDropdownPanelService)(); };\nNgDropdownPanelService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgDropdownPanelService, factory: NgDropdownPanelService.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgDropdownPanelService, [{\n type: Injectable\n }], function () { return []; }, null); })();\nif (false) {\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelService.prototype._dimensions;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-dropdown-panel.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst TOP_CSS_CLASS = 'ng-select-top';\n/** @type {?} */\nconst BOTTOM_CSS_CLASS = 'ng-select-bottom';\n/** @type {?} */\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\nclass NgDropdownPanelComponent {\n /**\n * @param {?} _renderer\n * @param {?} _zone\n * @param {?} _panelService\n * @param {?} _elementRef\n * @param {?} _document\n */\n constructor(_renderer, _zone, _panelService, _elementRef, _document) {\n this._renderer = _renderer;\n this._zone = _zone;\n this._panelService = _panelService;\n this._document = _document;\n this.items = [];\n this.position = 'auto';\n this.virtualScroll = false;\n this.filterValue = null;\n this.update = new EventEmitter();\n this.scroll = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.outsideClick = new EventEmitter();\n this._destroy$ = new Subject();\n this._scrollToEndFired = false;\n this._updateScrollHeight = false;\n this._lastScrollPosition = 0;\n this._dropdown = _elementRef.nativeElement;\n }\n /**\n * @return {?}\n */\n get currentPosition() {\n return this._currentPosition;\n }\n /**\n * @private\n * @return {?}\n */\n get itemsLength() {\n return this._itemsLength;\n }\n /**\n * @private\n * @param {?} value\n * @return {?}\n */\n set itemsLength(value) {\n if (value !== this._itemsLength) {\n this._itemsLength = value;\n this._onItemsLengthChanged();\n }\n }\n /**\n * @private\n * @return {?}\n */\n get _startOffset() {\n if (this.markedItem) {\n const { itemHeight, panelHeight } = this._panelService.dimensions;\n /** @type {?} */\n const offset = this.markedItem.index * itemHeight;\n return panelHeight > offset ? 0 : offset;\n }\n return 0;\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n handleMousedown($event) {\n /** @type {?} */\n const target = (/** @type {?} */ ($event.target));\n if (target.tagName === 'INPUT') {\n return;\n }\n $event.preventDefault();\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this._select = this._dropdown.parentElement;\n this._virtualPadding = this.paddingElementRef.nativeElement;\n this._scrollablePanel = this.scrollElementRef.nativeElement;\n this._contentPanel = this.contentElementRef.nativeElement;\n this._handleScroll();\n this._handleOutsideClick();\n this._appendDropdown();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.items) {\n /** @type {?} */\n const change = changes.items;\n this._onItemsChange(change.currentValue, change.firstChange);\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n this._destroy$.unsubscribe();\n if (this.appendTo) {\n this._renderer.removeChild(this._dropdown.parentNode, this._dropdown);\n }\n }\n /**\n * @param {?} option\n * @param {?=} startFromOption\n * @return {?}\n */\n scrollTo(option, startFromOption = false) {\n if (!option) {\n return;\n }\n /** @type {?} */\n const index = this.items.indexOf(option);\n if (index < 0 || index >= this.itemsLength) {\n return;\n }\n /** @type {?} */\n let scrollTo;\n if (this.virtualScroll) {\n /** @type {?} */\n const itemHeight = this._panelService.dimensions.itemHeight;\n scrollTo = this._panelService.getScrollTo(index * itemHeight, itemHeight, this._lastScrollPosition);\n }\n else {\n /** @type {?} */\n const item = this._dropdown.querySelector(`#${option.htmlId}`);\n /** @type {?} */\n const lastScroll = startFromOption ? item.offsetTop : this._lastScrollPosition;\n scrollTo = this._panelService.getScrollTo(item.offsetTop, item.clientHeight, lastScroll);\n }\n if (isDefined(scrollTo)) {\n this._scrollablePanel.scrollTop = scrollTo;\n }\n }\n /**\n * @return {?}\n */\n scrollToTag() {\n /** @type {?} */\n const panel = this._scrollablePanel;\n panel.scrollTop = panel.scrollHeight - panel.clientHeight;\n }\n /**\n * @return {?}\n */\n adjustPosition() {\n /** @type {?} */\n const parent = this._parent.getBoundingClientRect();\n /** @type {?} */\n const select = this._select.getBoundingClientRect();\n this._setOffset(parent, select);\n }\n /**\n * @private\n * @return {?}\n */\n _handleDropdownPosition() {\n this._currentPosition = this._calculateCurrentPosition(this._dropdown);\n if (this._currentPosition === 'top') {\n this._renderer.addClass(this._dropdown, TOP_CSS_CLASS);\n this._renderer.removeClass(this._dropdown, BOTTOM_CSS_CLASS);\n this._renderer.addClass(this._select, TOP_CSS_CLASS);\n this._renderer.removeClass(this._select, BOTTOM_CSS_CLASS);\n }\n else {\n this._renderer.addClass(this._dropdown, BOTTOM_CSS_CLASS);\n this._renderer.removeClass(this._dropdown, TOP_CSS_CLASS);\n this._renderer.addClass(this._select, BOTTOM_CSS_CLASS);\n this._renderer.removeClass(this._select, TOP_CSS_CLASS);\n }\n if (this.appendTo) {\n this._updatePosition();\n }\n this._dropdown.style.opacity = '1';\n }\n /**\n * @private\n * @return {?}\n */\n _handleScroll() {\n this._zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n fromEvent(this.scrollElementRef.nativeElement, 'scroll')\n .pipe(takeUntil(this._destroy$), auditTime(0, SCROLL_SCHEDULER))\n .subscribe((/**\n * @param {?} e\n * @return {?}\n */\n (e) => this._onContentScrolled(e.target.scrollTop)));\n }));\n }\n /**\n * @private\n * @return {?}\n */\n _handleOutsideClick() {\n if (!this._document) {\n return;\n }\n this._zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n merge(fromEvent(this._document, 'touchstart', { capture: true }), fromEvent(this._document, 'mousedown', { capture: true })).pipe(takeUntil(this._destroy$))\n .subscribe((/**\n * @param {?} $event\n * @return {?}\n */\n $event => this._checkToClose($event)));\n }));\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _checkToClose($event) {\n if (this._select.contains($event.target) || this._dropdown.contains($event.target)) {\n return;\n }\n /** @type {?} */\n const path = $event.path || ($event.composedPath && $event.composedPath());\n if ($event.target && $event.target.shadowRoot && path && path[0] && this._select.contains(path[0])) {\n return;\n }\n this._zone.run((/**\n * @return {?}\n */\n () => this.outsideClick.emit()));\n }\n /**\n * @private\n * @param {?} items\n * @param {?} firstChange\n * @return {?}\n */\n _onItemsChange(items, firstChange) {\n this.items = items || [];\n this._scrollToEndFired = false;\n this.itemsLength = items.length;\n if (this.virtualScroll) {\n this._updateItemsRange(firstChange);\n }\n else {\n this._updateItems(firstChange);\n }\n }\n /**\n * @private\n * @param {?} firstChange\n * @return {?}\n */\n _updateItems(firstChange) {\n this.update.emit(this.items);\n if (firstChange === false) {\n return;\n }\n this._zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n Promise.resolve().then((/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const panelHeight = this._scrollablePanel.clientHeight;\n this._panelService.setDimensions(0, panelHeight);\n this._handleDropdownPosition();\n this.scrollTo(this.markedItem, firstChange);\n }));\n }));\n }\n /**\n * @private\n * @param {?} firstChange\n * @return {?}\n */\n _updateItemsRange(firstChange) {\n this._zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n this._measureDimensions().then((/**\n * @return {?}\n */\n () => {\n if (firstChange) {\n this._renderItemsRange(this._startOffset);\n this._handleDropdownPosition();\n }\n else {\n this._renderItemsRange();\n }\n }));\n }));\n }\n /**\n * @private\n * @param {?} scrollTop\n * @return {?}\n */\n _onContentScrolled(scrollTop) {\n if (this.virtualScroll) {\n this._renderItemsRange(scrollTop);\n }\n this._lastScrollPosition = scrollTop;\n this._fireScrollToEnd(scrollTop);\n }\n /**\n * @private\n * @param {?} height\n * @return {?}\n */\n _updateVirtualHeight(height) {\n if (this._updateScrollHeight) {\n this._virtualPadding.style.height = `${height}px`;\n this._updateScrollHeight = false;\n }\n }\n /**\n * @private\n * @return {?}\n */\n _onItemsLengthChanged() {\n this._updateScrollHeight = true;\n }\n /**\n * @private\n * @param {?=} scrollTop\n * @return {?}\n */\n _renderItemsRange(scrollTop = null) {\n if (scrollTop && this._lastScrollPosition === scrollTop) {\n return;\n }\n scrollTop = scrollTop || this._scrollablePanel.scrollTop;\n /** @type {?} */\n const range = this._panelService.calculateItems(scrollTop, this.itemsLength, this.bufferAmount);\n this._updateVirtualHeight(range.scrollHeight);\n this._contentPanel.style.transform = `translateY(${range.topPadding}px)`;\n this._zone.run((/**\n * @return {?}\n */\n () => {\n this.update.emit(this.items.slice(range.start, range.end));\n this.scroll.emit({ start: range.start, end: range.end });\n }));\n if (isDefined(scrollTop) && this._lastScrollPosition === 0) {\n this._scrollablePanel.scrollTop = scrollTop;\n this._lastScrollPosition = scrollTop;\n }\n }\n /**\n * @private\n * @return {?}\n */\n _measureDimensions() {\n if (this._panelService.dimensions.itemHeight > 0 || this.itemsLength === 0) {\n return Promise.resolve(this._panelService.dimensions);\n }\n const [first] = this.items;\n this.update.emit([first]);\n return Promise.resolve().then((/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const option = this._dropdown.querySelector(`#${first.htmlId}`);\n /** @type {?} */\n const optionHeight = option.clientHeight;\n this._virtualPadding.style.height = `${optionHeight * this.itemsLength}px`;\n /** @type {?} */\n const panelHeight = this._scrollablePanel.clientHeight;\n this._panelService.setDimensions(optionHeight, panelHeight);\n return this._panelService.dimensions;\n }));\n }\n /**\n * @private\n * @param {?} scrollTop\n * @return {?}\n */\n _fireScrollToEnd(scrollTop) {\n if (this._scrollToEndFired || scrollTop === 0) {\n return;\n }\n /** @type {?} */\n const padding = this.virtualScroll ?\n this._virtualPadding :\n this._contentPanel;\n if (scrollTop + this._dropdown.clientHeight >= padding.clientHeight) {\n this._zone.run((/**\n * @return {?}\n */\n () => this.scrollToEnd.emit()));\n this._scrollToEndFired = true;\n }\n }\n /**\n * @private\n * @param {?} dropdownEl\n * @return {?}\n */\n _calculateCurrentPosition(dropdownEl) {\n if (this.position !== 'auto') {\n return this.position;\n }\n /** @type {?} */\n const selectRect = this._select.getBoundingClientRect();\n /** @type {?} */\n const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n /** @type {?} */\n const offsetTop = selectRect.top + window.pageYOffset;\n /** @type {?} */\n const height = selectRect.height;\n /** @type {?} */\n const dropdownHeight = dropdownEl.getBoundingClientRect().height;\n if (offsetTop + height + dropdownHeight > scrollTop + document.documentElement.clientHeight) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n }\n /**\n * @private\n * @return {?}\n */\n _appendDropdown() {\n if (!this.appendTo) {\n return;\n }\n this._parent = document.querySelector(this.appendTo);\n if (!this._parent) {\n throw new Error(`appendTo selector ${this.appendTo} did not found any parent element`);\n }\n this._parent.appendChild(this._dropdown);\n }\n /**\n * @private\n * @return {?}\n */\n _updatePosition() {\n /** @type {?} */\n const select = this._select.getBoundingClientRect();\n /** @type {?} */\n const parent = this._parent.getBoundingClientRect();\n /** @type {?} */\n const offsetLeft = select.left - parent.left;\n this._setOffset(parent, select);\n this._dropdown.style.left = offsetLeft + 'px';\n this._dropdown.style.width = select.width + 'px';\n this._dropdown.style.minWidth = select.width + 'px';\n }\n /**\n * @private\n * @param {?} parent\n * @param {?} select\n * @return {?}\n */\n _setOffset(parent, select) {\n /** @type {?} */\n const delta = select.height;\n if (this._currentPosition === 'top') {\n /** @type {?} */\n const offsetBottom = parent.bottom - select.bottom;\n this._dropdown.style.bottom = offsetBottom + delta + 'px';\n this._dropdown.style.top = 'auto';\n }\n else if (this._currentPosition === 'bottom') {\n /** @type {?} */\n const offsetTop = select.top - parent.top;\n this._dropdown.style.top = offsetTop + delta + 'px';\n this._dropdown.style.bottom = 'auto';\n }\n }\n}\nNgDropdownPanelComponent.ɵfac = function NgDropdownPanelComponent_Factory(t) { return new (t || NgDropdownPanelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(NgDropdownPanelService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT, 8)); };\nNgDropdownPanelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgDropdownPanelComponent, selectors: [[\"ng-dropdown-panel\"]], viewQuery: function NgDropdownPanelComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c1, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c2, 7, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentElementRef = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.scrollElementRef = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.paddingElementRef = _t.first);\n } }, hostBindings: function NgDropdownPanelComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mousedown\", function NgDropdownPanelComponent_mousedown_HostBindingHandler($event) { return ctx.handleMousedown($event); });\n } }, inputs: { items: \"items\", position: \"position\", virtualScroll: \"virtualScroll\", filterValue: \"filterValue\", markedItem: \"markedItem\", appendTo: \"appendTo\", bufferAmount: \"bufferAmount\", headerTemplate: \"headerTemplate\", footerTemplate: \"footerTemplate\" }, outputs: { update: \"update\", scroll: \"scroll\", scrollToEnd: \"scrollToEnd\", outsideClick: \"outsideClick\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c4, decls: 9, vars: 6, consts: [[\"class\", \"ng-dropdown-header\", 4, \"ngIf\"], [1, \"ng-dropdown-panel-items\", \"scroll-host\"], [\"scroll\", \"\"], [\"padding\", \"\"], [\"content\", \"\"], [\"class\", \"ng-dropdown-footer\", 4, \"ngIf\"], [1, \"ng-dropdown-header\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"ng-dropdown-footer\"]], template: function NgDropdownPanelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, NgDropdownPanelComponent_div_0_Template, 2, 4, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵelement(3, \"div\", null, 3);\n ɵngcc0.ɵɵelementStart(5, \"div\", null, 4);\n ɵngcc0.ɵɵprojection(7);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(8, NgDropdownPanelComponent_div_8_Template, 2, 4, \"div\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.headerTemplate);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵclassProp(\"total-padding\", ctx.virtualScroll);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"scrollable-content\", ctx.virtualScroll && ctx.items.length);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.footerTemplate);\n } }, dependencies: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgDropdownPanelComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: NgZone },\n { type: NgDropdownPanelService },\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }\n];\nNgDropdownPanelComponent.propDecorators = {\n items: [{ type: Input }],\n markedItem: [{ type: Input }],\n position: [{ type: Input }],\n appendTo: [{ type: Input }],\n bufferAmount: [{ type: Input }],\n virtualScroll: [{ type: Input }],\n headerTemplate: [{ type: Input }],\n footerTemplate: [{ type: Input }],\n filterValue: [{ type: Input }],\n update: [{ type: Output }],\n scroll: [{ type: Output }],\n scrollToEnd: [{ type: Output }],\n outsideClick: [{ type: Output }],\n contentElementRef: [{ type: ViewChild, args: ['content', { read: ElementRef, static: true },] }],\n scrollElementRef: [{ type: ViewChild, args: ['scroll', { read: ElementRef, static: true },] }],\n paddingElementRef: [{ type: ViewChild, args: ['padding', { read: ElementRef, static: true },] }],\n handleMousedown: [{ type: HostListener, args: ['mousedown', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgDropdownPanelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'ng-dropdown-panel',\n template: `\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n \n
\n `\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: NgDropdownPanelService }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { items: [{\n type: Input\n }], position: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], filterValue: [{\n type: Input\n }], update: [{\n type: Output\n }], scroll: [{\n type: Output\n }], scrollToEnd: [{\n type: Output\n }], outsideClick: [{\n type: Output\n }], \n /**\n * @param {?} $event\n * @return {?}\n */\n handleMousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], markedItem: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], bufferAmount: [{\n type: Input\n }], headerTemplate: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], contentElementRef: [{\n type: ViewChild,\n args: ['content', { read: ElementRef, static: true }]\n }], scrollElementRef: [{\n type: ViewChild,\n args: ['scroll', { read: ElementRef, static: true }]\n }], paddingElementRef: [{\n type: ViewChild,\n args: ['padding', { read: ElementRef, static: true }]\n }] }); })();\nif (false) {\n /** @type {?} */\n NgDropdownPanelComponent.prototype.items;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.markedItem;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.position;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.appendTo;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.bufferAmount;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.virtualScroll;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.headerTemplate;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.footerTemplate;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.filterValue;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.update;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.scroll;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.scrollToEnd;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.outsideClick;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.contentElementRef;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.scrollElementRef;\n /** @type {?} */\n NgDropdownPanelComponent.prototype.paddingElementRef;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._destroy$;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._dropdown;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._virtualPadding;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._scrollablePanel;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._contentPanel;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._select;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._parent;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._scrollToEndFired;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._updateScrollHeight;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._lastScrollPosition;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._currentPosition;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._itemsLength;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._renderer;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._zone;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._panelService;\n /**\n * @type {?}\n * @private\n */\n NgDropdownPanelComponent.prototype._document;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-option.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass NgOptionComponent {\n /**\n * @param {?} elementRef\n */\n constructor(elementRef) {\n this.elementRef = elementRef;\n this.stateChange$ = new Subject();\n this._disabled = false;\n }\n /**\n * @return {?}\n */\n get disabled() { return this._disabled; }\n /**\n * @param {?} value\n * @return {?}\n */\n set disabled(value) { this._disabled = this._isDisabled(value); }\n /**\n * @return {?}\n */\n get label() {\n return (this.elementRef.nativeElement.textContent || '').trim();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.disabled) {\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled\n });\n }\n }\n /**\n * @return {?}\n */\n ngAfterViewChecked() {\n if (this.label !== this._previousLabel) {\n this._previousLabel = this.label;\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled,\n label: this.elementRef.nativeElement.innerHTML\n });\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.stateChange$.complete();\n }\n /**\n * @private\n * @param {?} value\n * @return {?}\n */\n _isDisabled(value) {\n return value != null && `${value}` !== 'false';\n }\n}\nNgOptionComponent.ɵfac = function NgOptionComponent_Factory(t) { return new (t || NgOptionComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgOptionComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgOptionComponent, selectors: [[\"ng-option\"]], inputs: { disabled: \"disabled\", value: \"value\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c4, decls: 1, vars: 0, template: function NgOptionComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgOptionComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nNgOptionComponent.propDecorators = {\n value: [{ type: Input }],\n disabled: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgOptionComponent, [{\n type: Component,\n args: [{\n selector: 'ng-option',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ``\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }], value: [{\n type: Input\n }] }); })();\nif (false) {\n /** @type {?} */\n NgOptionComponent.prototype.value;\n /** @type {?} */\n NgOptionComponent.prototype.stateChange$;\n /**\n * @type {?}\n * @private\n */\n NgOptionComponent.prototype._disabled;\n /**\n * @type {?}\n * @private\n */\n NgOptionComponent.prototype._previousLabel;\n /** @type {?} */\n NgOptionComponent.prototype.elementRef;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/config.service.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass NgSelectConfig {\n constructor() {\n this.notFoundText = 'No items found';\n this.typeToSearchText = 'Type to search';\n this.addTagText = 'Add item';\n this.loadingText = 'Loading...';\n this.clearAllText = 'Clear all';\n this.disableVirtualScroll = true;\n this.openOnEnter = true;\n this.appearance = 'underline';\n }\n}\nNgSelectConfig.ɵfac = function NgSelectConfig_Factory(t) { return new (t || NgSelectConfig)(); };\n/** @nocollapse */ NgSelectConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgSelectConfig_Factory() { return new NgSelectConfig(); }, token: NgSelectConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSelectConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\nif (false) {\n /** @type {?} */\n NgSelectConfig.prototype.placeholder;\n /** @type {?} */\n NgSelectConfig.prototype.notFoundText;\n /** @type {?} */\n NgSelectConfig.prototype.typeToSearchText;\n /** @type {?} */\n NgSelectConfig.prototype.addTagText;\n /** @type {?} */\n NgSelectConfig.prototype.loadingText;\n /** @type {?} */\n NgSelectConfig.prototype.clearAllText;\n /** @type {?} */\n NgSelectConfig.prototype.disableVirtualScroll;\n /** @type {?} */\n NgSelectConfig.prototype.openOnEnter;\n /** @type {?} */\n NgSelectConfig.prototype.appendTo;\n /** @type {?} */\n NgSelectConfig.prototype.bindValue;\n /** @type {?} */\n NgSelectConfig.prototype.appearance;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-select.component.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst SELECTION_MODEL_FACTORY = new InjectionToken('ng-select-selection-model');\nclass NgSelectComponent {\n /**\n * @param {?} classes\n * @param {?} autoFocus\n * @param {?} config\n * @param {?} newSelectionModel\n * @param {?} _elementRef\n * @param {?} _cd\n * @param {?} _console\n */\n constructor(classes, autoFocus, config, newSelectionModel, _elementRef, _cd, _console) {\n this.classes = classes;\n this.autoFocus = autoFocus;\n this._cd = _cd;\n this._console = _console;\n this.markFirst = true;\n this.dropdownPosition = 'auto';\n this.loading = false;\n this.closeOnSelect = true;\n this.hideSelected = false;\n this.selectOnTab = false;\n this.bufferAmount = 4;\n this.selectableGroup = false;\n this.selectableGroupAsModel = true;\n this.searchFn = null;\n this.trackByFn = null;\n this.clearOnBackspace = true;\n this.labelForId = null;\n this.inputAttrs = {};\n this.readonly = false;\n this.searchWhileComposing = true;\n this.minTermLength = 0;\n this.editableSearchTerm = false;\n this.keyDownFn = (/**\n * @param {?} _\n * @return {?}\n */\n (_) => true);\n this.multiple = false;\n this.addTag = false;\n this.searchable = true;\n this.clearable = true;\n this.isOpen = false;\n // output events\n this.blurEvent = new EventEmitter();\n this.focusEvent = new EventEmitter();\n this.changeEvent = new EventEmitter();\n this.openEvent = new EventEmitter();\n this.closeEvent = new EventEmitter();\n this.searchEvent = new EventEmitter();\n this.clearEvent = new EventEmitter();\n this.addEvent = new EventEmitter();\n this.removeEvent = new EventEmitter();\n this.scroll = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.viewPortItems = [];\n this.searchTerm = null;\n this.dropdownId = newId();\n this.escapeHTML = true;\n this.useDefaultClass = true;\n this._items = [];\n this._defaultLabel = 'label';\n this._pressedKeys = [];\n this._isComposing = false;\n this._destroy$ = new Subject();\n this._keyPress$ = new Subject();\n this._onChange = (/**\n * @param {?} _\n * @return {?}\n */\n (_) => { });\n this._onTouched = (/**\n * @return {?}\n */\n () => { });\n this.clearItem = (/**\n * @param {?} item\n * @return {?}\n */\n (item) => {\n /** @type {?} */\n const option = this.selectedItems.find((/**\n * @param {?} x\n * @return {?}\n */\n x => x.value === item));\n this.unselect(option);\n });\n this.trackByOption = (/**\n * @param {?} _\n * @param {?} item\n * @return {?}\n */\n (_, item) => {\n if (this.trackByFn) {\n return this.trackByFn(item.value);\n }\n return item;\n });\n this._mergeGlobalConfig(config);\n this.itemsList = new ItemsList(this, newSelectionModel());\n this.element = _elementRef.nativeElement;\n }\n /**\n * @return {?}\n */\n get items() { return this._items; }\n ;\n /**\n * @param {?} value\n * @return {?}\n */\n set items(value) {\n this._itemsAreUsed = true;\n this._items = value;\n }\n ;\n /**\n * @return {?}\n */\n get compareWith() { return this._compareWith; }\n /**\n * @param {?} fn\n * @return {?}\n */\n set compareWith(fn) {\n if (!isFunction(fn)) {\n throw Error('`compareWith` must be a function.');\n }\n this._compareWith = fn;\n }\n /**\n * @return {?}\n */\n get clearSearchOnAdd() { return isDefined(this._clearSearchOnAdd) ? this._clearSearchOnAdd : this.closeOnSelect; }\n ;\n /**\n * @param {?} value\n * @return {?}\n */\n set clearSearchOnAdd(value) {\n this._clearSearchOnAdd = value;\n }\n ;\n /**\n * @return {?}\n */\n get disabled() { return this.readonly || this._disabled; }\n ;\n /**\n * @return {?}\n */\n get filtered() { return (!!this.searchTerm && this.searchable || this._isComposing); }\n ;\n /**\n * @private\n * @return {?}\n */\n get _editableSearchTerm() {\n return this.editableSearchTerm && !this.multiple;\n }\n /**\n * @return {?}\n */\n get selectedItems() {\n return this.itemsList.selectedItems;\n }\n /**\n * @return {?}\n */\n get selectedValues() {\n return this.selectedItems.map((/**\n * @param {?} x\n * @return {?}\n */\n x => x.value));\n }\n /**\n * @return {?}\n */\n get hasValue() {\n return this.selectedItems.length > 0;\n }\n /**\n * @return {?}\n */\n get currentPanelPosition() {\n if (this.dropdownPanel) {\n return this.dropdownPanel.currentPosition;\n }\n return undefined;\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this._handleKeyPresses();\n this._setInputAttributes();\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.multiple) {\n this.itemsList.clearSelected();\n }\n if (changes.items) {\n this._setItems(changes.items.currentValue || []);\n }\n if (changes.isOpen) {\n this._manualOpen = isDefined(changes.isOpen.currentValue);\n }\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n if (!this._itemsAreUsed) {\n this.escapeHTML = false;\n this._setItemsFromNgOptions();\n }\n if (isDefined(this.autoFocus)) {\n this.focus();\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n handleKeyDown($event) {\n /** @type {?} */\n const keyCode = KeyCode[$event.which];\n if (keyCode) {\n if (this.keyDownFn($event) === false) {\n return;\n }\n this.handleKeyCode($event);\n }\n else if ($event.key && $event.key.length === 1) {\n this._keyPress$.next($event.key.toLocaleLowerCase());\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n handleKeyCode($event) {\n switch ($event.which) {\n case KeyCode.ArrowDown:\n this._handleArrowDown($event);\n break;\n case KeyCode.ArrowUp:\n this._handleArrowUp($event);\n break;\n case KeyCode.Space:\n this._handleSpace($event);\n break;\n case KeyCode.Enter:\n this._handleEnter($event);\n break;\n case KeyCode.Tab:\n this._handleTab($event);\n break;\n case KeyCode.Esc:\n this.close();\n $event.preventDefault();\n break;\n case KeyCode.Backspace:\n this._handleBackspace();\n break;\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n handleMousedown($event) {\n /** @type {?} */\n const target = (/** @type {?} */ ($event.target));\n if (target.tagName !== 'INPUT') {\n $event.preventDefault();\n }\n if (target.classList.contains('ng-clear-wrapper')) {\n this.handleClearClick();\n return;\n }\n if (target.classList.contains('ng-arrow-wrapper')) {\n this.handleArrowClick();\n return;\n }\n if (target.classList.contains('ng-value-icon')) {\n return;\n }\n if (!this.focused) {\n this.focus();\n }\n if (this.searchable) {\n this.open();\n }\n else {\n this.toggle();\n }\n }\n /**\n * @return {?}\n */\n handleArrowClick() {\n if (this.isOpen) {\n this.close();\n }\n else {\n this.open();\n }\n }\n /**\n * @return {?}\n */\n handleClearClick() {\n if (this.hasValue) {\n this.itemsList.clearSelected(true);\n this._updateNgModel();\n }\n this._clearSearch();\n this.focus();\n this.clearEvent.emit();\n this._onSelectionChanged();\n }\n /**\n * @return {?}\n */\n clearModel() {\n if (!this.clearable) {\n return;\n }\n this.itemsList.clearSelected();\n this._updateNgModel();\n }\n /**\n * @param {?} value\n * @return {?}\n */\n writeValue(value) {\n this.itemsList.clearSelected();\n this._handleWriteValue(value);\n this._cd.markForCheck();\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\n * @param {?} fn\n * @return {?}\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /**\n * @param {?} state\n * @return {?}\n */\n setDisabledState(state) {\n this._disabled = state;\n this._cd.markForCheck();\n }\n /**\n * @return {?}\n */\n toggle() {\n if (!this.isOpen) {\n this.open();\n }\n else {\n this.close();\n }\n }\n /**\n * @return {?}\n */\n open() {\n if (this.disabled || this.isOpen || this.itemsList.maxItemsSelected || this._manualOpen) {\n return;\n }\n if (!this._isTypeahead && !this.addTag && this.itemsList.noItemsToSelect) {\n return;\n }\n this.isOpen = true;\n this.itemsList.markSelectedOrDefault(this.markFirst);\n this.openEvent.emit();\n if (!this.searchTerm) {\n this.focus();\n }\n this.detectChanges();\n }\n /**\n * @return {?}\n */\n close() {\n if (!this.isOpen || this._manualOpen) {\n return;\n }\n this.isOpen = false;\n if (!this._editableSearchTerm) {\n this._clearSearch();\n }\n else {\n this.itemsList.resetFilteredItems();\n }\n this.itemsList.unmarkItem();\n this._onTouched();\n this.closeEvent.emit();\n this._cd.markForCheck();\n }\n /**\n * @param {?} item\n * @return {?}\n */\n toggleItem(item) {\n if (!item || item.disabled || this.disabled) {\n return;\n }\n if (this.multiple && item.selected) {\n this.unselect(item);\n }\n else {\n this.select(item);\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this._onSelectionChanged();\n }\n /**\n * @param {?} item\n * @return {?}\n */\n select(item) {\n if (!item.selected) {\n this.itemsList.select(item);\n if (this.clearSearchOnAdd && !this._editableSearchTerm) {\n this._clearSearch();\n }\n this._updateNgModel();\n if (this.multiple) {\n this.addEvent.emit(item.value);\n }\n }\n if (this.closeOnSelect || this.itemsList.noItemsToSelect) {\n this.close();\n }\n }\n /**\n * @return {?}\n */\n focus() {\n this.searchInput.nativeElement.focus();\n }\n /**\n * @return {?}\n */\n blur() {\n this.searchInput.nativeElement.blur();\n }\n /**\n * @param {?} item\n * @return {?}\n */\n unselect(item) {\n if (!item) {\n return;\n }\n this.itemsList.unselect(item);\n this.focus();\n this._updateNgModel();\n this.removeEvent.emit(item);\n }\n /**\n * @return {?}\n */\n selectTag() {\n /** @type {?} */\n let tag;\n if (isFunction(this.addTag)) {\n tag = ((/** @type {?} */ (this.addTag)))(this.searchTerm);\n }\n else {\n tag = this._primitive ? this.searchTerm : { [this.bindLabel]: this.searchTerm };\n }\n /** @type {?} */\n const handleTag = (/**\n * @param {?} item\n * @return {?}\n */\n (item) => this._isTypeahead || !this.isOpen ? this.itemsList.mapItem(item, null) : this.itemsList.addItem(item));\n if (isPromise(tag)) {\n tag.then((/**\n * @param {?} item\n * @return {?}\n */\n item => this.select(handleTag(item)))).catch((/**\n * @return {?}\n */\n () => { }));\n }\n else if (tag) {\n this.select(handleTag(tag));\n }\n }\n /**\n * @return {?}\n */\n showClear() {\n return this.clearable && (this.hasValue || this.searchTerm) && !this.disabled;\n }\n /**\n * @return {?}\n */\n get showAddTag() {\n if (!this._validTerm) {\n return false;\n }\n /** @type {?} */\n const term = this.searchTerm.toLowerCase().trim();\n return this.addTag &&\n (!this.itemsList.filteredItems.some((/**\n * @param {?} x\n * @return {?}\n */\n x => x.label.toLowerCase() === term)) &&\n (!this.hideSelected && this.isOpen || !this.selectedItems.some((/**\n * @param {?} x\n * @return {?}\n */\n x => x.label.toLowerCase() === term)))) &&\n !this.loading;\n }\n /**\n * @return {?}\n */\n showNoItemsFound() {\n /** @type {?} */\n const empty = this.itemsList.filteredItems.length === 0;\n return ((empty && !this._isTypeahead && !this.loading) ||\n (empty && this._isTypeahead && this._validTerm && !this.loading)) &&\n !this.showAddTag;\n }\n /**\n * @return {?}\n */\n showTypeToSearch() {\n /** @type {?} */\n const empty = this.itemsList.filteredItems.length === 0;\n return empty && this._isTypeahead && !this._validTerm && !this.loading;\n }\n /**\n * @return {?}\n */\n onCompositionStart() {\n this._isComposing = true;\n }\n /**\n * @param {?} term\n * @return {?}\n */\n onCompositionEnd(term) {\n this._isComposing = false;\n if (this.searchWhileComposing) {\n return;\n }\n this.filter(term);\n }\n /**\n * @param {?} term\n * @return {?}\n */\n filter(term) {\n if (this._isComposing && !this.searchWhileComposing) {\n return;\n }\n this.searchTerm = term;\n if (this._isTypeahead && (this._validTerm || this.minTermLength === 0)) {\n this.typeahead.next(term);\n }\n if (!this._isTypeahead) {\n this.itemsList.filter(this.searchTerm);\n if (this.isOpen) {\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n }\n this.searchEvent.emit({ term, items: this.itemsList.filteredItems.map((/**\n * @param {?} x\n * @return {?}\n */\n x => x.value)) });\n this.open();\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onInputFocus($event) {\n if (this.focused) {\n return;\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this.element.classList.add('ng-select-focused');\n this.focusEvent.emit($event);\n this.focused = true;\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onInputBlur($event) {\n this.element.classList.remove('ng-select-focused');\n this.blurEvent.emit($event);\n if (!this.isOpen && !this.disabled) {\n this._onTouched();\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this.focused = false;\n }\n /**\n * @param {?} item\n * @return {?}\n */\n onItemHover(item) {\n if (item.disabled) {\n return;\n }\n this.itemsList.markItem(item);\n }\n /**\n * @return {?}\n */\n detectChanges() {\n if (!((/** @type {?} */ (this._cd))).destroyed) {\n this._cd.detectChanges();\n }\n }\n /**\n * @private\n * @return {?}\n */\n _setSearchTermFromItems() {\n /** @type {?} */\n const selected = this.selectedItems && this.selectedItems[0];\n this.searchTerm = (selected && selected.label) || null;\n }\n /**\n * @private\n * @param {?} items\n * @return {?}\n */\n _setItems(items) {\n /** @type {?} */\n const firstItem = items[0];\n this.bindLabel = this.bindLabel || this._defaultLabel;\n this._primitive = isDefined(firstItem) ? !isObject(firstItem) : this._primitive || this.bindLabel === this._defaultLabel;\n this.itemsList.setItems(items);\n if (items.length > 0 && this.hasValue) {\n this.itemsList.mapSelectedItems();\n }\n if (this.isOpen && isDefined(this.searchTerm) && !this._isTypeahead) {\n this.itemsList.filter(this.searchTerm);\n }\n if (this._isTypeahead || this.isOpen) {\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n }\n /**\n * @private\n * @return {?}\n */\n _setItemsFromNgOptions() {\n /** @type {?} */\n const mapNgOptions = (/**\n * @param {?} options\n * @return {?}\n */\n (options) => {\n this.items = options.map((/**\n * @param {?} option\n * @return {?}\n */\n option => ({\n $ngOptionValue: option.value,\n $ngOptionLabel: option.elementRef.nativeElement.innerHTML,\n disabled: option.disabled\n })));\n this.itemsList.setItems(this.items);\n if (this.hasValue) {\n this.itemsList.mapSelectedItems();\n }\n this.detectChanges();\n });\n /** @type {?} */\n const handleOptionChange = (/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const changedOrDestroyed = merge(this.ngOptions.changes, this._destroy$);\n merge(...this.ngOptions.map((/**\n * @param {?} option\n * @return {?}\n */\n option => option.stateChange$)))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe((/**\n * @param {?} option\n * @return {?}\n */\n option => {\n /** @type {?} */\n const item = this.itemsList.findItem(option.value);\n item.disabled = option.disabled;\n item.label = option.label || item.label;\n this._cd.detectChanges();\n }));\n });\n this.ngOptions.changes\n .pipe(startWith(this.ngOptions), takeUntil(this._destroy$))\n .subscribe((/**\n * @param {?} options\n * @return {?}\n */\n options => {\n this.bindLabel = this._defaultLabel;\n mapNgOptions(options);\n handleOptionChange();\n }));\n }\n /**\n * @private\n * @param {?} value\n * @return {?}\n */\n _isValidWriteValue(value) {\n if (!isDefined(value) || (this.multiple && value === '') || Array.isArray(value) && value.length === 0) {\n return false;\n }\n /** @type {?} */\n const validateBinding = (/**\n * @param {?} item\n * @return {?}\n */\n (item) => {\n if (!isDefined(this.compareWith) && isObject(item) && this.bindValue) {\n this._console.warn(`Setting object(${JSON.stringify(item)}) as your model with bindValue is not allowed unless [compareWith] is used.`);\n return false;\n }\n return true;\n });\n if (this.multiple) {\n if (!Array.isArray(value)) {\n this._console.warn('Multiple select ngModel should be array.');\n return false;\n }\n return value.every((/**\n * @param {?} item\n * @return {?}\n */\n item => validateBinding(item)));\n }\n else {\n return validateBinding(value);\n }\n }\n /**\n * @private\n * @param {?} ngModel\n * @return {?}\n */\n _handleWriteValue(ngModel) {\n if (!this._isValidWriteValue(ngModel)) {\n return;\n }\n /** @type {?} */\n const select = (/**\n * @param {?} val\n * @return {?}\n */\n (val) => {\n /** @type {?} */\n let item = this.itemsList.findItem(val);\n if (item) {\n this.itemsList.select(item);\n }\n else {\n /** @type {?} */\n const isValObject = isObject(val);\n /** @type {?} */\n const isPrimitive = !isValObject && !this.bindValue;\n if ((isValObject || isPrimitive)) {\n this.itemsList.select(this.itemsList.mapItem(val, null));\n }\n else if (this.bindValue) {\n item = {\n [this.bindLabel]: null,\n [this.bindValue]: val\n };\n this.itemsList.select(this.itemsList.mapItem(item, null));\n }\n }\n });\n if (this.multiple) {\n ((/** @type {?} */ (ngModel))).forEach((/**\n * @param {?} item\n * @return {?}\n */\n item => select(item)));\n }\n else {\n select(ngModel);\n }\n }\n /**\n * @private\n * @return {?}\n */\n _handleKeyPresses() {\n if (this.searchable) {\n return;\n }\n this._keyPress$\n .pipe(takeUntil(this._destroy$), tap((/**\n * @param {?} letter\n * @return {?}\n */\n letter => this._pressedKeys.push(letter))), debounceTime(200), filter((/**\n * @return {?}\n */\n () => this._pressedKeys.length > 0)), map((/**\n * @return {?}\n */\n () => this._pressedKeys.join(''))))\n .subscribe((/**\n * @param {?} term\n * @return {?}\n */\n term => {\n /** @type {?} */\n const item = this.itemsList.findByLabel(term);\n if (item) {\n if (this.isOpen) {\n this.itemsList.markItem(item);\n this._cd.markForCheck();\n }\n else {\n this.select(item);\n }\n }\n this._pressedKeys = [];\n }));\n }\n /**\n * @private\n * @return {?}\n */\n _setInputAttributes() {\n /** @type {?} */\n const input = this.searchInput.nativeElement;\n /** @type {?} */\n const attributes = Object.assign({ type: 'text', autocorrect: 'off', autocapitalize: 'off', autocomplete: this.labelForId ? 'off' : this.dropdownId }, this.inputAttrs);\n for (const key of Object.keys(attributes)) {\n input.setAttribute(key, attributes[key]);\n }\n }\n /**\n * @private\n * @return {?}\n */\n _updateNgModel() {\n /** @type {?} */\n const model = [];\n for (const item of this.selectedItems) {\n if (this.bindValue) {\n /** @type {?} */\n let value = null;\n if (item.children) {\n /** @type {?} */\n const groupKey = this.groupValue ? this.bindValue : (/** @type {?} */ (this.groupBy));\n value = item.value[groupKey || (/** @type {?} */ (this.groupBy))];\n }\n else {\n value = this.itemsList.resolveNested(item.value, this.bindValue);\n }\n model.push(value);\n }\n else {\n model.push(item.value);\n }\n }\n /** @type {?} */\n const selected = this.selectedItems.map((/**\n * @param {?} x\n * @return {?}\n */\n x => x.value));\n if (this.multiple) {\n this._onChange(model);\n this.changeEvent.emit(selected);\n }\n else {\n this._onChange(isDefined(model[0]) ? model[0] : null);\n this.changeEvent.emit(selected[0]);\n }\n this._cd.markForCheck();\n }\n /**\n * @private\n * @return {?}\n */\n _clearSearch() {\n if (!this.searchTerm) {\n return;\n }\n this._changeSearch(null);\n this.itemsList.resetFilteredItems();\n }\n /**\n * @private\n * @param {?} searchTerm\n * @return {?}\n */\n _changeSearch(searchTerm) {\n this.searchTerm = searchTerm;\n if (this._isTypeahead) {\n this.typeahead.next(searchTerm);\n }\n }\n /**\n * @private\n * @return {?}\n */\n _scrollToMarked() {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollTo(this.itemsList.markedItem);\n }\n /**\n * @private\n * @return {?}\n */\n _scrollToTag() {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollToTag();\n }\n /**\n * @private\n * @return {?}\n */\n _onSelectionChanged() {\n if (this.isOpen && this.multiple && this.appendTo) {\n // Make sure items are rendered.\n this._cd.detectChanges();\n this.dropdownPanel.adjustPosition();\n }\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _handleTab($event) {\n if (this.isOpen === false && !this.addTag) {\n return;\n }\n if (this.selectOnTab) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n $event.preventDefault();\n }\n else if (this.showAddTag) {\n this.selectTag();\n $event.preventDefault();\n }\n else {\n this.close();\n }\n }\n else {\n this.close();\n }\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _handleEnter($event) {\n if (this.isOpen || this._manualOpen) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n }\n else if (this.showAddTag) {\n this.selectTag();\n }\n }\n else if (this.openOnEnter) {\n this.open();\n }\n else {\n return;\n }\n $event.preventDefault();\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _handleSpace($event) {\n if (this.isOpen || this._manualOpen) {\n return;\n }\n this.open();\n $event.preventDefault();\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _handleArrowDown($event) {\n if (this._nextItemIsTag(+1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n }\n else {\n this.itemsList.markNextItem();\n this._scrollToMarked();\n }\n this.open();\n $event.preventDefault();\n }\n /**\n * @private\n * @param {?} $event\n * @return {?}\n */\n _handleArrowUp($event) {\n if (!this.isOpen) {\n return;\n }\n if (this._nextItemIsTag(-1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n }\n else {\n this.itemsList.markPreviousItem();\n this._scrollToMarked();\n }\n $event.preventDefault();\n }\n /**\n * @private\n * @param {?} nextStep\n * @return {?}\n */\n _nextItemIsTag(nextStep) {\n /** @type {?} */\n const nextIndex = this.itemsList.markedIndex + nextStep;\n return this.addTag && this.searchTerm\n && this.itemsList.markedItem\n && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length);\n }\n /**\n * @private\n * @return {?}\n */\n _handleBackspace() {\n if (this.searchTerm || !this.clearable || !this.clearOnBackspace || !this.hasValue) {\n return;\n }\n if (this.multiple) {\n this.unselect(this.itemsList.lastSelectedItem);\n }\n else {\n this.clearModel();\n }\n }\n /**\n * @private\n * @return {?}\n */\n get _isTypeahead() {\n return this.typeahead && this.typeahead.observers.length > 0;\n }\n /**\n * @private\n * @return {?}\n */\n get _validTerm() {\n /** @type {?} */\n const term = this.searchTerm && this.searchTerm.trim();\n return term && term.length >= this.minTermLength;\n }\n /**\n * @private\n * @param {?} config\n * @return {?}\n */\n _mergeGlobalConfig(config) {\n this.placeholder = this.placeholder || config.placeholder;\n this.notFoundText = this.notFoundText || config.notFoundText;\n this.typeToSearchText = this.typeToSearchText || config.typeToSearchText;\n this.addTagText = this.addTagText || config.addTagText;\n this.loadingText = this.loadingText || config.loadingText;\n this.clearAllText = this.clearAllText || config.clearAllText;\n this.virtualScroll = isDefined(this.virtualScroll)\n ? this.virtualScroll\n : isDefined(config.disableVirtualScroll) ? !config.disableVirtualScroll : false;\n this.openOnEnter = isDefined(this.openOnEnter) ? this.openOnEnter : config.openOnEnter;\n this.appendTo = this.appendTo || config.appendTo;\n this.bindValue = this.bindValue || config.bindValue;\n this.appearance = this.appearance || config.appearance;\n }\n}\nNgSelectComponent.ɵfac = function NgSelectComponent_Factory(t) { return new (t || NgSelectComponent)(ɵngcc0.ɵɵinjectAttribute('class'), ɵngcc0.ɵɵinjectAttribute('autofocus'), ɵngcc0.ɵɵdirectiveInject(NgSelectConfig), ɵngcc0.ɵɵdirectiveInject(SELECTION_MODEL_FACTORY), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ConsoleService)); };\nNgSelectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgSelectComponent, selectors: [[\"ng-select\"]], contentQueries: function NgSelectComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgOptionTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgOptgroupTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgLabelTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgMultiLabelTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgHeaderTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgFooterTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgNotFoundTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgTypeToSearchTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgLoadingTextTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgTagTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgLoadingSpinnerTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgOptionComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optgroupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.labelTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.multiLabelTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.notFoundTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.typeToSearchTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.loadingTextTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tagTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.loadingSpinnerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ngOptions = _t);\n } }, viewQuery: function NgSelectComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgDropdownPanelComponent, 5);\n ɵngcc0.ɵɵviewQuery(_c5, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropdownPanel = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.searchInput = _t.first);\n } }, hostAttrs: [\"role\", \"listbox\"], hostVars: 20, hostBindings: function NgSelectComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function NgSelectComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ng-select\", ctx.useDefaultClass)(\"ng-select-single\", !ctx.multiple)(\"ng-select-multiple\", ctx.multiple)(\"ng-select-taggable\", ctx.addTag)(\"ng-select-searchable\", ctx.searchable)(\"ng-select-clearable\", ctx.clearable)(\"ng-select-opened\", ctx.isOpen)(\"ng-select-disabled\", ctx.disabled)(\"ng-select-filtered\", ctx.filtered)(\"ng-select-typeahead\", ctx.typeahead);\n } }, inputs: { markFirst: \"markFirst\", dropdownPosition: \"dropdownPosition\", loading: \"loading\", closeOnSelect: \"closeOnSelect\", hideSelected: \"hideSelected\", selectOnTab: \"selectOnTab\", bufferAmount: \"bufferAmount\", selectableGroup: \"selectableGroup\", selectableGroupAsModel: \"selectableGroupAsModel\", searchFn: \"searchFn\", trackByFn: \"trackByFn\", clearOnBackspace: \"clearOnBackspace\", labelForId: \"labelForId\", inputAttrs: \"inputAttrs\", readonly: \"readonly\", searchWhileComposing: \"searchWhileComposing\", minTermLength: \"minTermLength\", editableSearchTerm: \"editableSearchTerm\", keyDownFn: \"keyDownFn\", multiple: \"multiple\", addTag: \"addTag\", searchable: \"searchable\", clearable: \"clearable\", isOpen: \"isOpen\", items: \"items\", compareWith: \"compareWith\", clearSearchOnAdd: \"clearSearchOnAdd\", bindLabel: \"bindLabel\", placeholder: \"placeholder\", notFoundText: \"notFoundText\", typeToSearchText: \"typeToSearchText\", addTagText: \"addTagText\", loadingText: \"loadingText\", clearAllText: \"clearAllText\", virtualScroll: \"virtualScroll\", openOnEnter: \"openOnEnter\", appendTo: \"appendTo\", bindValue: \"bindValue\", appearance: \"appearance\", maxSelectedItems: \"maxSelectedItems\", groupBy: \"groupBy\", groupValue: \"groupValue\", tabIndex: \"tabIndex\", typeahead: \"typeahead\" }, outputs: { blurEvent: \"blur\", focusEvent: \"focus\", changeEvent: \"change\", openEvent: \"open\", closeEvent: \"close\", searchEvent: \"search\", clearEvent: \"clear\", addEvent: \"add\", removeEvent: \"remove\", scroll: \"scroll\", scrollToEnd: \"scrollToEnd\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(( /**\n * @return {?}\n */() => NgSelectComponent)),\n multi: true\n }, NgDropdownPanelService]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 14, vars: 18, consts: [[1, \"ng-select-container\", 3, \"mousedown\"], [1, \"ng-value-container\"], [1, \"ng-placeholder\"], [4, \"ngIf\"], [1, \"ng-input\"], [\"role\", \"combobox\", 3, \"readOnly\", \"disabled\", \"value\", \"input\", \"compositionstart\", \"compositionend\", \"focus\", \"blur\", \"change\"], [\"searchInput\", \"\"], [\"class\", \"ng-clear-wrapper\", 3, \"title\", 4, \"ngIf\"], [1, \"ng-arrow-wrapper\"], [1, \"ng-arrow\"], [\"class\", \"ng-dropdown-panel\", 3, \"virtualScroll\", \"bufferAmount\", \"appendTo\", \"position\", \"headerTemplate\", \"footerTemplate\", \"filterValue\", \"items\", \"markedItem\", \"ng-select-multiple\", \"ngClass\", \"id\", \"update\", \"scroll\", \"scrollToEnd\", \"outsideClick\", 4, \"ngIf\"], [\"class\", \"ng-value\", 3, \"ng-value-disabled\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"ng-value\"], [\"defaultLabelTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"aria-hidden\", \"true\", 1, \"ng-value-icon\", \"left\", 3, \"click\"], [1, \"ng-value-label\", 3, \"ngItemLabel\", \"escape\"], [\"defaultLoadingSpinnerTemplate\", \"\"], [3, \"ngTemplateOutlet\"], [1, \"ng-spinner-loader\"], [1, \"ng-clear-wrapper\", 3, \"title\"], [\"aria-hidden\", \"true\", 1, \"ng-clear\"], [1, \"ng-dropdown-panel\", 3, \"virtualScroll\", \"bufferAmount\", \"appendTo\", \"position\", \"headerTemplate\", \"footerTemplate\", \"filterValue\", \"items\", \"markedItem\", \"ngClass\", \"id\", \"update\", \"scroll\", \"scrollToEnd\", \"outsideClick\"], [\"class\", \"ng-option\", 3, \"ng-option-disabled\", \"ng-option-selected\", \"ng-optgroup\", \"ng-option\", \"ng-option-child\", \"ng-option-marked\", \"click\", \"mouseover\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"ng-option\", \"role\", \"option\", 3, \"ng-option-marked\", \"mouseover\", \"click\", 4, \"ngIf\"], [1, \"ng-option\", 3, \"click\", \"mouseover\"], [\"defaultOptionTemplate\", \"\"], [1, \"ng-option-label\", 3, \"ngItemLabel\", \"escape\"], [\"role\", \"option\", 1, \"ng-option\", 3, \"mouseover\", \"click\"], [\"defaultTagTemplate\", \"\"], [1, \"ng-tag-label\"], [\"defaultNotFoundTemplate\", \"\"], [1, \"ng-option\", \"ng-option-disabled\"], [\"defaultTypeToSearchTemplate\", \"\"], [\"defaultLoadingTextTemplate\", \"\"]], template: function NgSelectComponent_Template(rf, ctx) { if (rf & 1) {\n const _r52 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"mousedown\", function NgSelectComponent_Template_div_mousedown_0_listener($event) { return ctx.handleMousedown($event); });\n ɵngcc0.ɵɵelementStart(1, \"div\", 1)(2, \"div\", 2);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, NgSelectComponent_ng_container_4_Template, 2, 2, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(5, NgSelectComponent_5_Template, 1, 5, null, 3);\n ɵngcc0.ɵɵelementStart(6, \"div\", 4)(7, \"input\", 5, 6);\n ɵngcc0.ɵɵlistener(\"input\", function NgSelectComponent_Template_input_input_7_listener() { ɵngcc0.ɵɵrestoreView(_r52); const _r2 = ɵngcc0.ɵɵreference(8); return ɵngcc0.ɵɵresetView(ctx.filter(_r2.value)); })(\"compositionstart\", function NgSelectComponent_Template_input_compositionstart_7_listener() { return ctx.onCompositionStart(); })(\"compositionend\", function NgSelectComponent_Template_input_compositionend_7_listener() { ɵngcc0.ɵɵrestoreView(_r52); const _r2 = ɵngcc0.ɵɵreference(8); return ɵngcc0.ɵɵresetView(ctx.onCompositionEnd(_r2.value)); })(\"focus\", function NgSelectComponent_Template_input_focus_7_listener($event) { return ctx.onInputFocus($event); })(\"blur\", function NgSelectComponent_Template_input_blur_7_listener($event) { return ctx.onInputBlur($event); })(\"change\", function NgSelectComponent_Template_input_change_7_listener($event) { return $event.stopPropagation(); });\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵtemplate(9, NgSelectComponent_ng_container_9_Template, 4, 1, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(10, NgSelectComponent_span_10_Template, 3, 1, \"span\", 7);\n ɵngcc0.ɵɵelementStart(11, \"span\", 8);\n ɵngcc0.ɵɵelement(12, \"span\", 9);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(13, NgSelectComponent_ng_dropdown_panel_13_Template, 7, 19, \"ng-dropdown-panel\", 10);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ng-appearance-outline\", ctx.appearance === \"outline\")(\"ng-has-value\", ctx.hasValue);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.placeholder);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.multiLabelTemplate && ctx.selectedItems.length > 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.multiLabelTemplate && ctx.selectedValues.length > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"readOnly\", !ctx.searchable || ctx.itemsList.maxItemsSelected)(\"disabled\", ctx.disabled)(\"value\", ctx.searchTerm ? ctx.searchTerm : \"\");\n ɵngcc0.ɵɵattribute(\"id\", ctx.labelForId)(\"tabindex\", ctx.tabIndex)(\"aria-expanded\", ctx.isOpen)(\"aria-owns\", ctx.isOpen ? ctx.dropdownId : null)(\"aria-activedescendant\", ctx.isOpen ? ctx.itemsList == null ? null : ctx.itemsList.markedItem == null ? null : ctx.itemsList.markedItem.htmlId : null);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.loading);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showClear());\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, dependencies: [ɵngcc1.NgClass, ɵngcc1.NgForOf, ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet, NgDropdownPanelComponent, NgItemLabelDirective], styles: [\".ng-select{position:relative;display:block;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:0;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none;border:0;box-shadow:none;outline:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute;z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);-webkit-animation:.8s linear infinite load8;animation:.8s linear infinite load8}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes load8{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\"], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nNgSelectComponent.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['class',] }] },\n { type: undefined, decorators: [{ type: Attribute, args: ['autofocus',] }] },\n { type: NgSelectConfig },\n { type: undefined, decorators: [{ type: Inject, args: [SELECTION_MODEL_FACTORY,] }] },\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: ConsoleService }\n];\nNgSelectComponent.propDecorators = {\n bindLabel: [{ type: Input }],\n bindValue: [{ type: Input }],\n markFirst: [{ type: Input }],\n placeholder: [{ type: Input }],\n notFoundText: [{ type: Input }],\n typeToSearchText: [{ type: Input }],\n addTagText: [{ type: Input }],\n loadingText: [{ type: Input }],\n clearAllText: [{ type: Input }],\n appearance: [{ type: Input }],\n dropdownPosition: [{ type: Input }],\n appendTo: [{ type: Input }],\n loading: [{ type: Input }],\n closeOnSelect: [{ type: Input }],\n hideSelected: [{ type: Input }],\n selectOnTab: [{ type: Input }],\n openOnEnter: [{ type: Input }],\n maxSelectedItems: [{ type: Input }],\n groupBy: [{ type: Input }],\n groupValue: [{ type: Input }],\n bufferAmount: [{ type: Input }],\n virtualScroll: [{ type: Input }],\n selectableGroup: [{ type: Input }],\n selectableGroupAsModel: [{ type: Input }],\n searchFn: [{ type: Input }],\n trackByFn: [{ type: Input }],\n clearOnBackspace: [{ type: Input }],\n labelForId: [{ type: Input }],\n inputAttrs: [{ type: Input }],\n tabIndex: [{ type: Input }],\n readonly: [{ type: Input }],\n searchWhileComposing: [{ type: Input }],\n minTermLength: [{ type: Input }],\n editableSearchTerm: [{ type: Input }],\n keyDownFn: [{ type: Input }],\n typeahead: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-typeahead',] }],\n multiple: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-multiple',] }],\n addTag: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-taggable',] }],\n searchable: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-searchable',] }],\n clearable: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-clearable',] }],\n isOpen: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-opened',] }],\n items: [{ type: Input }],\n compareWith: [{ type: Input }],\n clearSearchOnAdd: [{ type: Input }],\n blurEvent: [{ type: Output, args: ['blur',] }],\n focusEvent: [{ type: Output, args: ['focus',] }],\n changeEvent: [{ type: Output, args: ['change',] }],\n openEvent: [{ type: Output, args: ['open',] }],\n closeEvent: [{ type: Output, args: ['close',] }],\n searchEvent: [{ type: Output, args: ['search',] }],\n clearEvent: [{ type: Output, args: ['clear',] }],\n addEvent: [{ type: Output, args: ['add',] }],\n removeEvent: [{ type: Output, args: ['remove',] }],\n scroll: [{ type: Output, args: ['scroll',] }],\n scrollToEnd: [{ type: Output, args: ['scrollToEnd',] }],\n optionTemplate: [{ type: ContentChild, args: [NgOptionTemplateDirective, { read: TemplateRef },] }],\n optgroupTemplate: [{ type: ContentChild, args: [NgOptgroupTemplateDirective, { read: TemplateRef },] }],\n labelTemplate: [{ type: ContentChild, args: [NgLabelTemplateDirective, { read: TemplateRef },] }],\n multiLabelTemplate: [{ type: ContentChild, args: [NgMultiLabelTemplateDirective, { read: TemplateRef },] }],\n headerTemplate: [{ type: ContentChild, args: [NgHeaderTemplateDirective, { read: TemplateRef },] }],\n footerTemplate: [{ type: ContentChild, args: [NgFooterTemplateDirective, { read: TemplateRef },] }],\n notFoundTemplate: [{ type: ContentChild, args: [NgNotFoundTemplateDirective, { read: TemplateRef },] }],\n typeToSearchTemplate: [{ type: ContentChild, args: [NgTypeToSearchTemplateDirective, { read: TemplateRef },] }],\n loadingTextTemplate: [{ type: ContentChild, args: [NgLoadingTextTemplateDirective, { read: TemplateRef },] }],\n tagTemplate: [{ type: ContentChild, args: [NgTagTemplateDirective, { read: TemplateRef },] }],\n loadingSpinnerTemplate: [{ type: ContentChild, args: [NgLoadingSpinnerTemplateDirective, { read: TemplateRef },] }],\n dropdownPanel: [{ type: ViewChild, args: [forwardRef((/**\n * @return {?}\n */\n () => NgDropdownPanelComponent)),] }],\n searchInput: [{ type: ViewChild, args: ['searchInput', { static: true },] }],\n ngOptions: [{ type: ContentChildren, args: [NgOptionComponent, { descendants: true },] }],\n disabled: [{ type: HostBinding, args: ['class.ng-select-disabled',] }],\n filtered: [{ type: HostBinding, args: ['class.ng-select-filtered',] }],\n handleKeyDown: [{ type: HostListener, args: ['keydown', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSelectComponent, [{\n type: Component,\n args: [{ selector: 'ng-select', template: \"\\n\\n
\\n
{{placeholder}}
\\n\\n 0\\\">\\n
\\n \\n \\u00D7\\n \\n \\n\\n \\n \\n
\\n
\\n\\n 0\\\"\\n [ngTemplateOutlet]=\\\"multiLabelTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ items: selectedValues, clear: clearItem }\\\">\\n \\n\\n
\\n \\n
\\n
\\n\\n \\n \\n
\\n
\\n\\n \\n \\n
\\n\\n \\n \\u00D7\\n \\n\\n \\n \\n \\n\\n\\n\\n\\n \\n
\\n\\n \\n \\n \\n\\n \\n \\n
\\n\\n
\\n \\n {{addTagText}}\\\"{{searchTerm}}\\\"\\n \\n\\n \\n \\n
\\n
\\n\\n \\n \\n
{{notFoundText}}
\\n
\\n\\n \\n \\n
\\n\\n \\n \\n
{{typeToSearchText}}
\\n
\\n\\n \\n \\n
\\n\\n \\n \\n
{{loadingText}}
\\n
\\n\\n \\n \\n
\\n\\n
\\n\", providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(( /**\n * @return {?}\n */() => NgSelectComponent)),\n multi: true\n }, NgDropdownPanelService], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {\n 'role': 'listbox',\n '[class.ng-select]': 'useDefaultClass',\n '[class.ng-select-single]': '!multiple'\n }, styles: [\".ng-select{position:relative;display:block;box-sizing:border-box}.ng-select div,.ng-select input,.ng-select span{box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:0;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{box-sizing:content-box;background:none;border:0;box-shadow:none;outline:0;cursor:default;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:0;padding:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{position:absolute;left:0;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute;z-index:1}.ng-select .ng-clear-wrapper{cursor:pointer;position:relative;width:17px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{border-radius:50%;width:17px;height:17px;margin-right:5px;font-size:10px;position:relative;text-indent:-9999em;border-top:2px solid rgba(66,66,66,.2);border-right:2px solid rgba(66,66,66,.2);border-bottom:2px solid rgba(66,66,66,.2);border-left:2px solid #424242;transform:translateZ(0);-webkit-animation:.8s linear infinite load8;animation:.8s linear infinite load8}.ng-select .ng-spinner-loader:after{border-radius:50%;width:17px;height:17px}@-webkit-keyframes load8{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes load8{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.ng-select .ng-arrow-wrapper{cursor:pointer;position:relative;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{pointer-events:none;display:inline-block;height:0;width:0;position:relative}.ng-dropdown-panel{box-sizing:border-box;position:absolute;opacity:0;width:100%;z-index:1050;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .ng-dropdown-panel-items{display:block;height:auto;box-sizing:border-box;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{overflow:hidden;overflow-y:auto;position:relative;display:block;-webkit-overflow-scrolling:touch}.ng-dropdown-panel .scrollable-content{top:0;left:0;width:100%;height:100%;position:absolute}.ng-dropdown-panel .total-padding{width:1px;opacity:0}\"] }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['class']\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['autofocus']\n }] }, { type: NgSelectConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [SELECTION_MODEL_FACTORY]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ConsoleService }]; }, { markFirst: [{\n type: Input\n }], dropdownPosition: [{\n type: Input\n }], loading: [{\n type: Input\n }], closeOnSelect: [{\n type: Input\n }], hideSelected: [{\n type: Input\n }], selectOnTab: [{\n type: Input\n }], bufferAmount: [{\n type: Input\n }], selectableGroup: [{\n type: Input\n }], selectableGroupAsModel: [{\n type: Input\n }], searchFn: [{\n type: Input\n }], trackByFn: [{\n type: Input\n }], clearOnBackspace: [{\n type: Input\n }], labelForId: [{\n type: Input\n }], inputAttrs: [{\n type: Input\n }], readonly: [{\n type: Input\n }], searchWhileComposing: [{\n type: Input\n }], minTermLength: [{\n type: Input\n }], editableSearchTerm: [{\n type: Input\n }], keyDownFn: [{\n type: Input\n }], multiple: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-multiple']\n }], addTag: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-taggable']\n }], searchable: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-searchable']\n }], clearable: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-clearable']\n }], isOpen: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-opened']\n }], blurEvent: [{\n type: Output,\n args: ['blur']\n }], focusEvent: [{\n type: Output,\n args: ['focus']\n }], changeEvent: [{\n type: Output,\n args: ['change']\n }], openEvent: [{\n type: Output,\n args: ['open']\n }], closeEvent: [{\n type: Output,\n args: ['close']\n }], searchEvent: [{\n type: Output,\n args: ['search']\n }], clearEvent: [{\n type: Output,\n args: ['clear']\n }], addEvent: [{\n type: Output,\n args: ['add']\n }], removeEvent: [{\n type: Output,\n args: ['remove']\n }], scroll: [{\n type: Output,\n args: ['scroll']\n }], scrollToEnd: [{\n type: Output,\n args: ['scrollToEnd']\n }], items: [{\n type: Input\n }], compareWith: [{\n type: Input\n }], clearSearchOnAdd: [{\n type: Input\n }], disabled: [{\n type: HostBinding,\n args: ['class.ng-select-disabled']\n }], filtered: [{\n type: HostBinding,\n args: ['class.ng-select-filtered']\n }], \n /**\n * @param {?} $event\n * @return {?}\n */\n handleKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], bindLabel: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], notFoundText: [{\n type: Input\n }], typeToSearchText: [{\n type: Input\n }], addTagText: [{\n type: Input\n }], loadingText: [{\n type: Input\n }], clearAllText: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], openOnEnter: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], bindValue: [{\n type: Input\n }], appearance: [{\n type: Input\n }], maxSelectedItems: [{\n type: Input\n }], groupBy: [{\n type: Input\n }], groupValue: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], typeahead: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-typeahead']\n }], optionTemplate: [{\n type: ContentChild,\n args: [NgOptionTemplateDirective, { read: TemplateRef }]\n }], optgroupTemplate: [{\n type: ContentChild,\n args: [NgOptgroupTemplateDirective, { read: TemplateRef }]\n }], labelTemplate: [{\n type: ContentChild,\n args: [NgLabelTemplateDirective, { read: TemplateRef }]\n }], multiLabelTemplate: [{\n type: ContentChild,\n args: [NgMultiLabelTemplateDirective, { read: TemplateRef }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [NgHeaderTemplateDirective, { read: TemplateRef }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [NgFooterTemplateDirective, { read: TemplateRef }]\n }], notFoundTemplate: [{\n type: ContentChild,\n args: [NgNotFoundTemplateDirective, { read: TemplateRef }]\n }], typeToSearchTemplate: [{\n type: ContentChild,\n args: [NgTypeToSearchTemplateDirective, { read: TemplateRef }]\n }], loadingTextTemplate: [{\n type: ContentChild,\n args: [NgLoadingTextTemplateDirective, { read: TemplateRef }]\n }], tagTemplate: [{\n type: ContentChild,\n args: [NgTagTemplateDirective, { read: TemplateRef }]\n }], loadingSpinnerTemplate: [{\n type: ContentChild,\n args: [NgLoadingSpinnerTemplateDirective, { read: TemplateRef }]\n }], dropdownPanel: [{\n type: ViewChild,\n args: [forwardRef(( /**\n * @return {?}\n */() => NgDropdownPanelComponent))]\n }], searchInput: [{\n type: ViewChild,\n args: ['searchInput', { static: true }]\n }], ngOptions: [{\n type: ContentChildren,\n args: [NgOptionComponent, { descendants: true }]\n }] }); })();\nif (false) {\n /** @type {?} */\n NgSelectComponent.prototype.bindLabel;\n /** @type {?} */\n NgSelectComponent.prototype.bindValue;\n /** @type {?} */\n NgSelectComponent.prototype.markFirst;\n /** @type {?} */\n NgSelectComponent.prototype.placeholder;\n /** @type {?} */\n NgSelectComponent.prototype.notFoundText;\n /** @type {?} */\n NgSelectComponent.prototype.typeToSearchText;\n /** @type {?} */\n NgSelectComponent.prototype.addTagText;\n /** @type {?} */\n NgSelectComponent.prototype.loadingText;\n /** @type {?} */\n NgSelectComponent.prototype.clearAllText;\n /** @type {?} */\n NgSelectComponent.prototype.appearance;\n /** @type {?} */\n NgSelectComponent.prototype.dropdownPosition;\n /** @type {?} */\n NgSelectComponent.prototype.appendTo;\n /** @type {?} */\n NgSelectComponent.prototype.loading;\n /** @type {?} */\n NgSelectComponent.prototype.closeOnSelect;\n /** @type {?} */\n NgSelectComponent.prototype.hideSelected;\n /** @type {?} */\n NgSelectComponent.prototype.selectOnTab;\n /** @type {?} */\n NgSelectComponent.prototype.openOnEnter;\n /** @type {?} */\n NgSelectComponent.prototype.maxSelectedItems;\n /** @type {?} */\n NgSelectComponent.prototype.groupBy;\n /** @type {?} */\n NgSelectComponent.prototype.groupValue;\n /** @type {?} */\n NgSelectComponent.prototype.bufferAmount;\n /** @type {?} */\n NgSelectComponent.prototype.virtualScroll;\n /** @type {?} */\n NgSelectComponent.prototype.selectableGroup;\n /** @type {?} */\n NgSelectComponent.prototype.selectableGroupAsModel;\n /** @type {?} */\n NgSelectComponent.prototype.searchFn;\n /** @type {?} */\n NgSelectComponent.prototype.trackByFn;\n /** @type {?} */\n NgSelectComponent.prototype.clearOnBackspace;\n /** @type {?} */\n NgSelectComponent.prototype.labelForId;\n /** @type {?} */\n NgSelectComponent.prototype.inputAttrs;\n /** @type {?} */\n NgSelectComponent.prototype.tabIndex;\n /** @type {?} */\n NgSelectComponent.prototype.readonly;\n /** @type {?} */\n NgSelectComponent.prototype.searchWhileComposing;\n /** @type {?} */\n NgSelectComponent.prototype.minTermLength;\n /** @type {?} */\n NgSelectComponent.prototype.editableSearchTerm;\n /** @type {?} */\n NgSelectComponent.prototype.keyDownFn;\n /** @type {?} */\n NgSelectComponent.prototype.typeahead;\n /** @type {?} */\n NgSelectComponent.prototype.multiple;\n /** @type {?} */\n NgSelectComponent.prototype.addTag;\n /** @type {?} */\n NgSelectComponent.prototype.searchable;\n /** @type {?} */\n NgSelectComponent.prototype.clearable;\n /** @type {?} */\n NgSelectComponent.prototype.isOpen;\n /** @type {?} */\n NgSelectComponent.prototype.blurEvent;\n /** @type {?} */\n NgSelectComponent.prototype.focusEvent;\n /** @type {?} */\n NgSelectComponent.prototype.changeEvent;\n /** @type {?} */\n NgSelectComponent.prototype.openEvent;\n /** @type {?} */\n NgSelectComponent.prototype.closeEvent;\n /** @type {?} */\n NgSelectComponent.prototype.searchEvent;\n /** @type {?} */\n NgSelectComponent.prototype.clearEvent;\n /** @type {?} */\n NgSelectComponent.prototype.addEvent;\n /** @type {?} */\n NgSelectComponent.prototype.removeEvent;\n /** @type {?} */\n NgSelectComponent.prototype.scroll;\n /** @type {?} */\n NgSelectComponent.prototype.scrollToEnd;\n /** @type {?} */\n NgSelectComponent.prototype.optionTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.optgroupTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.labelTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.multiLabelTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.headerTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.footerTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.notFoundTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.typeToSearchTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.loadingTextTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.tagTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.loadingSpinnerTemplate;\n /** @type {?} */\n NgSelectComponent.prototype.dropdownPanel;\n /** @type {?} */\n NgSelectComponent.prototype.searchInput;\n /** @type {?} */\n NgSelectComponent.prototype.ngOptions;\n /** @type {?} */\n NgSelectComponent.prototype.itemsList;\n /** @type {?} */\n NgSelectComponent.prototype.viewPortItems;\n /** @type {?} */\n NgSelectComponent.prototype.searchTerm;\n /** @type {?} */\n NgSelectComponent.prototype.dropdownId;\n /** @type {?} */\n NgSelectComponent.prototype.element;\n /** @type {?} */\n NgSelectComponent.prototype.focused;\n /** @type {?} */\n NgSelectComponent.prototype.escapeHTML;\n /** @type {?} */\n NgSelectComponent.prototype.useDefaultClass;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._items;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._itemsAreUsed;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._defaultLabel;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._primitive;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._manualOpen;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._disabled;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._pressedKeys;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._compareWith;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._clearSearchOnAdd;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._isComposing;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._destroy$;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._keyPress$;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._onChange;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._onTouched;\n /** @type {?} */\n NgSelectComponent.prototype.clearItem;\n /** @type {?} */\n NgSelectComponent.prototype.trackByOption;\n /** @type {?} */\n NgSelectComponent.prototype.classes;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype.autoFocus;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._cd;\n /**\n * @type {?}\n * @private\n */\n NgSelectComponent.prototype._console;\n /* Skipping unhandled member: ;*/\n /* Skipping unhandled member: ;*/\n /* Skipping unhandled member: ;*/\n /* Skipping unhandled member: ;*/\n /* Skipping unhandled member: ;*/\n /* Skipping unhandled member: ;*/\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/selection-model.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @return {?}\n */\nfunction DefaultSelectionModelFactory() {\n return new DefaultSelectionModel();\n}\n/**\n * @record\n */\nfunction SelectionModel() { }\nif (false) {\n /** @type {?} */\n SelectionModel.prototype.value;\n /**\n * @param {?} item\n * @param {?} multiple\n * @param {?} selectableGroupAsModel\n * @return {?}\n */\n SelectionModel.prototype.select = function (item, multiple, selectableGroupAsModel) { };\n /**\n * @param {?} item\n * @param {?} multiple\n * @return {?}\n */\n SelectionModel.prototype.unselect = function (item, multiple) { };\n /**\n * @param {?} keepDisabled\n * @return {?}\n */\n SelectionModel.prototype.clear = function (keepDisabled) { };\n}\nclass DefaultSelectionModel {\n constructor() {\n this._selected = [];\n }\n /**\n * @return {?}\n */\n get value() {\n return this._selected;\n }\n /**\n * @param {?} item\n * @param {?} multiple\n * @param {?} groupAsModel\n * @return {?}\n */\n select(item, multiple, groupAsModel) {\n item.selected = true;\n if (!item.children || (!multiple && groupAsModel)) {\n this._selected.push(item);\n }\n if (multiple) {\n if (item.parent) {\n /** @type {?} */\n const childrenCount = item.parent.children.length;\n /** @type {?} */\n const selectedCount = item.parent.children.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.selected)).length;\n item.parent.selected = childrenCount === selectedCount;\n }\n else if (item.children) {\n this._setChildrenSelectedState(item.children, true);\n this._removeChildren(item);\n if (groupAsModel && this._activeChildren(item)) {\n this._selected = [...this._selected.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.parent !== item)), item];\n }\n else {\n this._selected = [...this._selected, ...item.children.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => !x.disabled))];\n }\n }\n }\n }\n /**\n * @param {?} item\n * @param {?} multiple\n * @return {?}\n */\n unselect(item, multiple) {\n this._selected = this._selected.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x !== item));\n item.selected = false;\n if (multiple) {\n if (item.parent && item.parent.selected) {\n /** @type {?} */\n const children = item.parent.children;\n this._removeParent(item.parent);\n this._removeChildren(item.parent);\n this._selected.push(...children.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x !== item && !x.disabled)));\n item.parent.selected = false;\n }\n else if (item.children) {\n this._setChildrenSelectedState(item.children, false);\n this._removeChildren(item);\n }\n }\n }\n /**\n * @param {?} keepDisabled\n * @return {?}\n */\n clear(keepDisabled) {\n this._selected = keepDisabled ? this._selected.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.disabled)) : [];\n }\n /**\n * @private\n * @param {?} children\n * @param {?} selected\n * @return {?}\n */\n _setChildrenSelectedState(children, selected) {\n for (const child of children) {\n if (child.disabled) {\n continue;\n }\n child.selected = selected;\n }\n ;\n }\n /**\n * @private\n * @param {?} parent\n * @return {?}\n */\n _removeChildren(parent) {\n this._selected = [\n ...this._selected.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.parent !== parent)),\n ...parent.children.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x.parent === parent && x.disabled && x.selected))\n ];\n }\n /**\n * @private\n * @param {?} parent\n * @return {?}\n */\n _removeParent(parent) {\n this._selected = this._selected.filter((/**\n * @param {?} x\n * @return {?}\n */\n x => x !== parent));\n }\n /**\n * @private\n * @param {?} item\n * @return {?}\n */\n _activeChildren(item) {\n return item.children.every((/**\n * @param {?} x\n * @return {?}\n */\n x => !x.disabled || x.selected));\n }\n}\nif (false) {\n /**\n * @type {?}\n * @private\n */\n DefaultSelectionModel.prototype._selected;\n}\n\n/**\n * @fileoverview added by tsickle\n * Generated from: lib/ng-select.module.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nconst ɵ0 = DefaultSelectionModelFactory;\nclass NgSelectModule {\n}\nNgSelectModule.ɵfac = function NgSelectModule_Factory(t) { return new (t || NgSelectModule)(); };\nNgSelectModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgSelectModule });\nNgSelectModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n { provide: SELECTION_MODEL_FACTORY, useValue: ɵ0 }\n ], imports: [CommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSelectModule, [{\n type: NgModule,\n args: [{\n declarations: [\n NgDropdownPanelComponent,\n NgOptionComponent,\n NgSelectComponent,\n NgOptgroupTemplateDirective,\n NgOptionTemplateDirective,\n NgLabelTemplateDirective,\n NgMultiLabelTemplateDirective,\n NgHeaderTemplateDirective,\n NgFooterTemplateDirective,\n NgNotFoundTemplateDirective,\n NgTypeToSearchTemplateDirective,\n NgLoadingTextTemplateDirective,\n NgTagTemplateDirective,\n NgLoadingSpinnerTemplateDirective,\n NgItemLabelDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n NgSelectComponent,\n NgOptionComponent,\n NgOptgroupTemplateDirective,\n NgOptionTemplateDirective,\n NgLabelTemplateDirective,\n NgMultiLabelTemplateDirective,\n NgHeaderTemplateDirective,\n NgFooterTemplateDirective,\n NgNotFoundTemplateDirective,\n NgTypeToSearchTemplateDirective,\n NgLoadingTextTemplateDirective,\n NgTagTemplateDirective,\n NgLoadingSpinnerTemplateDirective\n ],\n providers: [\n { provide: SELECTION_MODEL_FACTORY, useValue: ɵ0 }\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgSelectModule, { declarations: function () { return [NgDropdownPanelComponent, NgOptionComponent, NgSelectComponent, NgOptgroupTemplateDirective, NgOptionTemplateDirective, NgLabelTemplateDirective, NgMultiLabelTemplateDirective, NgHeaderTemplateDirective, NgFooterTemplateDirective, NgNotFoundTemplateDirective, NgTypeToSearchTemplateDirective, NgLoadingTextTemplateDirective, NgTagTemplateDirective, NgLoadingSpinnerTemplateDirective, NgItemLabelDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgSelectComponent, NgOptionComponent, NgOptgroupTemplateDirective, NgOptionTemplateDirective, NgLabelTemplateDirective, NgMultiLabelTemplateDirective, NgHeaderTemplateDirective, NgFooterTemplateDirective, NgNotFoundTemplateDirective, NgTypeToSearchTemplateDirective, NgLoadingTextTemplateDirective, NgTagTemplateDirective, NgLoadingSpinnerTemplateDirective]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * Generated from: public-api.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * Generated from: ng-select-ng-select.ts\n * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { NgSelectComponent, NgSelectConfig, NgSelectModule, SELECTION_MODEL_FACTORY, DefaultSelectionModelFactory as ɵb, DefaultSelectionModel as ɵc, NgDropdownPanelService as ɵd, NgItemLabelDirective as ɵe, NgOptionTemplateDirective as ɵf, NgOptgroupTemplateDirective as ɵg, NgLabelTemplateDirective as ɵh, NgMultiLabelTemplateDirective as ɵi, NgHeaderTemplateDirective as ɵj, NgFooterTemplateDirective as ɵk, NgNotFoundTemplateDirective as ɵl, NgTypeToSearchTemplateDirective as ɵm, NgLoadingTextTemplateDirective as ɵn, NgTagTemplateDirective as ɵo, NgLoadingSpinnerTemplateDirective as ɵp, NgDropdownPanelComponent as ɵq, NgOptionComponent as ɵr, ConsoleService as ɵs };\n\n","import { Component, ChangeDetectionStrategy, Input, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nfunction ContentLoaderComponent__svg_animate_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"animate\", 7);\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"keyTimes\", ctx_r0.keyTimes)(\"values\", ctx_r0.animationValues[0])(\"dur\", ctx_r0.duration);\n} }\nfunction ContentLoaderComponent__svg_animate_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"animate\", 7);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"keyTimes\", ctx_r1.keyTimes)(\"values\", ctx_r1.animationValues[1])(\"dur\", ctx_r1.duration);\n} }\nfunction ContentLoaderComponent__svg_animate_11_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(0, \"animate\", 7);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵattribute(\"keyTimes\", ctx_r2.keyTimes)(\"values\", ctx_r2.animationValues[2])(\"dur\", ctx_r2.duration);\n} }\nconst _c0 = [\"*\"];\nfunction uid() {\n return Math.random().toString(36).substring(2);\n}\nclass ContentLoaderComponent {\n constructor() {\n this.fixedId = uid();\n this.idClip = `${this.fixedId}-diff`;\n this.idGradient = `${this.fixedId}-animated-diff`;\n this.idAria = `${this.fixedId}-aria`;\n this.animate = true;\n this.baseUrl = '';\n this.speed = 1.2;\n this.viewBox = '0 0 400 130';\n this.gradientRatio = 2;\n this.backgroundColor = '#f5f6f7';\n this.backgroundOpacity = 1;\n this.foregroundColor = '#eee';\n this.foregroundOpacity = 1;\n this.rtl = false;\n this.interval = 0.25;\n this.style = {};\n this.animationValues = [];\n }\n ngOnInit() {\n this.clipPath = `url(${this.baseUrl}#${this.idClip})`;\n this.fillStyle = { fill: `url(${this.baseUrl}#${this.idGradient})` };\n this.style = this.rtl ? Object.assign(Object.assign({}, this.style), { transform: 'scaleX(-1)' }) : this.style;\n this.duration = `${this.speed}s`;\n this.keyTimes = `0; ${this.interval}; 1`;\n this.animationValues = [\n `${-this.gradientRatio}; ${-this.gradientRatio}; 1`,\n `${-this.gradientRatio / 2}; ${-this.gradientRatio / 2}; ${1 + this.gradientRatio / 2}`,\n `0; 0; ${1 + this.gradientRatio}`\n ];\n }\n}\nContentLoaderComponent.ɵfac = function ContentLoaderComponent_Factory(t) { return new (t || ContentLoaderComponent)(); };\nContentLoaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ContentLoaderComponent, selectors: [[\"content-loader\"]], inputs: { animate: \"animate\", baseUrl: \"baseUrl\", speed: \"speed\", viewBox: \"viewBox\", gradientRatio: \"gradientRatio\", backgroundColor: \"backgroundColor\", backgroundOpacity: \"backgroundOpacity\", foregroundColor: \"foregroundColor\", foregroundOpacity: \"foregroundOpacity\", rtl: \"rtl\", interval: \"interval\", style: \"style\" }, ngContentSelectors: _c0, decls: 12, vars: 15, consts: [[3, \"ngStyle\"], [\"role\", \"presentation\", \"x\", \"0\", \"y\", \"0\", \"width\", \"100%\", \"height\", \"100%\", 3, \"ngStyle\"], [\"role\", \"presentation\"], [\"offset\", \"0%\"], [\"attributeName\", \"offset\", \"repeatCount\", \"indefinite\", 4, \"ngIf\"], [\"offset\", \"50%\"], [\"offset\", \"100%\"], [\"attributeName\", \"offset\", \"repeatCount\", \"indefinite\"]], template: function ContentLoaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelementStart(0, \"svg\", 0);\n ɵngcc0.ɵɵelement(1, \"rect\", 1);\n ɵngcc0.ɵɵelementStart(2, \"defs\", 2)(3, \"clipPath\");\n ɵngcc0.ɵɵprojection(4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(5, \"linearGradient\")(6, \"stop\", 3);\n ɵngcc0.ɵɵtemplate(7, ContentLoaderComponent__svg_animate_7_Template, 1, 3, \"animate\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"stop\", 5);\n ɵngcc0.ɵɵtemplate(9, ContentLoaderComponent__svg_animate_9_Template, 1, 3, \"animate\", 4);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(10, \"stop\", 6);\n ɵngcc0.ɵɵtemplate(11, ContentLoaderComponent__svg_animate_11_Template, 1, 3, \"animate\", 4);\n ɵngcc0.ɵɵelementEnd()()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.style);\n ɵngcc0.ɵɵattribute(\"viewBox\", ctx.viewBox);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ctx.fillStyle);\n ɵngcc0.ɵɵattribute(\"clip-path\", ctx.clipPath);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.idClip);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"id\", ctx.idGradient);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"stop-color\", ctx.backgroundColor)(\"stop-opacity\", ctx.backgroundOpacity);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.animate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"stop-color\", ctx.foregroundColor)(\"stop-opacity\", ctx.foregroundOpacity);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.animate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"stop-color\", ctx.backgroundColor)(\"stop-opacity\", ctx.backgroundOpacity);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.animate);\n } }, dependencies: [ɵngcc1.NgIf, ɵngcc1.NgStyle], styles: [\"[_nghost-%COMP%] {\\n display: block;\\n }\"], changeDetection: 0 });\nContentLoaderComponent.propDecorators = {\n animate: [{ type: Input }],\n baseUrl: [{ type: Input }],\n speed: [{ type: Input }],\n viewBox: [{ type: Input }],\n gradientRatio: [{ type: Input }],\n backgroundColor: [{ type: Input }],\n backgroundOpacity: [{ type: Input }],\n foregroundColor: [{ type: Input }],\n foregroundOpacity: [{ type: Input }],\n rtl: [{ type: Input }],\n interval: [{ type: Input }],\n style: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContentLoaderComponent, [{\n type: Component,\n args: [{ selector: 'content-loader', template: \"\\n \\n\\n \\n \\n \\n \\n\\n \\n \\n \\n \\n\\n \\n \\n \\n\\n \\n \\n \\n \\n \\n\\n\", changeDetection: ChangeDetectionStrategy.OnPush, styles: [\"\\n :host {\\n display: block;\\n }\\n \"] }]\n }], function () { return []; }, { animate: [{\n type: Input\n }], baseUrl: [{\n type: Input\n }], speed: [{\n type: Input\n }], viewBox: [{\n type: Input\n }], gradientRatio: [{\n type: Input\n }], backgroundColor: [{\n type: Input\n }], backgroundOpacity: [{\n type: Input\n }], foregroundColor: [{\n type: Input\n }], foregroundOpacity: [{\n type: Input\n }], rtl: [{\n type: Input\n }], interval: [{\n type: Input\n }], style: [{\n type: Input\n }] }); })();\n\nclass BulletListContentLoaderComponent extends ContentLoaderComponent {\n}\nBulletListContentLoaderComponent.ɵfac = /*@__PURE__*/ function () { let ɵBulletListContentLoaderComponent_BaseFactory; return function BulletListContentLoaderComponent_Factory(t) { return (ɵBulletListContentLoaderComponent_BaseFactory || (ɵBulletListContentLoaderComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(BulletListContentLoaderComponent)))(t || BulletListContentLoaderComponent); }; }();\nBulletListContentLoaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: BulletListContentLoaderComponent, selectors: [[\"bullet-list-content-loader\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 9, vars: 0, consts: [[\"viewBox\", \"0 0 245 125\"], [\"cx\", \"10\", \"cy\", \"20\", \"r\", \"8\"], [\"x\", \"25\", \"y\", \"15\", \"rx\", \"5\", \"ry\", \"5\", \"width\", \"220\", \"height\", \"10\"], [\"cx\", \"10\", \"cy\", \"50\", \"r\", \"8\"], [\"x\", \"25\", \"y\", \"45\", \"rx\", \"5\", \"ry\", \"5\", \"width\", \"220\", \"height\", \"10\"], [\"cx\", \"10\", \"cy\", \"80\", \"r\", \"8\"], [\"x\", \"25\", \"y\", \"75\", \"rx\", \"5\", \"ry\", \"5\", \"width\", \"220\", \"height\", \"10\"], [\"cx\", \"10\", \"cy\", \"110\", \"r\", \"8\"], [\"x\", \"25\", \"y\", \"105\", \"rx\", \"5\", \"ry\", \"5\", \"width\", \"220\", \"height\", \"10\"]], template: function BulletListContentLoaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"content-loader\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(1, \"circle\", 1)(2, \"rect\", 2)(3, \"circle\", 3)(4, \"rect\", 4)(5, \"circle\", 5)(6, \"rect\", 6)(7, \"circle\", 7)(8, \"rect\", 8);\n ɵngcc0.ɵɵelementEnd();\n } }, dependencies: [ContentLoaderComponent], encapsulation: 2, changeDetection: 0 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(BulletListContentLoaderComponent, [{\n type: Component,\n args: [{\n selector: 'bullet-list-content-loader',\n template: `\n \n \n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, null); })();\n\nclass FacebookContentLoaderComponent extends ContentLoaderComponent {\n}\nFacebookContentLoaderComponent.ɵfac = /*@__PURE__*/ function () { let ɵFacebookContentLoaderComponent_BaseFactory; return function FacebookContentLoaderComponent_Factory(t) { return (ɵFacebookContentLoaderComponent_BaseFactory || (ɵFacebookContentLoaderComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(FacebookContentLoaderComponent)))(t || FacebookContentLoaderComponent); }; }();\nFacebookContentLoaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FacebookContentLoaderComponent, selectors: [[\"facebook-content-loader\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 7, vars: 0, consts: [[\"viewBox\", \"0 0 476 124\"], [\"x\", \"48\", \"y\", \"8\", \"width\", \"88\", \"height\", \"6\", \"rx\", \"3\"], [\"x\", \"48\", \"y\", \"26\", \"width\", \"52\", \"height\", \"6\", \"rx\", \"3\"], [\"x\", \"0\", \"y\", \"56\", \"width\", \"410\", \"height\", \"6\", \"rx\", \"3\"], [\"x\", \"0\", \"y\", \"72\", \"width\", \"380\", \"height\", \"6\", \"rx\", \"3\"], [\"x\", \"0\", \"y\", \"88\", \"width\", \"178\", \"height\", \"6\", \"rx\", \"3\"], [\"cx\", \"20\", \"cy\", \"20\", \"r\", \"20\"]], template: function FacebookContentLoaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"content-loader\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(1, \"rect\", 1)(2, \"rect\", 2)(3, \"rect\", 3)(4, \"rect\", 4)(5, \"rect\", 5)(6, \"circle\", 6);\n ɵngcc0.ɵɵelementEnd();\n } }, dependencies: [ContentLoaderComponent], encapsulation: 2, changeDetection: 0 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FacebookContentLoaderComponent, [{\n type: Component,\n args: [{\n selector: 'facebook-content-loader',\n template: `\n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, null); })();\n\nclass ListContentLoaderComponent extends ContentLoaderComponent {\n}\nListContentLoaderComponent.ɵfac = /*@__PURE__*/ function () { let ɵListContentLoaderComponent_BaseFactory; return function ListContentLoaderComponent_Factory(t) { return (ɵListContentLoaderComponent_BaseFactory || (ɵListContentLoaderComponent_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(ListContentLoaderComponent)))(t || ListContentLoaderComponent); }; }();\nListContentLoaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: ListContentLoaderComponent, selectors: [[\"list-content-loader\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 7, vars: 0, consts: [[\"viewBox\", \"0 0 400 110\"], [\"x\", \"0\", \"y\", \"0\", \"rx\", \"3\", \"ry\", \"3\", \"width\", \"250\", \"height\", \"10\"], [\"x\", \"20\", \"y\", \"20\", \"rx\", \"3\", \"ry\", \"3\", \"width\", \"220\", \"height\", \"10\"], [\"x\", \"20\", \"y\", \"40\", \"rx\", \"3\", \"ry\", \"3\", \"width\", \"170\", \"height\", \"10\"], [\"x\", \"0\", \"y\", \"60\", \"rx\", \"3\", \"ry\", \"3\", \"width\", \"250\", \"height\", \"10\"], [\"x\", \"20\", \"y\", \"80\", \"rx\", \"3\", \"ry\", \"3\", \"width\", \"200\", \"height\", \"10\"], [\"x\", \"20\", \"y\", \"100\", \"rx\", \"3\", \"ry\", \"3\", \"width\", \"80\", \"height\", \"10\"]], template: function ListContentLoaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"content-loader\", 0);\n ɵngcc0.ɵɵnamespaceSVG();\n ɵngcc0.ɵɵelement(1, \"rect\", 1)(2, \"rect\", 2)(3, \"rect\", 3)(4, \"rect\", 4)(5, \"rect\", 5)(6, \"rect\", 6);\n ɵngcc0.ɵɵelementEnd();\n } }, dependencies: [ContentLoaderComponent], encapsulation: 2, changeDetection: 0 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ListContentLoaderComponent, [{\n type: Component,\n args: [{\n selector: 'list-content-loader',\n template: `\n \n \n \n \n \n \n \n \n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], null, null); })();\n\nclass ContentLoaderModule {\n static forRoot() {\n return {\n ngModule: ContentLoaderModule\n };\n }\n}\nContentLoaderModule.ɵfac = function ContentLoaderModule_Factory(t) { return new (t || ContentLoaderModule)(); };\nContentLoaderModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ContentLoaderModule });\nContentLoaderModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [CommonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ContentLoaderModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [\n ContentLoaderComponent,\n FacebookContentLoaderComponent,\n BulletListContentLoaderComponent,\n ListContentLoaderComponent\n ],\n exports: [\n ContentLoaderComponent,\n FacebookContentLoaderComponent,\n BulletListContentLoaderComponent,\n ListContentLoaderComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ContentLoaderModule, { declarations: function () { return [ContentLoaderComponent, FacebookContentLoaderComponent, BulletListContentLoaderComponent, ListContentLoaderComponent]; }, imports: function () { return [CommonModule]; }, exports: function () { return [ContentLoaderComponent, FacebookContentLoaderComponent, BulletListContentLoaderComponent, ListContentLoaderComponent]; } }); })();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { BulletListContentLoaderComponent, ContentLoaderComponent, ContentLoaderModule, FacebookContentLoaderComponent, ListContentLoaderComponent };\n\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { DOCUMENT, CommonModule } from '@angular/common';\nimport { TemplateRef, Injectable, InjectionToken, NgModule, ANALYZE_FOR_ENTRY_COMPONENTS, Inject, Optional, Component, Input, ChangeDetectionStrategy, EventEmitter, Output, Attribute, ViewChild, ElementRef, NgZone, Directive, Renderer2, ViewContainerRef, ComponentFactoryResolver, Injector, ChangeDetectorRef, defineInjectable, inject, INJECTOR } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { __rest } from 'tslib';\nimport { debounceTime, switchMap, distinctUntilChanged, take, startWith, filter, map } from 'rxjs/operators';\nimport { AbstractControl, FormArray, FormGroup, FormControl, FormGroupDirective, Validators } from '@angular/forms';\nimport { isObservable, Subject, of, merge, Observable } from 'rxjs';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} form\n * @param {?} callback\n * @return {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/forms';\nimport * as ɵngcc2 from '@angular/common';\nimport * as ɵngcc3 from '@angular/platform-browser';\n\nconst _c0 = [\"content\"];\nfunction FormlyForm_formly_field_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"formly-field\", 2);\n} if (rf & 2) {\n const field_r2 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"form\", field_r2.form)(\"options\", field_r2.options)(\"model\", field_r2.model)(\"field\", field_r2);\n} }\nconst _c1 = [\"*\"];\nconst _c2 = [\"container\"];\nfunction FormlyField_ng_template_0_Template(rf, ctx) { }\nconst _c3 = [\"fieldComponent\"];\nfunction FormlyGroup_formly_field_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"formly-field\", 1);\n} if (rf & 2) {\n const f_r1 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"field\", f_r1);\n} }\nfunction disableTreeValidityCall(form, callback) {\n /** @type {?} */\n const _updateTreeValidity = form._updateTreeValidity.bind(form);\n form._updateTreeValidity = (/**\n * @return {?}\n */\n () => { });\n callback();\n form._updateTreeValidity = _updateTreeValidity;\n}\n/**\n * @param {?} formId\n * @param {?} field\n * @param {?} index\n * @return {?}\n */\nfunction getFieldId(formId, field, index) {\n if (field.id)\n return field.id;\n /** @type {?} */\n let type = field.type;\n if (!type && field.template) {\n type = 'template';\n }\n if (isFunction(type)) {\n type = ((/** @type {?} */ (type))).prototype.constructor.name;\n }\n return [formId, type, field.key, index].join('_');\n}\n/**\n * @param {?} field\n * @return {?}\n */\nfunction getKeyPath(field) {\n if (!field.key) {\n return [];\n }\n /* We store the keyPath in the field for performance reasons. This function will be called frequently. */\n if (!field._keyPath || field._keyPath.key !== field.key) {\n /** @type {?} */\n let path = [];\n if (typeof field.key === 'string') {\n /** @type {?} */\n const key = field.key.indexOf('[') === -1\n ? field.key\n : field.key.replace(/\\[(\\w+)\\]/g, '.$1');\n path = key.indexOf('.') !== -1 ? key.split('.') : [key];\n }\n else if (Array.isArray(field.key)) {\n path = field.key.slice(0);\n }\n else {\n path = [`${field.key}`];\n }\n field._keyPath = { key: field.key, path };\n }\n return field._keyPath.path.slice(0);\n}\n/** @type {?} */\nconst FORMLY_VALIDATORS = ['required', 'pattern', 'minLength', 'maxLength', 'min', 'max'];\n/**\n * @param {?} field\n * @param {?} value\n * @return {?}\n */\nfunction assignFieldValue(field, value) {\n /** @type {?} */\n let paths = getKeyPath(field);\n if (paths.length === 0) {\n return;\n }\n /** @type {?} */\n let root = field;\n while (root.parent) {\n root = root.parent;\n paths = [...getKeyPath(root), ...paths];\n }\n if (value === undefined && field.resetOnHide) {\n /** @type {?} */\n const k = paths.pop();\n /** @type {?} */\n const m = paths.reduce((/**\n * @param {?} model\n * @param {?} path\n * @return {?}\n */\n (model, path) => model[path] || {}), root.model);\n delete m[k];\n return;\n }\n assignModelValue(root.model, paths, value);\n}\n/**\n * @param {?} model\n * @param {?} paths\n * @param {?} value\n * @return {?}\n */\nfunction assignModelValue(model, paths, value) {\n for (let i = 0; i < (paths.length - 1); i++) {\n /** @type {?} */\n const path = paths[i];\n if (!model[path] || !isObject(model[path])) {\n model[path] = /^\\d+$/.test(paths[i + 1]) ? [] : {};\n }\n model = model[path];\n }\n model[paths[paths.length - 1]] = clone(value);\n}\n/**\n * @param {?} field\n * @return {?}\n */\nfunction getFieldValue(field) {\n /** @type {?} */\n let model = field.parent.model;\n for (const path of getKeyPath(field)) {\n if (!model) {\n return model;\n }\n model = model[path];\n }\n return model;\n}\n/**\n * @param {?} dest\n * @param {...?} args\n * @return {?}\n */\nfunction reverseDeepMerge(dest, ...args) {\n args.forEach((/**\n * @param {?} src\n * @return {?}\n */\n src => {\n for (let srcArg in src) {\n if (isNullOrUndefined(dest[srcArg]) || isBlankString(dest[srcArg])) {\n dest[srcArg] = clone(src[srcArg]);\n }\n else if (objAndSameType(dest[srcArg], src[srcArg])) {\n reverseDeepMerge(dest[srcArg], src[srcArg]);\n }\n }\n }));\n return dest;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isUndefined(value) {\n return value === undefined;\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isBlankString(value) {\n return value === '';\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction isFunction(value) {\n return typeof (value) === 'function';\n}\n/**\n * @param {?} obj1\n * @param {?} obj2\n * @return {?}\n */\nfunction objAndSameType(obj1, obj2) {\n return isObject(obj1) && isObject(obj2)\n && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2)\n && !(Array.isArray(obj1) || Array.isArray(obj2));\n}\n/**\n * @param {?} x\n * @return {?}\n */\nfunction isObject(x) {\n return x != null && typeof x === 'object';\n}\n/**\n * @param {?} obj\n * @return {?}\n */\nfunction isPromise(obj) {\n return !!obj && typeof obj.then === 'function';\n}\n/**\n * @param {?} value\n * @return {?}\n */\nfunction clone(value) {\n if (!isObject(value)\n || isObservable(value)\n || (value instanceof TemplateRef)\n || /* instanceof SafeHtmlImpl */ value.changingThisBreaksApplicationSecurity\n || ['RegExp', 'FileList', 'File', 'Blob'].indexOf(value.constructor.name) !== -1) {\n return value;\n }\n if (value instanceof Set) {\n return new Set(value);\n }\n if (value instanceof Map) {\n return new Map(value);\n }\n // https://github.com/moment/moment/blob/master/moment.js#L252\n if (value._isAMomentObject && isFunction(value.clone)) {\n return value.clone();\n }\n if (value instanceof AbstractControl) {\n return null;\n }\n if (value instanceof Date) {\n return new Date(value.getTime());\n }\n if (Array.isArray(value)) {\n return value.slice(0).map((/**\n * @param {?} v\n * @return {?}\n */\n v => clone(v)));\n }\n // best way to clone a js object maybe\n // https://stackoverflow.com/questions/41474986/how-to-clone-a-javascript-es6-class-instance\n /** @type {?} */\n const proto = Object.getPrototypeOf(value);\n /** @type {?} */\n let c = Object.create(proto);\n c = Object.setPrototypeOf(c, proto);\n // need to make a deep copy so we dont use Object.assign\n // also Object.assign wont copy property descriptor exactly\n return Object.keys(value).reduce((/**\n * @param {?} newVal\n * @param {?} prop\n * @return {?}\n */\n (newVal, prop) => {\n /** @type {?} */\n const propDesc = Object.getOwnPropertyDescriptor(value, prop);\n if (propDesc.get) {\n Object.defineProperty(newVal, prop, propDesc);\n }\n else {\n newVal[prop] = clone(value[prop]);\n }\n return newVal;\n }), c);\n}\n/**\n * @param {?} field\n * @param {?} prop\n * @param {?} defaultValue\n * @return {?}\n */\nfunction defineHiddenProp(field, prop, defaultValue) {\n Object.defineProperty(field, prop, { enumerable: false, writable: true, configurable: true });\n field[prop] = defaultValue;\n}\n/**\n * @template T\n * @param {?} o\n * @param {?} prop\n * @param {?} setFn\n * @return {?}\n */\nfunction wrapProperty(o, prop, setFn) {\n if (!o._observers) {\n defineHiddenProp(o, '_observers', {});\n }\n if (!o._observers[prop]) {\n o._observers[prop] = [];\n }\n /** @type {?} */\n let fns = o._observers[prop];\n if (fns.indexOf(setFn) === -1) {\n fns.push(setFn);\n setFn({ currentValue: o[prop], firstChange: true });\n if (fns.length === 1) {\n defineHiddenProp(o, `___$${prop}`, o[prop]);\n Object.defineProperty(o, prop, {\n configurable: true,\n get: (/**\n * @return {?}\n */\n () => o[`___$${prop}`]),\n set: (/**\n * @param {?} currentValue\n * @return {?}\n */\n currentValue => {\n if (currentValue !== o[`___$${prop}`]) {\n /** @type {?} */\n const previousValue = o[`___$${prop}`];\n o[`___$${prop}`] = currentValue;\n fns.forEach((/**\n * @param {?} changeFn\n * @return {?}\n */\n changeFn => changeFn({ previousValue, currentValue, firstChange: false })));\n }\n }),\n });\n }\n }\n return (/**\n * @return {?}\n */\n () => fns.splice(fns.indexOf(setFn), 1));\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/** @type {?} */\nconst FORMLY_CONFIG = new InjectionToken('FORMLY_CONFIG');\n/**\n * Maintains list of formly field directive types. This can be used to register new field templates.\n */\nclass FormlyConfig {\n constructor() {\n this.types = {};\n this.validators = {};\n this.wrappers = {};\n this.messages = {};\n this.templateManipulators = {\n preWrapper: [],\n postWrapper: [],\n };\n this.extras = {\n checkExpressionOn: 'changeDetectionCheck',\n lazyRender: false,\n showError: (/**\n * @param {?} field\n * @return {?}\n */\n function (field) {\n return field.formControl && field.formControl.invalid && (field.formControl.touched || (field.options.parentForm && field.options.parentForm.submitted) || !!(field.field.validation && field.field.validation.show));\n }),\n };\n this.extensions = {};\n }\n /**\n * @param {?} config\n * @return {?}\n */\n addConfig(config) {\n if (config.types) {\n config.types.forEach((/**\n * @param {?} type\n * @return {?}\n */\n type => this.setType(type)));\n }\n if (config.validators) {\n config.validators.forEach((/**\n * @param {?} validator\n * @return {?}\n */\n validator => this.setValidator(validator)));\n }\n if (config.wrappers) {\n config.wrappers.forEach((/**\n * @param {?} wrapper\n * @return {?}\n */\n wrapper => this.setWrapper(wrapper)));\n }\n if (config.manipulators) {\n console.warn(`NgxFormly: passing 'manipulators' config is deprecated, use custom extension instead.`);\n config.manipulators.forEach((/**\n * @param {?} manipulator\n * @return {?}\n */\n manipulator => this.setManipulator(manipulator)));\n }\n if (config.validationMessages) {\n config.validationMessages.forEach((/**\n * @param {?} validation\n * @return {?}\n */\n validation => this.addValidatorMessage(validation.name, validation.message)));\n }\n if (config.extensions) {\n config.extensions.forEach((/**\n * @param {?} c\n * @return {?}\n */\n c => this.extensions[c.name] = c.extension));\n }\n if (config.extras) {\n this.extras = Object.assign({}, this.extras, config.extras);\n }\n }\n /**\n * @param {?} options\n * @return {?}\n */\n setType(options) {\n if (Array.isArray(options)) {\n options.forEach((/**\n * @param {?} option\n * @return {?}\n */\n (option) => this.setType(option)));\n }\n else {\n if (!this.types[options.name]) {\n this.types[options.name] = (/** @type {?} */ ({ name: options.name }));\n }\n ['component', 'extends', 'defaultOptions', 'wrappers'].forEach((/**\n * @param {?} prop\n * @return {?}\n */\n prop => {\n if (options.hasOwnProperty(prop)) {\n this.types[options.name][prop] = options[prop];\n }\n }));\n }\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getType(name) {\n if (!this.types[name]) {\n throw new Error(`[Formly Error] The type \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n this.mergeExtendedType(name);\n return this.types[name];\n }\n /**\n * @param {?=} field\n * @return {?}\n */\n getMergedField(field = {}) {\n /** @type {?} */\n const type = this.getType(field.type);\n if (type.defaultOptions) {\n reverseDeepMerge(field, type.defaultOptions);\n }\n /** @type {?} */\n const extendDefaults = type.extends && this.getType(type.extends).defaultOptions;\n if (extendDefaults) {\n reverseDeepMerge(field, extendDefaults);\n }\n if (field && field.optionsTypes) {\n field.optionsTypes.forEach((/**\n * @param {?} option\n * @return {?}\n */\n option => {\n /** @type {?} */\n const defaultOptions = this.getType(option).defaultOptions;\n if (defaultOptions) {\n reverseDeepMerge(field, defaultOptions);\n }\n }));\n }\n /** @type {?} */\n const componentRef = this.resolveFieldTypeRef(field);\n if (componentRef && componentRef.instance && componentRef.instance.defaultOptions) {\n reverseDeepMerge(field, componentRef.instance.defaultOptions);\n }\n if (!field.wrappers && type.wrappers) {\n field.wrappers = [...type.wrappers];\n }\n }\n /**\n * \\@internal\n * @param {?=} field\n * @return {?}\n */\n resolveFieldTypeRef(field = {}) {\n if (!field.type) {\n return null;\n }\n /** @type {?} */\n const type = this.getType(field.type);\n if (!type.component || type['_componentRef']) {\n return type['_componentRef'];\n }\n const { _resolver, _injector } = field.parent.options;\n /** @type {?} */\n const componentRef = _resolver\n .resolveComponentFactory(type.component)\n .create(_injector);\n defineHiddenProp(type, '_componentRef', componentRef);\n componentRef.destroy();\n return type['_componentRef'];\n }\n /**\n * @param {?} options\n * @return {?}\n */\n setWrapper(options) {\n this.wrappers[options.name] = options;\n if (options.types) {\n options.types.forEach((/**\n * @param {?} type\n * @return {?}\n */\n (type) => {\n this.setTypeWrapper(type, options.name);\n }));\n }\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getWrapper(name) {\n if (!this.wrappers[name]) {\n throw new Error(`[Formly Error] The wrapper \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n return this.wrappers[name];\n }\n /**\n * @param {?} type\n * @param {?} name\n * @return {?}\n */\n setTypeWrapper(type, name) {\n if (!this.types[type]) {\n this.types[type] = (/** @type {?} */ ({}));\n }\n if (!this.types[type].wrappers) {\n this.types[type].wrappers = [];\n }\n if (this.types[type].wrappers.indexOf(name) === -1) {\n this.types[type].wrappers.push(name);\n }\n }\n /**\n * @param {?} options\n * @return {?}\n */\n setValidator(options) {\n this.validators[options.name] = options;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getValidator(name) {\n if (!this.validators[name]) {\n throw new Error(`[Formly Error] The validator \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n return this.validators[name];\n }\n /**\n * @param {?} name\n * @param {?} message\n * @return {?}\n */\n addValidatorMessage(name, message) {\n this.messages[name] = message;\n }\n /**\n * @param {?} name\n * @return {?}\n */\n getValidatorMessage(name) {\n return this.messages[name];\n }\n /**\n * @param {?} manipulator\n * @return {?}\n */\n setManipulator(manipulator) {\n new manipulator.class()[manipulator.method](this);\n }\n /**\n * @private\n * @param {?} name\n * @return {?}\n */\n mergeExtendedType(name) {\n if (!this.types[name].extends) {\n return;\n }\n /** @type {?} */\n const extendedType = this.getType(this.types[name].extends);\n if (!this.types[name].component) {\n this.types[name].component = extendedType.component;\n }\n if (!this.types[name].wrappers) {\n this.types[name].wrappers = extendedType.wrappers;\n }\n }\n}\nFormlyConfig.ɵfac = function FormlyConfig_Factory(t) { return new (t || FormlyConfig)(); };\nFormlyConfig.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FormlyConfig, factory: FormlyConfig.ɵfac, providedIn: 'root' });\n/** @nocollapse */ FormlyConfig.ngInjectableDef = defineInjectable({ factory: function FormlyConfig_Factory() { return new FormlyConfig(); }, token: FormlyConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormlyConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyFormBuilder {\n /**\n * @param {?} formlyConfig\n * @param {?} componentFactoryResolver\n * @param {?} injector\n */\n constructor(formlyConfig, componentFactoryResolver, injector) {\n this.formlyConfig = formlyConfig;\n this.componentFactoryResolver = componentFactoryResolver;\n this.injector = injector;\n }\n /**\n * @param {?} formControl\n * @param {?=} fieldGroup\n * @param {?=} model\n * @param {?=} options\n * @return {?}\n */\n buildForm(formControl, fieldGroup = [], model, options) {\n if (!this.formlyConfig.extensions.core) {\n throw new Error('NgxFormly: missing `forRoot()` call. use `forRoot()` when registering the `FormlyModule`.');\n }\n /** @type {?} */\n const field = { fieldGroup, model, formControl, options: this._setOptions(options) };\n disableTreeValidityCall(formControl, (/**\n * @return {?}\n */\n () => {\n this._buildForm(field);\n field.options._checkField(field, true);\n }));\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n _buildForm(field) {\n this.getExtensions().forEach((/**\n * @param {?} extension\n * @return {?}\n */\n extension => extension.prePopulate && extension.prePopulate(field)));\n this.getExtensions().forEach((/**\n * @param {?} extension\n * @return {?}\n */\n extension => extension.onPopulate && extension.onPopulate(field)));\n if (field.fieldGroup) {\n field.fieldGroup.forEach((/**\n * @param {?} f\n * @return {?}\n */\n (f) => this._buildForm(f)));\n }\n this.getExtensions().forEach((/**\n * @param {?} extension\n * @return {?}\n */\n extension => extension.postPopulate && extension.postPopulate(field)));\n }\n /**\n * @private\n * @return {?}\n */\n getExtensions() {\n return Object.keys(this.formlyConfig.extensions).map((/**\n * @param {?} name\n * @return {?}\n */\n name => this.formlyConfig.extensions[name]));\n }\n /**\n * @private\n * @param {?} options\n * @return {?}\n */\n _setOptions(options) {\n options = options || {};\n options.formState = options.formState || {};\n if (!options.showError) {\n options.showError = this.formlyConfig.extras.showError;\n }\n if (!options.fieldChanges) {\n defineHiddenProp(options, 'fieldChanges', new Subject());\n }\n if (!options._resolver) {\n defineHiddenProp(options, '_resolver', this.componentFactoryResolver);\n }\n if (!options._injector) {\n defineHiddenProp(options, '_injector', this.injector);\n }\n if (!options._hiddenFieldsForCheck) {\n options._hiddenFieldsForCheck = [];\n }\n if (!options._markForCheck) {\n options._markForCheck = (/**\n * @param {?} field\n * @return {?}\n */\n (field) => {\n if (field._componentRefs) {\n field._componentRefs.forEach((/**\n * @param {?} ref\n * @return {?}\n */\n ref => {\n // NOTE: we cannot use ref.changeDetectorRef, see https://github.com/ngx-formly/ngx-formly/issues/2191\n /** @type {?} */\n const changeDetectorRef = ref.injector.get(ChangeDetectorRef);\n changeDetectorRef.markForCheck();\n }));\n }\n if (field.fieldGroup) {\n field.fieldGroup.forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => options._markForCheck(f)));\n }\n });\n }\n if (!options._buildField) {\n options._buildField = (/**\n * @param {?} field\n * @return {?}\n */\n (field) => {\n this._setOptions(field.options);\n this._buildForm(field);\n ((/** @type {?} */ (field.options)))._checkField(field, true);\n return field;\n });\n }\n return options;\n }\n}\nFormlyFormBuilder.ɵfac = function FormlyFormBuilder_Factory(t) { return new (t || FormlyFormBuilder)(ɵngcc0.ɵɵinject(FormlyConfig), ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector)); };\nFormlyFormBuilder.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FormlyFormBuilder, factory: FormlyFormBuilder.ɵfac, providedIn: 'root' });\n/** @nocollapse */\nFormlyFormBuilder.ctorParameters = () => [\n { type: FormlyConfig },\n { type: ComponentFactoryResolver },\n { type: Injector }\n];\n/** @nocollapse */ FormlyFormBuilder.ngInjectableDef = defineInjectable({ factory: function FormlyFormBuilder_Factory() { return new FormlyFormBuilder(inject(FormlyConfig), inject(ComponentFactoryResolver), inject(INJECTOR)); }, token: FormlyFormBuilder, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormlyFormBuilder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: FormlyConfig }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} field\n * @param {?=} emitEvent\n * @return {?}\n */\nfunction unregisterControl(field, emitEvent = false) {\n /** @type {?} */\n const control = field.formControl;\n /** @type {?} */\n const fieldIndex = control['_fields'] ? control['_fields'].indexOf(field) : -1;\n if (fieldIndex !== -1) {\n control['_fields'].splice(fieldIndex, 1);\n }\n /** @type {?} */\n const form = (/** @type {?} */ (control.parent));\n if (!form) {\n return;\n }\n /** @type {?} */\n const opts = { emitEvent };\n if (form instanceof FormArray) {\n /** @type {?} */\n const key = form.controls.findIndex((/**\n * @param {?} c\n * @return {?}\n */\n c => c === control));\n if (key !== -1) {\n updateControl(form, opts, (/**\n * @return {?}\n */\n () => form.removeAt(key)));\n }\n }\n else if (form instanceof FormGroup) {\n /** @type {?} */\n const paths = getKeyPath(field);\n /** @type {?} */\n const key = paths[paths.length - 1];\n if (form.get([key]) === control) {\n updateControl(form, opts, (/**\n * @return {?}\n */\n () => form.removeControl(key)));\n }\n }\n control.setParent(null);\n}\n/**\n * @param {?} field\n * @return {?}\n */\nfunction findControl(field) {\n if (field.formControl) {\n return field.formControl;\n }\n if (field['shareFormControl'] === false) {\n return null;\n }\n /** @type {?} */\n const form = (/** @type {?} */ (field.parent.formControl));\n return form ? form.get(getKeyPath(field)) : null;\n}\n/**\n * @param {?} field\n * @param {?=} control\n * @param {?=} emitEvent\n * @return {?}\n */\nfunction registerControl(field, control, emitEvent = false) {\n control = control || field.formControl;\n if (!control['_fields']) {\n defineHiddenProp(control, '_fields', []);\n }\n if (control['_fields'].indexOf(field) === -1) {\n control['_fields'].push(field);\n }\n if (!field.formControl && control) {\n defineHiddenProp(field, 'formControl', control);\n control.setValidators(null);\n control.setAsyncValidators(null);\n field.templateOptions.disabled = !!field.templateOptions.disabled;\n wrapProperty(field.templateOptions, 'disabled', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ firstChange, currentValue }) => {\n if (!firstChange) {\n currentValue ? field.formControl.disable() : field.formControl.enable();\n }\n }));\n if (control.registerOnDisabledChange) {\n control.registerOnDisabledChange((/**\n * @param {?} value\n * @return {?}\n */\n (value) => {\n field.templateOptions['___$disabled'] = value;\n // TODO remove in V6\n field.options && field.options._markForCheck(field);\n }));\n }\n }\n /** @type {?} */\n let parent = (/** @type {?} */ (field.parent.formControl));\n if (!parent || !field.key) {\n return;\n }\n /** @type {?} */\n const paths = getKeyPath(field);\n /** @type {?} */\n const value = getFieldValue(field);\n if (!(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value\n && control instanceof FormControl) {\n control.patchValue(value);\n }\n for (let i = 0; i < (paths.length - 1); i++) {\n /** @type {?} */\n const path = paths[i];\n if (!parent.get([path])) {\n updateControl(parent, { emitEvent }, (/**\n * @return {?}\n */\n () => parent.setControl(path, new FormGroup({}))));\n }\n parent = (/** @type {?} */ (parent.get([path])));\n }\n /** @type {?} */\n const key = paths[paths.length - 1];\n if (!field._hide && parent.get([key]) !== control) {\n updateControl(parent, { emitEvent }, (/**\n * @return {?}\n */\n () => parent.setControl(key, control)));\n }\n}\n/**\n * @param {?} c\n * @param {?=} onlySelf\n * @return {?}\n */\nfunction updateValidity(c, onlySelf = false) {\n /** @type {?} */\n const status = c.status;\n /** @type {?} */\n const value = c.value;\n c.updateValueAndValidity({ emitEvent: false, onlySelf });\n if (status !== c.status) {\n ((/** @type {?} */ (c.statusChanges))).emit(c.status);\n }\n if (value !== c.value) {\n ((/** @type {?} */ (c.valueChanges))).emit(c.value);\n }\n}\n/**\n * @param {?} form\n * @param {?} opts\n * @param {?} action\n * @return {?}\n */\nfunction updateControl(form, opts, action) {\n /**\n * workaround for https://github.com/angular/angular/issues/27679\n */\n if (form instanceof FormGroup && !form['__patchForEachChild']) {\n defineHiddenProp(form, '__patchForEachChild', true);\n ((/** @type {?} */ (form)))._forEachChild = (/**\n * @param {?} cb\n * @return {?}\n */\n (cb) => {\n Object\n .keys(form.controls)\n .forEach((/**\n * @param {?} k\n * @return {?}\n */\n k => form.controls[k] && cb(form.controls[k], k)));\n });\n }\n /**\n * workaround for https://github.com/angular/angular/issues/20439\n * @type {?}\n */\n const updateValueAndValidity = form.updateValueAndValidity.bind(form);\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = (/**\n * @param {?} opts\n * @return {?}\n */\n (opts) => {\n updateValueAndValidity(Object.assign({}, (opts || {}), { emitEvent: false }));\n });\n }\n action();\n if (opts.emitEvent === false) {\n form.updateValueAndValidity = updateValueAndValidity;\n }\n}\n/**\n * @param {?} form\n * @return {?}\n */\nfunction clearControl(form) {\n form['_fields'] && delete form['_fields'];\n form.setValidators(null);\n form.setAsyncValidators(null);\n if (form instanceof FormGroup || form instanceof FormArray) {\n Object.keys(form.controls)\n .forEach((/**\n * @param {?} k\n * @return {?}\n */\n (k) => clearControl(form.controls[k])));\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyForm {\n /**\n * @param {?} formlyBuilder\n * @param {?} formlyConfig\n * @param {?} ngZone\n * @param {?} immutable\n * @param {?} parentFormGroup\n */\n constructor(formlyBuilder, formlyConfig, ngZone, \n // tslint:disable-next-line\n immutable, parentFormGroup) {\n this.formlyBuilder = formlyBuilder;\n this.formlyConfig = formlyConfig;\n this.ngZone = ngZone;\n this.parentFormGroup = parentFormGroup;\n this.modelChange = new EventEmitter();\n this.immutable = false;\n this._modelChangeValue = {};\n this.modelChangeSubs = [];\n this.modelChange$ = new Subject();\n this.modelChangeSub = this.modelChange$.pipe(switchMap((/**\n * @return {?}\n */\n () => this.ngZone.onStable.asObservable().pipe(take(1))))).subscribe((/**\n * @return {?}\n */\n () => this.ngZone.runGuarded((/**\n * @return {?}\n */\n () => {\n // runGuarded is used to keep the expression changes in-sync\n // https://github.com/ngx-formly/ngx-formly/issues/2095\n this.checkExpressionChange();\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }))));\n if (immutable !== null) {\n console.warn(`NgxFormly: passing 'immutable' attribute to 'formly-form' component is deprecated since v5.5, enable immutable mode through NgModule declaration instead.`);\n }\n this.immutable = (immutable !== null) || !!formlyConfig.extras.immutable;\n }\n /**\n * @param {?} model\n * @return {?}\n */\n set model(model) { this._model = this.immutable ? clone(model) : model; }\n /**\n * @return {?}\n */\n get model() {\n if (!this._model) {\n this._model = {};\n }\n return this._model;\n }\n /**\n * @param {?} fields\n * @return {?}\n */\n set fields(fields) { this._fields = this.immutable ? clone(fields) : fields; }\n /**\n * @return {?}\n */\n get fields() { return this._fields || []; }\n /**\n * @param {?} options\n * @return {?}\n */\n set options(options) { this._options = this.immutable ? clone(options) : options; }\n /**\n * @return {?}\n */\n get options() { return this._options; }\n /**\n * @param {?} content\n * @return {?}\n */\n set content(content) {\n if (content) {\n /** @type {?} */\n let hasContent = false;\n /** @type {?} */\n let node = content.nativeElement.nextSibling;\n while (node && !hasContent) {\n if (node.nodeType === Node.ELEMENT_NODE\n || node.nodeType === Node.TEXT_NODE && node.textContent && node.textContent.trim() !== '') {\n hasContent = true;\n }\n node = node.nextSibling;\n }\n if (hasContent) {\n console.warn(`NgxFormly: content projection for 'formly-form' component is deprecated since v5.5, you should avoid passing content inside the 'formly-form' tag.`);\n }\n }\n }\n /**\n * @return {?}\n */\n ngDoCheck() {\n if (this.formlyConfig.extras.checkExpressionOn === 'changeDetectionCheck') {\n this.checkExpressionChange();\n }\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n // https://github.com/ngx-formly/ngx-formly/issues/2294\n if (changes.model && this.field) {\n this.field.model = this.model;\n }\n if (changes.fields && this.form) {\n clearControl(this.form);\n }\n if (changes.fields || changes.form || (changes.model && this._modelChangeValue !== changes.model.currentValue)) {\n this.form = this.form || (new FormGroup({}));\n this.setOptions();\n this.options.updateInitialValue();\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.modelChangeSub.unsubscribe();\n this.clearModelSubscriptions();\n }\n /**\n * @param {?} __0\n * @return {?}\n */\n changeModel({ key, value, field }) {\n assignFieldValue(field, value);\n this.modelChange$.next();\n }\n /**\n * @return {?}\n */\n setOptions() {\n if (!this.options) {\n this.options = {};\n }\n if (!this.options.resetModel) {\n this.options.resetModel = (/**\n * @param {?=} model\n * @return {?}\n */\n (model) => {\n model = clone(isNullOrUndefined(model) ? ((/** @type {?} */ (this.options)))._initialModel : model);\n if (this.model) {\n Object.keys(this.model).forEach((/**\n * @param {?} k\n * @return {?}\n */\n k => delete this.model[k]));\n Object.assign(this.model, model || {});\n }\n ((/** @type {?} */ (this.options)))._buildForm();\n // we should call `NgForm::resetForm` to ensure changing `submitted` state after resetting form\n // but only when the current component is a root one.\n if (this.options.parentForm && this.options.parentForm.control === this.form) {\n this.options.parentForm.resetForm(this.model);\n }\n else {\n this.form.reset(this.model);\n }\n });\n }\n if (!this.options.parentForm && this.parentFormGroup) {\n defineHiddenProp(this.options, 'parentForm', this.parentFormGroup);\n wrapProperty(this.options.parentForm, 'submitted', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ firstChange }) => {\n if (!firstChange) {\n this.checkExpressionChange();\n ((/** @type {?} */ (this.options)))._markForCheck({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n }));\n }\n if (!this.options.updateInitialValue) {\n this.options.updateInitialValue = (/**\n * @return {?}\n */\n () => ((/** @type {?} */ (this.options)))._initialModel = clone(this.model));\n }\n if (!((/** @type {?} */ (this.options)))._buildForm) {\n ((/** @type {?} */ (this.options)))._buildForm = (/**\n * @param {?=} emitModelChange\n * @return {?}\n */\n (emitModelChange = false) => {\n this.clearModelSubscriptions();\n this.formlyBuilder.buildForm(this.form, this.fields, this.model, this.options);\n this.trackModelChanges(this.fields);\n if (emitModelChange) {\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }\n });\n }\n if (!((/** @type {?} */ (this.options)))._trackModelChanges) {\n ((/** @type {?} */ (this.options)))._trackModelChanges = (/**\n * @param {?=} emitModelChange\n * @return {?}\n */\n (emitModelChange = false) => {\n this.clearModelSubscriptions();\n this.trackModelChanges(this.fields);\n if (emitModelChange) {\n this.modelChange.emit(this._modelChangeValue = clone(this.model));\n }\n });\n }\n }\n /**\n * @private\n * @return {?}\n */\n checkExpressionChange() {\n if (this.options && ((/** @type {?} */ (this.options)))._checkField) {\n ((/** @type {?} */ (this.options)))._checkField({\n fieldGroup: this.fields,\n model: this.model,\n formControl: this.form,\n options: this.options,\n });\n }\n }\n /**\n * @private\n * @param {?} fields\n * @param {?=} rootKey\n * @return {?}\n */\n trackModelChanges(fields, rootKey = []) {\n fields.forEach((/**\n * @param {?} field\n * @return {?}\n */\n field => {\n if (field.key && !field.fieldGroup && field.formControl) {\n /** @type {?} */\n const control = field.formControl;\n /** @type {?} */\n let valueChanges = control.valueChanges.pipe(distinctUntilChanged((/**\n * @param {?} x\n * @param {?} y\n * @return {?}\n */\n (x, y) => {\n if (x !== y || Array.isArray(x) || isObject(x)) {\n return false;\n }\n return true;\n })));\n const { updateOn, debounce } = field.modelOptions;\n if ((!updateOn || updateOn === 'change') && debounce && debounce.default > 0) {\n valueChanges = control.valueChanges.pipe(debounceTime(debounce.default));\n }\n this.modelChangeSubs.push(valueChanges.subscribe((/**\n * @param {?} value\n * @return {?}\n */\n (value) => {\n // workaround for https://github.com/angular/angular/issues/13792\n if (control instanceof FormControl && control['_fields'] && control['_fields'].length > 1) {\n control.patchValue(value, { emitEvent: false, onlySelf: true });\n }\n if (field.parsers && field.parsers.length > 0) {\n field.parsers.forEach((/**\n * @param {?} parserFn\n * @return {?}\n */\n parserFn => value = parserFn(value)));\n }\n this.changeModel({ key: [...rootKey, ...getKeyPath(field)].join('.'), value, field });\n })));\n // workaround for v5 (https://github.com/ngx-formly/ngx-formly/issues/2061)\n /** @type {?} */\n const observers = control.valueChanges['observers'];\n if (observers && observers.length > 1) {\n observers.unshift(observers.pop());\n }\n }\n if (field.fieldGroup && field.fieldGroup.length > 0) {\n this.trackModelChanges(field.fieldGroup, field.key ? [...rootKey, ...getKeyPath(field)] : rootKey);\n }\n }));\n }\n /**\n * @private\n * @return {?}\n */\n clearModelSubscriptions() {\n this.modelChangeSubs.forEach((/**\n * @param {?} sub\n * @return {?}\n */\n sub => sub.unsubscribe()));\n this.modelChangeSubs = [];\n }\n /**\n * @private\n * @return {?}\n */\n get field() {\n return this.fields && this.fields[0] && this.fields[0].parent;\n }\n}\nFormlyForm.ɵfac = function FormlyForm_Factory(t) { return new (t || FormlyForm)(ɵngcc0.ɵɵdirectiveInject(FormlyFormBuilder), ɵngcc0.ɵɵdirectiveInject(FormlyConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵinjectAttribute('immutable'), ɵngcc0.ɵɵdirectiveInject(ɵngcc1.FormGroupDirective, 8)); };\nFormlyForm.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FormlyForm, selectors: [[\"formly-form\"]], viewQuery: function FormlyForm_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.content = _t.first);\n } }, inputs: { model: \"model\", fields: \"fields\", options: \"options\", form: \"form\" }, outputs: { modelChange: \"modelChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([FormlyFormBuilder]), ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c1, decls: 4, vars: 1, consts: [[\"hide-deprecation\", \"\", 3, \"form\", \"options\", \"model\", \"field\", 4, \"ngFor\", \"ngForOf\"], [\"content\", \"\"], [\"hide-deprecation\", \"\", 3, \"form\", \"options\", \"model\", \"field\"]], template: function FormlyForm_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, FormlyForm_formly_field_0_Template, 1, 4, \"formly-field\", 0);\n ɵngcc0.ɵɵelementContainerStart(1, null, 1);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementContainerEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.fields);\n } }, dependencies: function () { return [ɵngcc2.NgForOf, FormlyField]; }, encapsulation: 2 });\n/** @nocollapse */\nFormlyForm.ctorParameters = () => [\n { type: FormlyFormBuilder },\n { type: FormlyConfig },\n { type: NgZone },\n { type: undefined, decorators: [{ type: Attribute, args: ['immutable',] }] },\n { type: FormGroupDirective, decorators: [{ type: Optional }] }\n];\nFormlyForm.propDecorators = {\n form: [{ type: Input }],\n model: [{ type: Input }],\n fields: [{ type: Input }],\n options: [{ type: Input }],\n modelChange: [{ type: Output }],\n content: [{ type: ViewChild, args: ['content',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormlyForm, [{\n type: Component,\n args: [{\n selector: 'formly-form',\n template: `\n \n \n \n \n \n `,\n providers: [FormlyFormBuilder]\n }]\n }], function () { return [{ type: FormlyFormBuilder }, { type: FormlyConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['immutable']\n }] }, { type: ɵngcc1.FormGroupDirective, decorators: [{\n type: Optional\n }] }]; }, { modelChange: [{\n type: Output\n }], model: [{\n type: Input\n }], fields: [{\n type: Input\n }], options: [{\n type: Input\n }], content: [{\n type: ViewChild,\n args: ['content']\n }], form: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyField {\n /**\n * @param {?} formlyConfig\n * @param {?} renderer\n * @param {?} resolver\n * @param {?} elementRef\n * @param {?} hideDeprecation\n */\n constructor(formlyConfig, renderer, resolver, elementRef, \n // tslint:disable-next-line\n hideDeprecation) {\n this.formlyConfig = formlyConfig;\n this.renderer = renderer;\n this.resolver = resolver;\n this.elementRef = elementRef;\n this.warnDeprecation = false;\n this.modelChange = new EventEmitter();\n this.hostObservers = [];\n this.componentRefs = [];\n this.hooksObservers = [];\n this.detectFieldBuild = false;\n this.warnDeprecation = hideDeprecation === null;\n }\n /**\n * @param {?} m\n * @return {?}\n */\n set model(m) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n /**\n * @param {?} form\n * @return {?}\n */\n set form(form) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n /**\n * @param {?} options\n * @return {?}\n */\n set options(options) {\n this.warnDeprecation && console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`);\n }\n /**\n * @return {?}\n */\n ngAfterContentInit() {\n this.triggerHook('afterContentInit');\n }\n /**\n * @return {?}\n */\n ngAfterContentChecked() {\n this.triggerHook('afterContentChecked');\n }\n /**\n * @return {?}\n */\n ngAfterViewInit() {\n this.triggerHook('afterViewInit');\n }\n /**\n * @return {?}\n */\n ngAfterViewChecked() {\n this.triggerHook('afterViewChecked');\n }\n /**\n * @return {?}\n */\n ngDoCheck() {\n this.triggerHook('doCheck');\n if (this.detectFieldBuild && (this.field && this.field.options)) {\n this.render();\n }\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.triggerHook('onInit');\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n this.triggerHook('onChanges', changes);\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.resetRefs(this.field);\n this.hostObservers.forEach((/**\n * @param {?} unsubscribe\n * @return {?}\n */\n unsubscribe => unsubscribe()));\n this.hooksObservers.forEach((/**\n * @param {?} unsubscribe\n * @return {?}\n */\n unsubscribe => unsubscribe()));\n this.triggerHook('onDestroy');\n }\n /**\n * @private\n * @param {?} containerRef\n * @param {?} f\n * @param {?=} wrappers\n * @return {?}\n */\n renderField(containerRef, f, wrappers = []) {\n if (this.containerRef === containerRef) {\n this.resetRefs(this.field);\n this.containerRef.clear();\n wrappers = this.field ? this.field.wrappers : [];\n }\n if (wrappers && wrappers.length > 0) {\n const [wrapper, ...wps] = wrappers;\n const { component } = this.formlyConfig.getWrapper(wrapper);\n /** @type {?} */\n const ref = containerRef.createComponent(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n wrapProperty(ref.instance, 'fieldComponent', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ firstChange, previousValue, currentValue }) => {\n if (currentValue) {\n if (previousValue && previousValue['_lContainer'] === currentValue['_lContainer']) {\n return;\n }\n /** @type {?} */\n const viewRef = previousValue ? previousValue.detach() : null;\n if (viewRef && !viewRef.destroyed) {\n currentValue.insert(viewRef);\n }\n else {\n this.renderField(currentValue, f, wps);\n }\n !firstChange && ref.changeDetectorRef.detectChanges();\n }\n }));\n }\n else if (f && f.type) {\n const { component } = this.formlyConfig.getType(f.type);\n /** @type {?} */\n const ref = containerRef.createComponent(this.resolver.resolveComponentFactory(component));\n this.attachComponentRef(ref, f);\n }\n }\n /**\n * @private\n * @param {?} name\n * @param {?=} changes\n * @return {?}\n */\n triggerHook(name, changes) {\n if (this.field && this.field.hooks && this.field.hooks[name]) {\n if (!changes || changes.field) {\n /** @type {?} */\n const r = this.field.hooks[name](this.field);\n if (isObservable(r) && ['onInit', 'afterContentInit', 'afterViewInit'].indexOf(name) !== -1) {\n /** @type {?} */\n const sub = r.subscribe();\n this.hooksObservers.push((/**\n * @return {?}\n */\n () => sub.unsubscribe()));\n }\n }\n }\n if (this.field && this.field.lifecycle && this.field.lifecycle[name]) {\n this.field.lifecycle[name](this.field.form, this.field, this.field.model, this.field.options);\n }\n if (name === 'onChanges' && changes.field) {\n this.resetRefs(changes.field.previousValue);\n this.render();\n }\n }\n /**\n * @private\n * @template T\n * @param {?} ref\n * @param {?} field\n * @return {?}\n */\n attachComponentRef(ref, field) {\n this.componentRefs.push(ref);\n field._componentRefs.push(ref);\n Object.assign(ref.instance, { field });\n }\n /**\n * @private\n * @return {?}\n */\n render() {\n if (!this.field) {\n return;\n }\n // require Formly build\n if (!this.field.options) {\n this.detectFieldBuild = true;\n return;\n }\n this.detectFieldBuild = false;\n this.hostObservers.forEach((/**\n * @param {?} unsubscribe\n * @return {?}\n */\n unsubscribe => unsubscribe()));\n this.hostObservers = [\n wrapProperty(this.field, 'hide', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ firstChange, currentValue }) => {\n if (!firstChange || (firstChange && currentValue)) {\n this.renderer.setStyle(this.elementRef.nativeElement, 'display', currentValue ? 'none' : '');\n }\n if (!this.formlyConfig.extras.lazyRender) {\n firstChange && this.renderField(this.containerRef, this.field);\n }\n else {\n if (currentValue) {\n this.containerRef.clear();\n if (this.field.className) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'class');\n }\n }\n else {\n this.renderField(this.containerRef, this.field);\n if (this.field.className) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'class', this.field.className);\n }\n }\n }\n })),\n wrapProperty(this.field, 'className', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ firstChange, currentValue }) => {\n if ((!firstChange || (firstChange && currentValue))\n && (!this.formlyConfig.extras.lazyRender || (this.field.hide !== true))) {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'class', currentValue);\n }\n })),\n ];\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n resetRefs(field) {\n if (field) {\n if (field._componentRefs) {\n field._componentRefs = field._componentRefs.filter((/**\n * @param {?} ref\n * @return {?}\n */\n ref => this.componentRefs.indexOf(ref) === -1));\n }\n else {\n defineHiddenProp(this.field, '_componentRefs', []);\n }\n }\n this.componentRefs = [];\n }\n}\nFormlyField.ɵfac = function FormlyField_Factory(t) { return new (t || FormlyField)(ɵngcc0.ɵɵdirectiveInject(FormlyConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵinjectAttribute('hide-deprecation')); };\nFormlyField.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FormlyField, selectors: [[\"formly-field\"]], viewQuery: function FormlyField_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c2, 7, ViewContainerRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.containerRef = _t.first);\n } }, inputs: { model: \"model\", form: \"form\", options: \"options\", field: \"field\" }, outputs: { modelChange: \"modelChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 0, consts: [[\"container\", \"\"]], template: function FormlyField_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, FormlyField_ng_template_0_Template, 0, 0, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n } }, encapsulation: 2 });\n/** @nocollapse */\nFormlyField.ctorParameters = () => [\n { type: FormlyConfig },\n { type: Renderer2 },\n { type: ComponentFactoryResolver },\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Attribute, args: ['hide-deprecation',] }] }\n];\nFormlyField.propDecorators = {\n field: [{ type: Input }],\n model: [{ type: Input }],\n form: [{ type: Input }],\n options: [{ type: Input }],\n modelChange: [{ type: Output }],\n containerRef: [{ type: ViewChild, args: ['container', (/** @type {?} */ ({ read: ViewContainerRef, static: true })),] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormlyField, [{\n type: Component,\n args: [{\n selector: 'formly-field',\n template: ``\n }]\n }], function () { return [{ type: FormlyConfig }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['hide-deprecation']\n }] }]; }, { modelChange: [{\n type: Output\n }], model: [{\n type: Input\n }], form: [{\n type: Input\n }], options: [{\n type: Input\n }], field: [{\n type: Input\n }], containerRef: [{\n type: ViewChild,\n args: ['container', ( /** @type {?} */({ read: ViewContainerRef, static: true }))]\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyAttributes {\n /**\n * @param {?} renderer\n * @param {?} elementRef\n * @param {?} _document\n */\n constructor(renderer, elementRef, _document) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.uiAttributesCache = {};\n this.uiAttributes = null;\n /**\n * HostBinding doesn't register listeners conditionally which may produce some perf issues.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1991\n */\n this.uiEvents = {\n listeners: [],\n events: ['click', 'keyup', 'keydown', 'keypress', 'focus', 'blur', 'change'],\n callback: (/**\n * @param {?} eventName\n * @param {?} $event\n * @return {?}\n */\n (eventName, $event) => {\n switch (eventName) {\n case 'focus':\n return this.onFocus($event);\n case 'blur':\n return this.onBlur($event);\n case 'change':\n return this.onChange($event);\n default:\n return this.to[eventName](this.field, $event);\n }\n }),\n };\n this.document = _document;\n }\n /**\n * @return {?}\n */\n get to() { return this.field.templateOptions || {}; }\n /**\n * @private\n * @return {?}\n */\n get fieldAttrElements() { return (this.field && this.field['_elementRefs']) || []; }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.field) {\n this.field.name && this.setAttribute('name', this.field.name);\n this.uiEvents.listeners.forEach((/**\n * @param {?} listener\n * @return {?}\n */\n (listener) => listener()));\n this.uiEvents.events.forEach((/**\n * @param {?} eventName\n * @return {?}\n */\n (eventName) => {\n if ((this.to && this.to[eventName]) || ['focus', 'blur', 'change'].indexOf(eventName) !== -1) {\n this.uiEvents.listeners.push(this.renderer.listen(this.elementRef.nativeElement, eventName, (/**\n * @param {?} e\n * @return {?}\n */\n (e) => this.uiEvents.callback(eventName, e))));\n }\n }));\n if (this.to && this.to.attributes) {\n wrapProperty(this.to, 'attributes', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ currentValue, previousValue }) => {\n if (previousValue) {\n Object.keys(previousValue).forEach((/**\n * @param {?} attr\n * @return {?}\n */\n attr => this.removeAttribute(attr)));\n }\n if (currentValue) {\n Object.keys(currentValue).forEach((/**\n * @param {?} attr\n * @return {?}\n */\n attr => {\n if (currentValue[attr] != null) {\n this.setAttribute(attr, currentValue[attr]);\n }\n }));\n }\n }));\n }\n this.detachElementRef(changes.field.previousValue);\n this.attachElementRef(changes.field.currentValue);\n if (this.fieldAttrElements.length === 1) {\n !this.id && this.field.id && this.setAttribute('id', this.field.id);\n wrapProperty(this.field, 'focus', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ currentValue }) => {\n this.toggleFocus(currentValue);\n }));\n }\n }\n if (changes.id) {\n this.setAttribute('id', this.id);\n }\n }\n /**\n * We need to re-evaluate all the attributes on every change detection cycle, because\n * by using a HostBinding we run into certain edge cases. This means that whatever logic\n * is in here has to be super lean or we risk seriously damaging or destroying the performance.\n *\n * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1317\n * Material issue: https://github.com/angular/components/issues/14024\n * @return {?}\n */\n ngDoCheck() {\n if (!this.uiAttributes) {\n /** @type {?} */\n const element = (/** @type {?} */ (this.elementRef.nativeElement));\n this.uiAttributes = [...FORMLY_VALIDATORS, 'tabindex', 'placeholder', 'readonly', 'disabled', 'step'].filter((/**\n * @param {?} attr\n * @return {?}\n */\n (attr) => !element.hasAttribute || !element.hasAttribute(attr)));\n }\n this.uiAttributes.forEach((/**\n * @param {?} attr\n * @return {?}\n */\n attr => {\n /** @type {?} */\n const value = this.to[attr];\n if (this.uiAttributesCache[attr] !== value\n && (!this.to.attributes || !this.to.attributes.hasOwnProperty(attr.toLowerCase()))) {\n this.uiAttributesCache[attr] = value;\n if (value || value === 0) {\n this.setAttribute(attr, value === true ? attr : `${value}`);\n }\n else {\n this.removeAttribute(attr);\n }\n }\n }));\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.uiEvents.listeners.forEach((/**\n * @param {?} listener\n * @return {?}\n */\n listener => listener()));\n this.detachElementRef(this.field);\n }\n /**\n * @param {?} value\n * @return {?}\n */\n toggleFocus(value) {\n /** @type {?} */\n const element = this.fieldAttrElements ? this.fieldAttrElements[0] : null;\n if (!element || !element.nativeElement.focus) {\n return;\n }\n /** @type {?} */\n const isFocused = !!this.document.activeElement\n && this.fieldAttrElements\n .some((/**\n * @param {?} __0\n * @return {?}\n */\n ({ nativeElement }) => this.document.activeElement === nativeElement || nativeElement.contains(this.document.activeElement)));\n if (value && !isFocused) {\n Promise.resolve().then((/**\n * @return {?}\n */\n () => element.nativeElement.focus()));\n }\n else if (!value && isFocused) {\n Promise.resolve().then((/**\n * @return {?}\n */\n () => element.nativeElement.blur()));\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onFocus($event) {\n this.field['___$focus'] = true;\n if (this.to.focus) {\n this.to.focus(this.field, $event);\n }\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onBlur($event) {\n this.field['___$focus'] = false;\n if (this.to.blur) {\n this.to.blur(this.field, $event);\n }\n }\n // handle custom `change` event, for regular ones rely on DOM listener\n /**\n * @param {?} $event\n * @return {?}\n */\n onHostChange($event) {\n if ($event instanceof Event) {\n return;\n }\n this.onChange($event);\n }\n /**\n * @param {?} $event\n * @return {?}\n */\n onChange($event) {\n if (this.to.change) {\n this.to.change(this.field, $event);\n }\n if (this.field.formControl) {\n this.field.formControl.markAsDirty();\n }\n }\n /**\n * @private\n * @param {?} f\n * @return {?}\n */\n attachElementRef(f) {\n if (!f) {\n return;\n }\n if (f['_elementRefs'] && f['_elementRefs'].indexOf(this.elementRef) === -1) {\n f['_elementRefs'].push(this.elementRef);\n }\n else {\n defineHiddenProp(f, '_elementRefs', [this.elementRef]);\n }\n }\n /**\n * @private\n * @param {?} f\n * @return {?}\n */\n detachElementRef(f) {\n /** @type {?} */\n const index = f && f['_elementRefs'] ? this.fieldAttrElements.indexOf(this.elementRef) : -1;\n if (index !== -1) {\n this.field['_elementRefs'].splice(index, 1);\n }\n }\n /**\n * @private\n * @param {?} attr\n * @param {?} value\n * @return {?}\n */\n setAttribute(attr, value) {\n this.renderer.setAttribute(this.elementRef.nativeElement, attr, value);\n }\n /**\n * @private\n * @param {?} attr\n * @return {?}\n */\n removeAttribute(attr) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, attr);\n }\n}\nFormlyAttributes.ɵfac = function FormlyAttributes_Factory(t) { return new (t || FormlyAttributes)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nFormlyAttributes.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FormlyAttributes, selectors: [[\"\", \"formlyAttributes\", \"\"]], hostBindings: function FormlyAttributes_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function FormlyAttributes_change_HostBindingHandler($event) { return ctx.onHostChange($event); });\n } }, inputs: { field: [\"formlyAttributes\", \"field\"], id: \"id\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nFormlyAttributes.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nFormlyAttributes.propDecorators = {\n field: [{ type: Input, args: ['formlyAttributes',] }],\n id: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormlyAttributes, [{\n type: Directive,\n args: [{\n selector: '[formlyAttributes]',\n host: {\n '(change)': 'onHostChange($event)'\n }\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { field: [{\n type: Input,\n args: ['formlyAttributes']\n }], id: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n * @template F\n */\nclass FieldType {\n /**\n * @return {?}\n */\n get model() { return this.field.model; }\n /**\n * @param {?} m\n * @return {?}\n */\n set model(m) { console.warn(`NgxFormly: passing 'model' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n /**\n * @return {?}\n */\n get form() { return (/** @type {?} */ (this.field.parent.formControl)); }\n /**\n * @param {?} form\n * @return {?}\n */\n set form(form) { console.warn(`NgxFormly: passing 'form' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n /**\n * @return {?}\n */\n get options() { return this.field.options; }\n /**\n * @param {?} options\n * @return {?}\n */\n set options(options) { console.warn(`NgxFormly: passing 'options' input to '${this.constructor.name}' component is not required anymore, you may remove it!`); }\n /**\n * @return {?}\n */\n get key() { return this.field.key; }\n /**\n * @return {?}\n */\n get formControl() { return (/** @type {?} */ (this.field.formControl)); }\n /**\n * @return {?}\n */\n get to() { return this.field.templateOptions || {}; }\n /**\n * @return {?}\n */\n get showError() { return this.options.showError(this); }\n /**\n * @return {?}\n */\n get id() { return this.field.id; }\n /**\n * @return {?}\n */\n get formState() { return this.options.formState || {}; }\n}\nFieldType.ɵfac = function FieldType_Factory(t) { return new (t || FieldType)(); };\nFieldType.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FieldType, inputs: { model: \"model\", form: \"form\", options: \"options\", field: \"field\" } });\nFieldType.propDecorators = {\n field: [{ type: Input }],\n model: [{ type: Input }],\n form: [{ type: Input }],\n options: [{ type: Input }]\n};\n\n/**\n * @deprecated use `FieldType` instead\n * @abstract\n */\nclass Field extends FieldType {\n constructor() {\n super();\n console.warn(`NgxFormly: 'Field' has been renamed to 'FieldType', extend 'FieldType' instead.`);\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n// TODO remove `selector` in V6\n// tslint:disable-next-line\n/**\n * @abstract\n * @template F\n */\nclass FieldArrayType extends FieldType {\n /**\n * @param {?=} builder\n */\n constructor(builder) {\n super();\n this.defaultOptions = {\n defaultValue: [],\n };\n if (builder instanceof FormlyFormBuilder) {\n console.warn(`NgxFormly: passing 'FormlyFormBuilder' to '${this.constructor.name}' type is not required anymore, you may remove it!`);\n }\n }\n /**\n * @return {?}\n */\n get formControl() {\n return (/** @type {?} */ (this.field.formControl));\n }\n /**\n * @param {?} field\n * @return {?}\n */\n onPopulate(field) {\n if (!field.formControl && field.key) {\n /** @type {?} */\n const control = findControl(field);\n registerControl(field, control ? control : new FormArray([], { updateOn: field.modelOptions.updateOn }));\n }\n field.fieldGroup = field.fieldGroup || [];\n /** @type {?} */\n const length = field.model ? field.model.length : 0;\n if (field.fieldGroup.length > length) {\n for (let i = field.fieldGroup.length - 1; i >= length; --i) {\n unregisterControl(field.fieldGroup[i], true);\n field.fieldGroup.splice(i, 1);\n }\n }\n for (let i = field.fieldGroup.length; i < length; i++) {\n /** @type {?} */\n const f = Object.assign({}, clone(field.fieldArray), { key: `${i}` });\n field.fieldGroup.push(f);\n }\n }\n /**\n * @param {?=} i\n * @param {?=} initialModel\n * @param {?=} __2\n * @return {?}\n */\n add(i, initialModel, { markAsDirty } = { markAsDirty: true }) {\n i = isNullOrUndefined(i) ? this.field.fieldGroup.length : i;\n if (!this.model) {\n assignFieldValue(this.field, []);\n }\n this.model.splice(i, 0, initialModel ? clone(initialModel) : undefined);\n this._build();\n markAsDirty && this.formControl.markAsDirty();\n }\n /**\n * @param {?} i\n * @param {?=} __1\n * @return {?}\n */\n remove(i, { markAsDirty } = { markAsDirty: true }) {\n this.model.splice(i, 1);\n unregisterControl(this.field.fieldGroup[i], true);\n this.field.fieldGroup.splice(i, 1);\n this.field.fieldGroup.forEach((/**\n * @param {?} f\n * @param {?} key\n * @return {?}\n */\n (f, key) => f.key = `${key}`));\n this._build();\n markAsDirty && this.formControl.markAsDirty();\n }\n /**\n * @private\n * @return {?}\n */\n _build() {\n ((/** @type {?} */ (this.options)))._buildField(this.field);\n ((/** @type {?} */ (this.options)))._trackModelChanges(true);\n }\n}\nFieldArrayType.ɵfac = function FieldArrayType_Factory(t) { return new (t || FieldArrayType)(ɵngcc0.ɵɵdirectiveInject(FORMLY_CONFIG, 8)); };\nFieldArrayType.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FieldArrayType, selectors: [[\"fieldArray\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\n/** @nocollapse */\nFieldArrayType.ctorParameters = () => [\n { type: FormlyFormBuilder, decorators: [{ type: Inject, args: [FORMLY_CONFIG,] }, { type: Optional }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FieldArrayType, [{\n type: Directive,\n args: [{ selector: '[ɵfieldArray]' }]\n }], function () { return [{ type: FormlyFormBuilder, decorators: [{\n type: Inject,\n args: [FORMLY_CONFIG]\n }, {\n type: Optional\n }] }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @abstract\n * @template F\n */\nclass FieldWrapper extends FieldType {\n}\nFieldWrapper.ɵfac = /*@__PURE__*/ function () { let ɵFieldWrapper_BaseFactory; return function FieldWrapper_Factory(t) { return (ɵFieldWrapper_BaseFactory || (ɵFieldWrapper_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(FieldWrapper)))(t || FieldWrapper); }; }();\nFieldWrapper.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: FieldWrapper, viewQuery: function FieldWrapper_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c3, 5, ViewContainerRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.fieldComponent = _t.first);\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nFieldWrapper.propDecorators = {\n fieldComponent: [{ type: ViewChild, args: ['fieldComponent', (/** @type {?} */ ({ read: ViewContainerRef, static: false })),] }]\n};\n\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyGroup extends FieldType {\n constructor() {\n super(...arguments);\n this.defaultOptions = {\n defaultValue: {},\n };\n }\n}\nFormlyGroup.ɵfac = /*@__PURE__*/ function () { let ɵFormlyGroup_BaseFactory; return function FormlyGroup_Factory(t) { return (ɵFormlyGroup_BaseFactory || (ɵFormlyGroup_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(FormlyGroup)))(t || FormlyGroup); }; }();\nFormlyGroup.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FormlyGroup, selectors: [[\"formly-group\"]], hostVars: 2, hostBindings: function FormlyGroup_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassMap(ctx.field.fieldGroupClassName || \"\");\n } }, features: [ɵngcc0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1, decls: 2, vars: 1, consts: [[3, \"field\", 4, \"ngFor\", \"ngForOf\"], [3, \"field\"]], template: function FormlyGroup_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, FormlyGroup_formly_field_0_Template, 1, 1, \"formly-field\", 0);\n ɵngcc0.ɵɵprojection(1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.field.fieldGroup);\n } }, dependencies: [ɵngcc2.NgForOf, FormlyField], encapsulation: 2 });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormlyGroup, [{\n type: Component,\n args: [{\n selector: 'formly-group',\n template: `\n \n \n `,\n host: {\n '[class]': 'field.fieldGroupClassName || \"\"'\n }\n }]\n }], null, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyValidationMessage {\n /**\n * @param {?} formlyConfig\n */\n constructor(formlyConfig) {\n this.formlyConfig = formlyConfig;\n }\n /**\n * @return {?}\n */\n ngOnChanges() {\n /** @type {?} */\n const EXPR_VALIDATORS = FORMLY_VALIDATORS.map((/**\n * @param {?} v\n * @return {?}\n */\n v => `templateOptions.${v}`));\n this.errorMessage$ = merge(this.field.formControl.statusChanges, (!this.field.options\n ? of(null)\n : this.field.options.fieldChanges.pipe(filter((/**\n * @param {?} __0\n * @return {?}\n */\n ({ field, type, property }) => {\n return (field === this.field)\n && (type === 'expressionChanges')\n && ((property.indexOf('validation') !== -1)\n || (EXPR_VALIDATORS.indexOf(property) !== -1));\n }))))).pipe(startWith(null), switchMap((/**\n * @return {?}\n */\n () => isObservable(this.errorMessage)\n ? this.errorMessage\n : of(this.errorMessage))));\n }\n /**\n * @return {?}\n */\n get errorMessage() {\n /** @type {?} */\n const fieldForm = this.field.formControl;\n for (let error in fieldForm.errors) {\n if (fieldForm.errors.hasOwnProperty(error)) {\n /** @type {?} */\n let message = this.formlyConfig.getValidatorMessage(error);\n if (isObject(fieldForm.errors[error])) {\n if (fieldForm.errors[error].errorPath) {\n return;\n }\n if (fieldForm.errors[error].message) {\n message = fieldForm.errors[error].message;\n }\n }\n if (this.field.validation && this.field.validation.messages && this.field.validation.messages[error]) {\n message = this.field.validation.messages[error];\n }\n if (this.field.validators && this.field.validators[error] && this.field.validators[error].message) {\n message = this.field.validators[error].message;\n }\n if (this.field.asyncValidators && this.field.asyncValidators[error] && this.field.asyncValidators[error].message) {\n message = this.field.asyncValidators[error].message;\n }\n if (typeof message === 'function') {\n return message(fieldForm.errors[error], this.field);\n }\n return message;\n }\n }\n }\n}\nFormlyValidationMessage.ɵfac = function FormlyValidationMessage_Factory(t) { return new (t || FormlyValidationMessage)(ɵngcc0.ɵɵdirectiveInject(FormlyConfig)); };\nFormlyValidationMessage.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FormlyValidationMessage, selectors: [[\"formly-validation-message\"]], inputs: { field: \"field\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 2, vars: 3, template: function FormlyValidationMessage_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n ɵngcc0.ɵɵpipe(1, \"async\");\n } if (rf & 2) {\n ɵngcc0.ɵɵtextInterpolate(ɵngcc0.ɵɵpipeBind1(1, 1, ctx.errorMessage$));\n } }, dependencies: [ɵngcc2.AsyncPipe], encapsulation: 2, changeDetection: 0 });\n/** @nocollapse */\nFormlyValidationMessage.ctorParameters = () => [\n { type: FormlyConfig }\n];\nFormlyValidationMessage.propDecorators = {\n field: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormlyValidationMessage, [{\n type: Component,\n args: [{\n selector: 'formly-validation-message',\n template: `{{ errorMessage$ | async }}`,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: FormlyConfig }]; }, { field: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass FormlyTemplateType extends FieldType {\n /**\n * @param {?} sanitizer\n */\n constructor(sanitizer) {\n super();\n this.sanitizer = sanitizer;\n this.innerHtml = { content: null, template: null };\n }\n /**\n * @return {?}\n */\n get template() {\n if (this.field && (this.field.template !== this.innerHtml.template)) {\n this.innerHtml = {\n template: this.field.template,\n content: this.to.safeHtml\n ? this.sanitizer.bypassSecurityTrustHtml(this.field.template)\n : this.field.template,\n };\n }\n return this.innerHtml.content;\n }\n}\nFormlyTemplateType.ɵfac = function FormlyTemplateType_Factory(t) { return new (t || FormlyTemplateType)(ɵngcc0.ɵɵdirectiveInject(ɵngcc3.DomSanitizer)); };\nFormlyTemplateType.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: FormlyTemplateType, selectors: [[\"formly-template\"]], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [[3, \"innerHtml\"]], template: function FormlyTemplateType_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"innerHtml\", ctx.template, ɵngcc0.ɵɵsanitizeHtml);\n } }, encapsulation: 2 });\n/** @nocollapse */\nFormlyTemplateType.ctorParameters = () => [\n { type: DomSanitizer }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormlyTemplateType, [{\n type: Component,\n args: [{\n selector: 'formly-template',\n template: `
`\n }]\n }], function () { return [{ type: ɵngcc3.DomSanitizer }]; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} expression\n * @param {?} argNames\n * @return {?}\n */\nfunction evalStringExpression(expression, argNames) {\n try {\n if (expression.indexOf('this.field') !== -1) {\n console.warn(`NgxFormly: using 'this.field' in expressionProperties is deprecated since v5.1, use 'field' instead.`);\n }\n return (/** @type {?} */ (Function(...argNames, `return ${expression};`)));\n }\n catch (error) {\n console.error(error);\n }\n}\n/**\n * @param {?} expression\n * @param {?} thisArg\n * @param {?} argVal\n * @return {?}\n */\nfunction evalExpression(expression, thisArg, argVal) {\n if (expression instanceof Function) {\n return expression.apply(thisArg, argVal);\n }\n else {\n return expression ? true : false;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@experimental\n */\nclass FieldExpressionExtension {\n /**\n * @param {?} field\n * @return {?}\n */\n prePopulate(field) {\n if (field.parent || field.options._checkField) {\n return;\n }\n /** @type {?} */\n let checkLocked = false;\n field.options._checkField = (/**\n * @param {?} f\n * @param {?} ignoreCache\n * @return {?}\n */\n (f, ignoreCache) => {\n if (!checkLocked) {\n checkLocked = true;\n this.checkField(f, ignoreCache);\n checkLocked = false;\n }\n });\n }\n /**\n * @param {?} field\n * @return {?}\n */\n postPopulate(field) {\n if (!field.parent || field._expressionProperties) {\n return;\n }\n // cache built expression\n defineHiddenProp(field, '_expressionProperties', {});\n if (field.expressionProperties) {\n for (const key in field.expressionProperties) {\n /** @type {?} */\n const expressionProperty = field.expressionProperties[key];\n if (typeof expressionProperty === 'string' || isFunction(expressionProperty)) {\n field._expressionProperties[key] = {\n expression: this._evalExpression(key, expressionProperty, key === 'templateOptions.disabled' && field.parent.expressionProperties && field.parent.expressionProperties.hasOwnProperty('templateOptions.disabled')\n ? (/**\n * @return {?}\n */\n () => field.parent.templateOptions.disabled)\n : undefined),\n };\n if (key === 'templateOptions.disabled') {\n Object.defineProperty(field._expressionProperties[key], 'expressionValue', {\n get: (/**\n * @return {?}\n */\n () => field.templateOptions.disabled),\n set: (/**\n * @return {?}\n */\n () => { }),\n enumerable: true,\n configurable: true,\n });\n }\n }\n else if (expressionProperty instanceof Observable) {\n /** @type {?} */\n const subscribe = (/**\n * @return {?}\n */\n () => ((/** @type {?} */ (expressionProperty)))\n .subscribe((/**\n * @param {?} v\n * @return {?}\n */\n v => {\n this.setExprValue(field, key, v);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n })));\n /** @type {?} */\n let subscription = subscribe();\n /** @type {?} */\n const onInit = field.hooks.onInit;\n field.hooks.onInit = (/**\n * @return {?}\n */\n () => {\n if (subscription === null) {\n subscription = subscribe();\n }\n return onInit && onInit(field);\n });\n /** @type {?} */\n const onDestroy = field.hooks.onDestroy;\n field.hooks.onDestroy = (/**\n * @return {?}\n */\n () => {\n onDestroy && onDestroy(field);\n subscription.unsubscribe();\n subscription = null;\n });\n }\n }\n }\n if (field.hideExpression) {\n // delete hide value in order to force re-evaluate it in FormlyFormExpression.\n delete field.hide;\n field.hideExpression = this._evalExpression('hide', field.hideExpression, (/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n let root = field.parent;\n while (root.parent && !root.hide) {\n root = root.parent;\n }\n return root.hide;\n }));\n }\n else {\n wrapProperty(field, 'hide', (/**\n * @param {?} __0\n * @return {?}\n */\n ({ currentValue, firstChange }) => {\n field._hide = currentValue;\n if (!firstChange || (firstChange && currentValue === true)) {\n field.options._hiddenFieldsForCheck.push(field);\n }\n }));\n }\n }\n /**\n * @private\n * @param {?} prop\n * @param {?} expression\n * @param {?=} parentExpression\n * @return {?}\n */\n _evalExpression(prop, expression, parentExpression) {\n return (/**\n * @param {...?} args\n * @return {?}\n */\n (...args) => {\n try {\n if (typeof expression === 'string') {\n expression = evalStringExpression(expression, ['model', 'formState', 'field']);\n }\n if (typeof expression !== 'function') {\n expression = (/**\n * @return {?}\n */\n () => !!expression);\n }\n return (parentExpression && parentExpression()) || expression(...args);\n }\n catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n });\n }\n /**\n * @private\n * @param {?} field\n * @param {?} prop\n * @return {?}\n */\n _evalExpressionPath(field, prop) {\n if (field._expressionProperties[prop] && field._expressionProperties[prop].expressionPaths) {\n return field._expressionProperties[prop].expressionPaths;\n }\n /** @type {?} */\n let paths = [];\n if (prop.indexOf('[') === -1) {\n paths = prop.split('.');\n }\n else {\n prop\n .split(/[[\\]]{1,2}/) // https://stackoverflow.com/a/20198206\n .filter((/**\n * @param {?} p\n * @return {?}\n */\n p => p))\n .forEach(((/**\n * @param {?} path\n * @return {?}\n */\n path => {\n /** @type {?} */\n const arrayPath = path.match(/['|\"](.*?)['|\"]/);\n if (arrayPath) {\n paths.push(arrayPath[1]);\n }\n else {\n paths.push(...path.split('.').filter((/**\n * @param {?} p\n * @return {?}\n */\n p => p)));\n }\n })));\n }\n if (field._expressionProperties[prop]) {\n field._expressionProperties[prop].expressionPaths = paths;\n }\n return paths;\n }\n /**\n * @private\n * @param {?} field\n * @param {?=} ignoreCache\n * @return {?}\n */\n checkField(field, ignoreCache = false) {\n /** @type {?} */\n const fieldChanged = this._checkField(field, ignoreCache);\n field.options._hiddenFieldsForCheck\n .sort((/**\n * @param {?} f\n * @return {?}\n */\n f => f.hide ? -1 : 1))\n .forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => this.toggleFormControl(f, !!f.hide, !ignoreCache)));\n field.options._hiddenFieldsForCheck = [];\n if (fieldChanged) {\n this.checkField(field);\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n }\n }\n /**\n * @private\n * @param {?} field\n * @param {?=} ignoreCache\n * @return {?}\n */\n _checkField(field, ignoreCache = false) {\n /** @type {?} */\n let fieldChanged = false;\n field.fieldGroup.forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => {\n if (!f.options) {\n return;\n }\n this.checkFieldExpressionChange(f, ignoreCache) && (fieldChanged = true);\n if (this.checkFieldVisibilityChange(f, ignoreCache)) {\n field.options._hiddenFieldsForCheck.push(f);\n fieldChanged = true;\n }\n if (f.fieldGroup && f.fieldGroup.length > 0) {\n this._checkField(f, ignoreCache) && (fieldChanged = true);\n }\n }));\n return fieldChanged;\n }\n /**\n * @private\n * @param {?} field\n * @param {?} ignoreCache\n * @return {?}\n */\n checkFieldExpressionChange(field, ignoreCache) {\n if (!field || !field._expressionProperties) {\n return false;\n }\n /** @type {?} */\n let markForCheck = false;\n /** @type {?} */\n const expressionProperties = field._expressionProperties;\n for (const key in expressionProperties) {\n /** @type {?} */\n let expressionValue = evalExpression(expressionProperties[key].expression, { field }, [field.model, field.options.formState, field, ignoreCache]);\n if (key === 'templateOptions.disabled') {\n expressionValue = !!expressionValue;\n }\n if (ignoreCache || (expressionProperties[key].expressionValue !== expressionValue\n && (!(isObject(expressionValue) || isFunction(expressionValue))\n || (isFunction(expressionValue)\n && ('' + expressionProperties[key].expressionValue !== '' + expressionValue))\n || isObservable(expressionValue)\n || JSON.stringify(expressionValue) !== JSON.stringify(expressionProperties[key].expressionValue)))) {\n markForCheck = true;\n expressionProperties[key].expressionValue = expressionValue;\n this.setExprValue(field, key, expressionValue);\n }\n }\n return markForCheck;\n }\n /**\n * @private\n * @param {?} field\n * @param {?} ignoreCache\n * @return {?}\n */\n checkFieldVisibilityChange(field, ignoreCache) {\n if (!field || isNullOrUndefined(field.hideExpression)) {\n return false;\n }\n /** @type {?} */\n const hideExpressionResult = !!evalExpression(field.hideExpression, { field }, [field.model, field.options.formState, field, ignoreCache]);\n /** @type {?} */\n let markForCheck = false;\n if (hideExpressionResult !== field.hide || ignoreCache) {\n markForCheck = true;\n // toggle hide\n field.hide = hideExpressionResult;\n field.templateOptions.hidden = hideExpressionResult;\n }\n return markForCheck;\n }\n /**\n * @private\n * @param {?} field\n * @param {?} value\n * @return {?}\n */\n setDisabledState(field, value) {\n if (field.fieldGroup) {\n field.fieldGroup\n .filter((/**\n * @param {?} f\n * @return {?}\n */\n f => !f.expressionProperties || !f.expressionProperties.hasOwnProperty('templateOptions.disabled')))\n .forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => this.setDisabledState(f, value)));\n }\n if (field.key && field.templateOptions.disabled !== value) {\n field.templateOptions.disabled = value;\n }\n }\n /**\n * @private\n * @param {?} field\n * @param {?} hide\n * @param {?} resetOnHide\n * @return {?}\n */\n toggleFormControl(field, hide, resetOnHide) {\n if (field.fieldGroup) {\n field.fieldGroup\n .filter((/**\n * @param {?} f\n * @return {?}\n */\n f => !f.hideExpression))\n .forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => this.toggleFormControl(f, hide, resetOnHide)));\n }\n if (field.formControl && field.key) {\n defineHiddenProp(field, '_hide', !!(hide || field.hide));\n /** @type {?} */\n const c = field.formControl;\n if (c['_fields'] && c['_fields'].length > 1) {\n updateValidity(c);\n }\n if (hide === true && (!c['_fields'] || c['_fields'].every((/**\n * @param {?} f\n * @return {?}\n */\n f => !!f._hide)))) {\n unregisterControl(field, true);\n if (resetOnHide && field.resetOnHide) {\n field.formControl.reset({ value: undefined, disabled: field.formControl.disabled });\n if (field.fieldGroup) {\n assignFieldValue(field, undefined);\n if (field.formControl instanceof FormArray) {\n field.fieldGroup.length = 0;\n }\n }\n }\n }\n else if (hide === false) {\n if (field.resetOnHide && field.parent && !isUndefined(field.defaultValue) && isUndefined(getFieldValue(field))) {\n assignFieldValue(field, field.defaultValue);\n }\n registerControl(field, undefined, true);\n if (field.resetOnHide && field.fieldArray && (field.fieldGroup || []).length !== (field.model || []).length) {\n ((/** @type {?} */ (field.options)))._buildForm(true);\n }\n }\n }\n if (field.options.fieldChanges) {\n field.options.fieldChanges.next((/** @type {?} */ ({ field, type: 'hidden', value: hide })));\n }\n }\n /**\n * @private\n * @param {?} field\n * @param {?} prop\n * @param {?} value\n * @return {?}\n */\n setExprValue(field, prop, value) {\n try {\n /** @type {?} */\n let target = field;\n /** @type {?} */\n const paths = this._evalExpressionPath(field, prop);\n /** @type {?} */\n const lastIndex = paths.length - 1;\n for (let i = 0; i < lastIndex; i++) {\n target = target[paths[i]];\n }\n target[paths[lastIndex]] = value;\n }\n catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n if (prop === 'templateOptions.disabled' && field.key) {\n this.setDisabledState(field, value);\n }\n if (prop.indexOf('model.') === 0) {\n /** @type {?} */\n const path = prop.replace(/^model\\./, '');\n /** @type {?} */\n const control = field.key && prop === path ? field.formControl : field.parent.formControl.get(path);\n if (control\n && !(isNullOrUndefined(control.value) && isNullOrUndefined(value))\n && control.value !== value) {\n control.patchValue(value);\n }\n }\n this.emitExpressionChanges(field, prop, value);\n }\n /**\n * @private\n * @param {?} field\n * @param {?} property\n * @param {?} value\n * @return {?}\n */\n emitExpressionChanges(field, property, value) {\n if (!field.options.fieldChanges) {\n return;\n }\n field.options.fieldChanges.next({\n field: field,\n type: 'expressionChanges',\n property,\n value,\n });\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@experimental\n */\nclass FieldValidationExtension {\n /**\n * @param {?} formlyConfig\n */\n constructor(formlyConfig) {\n this.formlyConfig = formlyConfig;\n }\n /**\n * @param {?} field\n * @return {?}\n */\n onPopulate(field) {\n this.initFieldValidation(field, 'validators');\n this.initFieldValidation(field, 'asyncValidators');\n }\n /**\n * @private\n * @param {?} field\n * @param {?} type\n * @return {?}\n */\n initFieldValidation(field, type) {\n /** @type {?} */\n const validators = [];\n if (type === 'validators' && !(field.hasOwnProperty('fieldGroup') && !field.key)) {\n validators.push(this.getPredefinedFieldValidation(field));\n }\n if (field[type]) {\n for (const validatorName in field[type]) {\n if (validatorName === 'validation' && !Array.isArray(field[type].validation)) {\n field[type].validation = [field[type].validation];\n console.warn(`NgxFormly(${field.key}): passing a non array value to the 'validation' is deprecated, pass an array instead`);\n }\n validatorName === 'validation'\n ? validators.push(...field[type].validation.map((/**\n * @param {?} v\n * @return {?}\n */\n v => this.wrapNgValidatorFn(field, v))))\n : validators.push(this.wrapNgValidatorFn(field, field[type][validatorName], validatorName));\n }\n }\n defineHiddenProp(field, '_' + type, validators);\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n getPredefinedFieldValidation(field) {\n /** @type {?} */\n let VALIDATORS = [];\n FORMLY_VALIDATORS.forEach((/**\n * @param {?} opt\n * @return {?}\n */\n opt => wrapProperty(field.templateOptions, opt, (/**\n * @param {?} __0\n * @return {?}\n */\n ({ currentValue, firstChange }) => {\n VALIDATORS = VALIDATORS.filter((/**\n * @param {?} o\n * @return {?}\n */\n o => o !== opt));\n if (currentValue != null && currentValue !== false) {\n VALIDATORS.push(opt);\n }\n if (!firstChange && field.formControl) {\n updateValidity(field.formControl);\n }\n }))));\n return (/**\n * @param {?} control\n * @return {?}\n */\n (control) => {\n if (VALIDATORS.length === 0) {\n return null;\n }\n return Validators.compose(VALIDATORS.map((/**\n * @param {?} opt\n * @return {?}\n */\n opt => (/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const value = field.templateOptions[opt];\n switch (opt) {\n case 'required':\n return Validators.required(control);\n case 'pattern':\n return Validators.pattern(value)(control);\n case 'minLength':\n return Validators.minLength(value)(control);\n case 'maxLength':\n return Validators.maxLength(value)(control);\n case 'min':\n return Validators.min(value)(control);\n case 'max':\n return Validators.max(value)(control);\n }\n }))))(control);\n });\n }\n /**\n * @private\n * @param {?} field\n * @param {?} validator\n * @param {?=} validatorName\n * @return {?}\n */\n wrapNgValidatorFn(field, validator, validatorName) {\n /** @type {?} */\n let validatorOption = null;\n if (typeof validator === 'string') {\n validatorOption = clone(this.formlyConfig.getValidator(validator));\n }\n if (typeof validator === 'object' && validator.name) {\n validatorOption = clone(this.formlyConfig.getValidator(validator.name));\n if (validator.options) {\n validatorOption.options = validator.options;\n }\n }\n if (typeof validator === 'object' && validator.expression) {\n const { expression } = validator, options = __rest(validator, [\"expression\"]);\n validatorOption = {\n name: validatorName,\n validation: expression,\n options: Object.keys(options).length > 0 ? options : null,\n };\n }\n if (typeof validator === 'function') {\n validatorOption = {\n name: validatorName,\n validation: validator,\n };\n }\n return (/**\n * @param {?} control\n * @return {?}\n */\n (control) => {\n /** @type {?} */\n const errors = validatorOption.validation(control, field, validatorOption.options);\n if (isPromise(errors)) {\n return errors.then((/**\n * @param {?} v\n * @return {?}\n */\n v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption)));\n }\n if (isObservable(errors)) {\n return errors.pipe(map((/**\n * @param {?} v\n * @return {?}\n */\n v => this.handleAsyncResult(field, validatorName ? !!v : v, validatorOption))));\n }\n return this.handleResult(field, validatorName ? !!errors : errors, validatorOption);\n });\n }\n /**\n * @private\n * @param {?} field\n * @param {?} errors\n * @param {?} options\n * @return {?}\n */\n handleAsyncResult(field, errors, options) {\n // workaround for https://github.com/angular/angular/issues/13200\n if (field.options && field.options._markForCheck) {\n field.options._markForCheck(field);\n }\n return this.handleResult(field, errors, options);\n }\n /**\n * @private\n * @param {?} field\n * @param {?} errors\n * @param {?} __2\n * @return {?}\n */\n handleResult(field, errors, { name, options }) {\n if (typeof errors === 'boolean') {\n errors = errors ? null : { [name]: options ? options : true };\n }\n /** @type {?} */\n const ctrl = field.formControl;\n ctrl['_childrenErrors'] && ctrl['_childrenErrors'][name] && ctrl['_childrenErrors'][name]();\n if (isObject(errors)) {\n Object.keys(errors).forEach((/**\n * @param {?} name\n * @return {?}\n */\n name => {\n /** @type {?} */\n const errorPath = errors[name].errorPath\n ? errors[name].errorPath\n : (options || {}).errorPath;\n /** @type {?} */\n const childCtrl = errorPath ? field.formControl.get(errorPath) : null;\n if (childCtrl) {\n const _a = errors[name], opts = __rest(_a, [\"errorPath\"]);\n childCtrl.setErrors(Object.assign({}, (childCtrl.errors || {}), { [name]: opts }));\n !ctrl['_childrenErrors'] && defineHiddenProp(ctrl, '_childrenErrors', {});\n ctrl['_childrenErrors'][name] = (/**\n * @return {?}\n */\n () => {\n const _a = childCtrl.errors || {}, _b = name, toDelete = _a[_b], childErrors = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\n childCtrl.setErrors(Object.keys(childErrors).length === 0 ? null : childErrors);\n });\n }\n }));\n }\n return errors;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@experimental\n */\nclass FieldFormExtension {\n /**\n * @param {?} config\n */\n constructor(config) {\n this.config = config;\n }\n /**\n * @param {?} field\n * @return {?}\n */\n prePopulate(field) {\n if (!this.root) {\n this.root = field;\n }\n }\n /**\n * @param {?} field\n * @return {?}\n */\n onPopulate(field) {\n if (!field.parent) {\n return;\n }\n if (field.fieldGroup && !field.key) {\n defineHiddenProp(field, 'formControl', field.parent.formControl);\n }\n else {\n this.addFormControl(field);\n }\n }\n /**\n * @param {?} field\n * @return {?}\n */\n postPopulate(field) {\n if (this.root !== field) {\n return;\n }\n this.root = null;\n this.setValidators(field);\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n addFormControl(field) {\n /** @type {?} */\n let control = findControl(field);\n if (!control) {\n /** @type {?} */\n const controlOptions = { updateOn: field.modelOptions.updateOn };\n /** @type {?} */\n const value = field.key ? getFieldValue(field) : field.defaultValue;\n /** @type {?} */\n const ref = this.config ? this.config.resolveFieldTypeRef(field) : null;\n if (ref && ref.componentType && ref.componentType['createControl']) {\n /** @type {?} */\n const component = ref.componentType;\n console.warn(`NgxFormly: '${component.name}::createControl' is deprecated since v5.0, use 'prePopulate' hook instead.`);\n control = component['createControl'](value, field);\n }\n else if (field.fieldGroup) {\n // TODO: move to postPopulate\n control = new FormGroup({}, controlOptions);\n }\n else {\n control = new FormControl(value, controlOptions);\n }\n }\n registerControl(field, control);\n }\n /**\n * @private\n * @param {?} field\n * @param {?=} disabled\n * @return {?}\n */\n setValidators(field, disabled = false) {\n /** @type {?} */\n let markForCheck = false;\n if (disabled === false && field.key && field.templateOptions && field.templateOptions.disabled) {\n disabled = true;\n }\n (field.fieldGroup || []).forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => this.setValidators(f, disabled) && (markForCheck = true)));\n if (field.key || !field.parent || (!field.key && !field.fieldGroup)) {\n const { formControl: c } = field;\n field.templateOptions = field.templateOptions || {};\n if (field.key && c && c instanceof FormControl) {\n if (disabled && c.enabled) {\n c.disable({ emitEvent: false, onlySelf: true });\n markForCheck = true;\n }\n if (!disabled && c.disabled) {\n c.enable({ emitEvent: false, onlySelf: true });\n markForCheck = true;\n }\n }\n if (c && (null === c.validator || null === c.asyncValidator)) {\n c.setValidators((/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const v = Validators.compose(this.mergeValidators(field, '_validators'));\n return v ? v(c) : null;\n }));\n c.setAsyncValidators((/**\n * @return {?}\n */\n () => {\n /** @type {?} */\n const v = Validators.composeAsync(this.mergeValidators(field, '_asyncValidators'));\n return v ? v(c) : of(null);\n }));\n markForCheck = true;\n }\n if (markForCheck) {\n updateValidity(c, true);\n // update validity of `FormGroup` instance created by field with nested key.\n /** @type {?} */\n let parent = c.parent;\n for (let i = 1; i < getKeyPath(field).length; i++) {\n if (parent) {\n updateValidity(parent, true);\n parent = parent.parent;\n }\n }\n }\n }\n return markForCheck;\n }\n /**\n * @private\n * @template T\n * @param {?} field\n * @param {?} type\n * @return {?}\n */\n mergeValidators(field, type) {\n /** @type {?} */\n const validators = [];\n /** @type {?} */\n const c = field.formControl;\n if (c && c['_fields'] && c['_fields'].length > 1) {\n c['_fields']\n .filter((/**\n * @param {?} f\n * @return {?}\n */\n (f) => !f._hide))\n .forEach((/**\n * @param {?} f\n * @return {?}\n */\n (f) => validators.push(...f[type])));\n }\n else if (field[type]) {\n validators.push(...field[type]);\n }\n if (field.fieldGroup) {\n field.fieldGroup\n .filter((/**\n * @param {?} f\n * @return {?}\n */\n f => !f.key && f.fieldGroup))\n .forEach((/**\n * @param {?} f\n * @return {?}\n */\n f => validators.push(...this.mergeValidators(f, type))));\n }\n return validators;\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * \\@experimental\n */\nclass CoreExtension {\n /**\n * @param {?} formlyConfig\n */\n constructor(formlyConfig) {\n this.formlyConfig = formlyConfig;\n this.formId = 0;\n }\n /**\n * @param {?} field\n * @return {?}\n */\n prePopulate(field) {\n this.getFieldComponentInstance(field).prePopulate();\n if (field.parent) {\n return;\n }\n /** @type {?} */\n const fieldTransforms = (field.options && field.options.fieldTransform) || this.formlyConfig.extras.fieldTransform;\n (Array.isArray(fieldTransforms) ? fieldTransforms : [fieldTransforms]).forEach((/**\n * @param {?} fieldTransform\n * @return {?}\n */\n fieldTransform => {\n if (fieldTransform) {\n console.warn(`NgxFormly: fieldTransform is deprecated since v5.0, use custom extension instead.`);\n /** @type {?} */\n const fieldGroup = fieldTransform(field.fieldGroup, field.model, (/** @type {?} */ (field.formControl)), field.options);\n if (!fieldGroup) {\n throw new Error('fieldTransform must return an array of fields');\n }\n }\n }));\n }\n /**\n * @param {?} field\n * @return {?}\n */\n onPopulate(field) {\n this.initFieldOptions(field);\n this.getFieldComponentInstance(field).onPopulate();\n if (field.fieldGroup) {\n field.fieldGroup.forEach((/**\n * @param {?} f\n * @param {?} index\n * @return {?}\n */\n (f, index) => {\n Object.defineProperty(f, 'parent', { get: (/**\n * @return {?}\n */\n () => field), configurable: true });\n Object.defineProperty(f, 'index', { get: (/**\n * @return {?}\n */\n () => index), configurable: true });\n this.formId++;\n }));\n }\n }\n /**\n * @param {?} field\n * @return {?}\n */\n postPopulate(field) {\n this.getFieldComponentInstance(field).postPopulate();\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n initFieldOptions(field) {\n /** @type {?} */\n const root = (/** @type {?} */ (field.parent));\n if (!root) {\n return;\n }\n Object.defineProperty(field, 'form', { get: (/**\n * @return {?}\n */\n () => root.formControl), configurable: true });\n Object.defineProperty(field, 'options', { get: (/**\n * @return {?}\n */\n () => root.options), configurable: true });\n Object.defineProperty(field, 'model', {\n get: (/**\n * @return {?}\n */\n () => field.key && field.fieldGroup ? getFieldValue(field) : root.model),\n configurable: true,\n });\n reverseDeepMerge(field, {\n id: getFieldId(`formly_${this.formId}`, field, field['index']),\n hooks: {},\n modelOptions: {},\n validation: { messages: {} },\n templateOptions: !field.type || !field.key ? {} : {\n label: '',\n placeholder: '',\n focus: false,\n disabled: false,\n },\n });\n if (this.formlyConfig.extras.resetFieldOnHide && field.resetOnHide !== false) {\n field.resetOnHide = true;\n }\n if (field.lifecycle) {\n console.warn(`NgxFormly: 'lifecycle' is deprecated since v5.0, use 'hooks' instead.`);\n }\n if (field.type !== 'formly-template'\n && (field.template\n || (field.expressionProperties && field.expressionProperties.template))) {\n if (field.type) {\n console.warn(`NgxFormly: passing 'type' property is not allowed when 'template' is set.`);\n }\n field.type = 'formly-template';\n }\n if (!field.type && field.fieldGroup) {\n field.type = 'formly-group';\n }\n if (field.type) {\n this.formlyConfig.getMergedField(field);\n }\n if (field.parent) {\n /** @type {?} */\n let setDefaultValue = !isUndefined(field.key)\n && !isUndefined(field.defaultValue)\n && isUndefined(getFieldValue(field))\n && (!field.resetOnHide || !(field.hide || field.hideExpression));\n if (setDefaultValue && field.resetOnHide) {\n /** @type {?} */\n let parent = field.parent;\n while (parent && !parent.hideExpression && !parent.hide) {\n parent = parent.parent;\n }\n setDefaultValue = !parent || !(parent.hideExpression || parent.hide);\n }\n if (setDefaultValue) {\n assignFieldValue(field, field.defaultValue);\n }\n }\n this.initFieldWrappers(field);\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n initFieldWrappers(field) {\n field.wrappers = field.wrappers || [];\n /** @type {?} */\n const fieldTemplateManipulators = Object.assign({ preWrapper: [], postWrapper: [] }, (field.templateOptions.templateManipulators || {}));\n field.wrappers = [\n ...this.formlyConfig.templateManipulators.preWrapper.map((/**\n * @param {?} m\n * @return {?}\n */\n m => m(field))),\n ...fieldTemplateManipulators.preWrapper.map((/**\n * @param {?} m\n * @return {?}\n */\n m => m(field))),\n ...field.wrappers,\n ...this.formlyConfig.templateManipulators.postWrapper.map((/**\n * @param {?} m\n * @return {?}\n */\n m => m(field))),\n ...fieldTemplateManipulators.postWrapper.map((/**\n * @param {?} m\n * @return {?}\n */\n m => m(field))),\n ].filter((/**\n * @param {?} el\n * @param {?} i\n * @param {?} a\n * @return {?}\n */\n (el, i, a) => el && i === a.indexOf(el)));\n }\n /**\n * @private\n * @param {?} field\n * @return {?}\n */\n getFieldComponentInstance(field) {\n /** @type {?} */\n const componentRef = this.formlyConfig.resolveFieldTypeRef(field);\n /** @type {?} */\n const instance = componentRef ? (/** @type {?} */ (componentRef.instance)) : {};\n return {\n prePopulate: (/**\n * @return {?}\n */\n () => instance.prePopulate && instance.prePopulate(field)),\n onPopulate: (/**\n * @return {?}\n */\n () => instance.onPopulate && instance.onPopulate(field)),\n postPopulate: (/**\n * @return {?}\n */\n () => instance.postPopulate && instance.postPopulate(field)),\n };\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} formlyConfig\n * @return {?}\n */\nfunction defaultFormlyConfig(formlyConfig) {\n return {\n types: [\n { name: 'formly-group', component: FormlyGroup },\n { name: 'formly-template', component: FormlyTemplateType },\n ],\n extensions: [\n { name: 'core', extension: new CoreExtension(formlyConfig) },\n { name: 'field-validation', extension: new FieldValidationExtension(formlyConfig) },\n { name: 'field-form', extension: new FieldFormExtension(formlyConfig) },\n { name: 'field-expression', extension: new FieldExpressionExtension() },\n ],\n };\n}\nclass FormlyModule {\n /**\n * @param {?} configService\n * @param {?=} configs\n */\n constructor(configService, configs = []) {\n if (!configs) {\n return;\n }\n configs.forEach((/**\n * @param {?} config\n * @return {?}\n */\n config => configService.addConfig(config)));\n }\n /**\n * @param {?=} config\n * @return {?}\n */\n static forRoot(config = {}) {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyConfig,\n FormlyFormBuilder,\n ],\n };\n }\n /**\n * @param {?=} config\n * @return {?}\n */\n static forChild(config = {}) {\n return {\n ngModule: FormlyModule,\n providers: [\n { provide: FORMLY_CONFIG, multi: true, useFactory: defaultFormlyConfig, deps: [FormlyConfig] },\n { provide: FORMLY_CONFIG, useValue: config, multi: true },\n { provide: ANALYZE_FOR_ENTRY_COMPONENTS, useValue: config, multi: true },\n FormlyFormBuilder,\n ],\n };\n }\n}\nFormlyModule.ɵfac = function FormlyModule_Factory(t) { return new (t || FormlyModule)(ɵngcc0.ɵɵinject(FormlyConfig), ɵngcc0.ɵɵinject(FORMLY_CONFIG, 8)); };\nFormlyModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: FormlyModule });\nFormlyModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [CommonModule] });\n/** @nocollapse */\nFormlyModule.ctorParameters = () => [\n { type: FormlyConfig },\n { type: Array, decorators: [{ type: Optional }, { type: Inject, args: [FORMLY_CONFIG,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FormlyModule, [{\n type: NgModule,\n args: [{\n declarations: [\n FormlyForm,\n FormlyField,\n FormlyAttributes,\n FormlyGroup,\n FormlyValidationMessage,\n FormlyTemplateType,\n ( /** @type {?} */(FieldArrayType)),\n ],\n entryComponents: [FormlyGroup, FormlyTemplateType],\n exports: [FormlyForm, FormlyField, FormlyAttributes, FormlyGroup, FormlyValidationMessage],\n imports: [CommonModule]\n }]\n }], function () { return [{ type: FormlyConfig }, { type: Array, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [FORMLY_CONFIG]\n }] }]; }, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(FormlyModule, { declarations: function () { return [FormlyForm, FormlyField, FormlyAttributes, FormlyGroup, FormlyValidationMessage, FormlyTemplateType, FieldArrayType]; }, imports: function () { return [CommonModule]; }, exports: function () { return [FormlyForm, FormlyField, FormlyAttributes, FormlyGroup, FormlyValidationMessage]; } }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { FormlyForm, FormlyField, FormlyAttributes, FORMLY_CONFIG, FormlyConfig, FormlyFormBuilder, FieldType, Field, FieldArrayType, FieldWrapper, FormlyModule, defineHiddenProp as ɵdefineHiddenProp, reverseDeepMerge as ɵreverseDeepMerge, getFieldValue as ɵgetFieldValue, clone as ɵclone, wrapProperty as ɵwrapProperty, defaultFormlyConfig as ɵa, CoreExtension as ɵe, FieldExpressionExtension as ɵh, FieldFormExtension as ɵg, FieldValidationExtension as ɵf, FormlyTemplateType as ɵd, FormlyGroup as ɵb, FormlyValidationMessage as ɵc };\n\n","var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n/**\n * Random utility functions used in the UI-Router code\n *\n * These functions are exported, but are subject to change without notice.\n *\n * @packageDocumentation\n * @preferred\n */\nimport { isFunction, isString, isArray, isRegExp, isDate } from './predicates';\nimport { all, any, prop, curry, not } from './hof';\nimport { services } from './coreservices';\nexport var root = (typeof self === 'object' && self.self === self && self) ||\n (typeof global === 'object' && global.global === global && global) ||\n this;\nvar angular = root.angular || {};\nexport var fromJson = angular.fromJson || JSON.parse.bind(JSON);\nexport var toJson = angular.toJson || JSON.stringify.bind(JSON);\nexport var forEach = angular.forEach || _forEach;\nexport var extend = Object.assign || _extend;\nexport var equals = angular.equals || _equals;\nexport function identity(x) {\n return x;\n}\nexport function noop() { }\n/**\n * Builds proxy functions on the `to` object which pass through to the `from` object.\n *\n * For each key in `fnNames`, creates a proxy function on the `to` object.\n * The proxy function calls the real function on the `from` object.\n *\n *\n * #### Example:\n * This example creates an new class instance whose functions are prebound to the new'd object.\n * ```js\n * class Foo {\n * constructor(data) {\n * // Binds all functions from Foo.prototype to 'this',\n * // then copies them to 'this'\n * bindFunctions(Foo.prototype, this, this);\n * this.data = data;\n * }\n *\n * log() {\n * console.log(this.data);\n * }\n * }\n *\n * let myFoo = new Foo([1,2,3]);\n * var logit = myFoo.log;\n * logit(); // logs [1, 2, 3] from the myFoo 'this' instance\n * ```\n *\n * #### Example:\n * This example creates a bound version of a service function, and copies it to another object\n * ```\n *\n * var SomeService = {\n * this.data = [3, 4, 5];\n * this.log = function() {\n * console.log(this.data);\n * }\n * }\n *\n * // Constructor fn\n * function OtherThing() {\n * // Binds all functions from SomeService to SomeService,\n * // then copies them to 'this'\n * bindFunctions(SomeService, this, SomeService);\n * }\n *\n * let myOtherThing = new OtherThing();\n * myOtherThing.log(); // logs [3, 4, 5] from SomeService's 'this'\n * ```\n *\n * @param source A function that returns the source object which contains the original functions to be bound\n * @param target A function that returns the target object which will receive the bound functions\n * @param bind A function that returns the object which the functions will be bound to\n * @param fnNames The function names which will be bound (Defaults to all the functions found on the 'from' object)\n * @param latebind If true, the binding of the function is delayed until the first time it's invoked\n */\nexport function createProxyFunctions(source, target, bind, fnNames, latebind) {\n if (latebind === void 0) { latebind = false; }\n var bindFunction = function (fnName) { return source()[fnName].bind(bind()); };\n var makeLateRebindFn = function (fnName) {\n return function lateRebindFunction() {\n target[fnName] = bindFunction(fnName);\n return target[fnName].apply(null, arguments);\n };\n };\n fnNames = fnNames || Object.keys(source());\n return fnNames.reduce(function (acc, name) {\n acc[name] = latebind ? makeLateRebindFn(name) : bindFunction(name);\n return acc;\n }, target);\n}\n/**\n * prototypal inheritance helper.\n * Creates a new object which has `parent` object as its prototype, and then copies the properties from `extra` onto it\n */\nexport var inherit = function (parent, extra) { return extend(Object.create(parent), extra); };\n/** Given an array, returns true if the object is found in the array, (using indexOf) */\nexport var inArray = curry(_inArray);\nexport function _inArray(array, obj) {\n return array.indexOf(obj) !== -1;\n}\n/**\n * Given an array, and an item, if the item is found in the array, it removes it (in-place).\n * The same array is returned\n */\nexport var removeFrom = curry(_removeFrom);\nexport function _removeFrom(array, obj) {\n var idx = array.indexOf(obj);\n if (idx >= 0)\n array.splice(idx, 1);\n return array;\n}\n/** pushes a values to an array and returns the value */\nexport var pushTo = curry(_pushTo);\nexport function _pushTo(arr, val) {\n return arr.push(val), val;\n}\n/** Given an array of (deregistration) functions, calls all functions and removes each one from the source array */\nexport var deregAll = function (functions) {\n return functions.slice().forEach(function (fn) {\n typeof fn === 'function' && fn();\n removeFrom(functions, fn);\n });\n};\n/**\n * Applies a set of defaults to an options object. The options object is filtered\n * to only those properties of the objects in the defaultsList.\n * Earlier objects in the defaultsList take precedence when applying defaults.\n */\nexport function defaults(opts) {\n var defaultsList = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n defaultsList[_i - 1] = arguments[_i];\n }\n var defaultVals = extend.apply(void 0, __spreadArrays([{}], defaultsList.reverse()));\n return extend(defaultVals, pick(opts || {}, Object.keys(defaultVals)));\n}\n/** Reduce function that merges each element of the list into a single object, using extend */\nexport var mergeR = function (memo, item) { return extend(memo, item); };\n/**\n * Finds the common ancestor path between two states.\n *\n * @param {Object} first The first state.\n * @param {Object} second The second state.\n * @return {Array} Returns an array of state names in descending order, not including the root.\n */\nexport function ancestors(first, second) {\n var path = [];\n // tslint:disable-next-line:forin\n for (var n in first.path) {\n if (first.path[n] !== second.path[n])\n break;\n path.push(first.path[n]);\n }\n return path;\n}\n/**\n * Return a copy of the object only containing the whitelisted properties.\n *\n * #### Example:\n * ```\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = pick(foo, ['a', 'b']); // { a: 1, b: 2 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the whitelisted property names\n */\nexport function pick(obj, propNames) {\n var objCopy = {};\n for (var _prop in obj) {\n if (propNames.indexOf(_prop) !== -1) {\n objCopy[_prop] = obj[_prop];\n }\n }\n return objCopy;\n}\n/**\n * Return a copy of the object omitting the blacklisted properties.\n *\n * @example\n * ```\n *\n * var foo = { a: 1, b: 2, c: 3 };\n * var ab = omit(foo, ['a', 'b']); // { c: 3 }\n * ```\n * @param obj the source object\n * @param propNames an Array of strings, which are the blacklisted property names\n */\nexport function omit(obj, propNames) {\n return Object.keys(obj)\n .filter(not(inArray(propNames)))\n .reduce(function (acc, key) { return ((acc[key] = obj[key]), acc); }, {});\n}\n/**\n * Maps an array, or object to a property (by name)\n */\nexport function pluck(collection, propName) {\n return map(collection, prop(propName));\n}\n/** Filters an Array or an Object's properties based on a predicate */\nexport function filter(collection, callback) {\n var arr = isArray(collection), result = arr ? [] : {};\n var accept = arr ? function (x) { return result.push(x); } : function (x, key) { return (result[key] = x); };\n forEach(collection, function (item, i) {\n if (callback(item, i))\n accept(item, i);\n });\n return result;\n}\n/** Finds an object from an array, or a property of an object, that matches a predicate */\nexport function find(collection, callback) {\n var result;\n forEach(collection, function (item, i) {\n if (result)\n return;\n if (callback(item, i))\n result = item;\n });\n return result;\n}\n/** Given an object, returns a new object, where each property is transformed by the callback function */\nexport var mapObj = map;\n/** Maps an array or object properties using a callback function */\nexport function map(collection, callback, target) {\n target = target || (isArray(collection) ? [] : {});\n forEach(collection, function (item, i) { return (target[i] = callback(item, i)); });\n return target;\n}\n/**\n * Given an object, return its enumerable property values\n *\n * @example\n * ```\n *\n * let foo = { a: 1, b: 2, c: 3 }\n * let vals = values(foo); // [ 1, 2, 3 ]\n * ```\n */\nexport var values = function (obj) { return Object.keys(obj).map(function (key) { return obj[key]; }); };\n/**\n * Reduce function that returns true if all of the values are truthy.\n *\n * @example\n * ```\n *\n * let vals = [ 1, true, {}, \"hello world\"];\n * vals.reduce(allTrueR, true); // true\n *\n * vals.push(0);\n * vals.reduce(allTrueR, true); // false\n * ```\n */\nexport var allTrueR = function (memo, elem) { return memo && elem; };\n/**\n * Reduce function that returns true if any of the values are truthy.\n *\n * * @example\n * ```\n *\n * let vals = [ 0, null, undefined ];\n * vals.reduce(anyTrueR, true); // false\n *\n * vals.push(\"hello world\");\n * vals.reduce(anyTrueR, true); // true\n * ```\n */\nexport var anyTrueR = function (memo, elem) { return memo || elem; };\n/**\n * Reduce function which un-nests a single level of arrays\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport var unnestR = function (memo, elem) { return memo.concat(elem); };\n/**\n * Reduce function which recursively un-nests all arrays\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * input.reduce(unnestR, []) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport var flattenR = function (memo, elem) {\n return isArray(elem) ? memo.concat(elem.reduce(flattenR, [])) : pushR(memo, elem);\n};\n/**\n * Reduce function that pushes an object to an array, then returns the array.\n * Mostly just for [[flattenR]] and [[uniqR]]\n */\nexport function pushR(arr, obj) {\n arr.push(obj);\n return arr;\n}\n/** Reduce function that filters out duplicates */\nexport var uniqR = function (acc, token) { return (inArray(acc, token) ? acc : pushR(acc, token)); };\n/**\n * Return a new array with a single level of arrays unnested.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * unnest(input) // [ \"a\", \"b\", \"c\", \"d\", [ \"double, \"nested\" ] ]\n * ```\n */\nexport var unnest = function (arr) { return arr.reduce(unnestR, []); };\n/**\n * Return a completely flattened version of an array.\n *\n * @example\n * ```\n *\n * let input = [ [ \"a\", \"b\" ], [ \"c\", \"d\" ], [ [ \"double\", \"nested\" ] ] ];\n * flatten(input) // [ \"a\", \"b\", \"c\", \"d\", \"double, \"nested\" ]\n * ```\n */\nexport var flatten = function (arr) { return arr.reduce(flattenR, []); };\n/**\n * Given a .filter Predicate, builds a .filter Predicate which throws an error if any elements do not pass.\n * @example\n * ```\n *\n * let isNumber = (obj) => typeof(obj) === 'number';\n * let allNumbers = [ 1, 2, 3, 4, 5 ];\n * allNumbers.filter(assertPredicate(isNumber)); //OK\n *\n * let oneString = [ 1, 2, 3, 4, \"5\" ];\n * oneString.filter(assertPredicate(isNumber, \"Not all numbers\")); // throws Error(\"\"Not all numbers\"\");\n * ```\n */\nexport var assertPredicate = assertFn;\n/**\n * Given a .map function, builds a .map function which throws an error if any mapped elements do not pass a truthyness test.\n * @example\n * ```\n *\n * var data = { foo: 1, bar: 2 };\n *\n * let keys = [ 'foo', 'bar' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // values is [1, 2]\n *\n * let keys = [ 'foo', 'bar', 'baz' ]\n * let values = keys.map(assertMap(key => data[key], \"Key not found\"));\n * // throws Error(\"Key not found\")\n * ```\n */\nexport var assertMap = assertFn;\nexport function assertFn(predicateOrMap, errMsg) {\n if (errMsg === void 0) { errMsg = 'assert failure'; }\n return function (obj) {\n var result = predicateOrMap(obj);\n if (!result) {\n throw new Error(isFunction(errMsg) ? errMsg(obj) : errMsg);\n }\n return result;\n };\n}\n/**\n * Like _.pairs: Given an object, returns an array of key/value pairs\n *\n * @example\n * ```\n *\n * pairs({ foo: \"FOO\", bar: \"BAR }) // [ [ \"foo\", \"FOO\" ], [ \"bar\": \"BAR\" ] ]\n * ```\n */\nexport var pairs = function (obj) { return Object.keys(obj).map(function (key) { return [key, obj[key]]; }); };\n/**\n * Given two or more parallel arrays, returns an array of tuples where\n * each tuple is composed of [ a[i], b[i], ... z[i] ]\n *\n * @example\n * ```\n *\n * let foo = [ 0, 2, 4, 6 ];\n * let bar = [ 1, 3, 5, 7 ];\n * let baz = [ 10, 30, 50, 70 ];\n * arrayTuples(foo, bar); // [ [0, 1], [2, 3], [4, 5], [6, 7] ]\n * arrayTuples(foo, bar, baz); // [ [0, 1, 10], [2, 3, 30], [4, 5, 50], [6, 7, 70] ]\n * ```\n */\nexport function arrayTuples() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (args.length === 0)\n return [];\n var maxArrayLen = args.reduce(function (min, arr) { return Math.min(arr.length, min); }, 9007199254740991); // aka 2^53 − 1 aka Number.MAX_SAFE_INTEGER\n var result = [];\n var _loop_1 = function (i) {\n // This is a hot function\n // Unroll when there are 1-4 arguments\n switch (args.length) {\n case 1:\n result.push([args[0][i]]);\n break;\n case 2:\n result.push([args[0][i], args[1][i]]);\n break;\n case 3:\n result.push([args[0][i], args[1][i], args[2][i]]);\n break;\n case 4:\n result.push([args[0][i], args[1][i], args[2][i], args[3][i]]);\n break;\n default:\n result.push(args.map(function (array) { return array[i]; }));\n break;\n }\n };\n for (var i = 0; i < maxArrayLen; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * Reduce function which builds an object from an array of [key, value] pairs.\n *\n * Each iteration sets the key/val pair on the memo object, then returns the memo for the next iteration.\n *\n * Each keyValueTuple should be an array with values [ key: string, value: any ]\n *\n * @example\n * ```\n *\n * var pairs = [ [\"fookey\", \"fooval\"], [\"barkey\", \"barval\"] ]\n *\n * var pairsToObj = pairs.reduce((memo, pair) => applyPairs(memo, pair), {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n *\n * // Or, more simply:\n * var pairsToObj = pairs.reduce(applyPairs, {})\n * // pairsToObj == { fookey: \"fooval\", barkey: \"barval\" }\n * ```\n */\nexport function applyPairs(memo, keyValTuple) {\n var key, value;\n if (isArray(keyValTuple))\n key = keyValTuple[0], value = keyValTuple[1];\n if (!isString(key))\n throw new Error('invalid parameters to applyPairs');\n memo[key] = value;\n return memo;\n}\n/** Get the last element of an array */\nexport function tail(arr) {\n return (arr.length && arr[arr.length - 1]) || undefined;\n}\n/**\n * shallow copy from src to dest\n */\nexport function copy(src, dest) {\n if (dest)\n Object.keys(dest).forEach(function (key) { return delete dest[key]; });\n if (!dest)\n dest = {};\n return extend(dest, src);\n}\n/** Naive forEach implementation works with Objects or Arrays */\nfunction _forEach(obj, cb, _this) {\n if (isArray(obj))\n return obj.forEach(cb, _this);\n Object.keys(obj).forEach(function (key) { return cb(obj[key], key); });\n}\nexport function _extend(toObj) {\n for (var i = 1; i < arguments.length; i++) {\n var obj = arguments[i];\n if (!obj)\n continue;\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; j++) {\n toObj[keys[j]] = obj[keys[j]];\n }\n }\n return toObj;\n}\nfunction _equals(o1, o2) {\n if (o1 === o2)\n return true;\n if (o1 === null || o2 === null)\n return false;\n if (o1 !== o1 && o2 !== o2)\n return true; // NaN === NaN\n var t1 = typeof o1, t2 = typeof o2;\n if (t1 !== t2 || t1 !== 'object')\n return false;\n var tup = [o1, o2];\n if (all(isArray)(tup))\n return _arraysEq(o1, o2);\n if (all(isDate)(tup))\n return o1.getTime() === o2.getTime();\n if (all(isRegExp)(tup))\n return o1.toString() === o2.toString();\n if (all(isFunction)(tup))\n return true; // meh\n var predicates = [isFunction, isArray, isDate, isRegExp];\n if (predicates.map(any).reduce(function (b, fn) { return b || !!fn(tup); }, false))\n return false;\n var keys = {};\n // tslint:disable-next-line:forin\n for (var key in o1) {\n if (!_equals(o1[key], o2[key]))\n return false;\n keys[key] = true;\n }\n for (var key in o2) {\n if (!keys[key])\n return false;\n }\n return true;\n}\nfunction _arraysEq(a1, a2) {\n if (a1.length !== a2.length)\n return false;\n return arrayTuples(a1, a2).reduce(function (b, t) { return b && _equals(t[0], t[1]); }, true);\n}\n// issue #2676\nexport var silenceUncaughtInPromise = function (promise) { return promise.catch(function (e) { return 0; }) && promise; };\nexport var silentRejection = function (error) { return silenceUncaughtInPromise(services.$q.reject(error)); };\n","var noImpl = function (fnname) { return function () {\n throw new Error(\"No implementation for \" + fnname + \". The framework specific code did not implement this method.\");\n}; };\nexport var makeStub = function (service, methods) {\n return methods.reduce(function (acc, key) { return ((acc[key] = noImpl(service + \".\" + key + \"()\")), acc); }, {});\n};\nvar services = {\n $q: undefined,\n $injector: undefined,\n};\nexport { services };\n","/**\n * Matches state names using glob-like pattern strings.\n *\n * Globs can be used in specific APIs including:\n *\n * - [[StateService.is]]\n * - [[StateService.includes]]\n * - The first argument to Hook Registration functions like [[TransitionService.onStart]]\n * - [[HookMatchCriteria]] and [[HookMatchCriterion]]\n *\n * A `Glob` string is a pattern which matches state names.\n * Nested state names are split into segments (separated by a dot) when processing.\n * The state named `foo.bar.baz` is split into three segments ['foo', 'bar', 'baz']\n *\n * Globs work according to the following rules:\n *\n * ### Exact match:\n *\n * The glob `'A.B'` matches the state named exactly `'A.B'`.\n *\n * | Glob |Matches states named|Does not match state named|\n * |:------------|:--------------------|:---------------------|\n * | `'A'` | `'A'` | `'B'` , `'A.C'` |\n * | `'A.B'` | `'A.B'` | `'A'` , `'A.B.C'` |\n * | `'foo'` | `'foo'` | `'FOO'` , `'foo.bar'`|\n *\n * ### Single star (`*`)\n *\n * A single star (`*`) is a wildcard that matches exactly one segment.\n *\n * | Glob |Matches states named |Does not match state named |\n * |:------------|:---------------------|:--------------------------|\n * | `'*'` | `'A'` , `'Z'` | `'A.B'` , `'Z.Y.X'` |\n * | `'A.*'` | `'A.B'` , `'A.C'` | `'A'` , `'A.B.C'` |\n * | `'A.*.*'` | `'A.B.C'` , `'A.X.Y'`| `'A'`, `'A.B'` , `'Z.Y.X'`|\n *\n * ### Double star (`**`)\n *\n * A double star (`'**'`) is a wildcard that matches *zero or more segments*\n *\n * | Glob |Matches states named |Does not match state named |\n * |:------------|:----------------------------------------------|:----------------------------------|\n * | `'**'` | `'A'` , `'A.B'`, `'Z.Y.X'` | (matches all states) |\n * | `'A.**'` | `'A'` , `'A.B'` , `'A.C.X'` | `'Z.Y.X'` |\n * | `'**.X'` | `'X'` , `'A.X'` , `'Z.Y.X'` | `'A'` , `'A.login.Z'` |\n * | `'A.**.X'` | `'A.X'` , `'A.B.X'` , `'A.B.C.X'` | `'A'` , `'A.B.C'` |\n *\n * @packageDocumentation\n */\nvar Glob = /** @class */ (function () {\n function Glob(text) {\n this.text = text;\n this.glob = text.split('.');\n var regexpString = this.text\n .split('.')\n .map(function (seg) {\n if (seg === '**')\n return '(?:|(?:\\\\.[^.]*)*)';\n if (seg === '*')\n return '\\\\.[^.]*';\n return '\\\\.' + seg;\n })\n .join('');\n this.regexp = new RegExp('^' + regexpString + '$');\n }\n /** Returns true if the string has glob-like characters in it */\n Glob.is = function (text) {\n return !!/[!,*]+/.exec(text);\n };\n /** Returns a glob from the string, or null if the string isn't Glob-like */\n Glob.fromString = function (text) {\n return Glob.is(text) ? new Glob(text) : null;\n };\n Glob.prototype.matches = function (name) {\n return this.regexp.test('.' + name);\n };\n return Glob;\n}());\nexport { Glob };\n","/**\n * Higher order functions\n *\n * These utility functions are exported, but are subject to change without notice.\n *\n * @packageDocumentation\n */\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\n/**\n * Returns a new function for [Partial Application](https://en.wikipedia.org/wiki/Partial_application) of the original function.\n *\n * Given a function with N parameters, returns a new function that supports partial application.\n * The new function accepts anywhere from 1 to N parameters. When that function is called with M parameters,\n * where M is less than N, it returns a new function that accepts the remaining parameters. It continues to\n * accept more parameters until all N parameters have been supplied.\n *\n *\n * This contrived example uses a partially applied function as an predicate, which returns true\n * if an object is found in both arrays.\n * @example\n * ```\n * // returns true if an object is in both of the two arrays\n * function inBoth(array1, array2, object) {\n * return array1.indexOf(object) !== -1 &&\n * array2.indexOf(object) !== 1;\n * }\n * let obj1, obj2, obj3, obj4, obj5, obj6, obj7\n * let foos = [obj1, obj3]\n * let bars = [obj3, obj4, obj5]\n *\n * // A curried \"copy\" of inBoth\n * let curriedInBoth = curry(inBoth);\n * // Partially apply both the array1 and array2\n * let inFoosAndBars = curriedInBoth(foos, bars);\n *\n * // Supply the final argument; since all arguments are\n * // supplied, the original inBoth function is then called.\n * let obj1InBoth = inFoosAndBars(obj1); // false\n *\n * // Use the inFoosAndBars as a predicate.\n * // Filter, on each iteration, supplies the final argument\n * let allObjs = [ obj1, obj2, obj3, obj4, obj5, obj6, obj7 ];\n * let foundInBoth = allObjs.filter(inFoosAndBars); // [ obj3 ]\n *\n * ```\n *\n * @param fn\n * @returns {*|function(): (*|any)}\n */\nexport function curry(fn) {\n return function curried() {\n if (arguments.length >= fn.length) {\n return fn.apply(this, arguments);\n }\n var args = Array.prototype.slice.call(arguments);\n return curried.bind.apply(curried, __spreadArrays([this], args));\n };\n}\n/**\n * Given a varargs list of functions, returns a function that composes the argument functions, right-to-left\n * given: f(x), g(x), h(x)\n * let composed = compose(f,g,h)\n * then, composed is: f(g(h(x)))\n */\nexport function compose() {\n var args = arguments;\n var start = args.length - 1;\n return function () {\n var i = start, result = args[start].apply(this, arguments);\n while (i--)\n result = args[i].call(this, result);\n return result;\n };\n}\n/**\n * Given a varargs list of functions, returns a function that is composes the argument functions, left-to-right\n * given: f(x), g(x), h(x)\n * let piped = pipe(f,g,h);\n * then, piped is: h(g(f(x)))\n */\nexport function pipe() {\n var funcs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n funcs[_i] = arguments[_i];\n }\n return compose.apply(null, [].slice.call(arguments).reverse());\n}\n/**\n * Given a property name, returns a function that returns that property from an object\n * let obj = { foo: 1, name: \"blarg\" };\n * let getName = prop(\"name\");\n * getName(obj) === \"blarg\"\n */\nexport var prop = function (name) { return function (obj) { return obj && obj[name]; }; };\n/**\n * Given a property name and a value, returns a function that returns a boolean based on whether\n * the passed object has a property that matches the value\n * let obj = { foo: 1, name: \"blarg\" };\n * let getName = propEq(\"name\", \"blarg\");\n * getName(obj) === true\n */\nexport var propEq = curry(function (name, _val, obj) { return obj && obj[name] === _val; });\n/**\n * Given a dotted property name, returns a function that returns a nested property from an object, or undefined\n * let obj = { id: 1, nestedObj: { foo: 1, name: \"blarg\" }, };\n * let getName = prop(\"nestedObj.name\");\n * getName(obj) === \"blarg\"\n * let propNotFound = prop(\"this.property.doesnt.exist\");\n * propNotFound(obj) === undefined\n */\nexport var parse = function (name) { return pipe.apply(null, name.split('.').map(prop)); };\n/**\n * Given a function that returns a truthy or falsey value, returns a\n * function that returns the opposite (falsey or truthy) value given the same inputs\n */\nexport var not = function (fn) { return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return !fn.apply(null, args);\n}; };\n/**\n * Given two functions that return truthy or falsey values, returns a function that returns truthy\n * if both functions return truthy for the given arguments\n */\nexport function and(fn1, fn2) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return fn1.apply(null, args) && fn2.apply(null, args);\n };\n}\n/**\n * Given two functions that return truthy or falsey values, returns a function that returns truthy\n * if at least one of the functions returns truthy for the given arguments\n */\nexport function or(fn1, fn2) {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return fn1.apply(null, args) || fn2.apply(null, args);\n };\n}\n/**\n * Check if all the elements of an array match a predicate function\n *\n * @param fn1 a predicate function `fn1`\n * @returns a function which takes an array and returns true if `fn1` is true for all elements of the array\n */\nexport var all = function (fn1) { return function (arr) { return arr.reduce(function (b, x) { return b && !!fn1(x); }, true); }; };\n// tslint:disable-next-line:variable-name\nexport var any = function (fn1) { return function (arr) { return arr.reduce(function (b, x) { return b || !!fn1(x); }, false); }; };\n/** Given a class, returns a Predicate function that returns true if the object is of that class */\nexport var is = function (ctor) { return function (obj) {\n return (obj != null && obj.constructor === ctor) || obj instanceof ctor;\n}; };\n/** Given a value, returns a Predicate function that returns true if another value is === equal to the original value */\nexport var eq = function (value) { return function (other) { return value === other; }; };\n/** Given a value, returns a function which returns the value */\nexport var val = function (v) { return function () { return v; }; };\nexport function invoke(fnName, args) {\n return function (obj) { return obj[fnName].apply(obj, args); };\n}\n/**\n * Sorta like Pattern Matching (a functional programming conditional construct)\n *\n * See http://c2.com/cgi/wiki?PatternMatching\n *\n * This is a conditional construct which allows a series of predicates and output functions\n * to be checked and then applied. Each predicate receives the input. If the predicate\n * returns truthy, then its matching output function (mapping function) is provided with\n * the input and, then the result is returned.\n *\n * Each combination (2-tuple) of predicate + output function should be placed in an array\n * of size 2: [ predicate, mapFn ]\n *\n * These 2-tuples should be put in an outer array.\n *\n * @example\n * ```\n *\n * // Here's a 2-tuple where the first element is the isString predicate\n * // and the second element is a function that returns a description of the input\n * let firstTuple = [ angular.isString, (input) => `Heres your string ${input}` ];\n *\n * // Second tuple: predicate \"isNumber\", mapfn returns a description\n * let secondTuple = [ angular.isNumber, (input) => `(${input}) That's a number!` ];\n *\n * let third = [ (input) => input === null, (input) => `Oh, null...` ];\n *\n * let fourth = [ (input) => input === undefined, (input) => `notdefined` ];\n *\n * let descriptionOf = pattern([ firstTuple, secondTuple, third, fourth ]);\n *\n * console.log(descriptionOf(undefined)); // 'notdefined'\n * console.log(descriptionOf(55)); // '(55) That's a number!'\n * console.log(descriptionOf(\"foo\")); // 'Here's your string foo'\n * ```\n *\n * @param struct A 2D array. Each element of the array should be an array, a 2-tuple,\n * with a Predicate and a mapping/output function\n * @returns {function(any): *}\n */\nexport function pattern(struct) {\n return function (x) {\n for (var i = 0; i < struct.length; i++) {\n if (struct[i][0](x))\n return struct[i][1](x);\n }\n };\n}\n","/**\n * Predicates\n *\n * These predicates return true/false based on the input.\n * Although these functions are exported, they are subject to change without notice.\n *\n * @packageDocumentation\n */\nimport { and, not, pipe, prop, or } from './hof';\nvar toStr = Object.prototype.toString;\nvar tis = function (t) { return function (x) { return typeof x === t; }; };\nexport var isUndefined = tis('undefined');\nexport var isDefined = not(isUndefined);\nexport var isNull = function (o) { return o === null; };\nexport var isNullOrUndefined = or(isNull, isUndefined);\nexport var isFunction = tis('function');\nexport var isNumber = tis('number');\nexport var isString = tis('string');\nexport var isObject = function (x) { return x !== null && typeof x === 'object'; };\nexport var isArray = Array.isArray;\nexport var isDate = (function (x) { return toStr.call(x) === '[object Date]'; });\nexport var isRegExp = (function (x) { return toStr.call(x) === '[object RegExp]'; });\n/**\n * Predicate which checks if a value is injectable\n *\n * A value is \"injectable\" if it is a function, or if it is an ng1 array-notation-style array\n * where all the elements in the array are Strings, except the last one, which is a Function\n */\nexport function isInjectable(val) {\n if (isArray(val) && val.length) {\n var head = val.slice(0, -1), tail = val.slice(-1);\n return !(head.filter(not(isString)).length || tail.filter(not(isFunction)).length);\n }\n return isFunction(val);\n}\n/**\n * Predicate which checks if a value looks like a Promise\n *\n * It is probably a Promise if it's an object, and it has a `then` property which is a Function\n */\nexport var isPromise = and(isObject, pipe(prop('then'), isFunction));\n","import { pushTo } from './common';\nvar Queue = /** @class */ (function () {\n function Queue(_items, _limit) {\n if (_items === void 0) { _items = []; }\n if (_limit === void 0) { _limit = null; }\n this._items = _items;\n this._limit = _limit;\n this._evictListeners = [];\n this.onEvict = pushTo(this._evictListeners);\n }\n Queue.prototype.enqueue = function (item) {\n var items = this._items;\n items.push(item);\n if (this._limit && items.length > this._limit)\n this.evict();\n return item;\n };\n Queue.prototype.evict = function () {\n var item = this._items.shift();\n this._evictListeners.forEach(function (fn) { return fn(item); });\n return item;\n };\n Queue.prototype.dequeue = function () {\n if (this.size())\n return this._items.splice(0, 1)[0];\n };\n Queue.prototype.clear = function () {\n var current = this._items;\n this._items = [];\n return current;\n };\n Queue.prototype.size = function () {\n return this._items.length;\n };\n Queue.prototype.remove = function (item) {\n var idx = this._items.indexOf(item);\n return idx > -1 && this._items.splice(idx, 1)[0];\n };\n Queue.prototype.peekTail = function () {\n return this._items[this._items.length - 1];\n };\n Queue.prototype.peekHead = function () {\n if (this.size())\n return this._items[0];\n };\n return Queue;\n}());\nexport { Queue };\n","/**\n * workaround for missing console object in IE9 when dev tools haven't been opened o_O\n * @packageDocumentation\n */\n/* tslint:disable:no-console */\nimport { noop } from './common';\nvar noopConsoleStub = { log: noop, error: noop, table: noop };\nfunction ie9Console(console) {\n var bound = function (fn) { return Function.prototype.bind.call(fn, console); };\n return {\n log: bound(console.log),\n error: bound(console.log),\n table: bound(console.log),\n };\n}\nfunction fallbackConsole(console) {\n var log = console.log.bind(console);\n var error = console.error ? console.error.bind(console) : log;\n var table = console.table ? console.table.bind(console) : log;\n return { log: log, error: error, table: table };\n}\nfunction getSafeConsole() {\n // @ts-ignore\n var isIE9 = typeof document !== 'undefined' && document.documentMode && document.documentMode === 9;\n if (isIE9) {\n return window && window.console ? ie9Console(window.console) : noopConsoleStub;\n }\n else if (!console.table || !console.error) {\n return fallbackConsole(console);\n }\n else {\n return console;\n }\n}\nexport var safeConsole = getSafeConsole();\n","/**\n * Functions that manipulate strings\n *\n * Although these functions are exported, they are subject to change without notice.\n *\n * @packageDocumentation\n */\nimport { isArray, isFunction, isInjectable, isNull, isObject, isPromise, isString, isUndefined } from './predicates';\nimport { Rejection } from '../transition/rejectFactory';\nimport { identity, pushR, tail } from './common';\nimport { pattern, val } from './hof';\n/**\n * Returns a string shortened to a maximum length\n *\n * If the string is already less than the `max` length, return the string.\n * Else return the string, shortened to `max - 3` and append three dots (\"...\").\n *\n * @param max the maximum length of the string to return\n * @param str the input string\n */\nexport function maxLength(max, str) {\n if (str.length <= max)\n return str;\n return str.substr(0, max - 3) + '...';\n}\n/**\n * Returns a string, with spaces added to the end, up to a desired str length\n *\n * If the string is already longer than the desired length, return the string.\n * Else returns the string, with extra spaces on the end, such that it reaches `length` characters.\n *\n * @param length the desired length of the string to return\n * @param str the input string\n */\nexport function padString(length, str) {\n while (str.length < length)\n str += ' ';\n return str;\n}\nexport function kebobString(camelCase) {\n return camelCase\n .replace(/^([A-Z])/, function ($1) { return $1.toLowerCase(); }) // replace first char\n .replace(/([A-Z])/g, function ($1) { return '-' + $1.toLowerCase(); }); // replace rest\n}\nexport function functionToString(fn) {\n var fnStr = fnToString(fn);\n var namedFunctionMatch = fnStr.match(/^(function [^ ]+\\([^)]*\\))/);\n var toStr = namedFunctionMatch ? namedFunctionMatch[1] : fnStr;\n var fnName = fn['name'] || '';\n if (fnName && toStr.match(/function \\(/)) {\n return 'function ' + fnName + toStr.substr(9);\n }\n return toStr;\n}\nexport function fnToString(fn) {\n var _fn = isArray(fn) ? fn.slice(-1)[0] : fn;\n return (_fn && _fn.toString()) || 'undefined';\n}\nexport function stringify(o) {\n var seen = [];\n var isRejection = Rejection.isRejectionPromise;\n var hasToString = function (obj) {\n return isObject(obj) && !isArray(obj) && obj.constructor !== Object && isFunction(obj.toString);\n };\n var stringifyPattern = pattern([\n [isUndefined, val('undefined')],\n [isNull, val('null')],\n [isPromise, val('[Promise]')],\n [isRejection, function (x) { return x._transitionRejection.toString(); }],\n [hasToString, function (x) { return x.toString(); }],\n [isInjectable, functionToString],\n [val(true), identity],\n ]);\n function format(value) {\n if (isObject(value)) {\n if (seen.indexOf(value) !== -1)\n return '[circular ref]';\n seen.push(value);\n }\n return stringifyPattern(value);\n }\n if (isUndefined(o)) {\n // Workaround for IE & Edge Spec incompatibility where replacer function would not be called when JSON.stringify\n // is given `undefined` as value. To work around that, we simply detect `undefined` and bail out early by\n // manually stringifying it.\n return format(o);\n }\n return JSON.stringify(o, function (key, value) { return format(value); }).replace(/\\\\\"/g, '\"');\n}\n/** Returns a function that splits a string on a character or substring */\nexport var beforeAfterSubstr = function (char) {\n return function (str) {\n if (!str)\n return ['', ''];\n var idx = str.indexOf(char);\n if (idx === -1)\n return [str, ''];\n return [str.substr(0, idx), str.substr(idx + 1)];\n };\n};\nexport var hostRegex = new RegExp('^(?:[a-z]+:)?//[^/]+/');\nexport var stripLastPathElement = function (str) { return str.replace(/\\/[^/]*$/, ''); };\nexport var splitHash = beforeAfterSubstr('#');\nexport var splitQuery = beforeAfterSubstr('?');\nexport var splitEqual = beforeAfterSubstr('=');\nexport var trimHashVal = function (str) { return (str ? str.replace(/^#/, '') : ''); };\n/**\n * Splits on a delimiter, but returns the delimiters in the array\n *\n * #### Example:\n * ```js\n * var splitOnSlashes = splitOnDelim('/');\n * splitOnSlashes(\"/foo\"); // [\"/\", \"foo\"]\n * splitOnSlashes(\"/foo/\"); // [\"/\", \"foo\", \"/\"]\n * ```\n */\nexport function splitOnDelim(delim) {\n var re = new RegExp('(' + delim + ')', 'g');\n return function (str) { return str.split(re).filter(identity); };\n}\n/**\n * Reduce fn that joins neighboring strings\n *\n * Given an array of strings, returns a new array\n * where all neighboring strings have been joined.\n *\n * #### Example:\n * ```js\n * let arr = [\"foo\", \"bar\", 1, \"baz\", \"\", \"qux\" ];\n * arr.reduce(joinNeighborsR, []) // [\"foobar\", 1, \"bazqux\" ]\n * ```\n */\nexport function joinNeighborsR(acc, x) {\n if (isString(tail(acc)) && isString(x))\n return acc.slice(0, -1).concat(tail(acc) + x);\n return pushR(acc, x);\n}\n","/**\n * # Transition tracing (debug)\n *\n * Enable transition tracing to print transition information to the console,\n * in order to help debug your application.\n * Tracing logs detailed information about each Transition to your console.\n *\n * To enable tracing, import the [[Trace]] singleton and enable one or more categories.\n *\n * ### ES6\n * ```js\n * import {trace} from \"@uirouter/core\";\n * trace.enable(1, 5); // TRANSITION and VIEWCONFIG\n * ```\n *\n * ### CJS\n * ```js\n * let trace = require(\"@uirouter/core\").trace;\n * trace.enable(\"TRANSITION\", \"VIEWCONFIG\");\n * ```\n *\n * ### Globals\n * ```js\n * let trace = window[\"@uirouter/core\"].trace;\n * trace.enable(); // Trace everything (very verbose)\n * ```\n *\n * ### Angular 1:\n * ```js\n * app.run($trace => $trace.enable());\n * ```\n *\n * @packageDocumentation\n */\nimport { parse } from '../common/hof';\nimport { isNumber } from '../common/predicates';\nimport { stringify, functionToString, maxLength, padString } from './strings';\nimport { safeConsole } from './safeConsole';\nfunction uiViewString(uiview) {\n if (!uiview)\n return 'ui-view (defunct)';\n var state = uiview.creationContext ? uiview.creationContext.name || '(root)' : '(none)';\n return \"[ui-view#\" + uiview.id + \" \" + uiview.$type + \":\" + uiview.fqn + \" (\" + uiview.name + \"@\" + state + \")]\";\n}\nvar viewConfigString = function (viewConfig) {\n var view = viewConfig.viewDecl;\n var state = view.$context.name || '(root)';\n return \"[View#\" + viewConfig.$id + \" from '\" + state + \"' state]: target ui-view: '\" + view.$uiViewName + \"@\" + view.$uiViewContextAnchor + \"'\";\n};\nfunction normalizedCat(input) {\n return isNumber(input) ? Category[input] : Category[Category[input]];\n}\n/**\n * Trace categories Enum\n *\n * Enable or disable a category using [[Trace.enable]] or [[Trace.disable]]\n *\n * `trace.enable(Category.TRANSITION)`\n *\n * These can also be provided using a matching string, or position ordinal\n *\n * `trace.enable(\"TRANSITION\")`\n *\n * `trace.enable(1)`\n */\nvar Category;\n(function (Category) {\n Category[Category[\"RESOLVE\"] = 0] = \"RESOLVE\";\n Category[Category[\"TRANSITION\"] = 1] = \"TRANSITION\";\n Category[Category[\"HOOK\"] = 2] = \"HOOK\";\n Category[Category[\"UIVIEW\"] = 3] = \"UIVIEW\";\n Category[Category[\"VIEWCONFIG\"] = 4] = \"VIEWCONFIG\";\n})(Category || (Category = {}));\nexport { Category };\nvar _tid = parse('$id');\nvar _rid = parse('router.$id');\nvar transLbl = function (trans) { return \"Transition #\" + _tid(trans) + \"-\" + _rid(trans); };\n/**\n * Prints UI-Router Transition trace information to the console.\n */\nvar Trace = /** @class */ (function () {\n /** @internal */\n function Trace() {\n /** @internal */\n this._enabled = {};\n this.approximateDigests = 0;\n }\n /** @internal */\n Trace.prototype._set = function (enabled, categories) {\n var _this = this;\n if (!categories.length) {\n categories = Object.keys(Category)\n .map(function (k) { return parseInt(k, 10); })\n .filter(function (k) { return !isNaN(k); })\n .map(function (key) { return Category[key]; });\n }\n categories.map(normalizedCat).forEach(function (category) { return (_this._enabled[category] = enabled); });\n };\n Trace.prototype.enable = function () {\n var categories = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n categories[_i] = arguments[_i];\n }\n this._set(true, categories);\n };\n Trace.prototype.disable = function () {\n var categories = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n categories[_i] = arguments[_i];\n }\n this._set(false, categories);\n };\n /**\n * Retrieves the enabled stateus of a [[Category]]\n *\n * ```js\n * trace.enabled(\"VIEWCONFIG\"); // true or false\n * ```\n *\n * @returns boolean true if the category is enabled\n */\n Trace.prototype.enabled = function (category) {\n return !!this._enabled[normalizedCat(category)];\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceTransitionStart = function (trans) {\n if (!this.enabled(Category.TRANSITION))\n return;\n safeConsole.log(transLbl(trans) + \": Started -> \" + stringify(trans));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceTransitionIgnored = function (trans) {\n if (!this.enabled(Category.TRANSITION))\n return;\n safeConsole.log(transLbl(trans) + \": Ignored <> \" + stringify(trans));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceHookInvocation = function (step, trans, options) {\n if (!this.enabled(Category.HOOK))\n return;\n var event = parse('traceData.hookType')(options) || 'internal', context = parse('traceData.context.state.name')(options) || parse('traceData.context')(options) || 'unknown', name = functionToString(step.registeredHook.callback);\n safeConsole.log(transLbl(trans) + \": Hook -> \" + event + \" context: \" + context + \", \" + maxLength(200, name));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceHookResult = function (hookResult, trans, transitionOptions) {\n if (!this.enabled(Category.HOOK))\n return;\n safeConsole.log(transLbl(trans) + \": <- Hook returned: \" + maxLength(200, stringify(hookResult)));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceResolvePath = function (path, when, trans) {\n if (!this.enabled(Category.RESOLVE))\n return;\n safeConsole.log(transLbl(trans) + \": Resolving \" + path + \" (\" + when + \")\");\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceResolvableResolved = function (resolvable, trans) {\n if (!this.enabled(Category.RESOLVE))\n return;\n safeConsole.log(transLbl(trans) + \": <- Resolved \" + resolvable + \" to: \" + maxLength(200, stringify(resolvable.data)));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceError = function (reason, trans) {\n if (!this.enabled(Category.TRANSITION))\n return;\n safeConsole.log(transLbl(trans) + \": <- Rejected \" + stringify(trans) + \", reason: \" + reason);\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceSuccess = function (finalState, trans) {\n if (!this.enabled(Category.TRANSITION))\n return;\n safeConsole.log(transLbl(trans) + \": <- Success \" + stringify(trans) + \", final state: \" + finalState.name);\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceUIViewEvent = function (event, viewData, extra) {\n if (extra === void 0) { extra = ''; }\n if (!this.enabled(Category.UIVIEW))\n return;\n safeConsole.log(\"ui-view: \" + padString(30, event) + \" \" + uiViewString(viewData) + extra);\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceUIViewConfigUpdated = function (viewData, context) {\n if (!this.enabled(Category.UIVIEW))\n return;\n this.traceUIViewEvent('Updating', viewData, \" with ViewConfig from context='\" + context + \"'\");\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceUIViewFill = function (viewData, html) {\n if (!this.enabled(Category.UIVIEW))\n return;\n this.traceUIViewEvent('Fill', viewData, \" with: \" + maxLength(200, html));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceViewSync = function (pairs) {\n if (!this.enabled(Category.VIEWCONFIG))\n return;\n var uivheader = 'uiview component fqn';\n var cfgheader = 'view config state (view name)';\n var mapping = pairs\n .map(function (_a) {\n var _b;\n var uiView = _a.uiView, viewConfig = _a.viewConfig;\n var uiv = uiView && uiView.fqn;\n var cfg = viewConfig && viewConfig.viewDecl.$context.name + \": (\" + viewConfig.viewDecl.$name + \")\";\n return _b = {}, _b[uivheader] = uiv, _b[cfgheader] = cfg, _b;\n })\n .sort(function (a, b) { return (a[uivheader] || '').localeCompare(b[uivheader] || ''); });\n safeConsole.table(mapping);\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceViewServiceEvent = function (event, viewConfig) {\n if (!this.enabled(Category.VIEWCONFIG))\n return;\n safeConsole.log(\"VIEWCONFIG: \" + event + \" \" + viewConfigString(viewConfig));\n };\n /** @internal called by ui-router code */\n Trace.prototype.traceViewServiceUIViewEvent = function (event, viewData) {\n if (!this.enabled(Category.VIEWCONFIG))\n return;\n safeConsole.log(\"VIEWCONFIG: \" + event + \" \" + uiViewString(viewData));\n };\n return Trace;\n}());\nexport { Trace };\n/**\n * The [[Trace]] singleton\n *\n * #### Example:\n * ```js\n * import {trace} from \"@uirouter/core\";\n * trace.enable(1, 5);\n * ```\n */\nvar trace = new Trace();\nexport { trace };\n","import { StateParams } from './params/stateParams';\nimport { Queue } from './common/queue';\n/**\n * Global router state\n *\n * This is where we hold the global mutable state such as current state, current\n * params, current transition, etc.\n */\nvar UIRouterGlobals = /** @class */ (function () {\n function UIRouterGlobals() {\n /**\n * Current parameter values\n *\n * The parameter values from the latest successful transition\n */\n this.params = new StateParams();\n /** @internal */\n this.lastStartedTransitionId = -1;\n /** @internal */\n this.transitionHistory = new Queue([], 1);\n /** @internal */\n this.successfulTransitions = new Queue([], 1);\n }\n UIRouterGlobals.prototype.dispose = function () {\n this.transitionHistory.clear();\n this.successfulTransitions.clear();\n this.transition = null;\n };\n return UIRouterGlobals;\n}());\nexport { UIRouterGlobals };\n","import { services } from '../common/coreservices';\n/**\n * A [[TransitionHookFn]] that performs lazy loading\n *\n * When entering a state \"abc\" which has a `lazyLoad` function defined:\n * - Invoke the `lazyLoad` function (unless it is already in process)\n * - Flag the hook function as \"in process\"\n * - The function should return a promise (that resolves when lazy loading is complete)\n * - Wait for the promise to settle\n * - If the promise resolves to a [[LazyLoadResult]], then register those states\n * - Flag the hook function as \"not in process\"\n * - If the hook was successful\n * - Remove the `lazyLoad` function from the state declaration\n * - If all the hooks were successful\n * - Retry the transition (by returning a TargetState)\n *\n * ```\n * .state('abc', {\n * component: 'fooComponent',\n * lazyLoad: () => import('./fooComponent')\n * });\n * ```\n *\n * See [[StateDeclaration.lazyLoad]]\n */\nvar lazyLoadHook = function (transition) {\n var router = transition.router;\n function retryTransition() {\n if (transition.originalTransition().options().source !== 'url') {\n // The original transition was not triggered via url sync\n // The lazy state should be loaded now, so re-try the original transition\n var orig = transition.targetState();\n return router.stateService.target(orig.identifier(), orig.params(), orig.options());\n }\n // The original transition was triggered via url sync\n // Run the URL rules and find the best match\n var $url = router.urlService;\n var result = $url.match($url.parts());\n var rule = result && result.rule;\n // If the best match is a state, redirect the transition (instead\n // of calling sync() which supersedes the current transition)\n if (rule && rule.type === 'STATE') {\n var state = rule.state;\n var params = result.match;\n return router.stateService.target(state, params, transition.options());\n }\n // No matching state found, so let .sync() choose the best non-state match/otherwise\n router.urlService.sync();\n }\n var promises = transition\n .entering()\n .filter(function (state) { return !!state.$$state().lazyLoad; })\n .map(function (state) { return lazyLoadState(transition, state); });\n return services.$q.all(promises).then(retryTransition);\n};\nexport var registerLazyLoadHook = function (transitionService) {\n return transitionService.onBefore({ entering: function (state) { return !!state.lazyLoad; } }, lazyLoadHook);\n};\n/**\n * Invokes a state's lazy load function\n *\n * @param transition a Transition context\n * @param state the state to lazy load\n * @returns A promise for the lazy load result\n */\nexport function lazyLoadState(transition, state) {\n var lazyLoadFn = state.$$state().lazyLoad;\n // Store/get the lazy load promise on/from the hookfn so it doesn't get re-invoked\n var promise = lazyLoadFn['_promise'];\n if (!promise) {\n var success = function (result) {\n delete state.lazyLoad;\n delete state.$$state().lazyLoad;\n delete lazyLoadFn['_promise'];\n return result;\n };\n var error = function (err) {\n delete lazyLoadFn['_promise'];\n return services.$q.reject(err);\n };\n promise = lazyLoadFn['_promise'] = services.$q\n .when(lazyLoadFn(transition, state))\n .then(updateStateRegistry)\n .then(success, error);\n }\n /** Register any lazy loaded state definitions */\n function updateStateRegistry(result) {\n if (result && Array.isArray(result.states)) {\n result.states.forEach(function (_state) { return transition.router.stateRegistry.register(_state); });\n }\n return result;\n }\n return promise;\n}\n","var UIRouterPluginBase = /** @class */ (function () {\n function UIRouterPluginBase() {\n }\n UIRouterPluginBase.prototype.dispose = function (router) { };\n return UIRouterPluginBase;\n}());\nexport { UIRouterPluginBase };\n","import { extend, filter, map, allTrueR, find } from '../common/common';\nimport { prop } from '../common/hof';\nimport { isInjectable, isDefined, isString, isArray, isUndefined } from '../common/predicates';\nimport { services } from '../common/coreservices';\nimport { ParamType } from './paramType';\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar isShorthand = function (cfg) {\n return ['value', 'type', 'squash', 'array', 'dynamic'].filter(hasOwn.bind(cfg || {})).length === 0;\n};\nvar DefType;\n(function (DefType) {\n DefType[DefType[\"PATH\"] = 0] = \"PATH\";\n DefType[DefType[\"SEARCH\"] = 1] = \"SEARCH\";\n DefType[DefType[\"CONFIG\"] = 2] = \"CONFIG\";\n})(DefType || (DefType = {}));\nexport { DefType };\nfunction getParamDeclaration(paramName, location, state) {\n var noReloadOnSearch = (state.reloadOnSearch === false && location === DefType.SEARCH) || undefined;\n var dynamic = find([state.dynamic, noReloadOnSearch], isDefined);\n var defaultConfig = isDefined(dynamic) ? { dynamic: dynamic } : {};\n var paramConfig = unwrapShorthand(state && state.params && state.params[paramName]);\n return extend(defaultConfig, paramConfig);\n}\nfunction unwrapShorthand(cfg) {\n cfg = isShorthand(cfg) ? { value: cfg } : cfg;\n getStaticDefaultValue['__cacheable'] = true;\n function getStaticDefaultValue() {\n return cfg.value;\n }\n var $$fn = isInjectable(cfg.value) ? cfg.value : getStaticDefaultValue;\n return extend(cfg, { $$fn: $$fn });\n}\nfunction getType(cfg, urlType, location, id, paramTypes) {\n if (cfg.type && urlType && urlType.name !== 'string')\n throw new Error(\"Param '\" + id + \"' has two type configurations.\");\n if (cfg.type && urlType && urlType.name === 'string' && paramTypes.type(cfg.type))\n return paramTypes.type(cfg.type);\n if (urlType)\n return urlType;\n if (!cfg.type) {\n var type = location === DefType.CONFIG\n ? 'any'\n : location === DefType.PATH\n ? 'path'\n : location === DefType.SEARCH\n ? 'query'\n : 'string';\n return paramTypes.type(type);\n }\n return cfg.type instanceof ParamType ? cfg.type : paramTypes.type(cfg.type);\n}\n/** returns false, true, or the squash value to indicate the \"default parameter url squash policy\". */\nfunction getSquashPolicy(config, isOptional, defaultPolicy) {\n var squash = config.squash;\n if (!isOptional || squash === false)\n return false;\n if (!isDefined(squash) || squash == null)\n return defaultPolicy;\n if (squash === true || isString(squash))\n return squash;\n throw new Error(\"Invalid squash policy: '\" + squash + \"'. Valid policies: false, true, or arbitrary string\");\n}\nfunction getReplace(config, arrayMode, isOptional, squash) {\n var defaultPolicy = [\n { from: '', to: isOptional || arrayMode ? undefined : '' },\n { from: null, to: isOptional || arrayMode ? undefined : '' },\n ];\n var replace = isArray(config.replace) ? config.replace : [];\n if (isString(squash))\n replace.push({ from: squash, to: undefined });\n var configuredKeys = map(replace, prop('from'));\n return filter(defaultPolicy, function (item) { return configuredKeys.indexOf(item.from) === -1; }).concat(replace);\n}\nvar Param = /** @class */ (function () {\n function Param(id, type, location, urlConfig, state) {\n var config = getParamDeclaration(id, location, state);\n type = getType(config, type, location, id, urlConfig.paramTypes);\n var arrayMode = getArrayMode();\n type = arrayMode ? type.$asArray(arrayMode, location === DefType.SEARCH) : type;\n var isOptional = config.value !== undefined || location === DefType.SEARCH;\n var dynamic = isDefined(config.dynamic) ? !!config.dynamic : !!type.dynamic;\n var raw = isDefined(config.raw) ? !!config.raw : !!type.raw;\n var squash = getSquashPolicy(config, isOptional, urlConfig.defaultSquashPolicy());\n var replace = getReplace(config, arrayMode, isOptional, squash);\n var inherit = isDefined(config.inherit) ? !!config.inherit : !!type.inherit;\n // array config: param name (param[]) overrides default settings. explicit config overrides param name.\n function getArrayMode() {\n var arrayDefaults = { array: location === DefType.SEARCH ? 'auto' : false };\n var arrayParamNomenclature = id.match(/\\[\\]$/) ? { array: true } : {};\n return extend(arrayDefaults, arrayParamNomenclature, config).array;\n }\n extend(this, { id: id, type: type, location: location, isOptional: isOptional, dynamic: dynamic, raw: raw, squash: squash, replace: replace, inherit: inherit, array: arrayMode, config: config });\n }\n Param.values = function (params, values) {\n if (values === void 0) { values = {}; }\n var paramValues = {};\n for (var _i = 0, params_1 = params; _i < params_1.length; _i++) {\n var param = params_1[_i];\n paramValues[param.id] = param.value(values[param.id]);\n }\n return paramValues;\n };\n /**\n * Finds [[Param]] objects which have different param values\n *\n * Filters a list of [[Param]] objects to only those whose parameter values differ in two param value objects\n *\n * @param params: The list of Param objects to filter\n * @param values1: The first set of parameter values\n * @param values2: the second set of parameter values\n *\n * @returns any Param objects whose values were different between values1 and values2\n */\n Param.changed = function (params, values1, values2) {\n if (values1 === void 0) { values1 = {}; }\n if (values2 === void 0) { values2 = {}; }\n return params.filter(function (param) { return !param.type.equals(values1[param.id], values2[param.id]); });\n };\n /**\n * Checks if two param value objects are equal (for a set of [[Param]] objects)\n *\n * @param params The list of [[Param]] objects to check\n * @param values1 The first set of param values\n * @param values2 The second set of param values\n *\n * @returns true if the param values in values1 and values2 are equal\n */\n Param.equals = function (params, values1, values2) {\n if (values1 === void 0) { values1 = {}; }\n if (values2 === void 0) { values2 = {}; }\n return Param.changed(params, values1, values2).length === 0;\n };\n /** Returns true if a the parameter values are valid, according to the Param definitions */\n Param.validates = function (params, values) {\n if (values === void 0) { values = {}; }\n return params.map(function (param) { return param.validates(values[param.id]); }).reduce(allTrueR, true);\n };\n Param.prototype.isDefaultValue = function (value) {\n return this.isOptional && this.type.equals(this.value(), value);\n };\n /**\n * [Internal] Gets the decoded representation of a value if the value is defined, otherwise, returns the\n * default value, which may be the result of an injectable function.\n */\n Param.prototype.value = function (value) {\n var _this = this;\n /**\n * [Internal] Get the default value of a parameter, which may be an injectable function.\n */\n var getDefaultValue = function () {\n if (_this._defaultValueCache)\n return _this._defaultValueCache.defaultValue;\n if (!services.$injector)\n throw new Error('Injectable functions cannot be called at configuration time');\n var defaultValue = services.$injector.invoke(_this.config.$$fn);\n if (defaultValue !== null && defaultValue !== undefined && !_this.type.is(defaultValue))\n throw new Error(\"Default value (\" + defaultValue + \") for parameter '\" + _this.id + \"' is not an instance of ParamType (\" + _this.type.name + \")\");\n if (_this.config.$$fn['__cacheable']) {\n _this._defaultValueCache = { defaultValue: defaultValue };\n }\n return defaultValue;\n };\n var replaceSpecialValues = function (val) {\n for (var _i = 0, _a = _this.replace; _i < _a.length; _i++) {\n var tuple = _a[_i];\n if (tuple.from === val)\n return tuple.to;\n }\n return val;\n };\n value = replaceSpecialValues(value);\n return isUndefined(value) ? getDefaultValue() : this.type.$normalize(value);\n };\n Param.prototype.isSearch = function () {\n return this.location === DefType.SEARCH;\n };\n Param.prototype.validates = function (value) {\n // There was no parameter value, but the param is optional\n if ((isUndefined(value) || value === null) && this.isOptional)\n return true;\n // The value was not of the correct ParamType, and could not be decoded to the correct ParamType\n var normalized = this.type.$normalize(value);\n if (!this.type.is(normalized))\n return false;\n // The value was of the correct type, but when encoded, did not match the ParamType's regexp\n var encoded = this.type.encode(normalized);\n return !(isString(encoded) && !this.type.pattern.exec(encoded));\n };\n Param.prototype.toString = function () {\n return \"{Param:\" + this.id + \" \" + this.type + \" squash: '\" + this.squash + \"' optional: \" + this.isOptional + \"}\";\n };\n return Param;\n}());\nexport { Param };\n","import { extend, filter, map } from '../common/common';\nimport { isArray, isDefined } from '../common/predicates';\n/**\n * An internal class which implements [[ParamTypeDefinition]].\n *\n * A [[ParamTypeDefinition]] is a plain javascript object used to register custom parameter types.\n * When a param type definition is registered, an instance of this class is created internally.\n *\n * This class has naive implementations for all the [[ParamTypeDefinition]] methods.\n *\n * Used by [[UrlMatcher]] when matching or formatting URLs, or comparing and validating parameter values.\n *\n * #### Example:\n * ```js\n * var paramTypeDef = {\n * decode: function(val) { return parseInt(val, 10); },\n * encode: function(val) { return val && val.toString(); },\n * equals: function(a, b) { return this.is(a) && a === b; },\n * is: function(val) { return angular.isNumber(val) && isFinite(val) && val % 1 === 0; },\n * pattern: /\\d+/\n * }\n *\n * var paramType = new ParamType(paramTypeDef);\n * ```\n */\nvar ParamType = /** @class */ (function () {\n /**\n * @param def A configuration object which contains the custom type definition. The object's\n * properties will override the default methods and/or pattern in `ParamType`'s public interface.\n * @returns a new ParamType object\n */\n function ParamType(def) {\n /** @inheritdoc */\n this.pattern = /.*/;\n /** @inheritdoc */\n this.inherit = true;\n extend(this, def);\n }\n // consider these four methods to be \"abstract methods\" that should be overridden\n /** @inheritdoc */\n ParamType.prototype.is = function (val, key) {\n return true;\n };\n /** @inheritdoc */\n ParamType.prototype.encode = function (val, key) {\n return val;\n };\n /** @inheritdoc */\n ParamType.prototype.decode = function (val, key) {\n return val;\n };\n /** @inheritdoc */\n ParamType.prototype.equals = function (a, b) {\n // tslint:disable-next-line:triple-equals\n return a == b;\n };\n ParamType.prototype.$subPattern = function () {\n var sub = this.pattern.toString();\n return sub.substr(1, sub.length - 2);\n };\n ParamType.prototype.toString = function () {\n return \"{ParamType:\" + this.name + \"}\";\n };\n /** Given an encoded string, or a decoded object, returns a decoded object */\n ParamType.prototype.$normalize = function (val) {\n return this.is(val) ? val : this.decode(val);\n };\n /**\n * Wraps an existing custom ParamType as an array of ParamType, depending on 'mode'.\n * e.g.:\n * - urlmatcher pattern \"/path?{queryParam[]:int}\"\n * - url: \"/path?queryParam=1&queryParam=2\n * - $stateParams.queryParam will be [1, 2]\n * if `mode` is \"auto\", then\n * - url: \"/path?queryParam=1 will create $stateParams.queryParam: 1\n * - url: \"/path?queryParam=1&queryParam=2 will create $stateParams.queryParam: [1, 2]\n */\n ParamType.prototype.$asArray = function (mode, isSearch) {\n if (!mode)\n return this;\n if (mode === 'auto' && !isSearch)\n throw new Error(\"'auto' array mode is for query parameters only\");\n return new ArrayType(this, mode);\n };\n return ParamType;\n}());\nexport { ParamType };\n/** Wraps up a `ParamType` object to handle array values. */\nfunction ArrayType(type, mode) {\n var _this = this;\n // Wrap non-array value as array\n function arrayWrap(val) {\n return isArray(val) ? val : isDefined(val) ? [val] : [];\n }\n // Unwrap array value for \"auto\" mode. Return undefined for empty array.\n function arrayUnwrap(val) {\n switch (val.length) {\n case 0:\n return undefined;\n case 1:\n return mode === 'auto' ? val[0] : val;\n default:\n return val;\n }\n }\n // Wraps type (.is/.encode/.decode) functions to operate on each value of an array\n function arrayHandler(callback, allTruthyMode) {\n return function handleArray(val) {\n if (isArray(val) && val.length === 0)\n return val;\n var arr = arrayWrap(val);\n var result = map(arr, callback);\n return allTruthyMode === true ? filter(result, function (x) { return !x; }).length === 0 : arrayUnwrap(result);\n };\n }\n // Wraps type (.equals) functions to operate on each value of an array\n function arrayEqualsHandler(callback) {\n return function handleArray(val1, val2) {\n var left = arrayWrap(val1), right = arrayWrap(val2);\n if (left.length !== right.length)\n return false;\n for (var i = 0; i < left.length; i++) {\n if (!callback(left[i], right[i]))\n return false;\n }\n return true;\n };\n }\n ['encode', 'decode', 'equals', '$normalize'].forEach(function (name) {\n var paramTypeFn = type[name].bind(type);\n var wrapperFn = name === 'equals' ? arrayEqualsHandler : arrayHandler;\n _this[name] = wrapperFn(paramTypeFn);\n });\n extend(this, {\n dynamic: type.dynamic,\n name: type.name,\n pattern: type.pattern,\n inherit: type.inherit,\n raw: type.raw,\n is: arrayHandler(type.is.bind(type), true),\n $arrayMode: mode,\n });\n}\n","import { fromJson, toJson, identity, equals, inherit, map, extend, pick } from '../common/common';\nimport { isDefined, isNullOrUndefined } from '../common/predicates';\nimport { is } from '../common/hof';\nimport { services } from '../common/coreservices';\nimport { ParamType } from './paramType';\n/**\n * A registry for parameter types.\n *\n * This registry manages the built-in (and custom) parameter types.\n *\n * The built-in parameter types are:\n *\n * - [[string]]\n * - [[path]]\n * - [[query]]\n * - [[hash]]\n * - [[int]]\n * - [[bool]]\n * - [[date]]\n * - [[json]]\n * - [[any]]\n *\n * To register custom parameter types, use [[UrlConfig.type]], i.e.,\n *\n * ```js\n * router.urlService.config.type(customType)\n * ```\n */\nvar ParamTypes = /** @class */ (function () {\n function ParamTypes() {\n this.enqueue = true;\n this.typeQueue = [];\n this.defaultTypes = pick(ParamTypes.prototype, [\n 'hash',\n 'string',\n 'query',\n 'path',\n 'int',\n 'bool',\n 'date',\n 'json',\n 'any',\n ]);\n // Register default types. Store them in the prototype of this.types.\n var makeType = function (definition, name) { return new ParamType(extend({ name: name }, definition)); };\n this.types = inherit(map(this.defaultTypes, makeType), {});\n }\n ParamTypes.prototype.dispose = function () {\n this.types = {};\n };\n /**\n * Registers a parameter type\n *\n * End users should call [[UrlMatcherFactory.type]], which delegates to this method.\n */\n ParamTypes.prototype.type = function (name, definition, definitionFn) {\n if (!isDefined(definition))\n return this.types[name];\n if (this.types.hasOwnProperty(name))\n throw new Error(\"A type named '\" + name + \"' has already been defined.\");\n this.types[name] = new ParamType(extend({ name: name }, definition));\n if (definitionFn) {\n this.typeQueue.push({ name: name, def: definitionFn });\n if (!this.enqueue)\n this._flushTypeQueue();\n }\n return this;\n };\n ParamTypes.prototype._flushTypeQueue = function () {\n while (this.typeQueue.length) {\n var type = this.typeQueue.shift();\n if (type.pattern)\n throw new Error(\"You cannot override a type's .pattern at runtime.\");\n extend(this.types[type.name], services.$injector.invoke(type.def));\n }\n };\n return ParamTypes;\n}());\nexport { ParamTypes };\nfunction initDefaultTypes() {\n var makeDefaultType = function (def) {\n var valToString = function (val) { return (val != null ? val.toString() : val); };\n var defaultTypeBase = {\n encode: valToString,\n decode: valToString,\n is: is(String),\n pattern: /.*/,\n // tslint:disable-next-line:triple-equals\n equals: function (a, b) { return a == b; },\n };\n return extend({}, defaultTypeBase, def);\n };\n // Default Parameter Type Definitions\n extend(ParamTypes.prototype, {\n string: makeDefaultType({}),\n path: makeDefaultType({\n pattern: /[^/]*/,\n }),\n query: makeDefaultType({}),\n hash: makeDefaultType({\n inherit: false,\n }),\n int: makeDefaultType({\n decode: function (val) { return parseInt(val, 10); },\n is: function (val) {\n return !isNullOrUndefined(val) && this.decode(val.toString()) === val;\n },\n pattern: /-?\\d+/,\n }),\n bool: makeDefaultType({\n encode: function (val) { return (val && 1) || 0; },\n decode: function (val) { return parseInt(val, 10) !== 0; },\n is: is(Boolean),\n pattern: /0|1/,\n }),\n date: makeDefaultType({\n encode: function (val) {\n return !this.is(val)\n ? undefined\n : [val.getFullYear(), ('0' + (val.getMonth() + 1)).slice(-2), ('0' + val.getDate()).slice(-2)].join('-');\n },\n decode: function (val) {\n if (this.is(val))\n return val;\n var match = this.capture.exec(val);\n return match ? new Date(match[1], match[2] - 1, match[3]) : undefined;\n },\n is: function (val) { return val instanceof Date && !isNaN(val.valueOf()); },\n equals: function (l, r) {\n return ['getFullYear', 'getMonth', 'getDate'].reduce(function (acc, fn) { return acc && l[fn]() === r[fn](); }, true);\n },\n pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,\n capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/,\n }),\n json: makeDefaultType({\n encode: toJson,\n decode: fromJson,\n is: is(Object),\n equals: equals,\n pattern: /[^/]*/,\n }),\n // does not encode/decode\n any: makeDefaultType({\n encode: identity,\n decode: identity,\n is: function () { return true; },\n equals: equals,\n }),\n });\n}\ninitDefaultTypes();\n","import { extend, ancestors } from '../common/common';\nvar StateParams = /** @class */ (function () {\n function StateParams(params) {\n if (params === void 0) { params = {}; }\n extend(this, params);\n }\n /**\n * Merges a set of parameters with all parameters inherited between the common parents of the\n * current state and a given destination state.\n *\n * @param {Object} newParams The set of parameters which will be composited with inherited params.\n * @param {Object} $current Internal definition of object representing the current state.\n * @param {Object} $to Internal definition of object representing state to transition to.\n */\n StateParams.prototype.$inherit = function (newParams, $current, $to) {\n var parents = ancestors($current, $to), inherited = {}, inheritList = [];\n for (var i in parents) {\n if (!parents[i] || !parents[i].params)\n continue;\n var parentParams = parents[i].params;\n var parentParamsKeys = Object.keys(parentParams);\n if (!parentParamsKeys.length)\n continue;\n for (var j in parentParamsKeys) {\n if (parentParams[parentParamsKeys[j]].inherit == false || inheritList.indexOf(parentParamsKeys[j]) >= 0)\n continue;\n inheritList.push(parentParamsKeys[j]);\n inherited[parentParamsKeys[j]] = this[parentParamsKeys[j]];\n }\n }\n return extend({}, inherited, newParams);\n };\n return StateParams;\n}());\nexport { StateParams };\n","import { extend, applyPairs, find } from '../common/common';\nimport { propEq } from '../common/hof';\nimport { Param } from '../params/param';\n/**\n * A node in a [[TreeChanges]] path\n *\n * For a [[TreeChanges]] path, this class holds the stateful information for a single node in the path.\n * Each PathNode corresponds to a state being entered, exited, or retained.\n * The stateful information includes parameter values and resolve data.\n */\nvar PathNode = /** @class */ (function () {\n function PathNode(stateOrNode) {\n if (stateOrNode instanceof PathNode) {\n var node = stateOrNode;\n this.state = node.state;\n this.paramSchema = node.paramSchema.slice();\n this.paramValues = extend({}, node.paramValues);\n this.resolvables = node.resolvables.slice();\n this.views = node.views && node.views.slice();\n }\n else {\n var state = stateOrNode;\n this.state = state;\n this.paramSchema = state.parameters({ inherit: false });\n this.paramValues = {};\n this.resolvables = state.resolvables.map(function (res) { return res.clone(); });\n }\n }\n PathNode.prototype.clone = function () {\n return new PathNode(this);\n };\n /** Sets [[paramValues]] for the node, from the values of an object hash */\n PathNode.prototype.applyRawParams = function (params) {\n var getParamVal = function (paramDef) { return [paramDef.id, paramDef.value(params[paramDef.id])]; };\n this.paramValues = this.paramSchema.reduce(function (memo, pDef) { return applyPairs(memo, getParamVal(pDef)); }, {});\n return this;\n };\n /** Gets a specific [[Param]] metadata that belongs to the node */\n PathNode.prototype.parameter = function (name) {\n return find(this.paramSchema, propEq('id', name));\n };\n /**\n * @returns true if the state and parameter values for another PathNode are\n * equal to the state and param values for this PathNode\n */\n PathNode.prototype.equals = function (node, paramsFn) {\n var diff = this.diff(node, paramsFn);\n return diff && diff.length === 0;\n };\n /**\n * Finds Params with different parameter values on another PathNode.\n *\n * Given another node (of the same state), finds the parameter values which differ.\n * Returns the [[Param]] (schema objects) whose parameter values differ.\n *\n * Given another node for a different state, returns `false`\n *\n * @param node The node to compare to\n * @param paramsFn A function that returns which parameters should be compared.\n * @returns The [[Param]]s which differ, or null if the two nodes are for different states\n */\n PathNode.prototype.diff = function (node, paramsFn) {\n if (this.state !== node.state)\n return false;\n var params = paramsFn ? paramsFn(this) : this.paramSchema;\n return Param.changed(params, this.paramValues, node.paramValues);\n };\n /**\n * Returns a clone of the PathNode\n * @deprecated use instance method `node.clone()`\n */\n PathNode.clone = function (node) { return node.clone(); };\n return PathNode;\n}());\nexport { PathNode };\n","import { extend, find, pick, omit, tail, mergeR, values, unnestR, inArray, arrayTuples, } from '../common/common';\nimport { prop, propEq } from '../common/hof';\nimport { TargetState } from '../state/targetState';\nimport { PathNode } from './pathNode';\n/**\n * This class contains functions which convert TargetStates, Nodes and paths from one type to another.\n */\nvar PathUtils = /** @class */ (function () {\n function PathUtils() {\n }\n /** Given a PathNode[], create an TargetState */\n PathUtils.makeTargetState = function (registry, path) {\n var state = tail(path).state;\n return new TargetState(registry, state, path.map(prop('paramValues')).reduce(mergeR, {}), {});\n };\n PathUtils.buildPath = function (targetState) {\n var toParams = targetState.params();\n return targetState.$state().path.map(function (state) { return new PathNode(state).applyRawParams(toParams); });\n };\n /** Given a fromPath: PathNode[] and a TargetState, builds a toPath: PathNode[] */\n PathUtils.buildToPath = function (fromPath, targetState) {\n var toPath = PathUtils.buildPath(targetState);\n if (targetState.options().inherit) {\n return PathUtils.inheritParams(fromPath, toPath, Object.keys(targetState.params()));\n }\n return toPath;\n };\n /**\n * Creates ViewConfig objects and adds to nodes.\n *\n * On each [[PathNode]], creates ViewConfig objects from the views: property of the node's state\n */\n PathUtils.applyViewConfigs = function ($view, path, states) {\n // Only apply the viewConfigs to the nodes for the given states\n path\n .filter(function (node) { return inArray(states, node.state); })\n .forEach(function (node) {\n var viewDecls = values(node.state.views || {});\n var subPath = PathUtils.subPath(path, function (n) { return n === node; });\n var viewConfigs = viewDecls.map(function (view) { return $view.createViewConfig(subPath, view); });\n node.views = viewConfigs.reduce(unnestR, []);\n });\n };\n /**\n * Given a fromPath and a toPath, returns a new to path which inherits parameters from the fromPath\n *\n * For a parameter in a node to be inherited from the from path:\n * - The toPath's node must have a matching node in the fromPath (by state).\n * - The parameter name must not be found in the toKeys parameter array.\n *\n * Note: the keys provided in toKeys are intended to be those param keys explicitly specified by some\n * caller, for instance, $state.transitionTo(..., toParams). If a key was found in toParams,\n * it is not inherited from the fromPath.\n */\n PathUtils.inheritParams = function (fromPath, toPath, toKeys) {\n if (toKeys === void 0) { toKeys = []; }\n function nodeParamVals(path, state) {\n var node = find(path, propEq('state', state));\n return extend({}, node && node.paramValues);\n }\n var noInherit = fromPath\n .map(function (node) { return node.paramSchema; })\n .reduce(unnestR, [])\n .filter(function (param) { return !param.inherit; })\n .map(prop('id'));\n /**\n * Given an [[PathNode]] \"toNode\", return a new [[PathNode]] with param values inherited from the\n * matching node in fromPath. Only inherit keys that aren't found in \"toKeys\" from the node in \"fromPath\"\"\n */\n function makeInheritedParamsNode(toNode) {\n // All param values for the node (may include default key/vals, when key was not found in toParams)\n var toParamVals = extend({}, toNode && toNode.paramValues);\n // limited to only those keys found in toParams\n var incomingParamVals = pick(toParamVals, toKeys);\n toParamVals = omit(toParamVals, toKeys);\n var fromParamVals = omit(nodeParamVals(fromPath, toNode.state) || {}, noInherit);\n // extend toParamVals with any fromParamVals, then override any of those those with incomingParamVals\n var ownParamVals = extend(toParamVals, fromParamVals, incomingParamVals);\n return new PathNode(toNode.state).applyRawParams(ownParamVals);\n }\n // The param keys specified by the incoming toParams\n return toPath.map(makeInheritedParamsNode);\n };\n /**\n * Computes the tree changes (entering, exiting) between a fromPath and toPath.\n */\n PathUtils.treeChanges = function (fromPath, toPath, reloadState) {\n var max = Math.min(fromPath.length, toPath.length);\n var keep = 0;\n var nodesMatch = function (node1, node2) { return node1.equals(node2, PathUtils.nonDynamicParams); };\n while (keep < max && fromPath[keep].state !== reloadState && nodesMatch(fromPath[keep], toPath[keep])) {\n keep++;\n }\n /** Given a retained node, return a new node which uses the to node's param values */\n function applyToParams(retainedNode, idx) {\n var cloned = retainedNode.clone();\n cloned.paramValues = toPath[idx].paramValues;\n return cloned;\n }\n var from, retained, exiting, entering, to;\n from = fromPath;\n retained = from.slice(0, keep);\n exiting = from.slice(keep);\n // Create a new retained path (with shallow copies of nodes) which have the params of the toPath mapped\n var retainedWithToParams = retained.map(applyToParams);\n entering = toPath.slice(keep);\n to = retainedWithToParams.concat(entering);\n return { from: from, to: to, retained: retained, retainedWithToParams: retainedWithToParams, exiting: exiting, entering: entering };\n };\n /**\n * Returns a new path which is: the subpath of the first path which matches the second path.\n *\n * The new path starts from root and contains any nodes that match the nodes in the second path.\n * It stops before the first non-matching node.\n *\n * Nodes are compared using their state property and their parameter values.\n * If a `paramsFn` is provided, only the [[Param]] returned by the function will be considered when comparing nodes.\n *\n * @param pathA the first path\n * @param pathB the second path\n * @param paramsFn a function which returns the parameters to consider when comparing\n *\n * @returns an array of PathNodes from the first path which match the nodes in the second path\n */\n PathUtils.matching = function (pathA, pathB, paramsFn) {\n var done = false;\n var tuples = arrayTuples(pathA, pathB);\n return tuples.reduce(function (matching, _a) {\n var nodeA = _a[0], nodeB = _a[1];\n done = done || !nodeA.equals(nodeB, paramsFn);\n return done ? matching : matching.concat(nodeA);\n }, []);\n };\n /**\n * Returns true if two paths are identical.\n *\n * @param pathA\n * @param pathB\n * @param paramsFn a function which returns the parameters to consider when comparing\n * @returns true if the the states and parameter values for both paths are identical\n */\n PathUtils.equals = function (pathA, pathB, paramsFn) {\n return pathA.length === pathB.length && PathUtils.matching(pathA, pathB, paramsFn).length === pathA.length;\n };\n /**\n * Return a subpath of a path, which stops at the first matching node\n *\n * Given an array of nodes, returns a subset of the array starting from the first node,\n * stopping when the first node matches the predicate.\n *\n * @param path a path of [[PathNode]]s\n * @param predicate a [[Predicate]] fn that matches [[PathNode]]s\n * @returns a subpath up to the matching node, or undefined if no match is found\n */\n PathUtils.subPath = function (path, predicate) {\n var node = find(path, predicate);\n var elementIdx = path.indexOf(node);\n return elementIdx === -1 ? undefined : path.slice(0, elementIdx + 1);\n };\n PathUtils.nonDynamicParams = function (node) {\n return node.state.parameters({ inherit: false }).filter(function (param) { return !param.dynamic; });\n };\n /** Gets the raw parameter values from a path */\n PathUtils.paramValues = function (path) { return path.reduce(function (acc, node) { return extend(acc, node.paramValues); }, {}); };\n return PathUtils;\n}());\nexport { PathUtils };\n","export var resolvePolicies = {\n when: {\n LAZY: 'LAZY',\n EAGER: 'EAGER',\n },\n async: {\n WAIT: 'WAIT',\n NOWAIT: 'NOWAIT',\n },\n};\n","import { extend, identity } from '../common/common';\nimport { services } from '../common/coreservices';\nimport { trace } from '../common/trace';\nimport { stringify } from '../common/strings';\nimport { isFunction, isObject } from '../common/predicates';\nimport { isNullOrUndefined } from '../common/predicates';\n// TODO: explicitly make this user configurable\nexport var defaultResolvePolicy = {\n when: 'LAZY',\n async: 'WAIT',\n};\n/**\n * The basic building block for the resolve system.\n *\n * Resolvables encapsulate a state's resolve's resolveFn, the resolveFn's declared dependencies, the wrapped (.promise),\n * and the unwrapped-when-complete (.data) result of the resolveFn.\n *\n * Resolvable.get() either retrieves the Resolvable's existing promise, or else invokes resolve() (which invokes the\n * resolveFn) and returns the resulting promise.\n *\n * Resolvable.get() and Resolvable.resolve() both execute within a context path, which is passed as the first\n * parameter to those fns.\n */\nvar Resolvable = /** @class */ (function () {\n function Resolvable(arg1, resolveFn, deps, policy, data) {\n this.resolved = false;\n this.promise = undefined;\n if (arg1 instanceof Resolvable) {\n extend(this, arg1);\n }\n else if (isFunction(resolveFn)) {\n if (isNullOrUndefined(arg1))\n throw new Error('new Resolvable(): token argument is required');\n if (!isFunction(resolveFn))\n throw new Error('new Resolvable(): resolveFn argument must be a function');\n this.token = arg1;\n this.policy = policy;\n this.resolveFn = resolveFn;\n this.deps = deps || [];\n this.data = data;\n this.resolved = data !== undefined;\n this.promise = this.resolved ? services.$q.when(this.data) : undefined;\n }\n else if (isObject(arg1) && arg1.token && (arg1.hasOwnProperty('resolveFn') || arg1.hasOwnProperty('data'))) {\n var literal = arg1;\n return new Resolvable(literal.token, literal.resolveFn, literal.deps, literal.policy, literal.data);\n }\n }\n Resolvable.prototype.getPolicy = function (state) {\n var thisPolicy = this.policy || {};\n var statePolicy = (state && state.resolvePolicy) || {};\n return {\n when: thisPolicy.when || statePolicy.when || defaultResolvePolicy.when,\n async: thisPolicy.async || statePolicy.async || defaultResolvePolicy.async,\n };\n };\n /**\n * Asynchronously resolve this Resolvable's data\n *\n * Given a ResolveContext that this Resolvable is found in:\n * Wait for this Resolvable's dependencies, then invoke this Resolvable's function\n * and update the Resolvable's state\n */\n Resolvable.prototype.resolve = function (resolveContext, trans) {\n var _this = this;\n var $q = services.$q;\n // Gets all dependencies from ResolveContext and wait for them to be resolved\n var getResolvableDependencies = function () {\n return $q.all(resolveContext.getDependencies(_this).map(function (resolvable) { return resolvable.get(resolveContext, trans); }));\n };\n // Invokes the resolve function passing the resolved dependencies as arguments\n var invokeResolveFn = function (resolvedDeps) { return _this.resolveFn.apply(null, resolvedDeps); };\n var node = resolveContext.findNode(this);\n var state = node && node.state;\n var asyncPolicy = this.getPolicy(state).async;\n var customAsyncPolicy = isFunction(asyncPolicy) ? asyncPolicy : identity;\n // After the final value has been resolved, update the state of the Resolvable\n var applyResolvedValue = function (resolvedValue) {\n _this.data = resolvedValue;\n _this.resolved = true;\n _this.resolveFn = null;\n trace.traceResolvableResolved(_this, trans);\n return _this.data;\n };\n // Sets the promise property first, then getsResolvableDependencies in the context of the promise chain. Always waits one tick.\n return (this.promise = $q\n .when()\n .then(getResolvableDependencies)\n .then(invokeResolveFn)\n .then(customAsyncPolicy)\n .then(applyResolvedValue));\n };\n /**\n * Gets a promise for this Resolvable's data.\n *\n * Fetches the data and returns a promise.\n * Returns the existing promise if it has already been fetched once.\n */\n Resolvable.prototype.get = function (resolveContext, trans) {\n return this.promise || this.resolve(resolveContext, trans);\n };\n Resolvable.prototype.toString = function () {\n return \"Resolvable(token: \" + stringify(this.token) + \", requires: [\" + this.deps.map(stringify) + \"])\";\n };\n Resolvable.prototype.clone = function () {\n return new Resolvable(this);\n };\n Resolvable.fromData = function (token, data) { return new Resolvable(token, function () { return data; }, null, null, data); };\n return Resolvable;\n}());\nexport { Resolvable };\n","import { find, tail, uniqR, unnestR, inArray } from '../common/common';\nimport { propEq, not } from '../common/hof';\nimport { trace } from '../common/trace';\nimport { services } from '../common/coreservices';\nimport { resolvePolicies } from './interface';\nimport { Resolvable } from './resolvable';\nimport { PathUtils } from '../path/pathUtils';\nimport { stringify } from '../common/strings';\nimport { isUndefined } from '../common';\nvar whens = resolvePolicies.when;\nvar ALL_WHENS = [whens.EAGER, whens.LAZY];\nvar EAGER_WHENS = [whens.EAGER];\n// tslint:disable-next-line:no-inferrable-types\nexport var NATIVE_INJECTOR_TOKEN = 'Native Injector';\n/**\n * Encapsulates Dependency Injection for a path of nodes\n *\n * UI-Router states are organized as a tree.\n * A nested state has a path of ancestors to the root of the tree.\n * When a state is being activated, each element in the path is wrapped as a [[PathNode]].\n * A `PathNode` is a stateful object that holds things like parameters and resolvables for the state being activated.\n *\n * The ResolveContext closes over the [[PathNode]]s, and provides DI for the last node in the path.\n */\nvar ResolveContext = /** @class */ (function () {\n function ResolveContext(_path) {\n this._path = _path;\n }\n /** Gets all the tokens found in the resolve context, de-duplicated */\n ResolveContext.prototype.getTokens = function () {\n return this._path.reduce(function (acc, node) { return acc.concat(node.resolvables.map(function (r) { return r.token; })); }, []).reduce(uniqR, []);\n };\n /**\n * Gets the Resolvable that matches the token\n *\n * Gets the last Resolvable that matches the token in this context, or undefined.\n * Throws an error if it doesn't exist in the ResolveContext\n */\n ResolveContext.prototype.getResolvable = function (token) {\n var matching = this._path\n .map(function (node) { return node.resolvables; })\n .reduce(unnestR, [])\n .filter(function (r) { return r.token === token; });\n return tail(matching);\n };\n /** Returns the [[ResolvePolicy]] for the given [[Resolvable]] */\n ResolveContext.prototype.getPolicy = function (resolvable) {\n var node = this.findNode(resolvable);\n return resolvable.getPolicy(node.state);\n };\n /**\n * Returns a ResolveContext that includes a portion of this one\n *\n * Given a state, this method creates a new ResolveContext from this one.\n * The new context starts at the first node (root) and stops at the node for the `state` parameter.\n *\n * #### Why\n *\n * When a transition is created, the nodes in the \"To Path\" are injected from a ResolveContext.\n * A ResolveContext closes over a path of [[PathNode]]s and processes the resolvables.\n * The \"To State\" can inject values from its own resolvables, as well as those from all its ancestor state's (node's).\n * This method is used to create a narrower context when injecting ancestor nodes.\n *\n * @example\n * `let ABCD = new ResolveContext([A, B, C, D]);`\n *\n * Given a path `[A, B, C, D]`, where `A`, `B`, `C` and `D` are nodes for states `a`, `b`, `c`, `d`:\n * When injecting `D`, `D` should have access to all resolvables from `A`, `B`, `C`, `D`.\n * However, `B` should only be able to access resolvables from `A`, `B`.\n *\n * When resolving for the `B` node, first take the full \"To Path\" Context `[A,B,C,D]` and limit to the subpath `[A,B]`.\n * `let AB = ABCD.subcontext(a)`\n */\n ResolveContext.prototype.subContext = function (state) {\n return new ResolveContext(PathUtils.subPath(this._path, function (node) { return node.state === state; }));\n };\n /**\n * Adds Resolvables to the node that matches the state\n *\n * This adds a [[Resolvable]] (generally one created on the fly; not declared on a [[StateDeclaration.resolve]] block).\n * The resolvable is added to the node matching the `state` parameter.\n *\n * These new resolvables are not automatically fetched.\n * The calling code should either fetch them, fetch something that depends on them,\n * or rely on [[resolvePath]] being called when some state is being entered.\n *\n * Note: each resolvable's [[ResolvePolicy]] is merged with the state's policy, and the global default.\n *\n * @param newResolvables the new Resolvables\n * @param state Used to find the node to put the resolvable on\n */\n ResolveContext.prototype.addResolvables = function (newResolvables, state) {\n var node = find(this._path, propEq('state', state));\n var keys = newResolvables.map(function (r) { return r.token; });\n node.resolvables = node.resolvables.filter(function (r) { return keys.indexOf(r.token) === -1; }).concat(newResolvables);\n };\n /**\n * Returns a promise for an array of resolved path Element promises\n *\n * @param when\n * @param trans\n * @returns {Promise|any}\n */\n ResolveContext.prototype.resolvePath = function (when, trans) {\n var _this = this;\n if (when === void 0) { when = 'LAZY'; }\n // This option determines which 'when' policy Resolvables we are about to fetch.\n var whenOption = inArray(ALL_WHENS, when) ? when : 'LAZY';\n // If the caller specified EAGER, only the EAGER Resolvables are fetched.\n // if the caller specified LAZY, both EAGER and LAZY Resolvables are fetched.`\n var matchedWhens = whenOption === resolvePolicies.when.EAGER ? EAGER_WHENS : ALL_WHENS;\n // get the subpath to the state argument, if provided\n trace.traceResolvePath(this._path, when, trans);\n var matchesPolicy = function (acceptedVals, whenOrAsync) { return function (resolvable) {\n return inArray(acceptedVals, _this.getPolicy(resolvable)[whenOrAsync]);\n }; };\n // Trigger all the (matching) Resolvables in the path\n // Reduce all the \"WAIT\" Resolvables into an array\n var promises = this._path.reduce(function (acc, node) {\n var nodeResolvables = node.resolvables.filter(matchesPolicy(matchedWhens, 'when'));\n var nowait = nodeResolvables.filter(matchesPolicy(['NOWAIT'], 'async'));\n var wait = nodeResolvables.filter(not(matchesPolicy(['NOWAIT'], 'async')));\n // For the matching Resolvables, start their async fetch process.\n var subContext = _this.subContext(node.state);\n var getResult = function (r) {\n return r\n .get(subContext, trans)\n // Return a tuple that includes the Resolvable's token\n .then(function (value) { return ({ token: r.token, value: value }); });\n };\n nowait.forEach(getResult);\n return acc.concat(wait.map(getResult));\n }, []);\n // Wait for all the \"WAIT\" resolvables\n return services.$q.all(promises);\n };\n ResolveContext.prototype.injector = function () {\n return this._injector || (this._injector = new UIInjectorImpl(this));\n };\n ResolveContext.prototype.findNode = function (resolvable) {\n return find(this._path, function (node) { return inArray(node.resolvables, resolvable); });\n };\n /**\n * Gets the async dependencies of a Resolvable\n *\n * Given a Resolvable, returns its dependencies as a Resolvable[]\n */\n ResolveContext.prototype.getDependencies = function (resolvable) {\n var _this = this;\n var node = this.findNode(resolvable);\n // Find which other resolvables are \"visible\" to the `resolvable` argument\n // subpath stopping at resolvable's node, or the whole path (if the resolvable isn't in the path)\n var subPath = PathUtils.subPath(this._path, function (x) { return x === node; }) || this._path;\n var availableResolvables = subPath\n .reduce(function (acc, _node) { return acc.concat(_node.resolvables); }, []) // all of subpath's resolvables\n .filter(function (res) { return res !== resolvable; }); // filter out the `resolvable` argument\n var getDependency = function (token) {\n var matching = availableResolvables.filter(function (r) { return r.token === token; });\n if (matching.length)\n return tail(matching);\n var fromInjector = _this.injector().getNative(token);\n if (isUndefined(fromInjector)) {\n throw new Error('Could not find Dependency Injection token: ' + stringify(token));\n }\n return new Resolvable(token, function () { return fromInjector; }, [], fromInjector);\n };\n return resolvable.deps.map(getDependency);\n };\n return ResolveContext;\n}());\nexport { ResolveContext };\n/** @internal */\nvar UIInjectorImpl = /** @class */ (function () {\n function UIInjectorImpl(context) {\n this.context = context;\n this.native = this.get(NATIVE_INJECTOR_TOKEN) || services.$injector;\n }\n UIInjectorImpl.prototype.get = function (token) {\n var resolvable = this.context.getResolvable(token);\n if (resolvable) {\n if (this.context.getPolicy(resolvable).async === 'NOWAIT') {\n return resolvable.get(this.context);\n }\n if (!resolvable.resolved) {\n throw new Error('Resolvable async .get() not complete:' + stringify(resolvable.token));\n }\n return resolvable.data;\n }\n return this.getNative(token);\n };\n UIInjectorImpl.prototype.getAsync = function (token) {\n var resolvable = this.context.getResolvable(token);\n if (resolvable)\n return resolvable.get(this.context);\n return services.$q.when(this.native.get(token));\n };\n UIInjectorImpl.prototype.getNative = function (token) {\n return this.native && this.native.get(token);\n };\n return UIInjectorImpl;\n}());\n","import { UrlMatcherFactory } from './url/urlMatcherFactory';\nimport { UrlRouter } from './url/urlRouter';\nimport { TransitionService } from './transition/transitionService';\nimport { ViewService } from './view/view';\nimport { StateRegistry } from './state/stateRegistry';\nimport { StateService } from './state/stateService';\nimport { UIRouterGlobals } from './globals';\nimport { values, removeFrom } from './common/common';\nimport { isFunction } from './common/predicates';\nimport { UrlService } from './url/urlService';\nimport { trace } from './common/trace';\nimport { makeStub } from './common';\n/** @internal */\nvar _routerInstance = 0;\n/** @internal */\nvar locSvcFns = ['url', 'path', 'search', 'hash', 'onChange'];\n/** @internal */\nvar locCfgFns = ['port', 'protocol', 'host', 'baseHref', 'html5Mode', 'hashPrefix'];\n/** @internal */\nvar locationServiceStub = makeStub('LocationServices', locSvcFns);\n/** @internal */\nvar locationConfigStub = makeStub('LocationConfig', locCfgFns);\n/**\n * An instance of UI-Router.\n *\n * This object contains references to service APIs which define your application's routing behavior.\n */\nvar UIRouter = /** @class */ (function () {\n /**\n * Creates a new `UIRouter` object\n *\n * @param locationService a [[LocationServices]] implementation\n * @param locationConfig a [[LocationConfig]] implementation\n * @internal\n */\n function UIRouter(locationService, locationConfig) {\n if (locationService === void 0) { locationService = locationServiceStub; }\n if (locationConfig === void 0) { locationConfig = locationConfigStub; }\n this.locationService = locationService;\n this.locationConfig = locationConfig;\n /** @internal */ this.$id = _routerInstance++;\n /** @internal */ this._disposed = false;\n /** @internal */ this._disposables = [];\n /** Enable/disable tracing to the javascript console */\n this.trace = trace;\n /** Provides services related to ui-view synchronization */\n this.viewService = new ViewService(this);\n /** An object that contains global router state, such as the current state and params */\n this.globals = new UIRouterGlobals();\n /** A service that exposes global Transition Hooks */\n this.transitionService = new TransitionService(this);\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n this.urlMatcherFactory = new UrlMatcherFactory(this);\n /**\n * Deprecated for public use. Use [[urlService]] instead.\n * @deprecated Use [[urlService]] instead\n */\n this.urlRouter = new UrlRouter(this);\n /** Provides services related to the URL */\n this.urlService = new UrlService(this);\n /** Provides a registry for states, and related registration services */\n this.stateRegistry = new StateRegistry(this);\n /** Provides services related to states */\n this.stateService = new StateService(this);\n /** @internal plugin instances are registered here */\n this._plugins = {};\n this.viewService._pluginapi._rootViewContext(this.stateRegistry.root());\n this.globals.$current = this.stateRegistry.root();\n this.globals.current = this.globals.$current.self;\n this.disposable(this.globals);\n this.disposable(this.stateService);\n this.disposable(this.stateRegistry);\n this.disposable(this.transitionService);\n this.disposable(this.urlService);\n this.disposable(locationService);\n this.disposable(locationConfig);\n }\n /** Registers an object to be notified when the router is disposed */\n UIRouter.prototype.disposable = function (disposable) {\n this._disposables.push(disposable);\n };\n /**\n * Disposes this router instance\n *\n * When called, clears resources retained by the router by calling `dispose(this)` on all\n * registered [[disposable]] objects.\n *\n * Or, if a `disposable` object is provided, calls `dispose(this)` on that object only.\n *\n * @internal\n * @param disposable (optional) the disposable to dispose\n */\n UIRouter.prototype.dispose = function (disposable) {\n var _this = this;\n if (disposable && isFunction(disposable.dispose)) {\n disposable.dispose(this);\n return undefined;\n }\n this._disposed = true;\n this._disposables.slice().forEach(function (d) {\n try {\n typeof d.dispose === 'function' && d.dispose(_this);\n removeFrom(_this._disposables, d);\n }\n catch (ignored) { }\n });\n };\n /**\n * Adds a plugin to UI-Router\n *\n * This method adds a UI-Router Plugin.\n * A plugin can enhance or change UI-Router behavior using any public API.\n *\n * #### Example:\n * ```js\n * import { MyCoolPlugin } from \"ui-router-cool-plugin\";\n *\n * var plugin = router.addPlugin(MyCoolPlugin);\n * ```\n *\n * ### Plugin authoring\n *\n * A plugin is simply a class (or constructor function) which accepts a [[UIRouter]] instance and (optionally) an options object.\n *\n * The plugin can implement its functionality using any of the public APIs of [[UIRouter]].\n * For example, it may configure router options or add a Transition Hook.\n *\n * The plugin can then be published as a separate module.\n *\n * #### Example:\n * ```js\n * export class MyAuthPlugin implements UIRouterPlugin {\n * constructor(router: UIRouter, options: any) {\n * this.name = \"MyAuthPlugin\";\n * let $transitions = router.transitionService;\n * let $state = router.stateService;\n *\n * let authCriteria = {\n * to: (state) => state.data && state.data.requiresAuth\n * };\n *\n * function authHook(transition: Transition) {\n * let authService = transition.injector().get('AuthService');\n * if (!authService.isAuthenticated()) {\n * return $state.target('login');\n * }\n * }\n *\n * $transitions.onStart(authCriteria, authHook);\n * }\n * }\n * ```\n *\n * @param plugin one of:\n * - a plugin class which implements [[UIRouterPlugin]]\n * - a constructor function for a [[UIRouterPlugin]] which accepts a [[UIRouter]] instance\n * - a factory function which accepts a [[UIRouter]] instance and returns a [[UIRouterPlugin]] instance\n * @param options options to pass to the plugin class/factory\n * @returns the registered plugin instance\n */\n UIRouter.prototype.plugin = function (plugin, options) {\n if (options === void 0) { options = {}; }\n var pluginInstance = new plugin(this, options);\n if (!pluginInstance.name)\n throw new Error('Required property `name` missing on plugin: ' + pluginInstance);\n this._disposables.push(pluginInstance);\n return (this._plugins[pluginInstance.name] = pluginInstance);\n };\n UIRouter.prototype.getPlugin = function (pluginName) {\n return pluginName ? this._plugins[pluginName] : values(this._plugins);\n };\n return UIRouter;\n}());\nexport { UIRouter };\n","import { applyPairs, extend, identity, inherit, mapObj, noop, omit, tail, values, copy } from '../common/common';\nimport { isArray, isDefined, isFunction, isString } from '../common/predicates';\nimport { stringify } from '../common/strings';\nimport { is, pattern, pipe, prop, val } from '../common/hof';\nimport { Resolvable } from '../resolve/resolvable';\nimport { services } from '../common/coreservices';\nvar parseUrl = function (url) {\n if (!isString(url))\n return false;\n var root = url.charAt(0) === '^';\n return { val: root ? url.substring(1) : url, root: root };\n};\nfunction nameBuilder(state) {\n return state.name;\n}\nfunction selfBuilder(state) {\n state.self.$$state = function () { return state; };\n return state.self;\n}\nfunction dataBuilder(state) {\n if (state.parent && state.parent.data) {\n state.data = state.self.data = inherit(state.parent.data, state.data);\n }\n return state.data;\n}\nvar getUrlBuilder = function ($urlMatcherFactoryProvider, root) {\n return function urlBuilder(stateObject) {\n var stateDec = stateObject.self;\n // For future states, i.e., states whose name ends with `.**`,\n // match anything that starts with the url prefix\n if (stateDec && stateDec.url && stateDec.name && stateDec.name.match(/\\.\\*\\*$/)) {\n var newStateDec = {};\n copy(stateDec, newStateDec);\n newStateDec.url += '{remainder:any}'; // match any path (.*)\n stateDec = newStateDec;\n }\n var parent = stateObject.parent;\n var parsed = parseUrl(stateDec.url);\n var url = !parsed ? stateDec.url : $urlMatcherFactoryProvider.compile(parsed.val, { state: stateDec });\n if (!url)\n return null;\n if (!$urlMatcherFactoryProvider.isMatcher(url))\n throw new Error(\"Invalid url '\" + url + \"' in state '\" + stateObject + \"'\");\n return parsed && parsed.root ? url : ((parent && parent.navigable) || root()).url.append(url);\n };\n};\nvar getNavigableBuilder = function (isRoot) {\n return function navigableBuilder(state) {\n return !isRoot(state) && state.url ? state : state.parent ? state.parent.navigable : null;\n };\n};\nvar getParamsBuilder = function (paramFactory) {\n return function paramsBuilder(state) {\n var makeConfigParam = function (config, id) { return paramFactory.fromConfig(id, null, state.self); };\n var urlParams = (state.url && state.url.parameters({ inherit: false })) || [];\n var nonUrlParams = values(mapObj(omit(state.params || {}, urlParams.map(prop('id'))), makeConfigParam));\n return urlParams\n .concat(nonUrlParams)\n .map(function (p) { return [p.id, p]; })\n .reduce(applyPairs, {});\n };\n};\nfunction pathBuilder(state) {\n return state.parent ? state.parent.path.concat(state) : /*root*/ [state];\n}\nfunction includesBuilder(state) {\n var includes = state.parent ? extend({}, state.parent.includes) : {};\n includes[state.name] = true;\n return includes;\n}\n/**\n * This is a [[StateBuilder.builder]] function for the `resolve:` block on a [[StateDeclaration]].\n *\n * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder\n * validates the `resolve` property and converts it to a [[Resolvable]] array.\n *\n * resolve: input value can be:\n *\n * {\n * // analyzed but not injected\n * myFooResolve: function() { return \"myFooData\"; },\n *\n * // function.toString() parsed, \"DependencyName\" dep as string (not min-safe)\n * myBarResolve: function(DependencyName) { return DependencyName.fetchSomethingAsPromise() },\n *\n * // Array split; \"DependencyName\" dep as string\n * myBazResolve: [ \"DependencyName\", function(dep) { return dep.fetchSomethingAsPromise() },\n *\n * // Array split; DependencyType dep as token (compared using ===)\n * myQuxResolve: [ DependencyType, function(dep) { return dep.fetchSometingAsPromise() },\n *\n * // val.$inject used as deps\n * // where:\n * // corgeResolve.$inject = [\"DependencyName\"];\n * // function corgeResolve(dep) { dep.fetchSometingAsPromise() }\n * // then \"DependencyName\" dep as string\n * myCorgeResolve: corgeResolve,\n *\n * // inject service by name\n * // When a string is found, desugar creating a resolve that injects the named service\n * myGraultResolve: \"SomeService\"\n * }\n *\n * or:\n *\n * [\n * new Resolvable(\"myFooResolve\", function() { return \"myFooData\" }),\n * new Resolvable(\"myBarResolve\", function(dep) { return dep.fetchSomethingAsPromise() }, [ \"DependencyName\" ]),\n * { provide: \"myBazResolve\", useFactory: function(dep) { dep.fetchSomethingAsPromise() }, deps: [ \"DependencyName\" ] }\n * ]\n */\nexport function resolvablesBuilder(state) {\n /** convert resolve: {} and resolvePolicy: {} objects to an array of tuples */\n var objects2Tuples = function (resolveObj, resolvePolicies) {\n return Object.keys(resolveObj || {}).map(function (token) { return ({\n token: token,\n val: resolveObj[token],\n deps: undefined,\n policy: resolvePolicies[token],\n }); });\n };\n /** fetch DI annotations from a function or ng1-style array */\n var annotate = function (fn) {\n var $injector = services.$injector;\n // ng1 doesn't have an $injector until runtime.\n // If the $injector doesn't exist, use \"deferred\" literal as a\n // marker indicating they should be annotated when runtime starts\n return fn['$inject'] || ($injector && $injector.annotate(fn, $injector.strictDi)) || 'deferred';\n };\n /** true if the object has both `token` and `resolveFn`, and is probably a [[ResolveLiteral]] */\n var isResolveLiteral = function (obj) { return !!(obj.token && obj.resolveFn); };\n /** true if the object looks like a provide literal, or a ng2 Provider */\n var isLikeNg2Provider = function (obj) {\n return !!((obj.provide || obj.token) && (obj.useValue || obj.useFactory || obj.useExisting || obj.useClass));\n };\n /** true if the object looks like a tuple from obj2Tuples */\n var isTupleFromObj = function (obj) {\n return !!(obj && obj.val && (isString(obj.val) || isArray(obj.val) || isFunction(obj.val)));\n };\n /** extracts the token from a Provider or provide literal */\n var getToken = function (p) { return p.provide || p.token; };\n // prettier-ignore: Given a literal resolve or provider object, returns a Resolvable\n var literal2Resolvable = pattern([\n [prop('resolveFn'), function (p) { return new Resolvable(getToken(p), p.resolveFn, p.deps, p.policy); }],\n [prop('useFactory'), function (p) { return new Resolvable(getToken(p), p.useFactory, p.deps || p.dependencies, p.policy); }],\n [prop('useClass'), function (p) { return new Resolvable(getToken(p), function () { return new p.useClass(); }, [], p.policy); }],\n [prop('useValue'), function (p) { return new Resolvable(getToken(p), function () { return p.useValue; }, [], p.policy, p.useValue); }],\n [prop('useExisting'), function (p) { return new Resolvable(getToken(p), identity, [p.useExisting], p.policy); }],\n ]);\n // prettier-ignore\n var tuple2Resolvable = pattern([\n [pipe(prop('val'), isString), function (tuple) { return new Resolvable(tuple.token, identity, [tuple.val], tuple.policy); }],\n [pipe(prop('val'), isArray), function (tuple) { return new Resolvable(tuple.token, tail(tuple.val), tuple.val.slice(0, -1), tuple.policy); }],\n [pipe(prop('val'), isFunction), function (tuple) { return new Resolvable(tuple.token, tuple.val, annotate(tuple.val), tuple.policy); }],\n ]);\n // prettier-ignore\n var item2Resolvable = pattern([\n [is(Resolvable), function (r) { return r; }],\n [isResolveLiteral, literal2Resolvable],\n [isLikeNg2Provider, literal2Resolvable],\n [isTupleFromObj, tuple2Resolvable],\n [val(true), function (obj) { throw new Error('Invalid resolve value: ' + stringify(obj)); },],\n ]);\n // If resolveBlock is already an array, use it as-is.\n // Otherwise, assume it's an object and convert to an Array of tuples\n var decl = state.resolve;\n var items = isArray(decl) ? decl : objects2Tuples(decl, state.resolvePolicy || {});\n return items.map(item2Resolvable);\n}\n/**\n * A internal global service\n *\n * StateBuilder is a factory for the internal [[StateObject]] objects.\n *\n * When you register a state with the [[StateRegistry]], you register a plain old javascript object which\n * conforms to the [[StateDeclaration]] interface. This factory takes that object and builds the corresponding\n * [[StateObject]] object, which has an API and is used internally.\n *\n * Custom properties or API may be added to the internal [[StateObject]] object by registering a decorator function\n * using the [[builder]] method.\n */\nvar StateBuilder = /** @class */ (function () {\n function StateBuilder(matcher, urlMatcherFactory) {\n this.matcher = matcher;\n var self = this;\n var root = function () { return matcher.find(''); };\n var isRoot = function (state) { return state.name === ''; };\n function parentBuilder(state) {\n if (isRoot(state))\n return null;\n return matcher.find(self.parentName(state)) || root();\n }\n this.builders = {\n name: [nameBuilder],\n self: [selfBuilder],\n parent: [parentBuilder],\n data: [dataBuilder],\n // Build a URLMatcher if necessary, either via a relative or absolute URL\n url: [getUrlBuilder(urlMatcherFactory, root)],\n // Keep track of the closest ancestor state that has a URL (i.e. is navigable)\n navigable: [getNavigableBuilder(isRoot)],\n params: [getParamsBuilder(urlMatcherFactory.paramFactory)],\n // Each framework-specific ui-router implementation should define its own `views` builder\n // e.g., src/ng1/statebuilders/views.ts\n views: [],\n // Keep a full path from the root down to this state as this is needed for state activation.\n path: [pathBuilder],\n // Speed up $state.includes() as it's used a lot\n includes: [includesBuilder],\n resolvables: [resolvablesBuilder],\n };\n }\n StateBuilder.prototype.builder = function (name, fn) {\n var builders = this.builders;\n var array = builders[name] || [];\n // Backwards compat: if only one builder exists, return it, else return whole arary.\n if (isString(name) && !isDefined(fn))\n return array.length > 1 ? array : array[0];\n if (!isString(name) || !isFunction(fn))\n return;\n builders[name] = array;\n builders[name].push(fn);\n return function () { return builders[name].splice(builders[name].indexOf(fn, 1)) && null; };\n };\n /**\n * Builds all of the properties on an essentially blank State object, returning a State object which has all its\n * properties and API built.\n *\n * @param state an uninitialized State object\n * @returns the built State object\n */\n StateBuilder.prototype.build = function (state) {\n var _a = this, matcher = _a.matcher, builders = _a.builders;\n var parent = this.parentName(state);\n if (parent && !matcher.find(parent, undefined, false)) {\n return null;\n }\n for (var key in builders) {\n if (!builders.hasOwnProperty(key))\n continue;\n var chain = builders[key].reduce(function (parentFn, step) { return function (_state) { return step(_state, parentFn); }; }, noop);\n state[key] = chain(state);\n }\n return state;\n };\n StateBuilder.prototype.parentName = function (state) {\n // name = 'foo.bar.baz.**'\n var name = state.name || '';\n // segments = ['foo', 'bar', 'baz', '.**']\n var segments = name.split('.');\n // segments = ['foo', 'bar', 'baz']\n var lastSegment = segments.pop();\n // segments = ['foo', 'bar'] (ignore .** segment for future states)\n if (lastSegment === '**')\n segments.pop();\n if (segments.length) {\n if (state.parent) {\n throw new Error(\"States that specify the 'parent:' property should not have a '.' in their name (\" + name + \")\");\n }\n // 'foo.bar'\n return segments.join('.');\n }\n if (!state.parent)\n return '';\n return isString(state.parent) ? state.parent : state.parent.name;\n };\n StateBuilder.prototype.name = function (state) {\n var name = state.name;\n if (name.indexOf('.') !== -1 || !state.parent)\n return name;\n var parentName = isString(state.parent) ? state.parent : state.parent.name;\n return parentName ? parentName + '.' + name : name;\n };\n return StateBuilder;\n}());\nexport { StateBuilder };\n","import { isString } from '../common/predicates';\nimport { values } from '../common/common';\nimport { safeConsole } from '../common/safeConsole';\nvar StateMatcher = /** @class */ (function () {\n function StateMatcher(_states) {\n this._states = _states;\n }\n StateMatcher.prototype.isRelative = function (stateName) {\n stateName = stateName || '';\n return stateName.indexOf('.') === 0 || stateName.indexOf('^') === 0;\n };\n StateMatcher.prototype.find = function (stateOrName, base, matchGlob) {\n if (matchGlob === void 0) { matchGlob = true; }\n if (!stateOrName && stateOrName !== '')\n return undefined;\n var isStr = isString(stateOrName);\n var name = isStr ? stateOrName : stateOrName.name;\n if (this.isRelative(name))\n name = this.resolvePath(name, base);\n var state = this._states[name];\n if (state && (isStr || (!isStr && (state === stateOrName || state.self === stateOrName)))) {\n return state;\n }\n else if (isStr && matchGlob) {\n var _states = values(this._states);\n var matches = _states.filter(function (_state) { return _state.__stateObjectCache.nameGlob && _state.__stateObjectCache.nameGlob.matches(name); });\n if (matches.length > 1) {\n safeConsole.error(\"stateMatcher.find: Found multiple matches for \" + name + \" using glob: \", matches.map(function (match) { return match.name; }));\n }\n return matches[0];\n }\n return undefined;\n };\n StateMatcher.prototype.resolvePath = function (name, base) {\n if (!base)\n throw new Error(\"No reference point given for path '\" + name + \"'\");\n var baseState = this.find(base);\n var splitName = name.split('.');\n var pathLength = splitName.length;\n var i = 0, current = baseState;\n for (; i < pathLength; i++) {\n if (splitName[i] === '' && i === 0) {\n current = baseState;\n continue;\n }\n if (splitName[i] === '^') {\n if (!current.parent)\n throw new Error(\"Path '\" + name + \"' not valid for state '\" + baseState.name + \"'\");\n current = current.parent;\n continue;\n }\n break;\n }\n var relName = splitName.slice(i).join('.');\n return current.name + (current.name && relName ? '.' : '') + relName;\n };\n return StateMatcher;\n}());\nexport { StateMatcher };\n","import { defaults, values, find, inherit } from '../common/common';\nimport { propEq } from '../common/hof';\nimport { Glob } from '../common/glob';\nimport { isObject, isFunction } from '../common/predicates';\n/**\n * Internal representation of a UI-Router state.\n *\n * Instances of this class are created when a [[StateDeclaration]] is registered with the [[StateRegistry]].\n *\n * A registered [[StateDeclaration]] is augmented with a getter ([[StateDeclaration.$$state]]) which returns the corresponding [[StateObject]] object.\n *\n * This class prototypally inherits from the corresponding [[StateDeclaration]].\n * Each of its own properties (i.e., `hasOwnProperty`) are built using builders from the [[StateBuilder]].\n */\nvar StateObject = /** @class */ (function () {\n /** @deprecated use State.create() */\n function StateObject(config) {\n return StateObject.create(config || {});\n }\n /**\n * Create a state object to put the private/internal implementation details onto.\n * The object's prototype chain looks like:\n * (Internal State Object) -> (Copy of State.prototype) -> (State Declaration object) -> (State Declaration's prototype...)\n *\n * @param stateDecl the user-supplied State Declaration\n * @returns {StateObject} an internal State object\n */\n StateObject.create = function (stateDecl) {\n stateDecl = StateObject.isStateClass(stateDecl) ? new stateDecl() : stateDecl;\n var state = inherit(inherit(stateDecl, StateObject.prototype));\n stateDecl.$$state = function () { return state; };\n state.self = stateDecl;\n state.__stateObjectCache = {\n nameGlob: Glob.fromString(state.name),\n };\n return state;\n };\n /**\n * Returns true if the provided parameter is the same state.\n *\n * Compares the identity of the state against the passed value, which is either an object\n * reference to the actual `State` instance, the original definition object passed to\n * `$stateProvider.state()`, or the fully-qualified name.\n *\n * @param ref Can be one of (a) a `State` instance, (b) an object that was passed\n * into `$stateProvider.state()`, (c) the fully-qualified name of a state as a string.\n * @returns Returns `true` if `ref` matches the current `State` instance.\n */\n StateObject.prototype.is = function (ref) {\n return this === ref || this.self === ref || this.fqn() === ref;\n };\n /**\n * @deprecated this does not properly handle dot notation\n * @returns Returns a dot-separated name of the state.\n */\n StateObject.prototype.fqn = function () {\n if (!this.parent || !(this.parent instanceof this.constructor))\n return this.name;\n var name = this.parent.fqn();\n return name ? name + '.' + this.name : this.name;\n };\n /**\n * Returns the root node of this state's tree.\n *\n * @returns The root of this state's tree.\n */\n StateObject.prototype.root = function () {\n return (this.parent && this.parent.root()) || this;\n };\n /**\n * Gets the state's `Param` objects\n *\n * Gets the list of [[Param]] objects owned by the state.\n * If `opts.inherit` is true, it also includes the ancestor states' [[Param]] objects.\n * If `opts.matchingKeys` exists, returns only `Param`s whose `id` is a key on the `matchingKeys` object\n *\n * @param opts options\n */\n StateObject.prototype.parameters = function (opts) {\n opts = defaults(opts, { inherit: true, matchingKeys: null });\n var inherited = (opts.inherit && this.parent && this.parent.parameters()) || [];\n return inherited\n .concat(values(this.params))\n .filter(function (param) { return !opts.matchingKeys || opts.matchingKeys.hasOwnProperty(param.id); });\n };\n /**\n * Returns a single [[Param]] that is owned by the state\n *\n * If `opts.inherit` is true, it also searches the ancestor states` [[Param]]s.\n * @param id the name of the [[Param]] to return\n * @param opts options\n */\n StateObject.prototype.parameter = function (id, opts) {\n if (opts === void 0) { opts = {}; }\n return ((this.url && this.url.parameter(id, opts)) ||\n find(values(this.params), propEq('id', id)) ||\n (opts.inherit && this.parent && this.parent.parameter(id)));\n };\n StateObject.prototype.toString = function () {\n return this.fqn();\n };\n /** Predicate which returns true if the object is an class with @State() decorator */\n StateObject.isStateClass = function (stateDecl) {\n return isFunction(stateDecl) && stateDecl['__uiRouterState'] === true;\n };\n /** Predicate which returns true if the object is a [[StateDeclaration]] object */\n StateObject.isStateDeclaration = function (obj) { return isFunction(obj['$$state']); };\n /** Predicate which returns true if the object is an internal [[StateObject]] object */\n StateObject.isState = function (obj) { return isObject(obj['__stateObjectCache']); };\n return StateObject;\n}());\nexport { StateObject };\n","import { inArray, isString, prop } from '../common';\nimport { StateObject } from './stateObject';\nvar StateQueueManager = /** @class */ (function () {\n function StateQueueManager(router, states, builder, listeners) {\n this.router = router;\n this.states = states;\n this.builder = builder;\n this.listeners = listeners;\n this.queue = [];\n }\n StateQueueManager.prototype.dispose = function () {\n this.queue = [];\n };\n StateQueueManager.prototype.register = function (stateDecl) {\n var queue = this.queue;\n var state = StateObject.create(stateDecl);\n var name = state.name;\n if (!isString(name))\n throw new Error('State must have a valid name');\n if (this.states.hasOwnProperty(name) || inArray(queue.map(prop('name')), name))\n throw new Error(\"State '\" + name + \"' is already defined\");\n queue.push(state);\n this.flush();\n return state;\n };\n StateQueueManager.prototype.flush = function () {\n var _this = this;\n var _a = this, queue = _a.queue, states = _a.states, builder = _a.builder;\n var registered = [], // states that got registered\n orphans = [], // states that don't yet have a parent registered\n previousQueueLength = {}; // keep track of how long the queue when an orphan was first encountered\n var getState = function (name) { return _this.states.hasOwnProperty(name) && _this.states[name]; };\n var notifyListeners = function () {\n if (registered.length) {\n _this.listeners.forEach(function (listener) {\n return listener('registered', registered.map(function (s) { return s.self; }));\n });\n }\n };\n while (queue.length > 0) {\n var state = queue.shift();\n var name_1 = state.name;\n var result = builder.build(state);\n var orphanIdx = orphans.indexOf(state);\n if (result) {\n var existingState = getState(name_1);\n if (existingState && existingState.name === name_1) {\n throw new Error(\"State '\" + name_1 + \"' is already defined\");\n }\n var existingFutureState = getState(name_1 + '.**');\n if (existingFutureState) {\n // Remove future state of the same name\n this.router.stateRegistry.deregister(existingFutureState);\n }\n states[name_1] = state;\n this.attachRoute(state);\n if (orphanIdx >= 0)\n orphans.splice(orphanIdx, 1);\n registered.push(state);\n continue;\n }\n var prev = previousQueueLength[name_1];\n previousQueueLength[name_1] = queue.length;\n if (orphanIdx >= 0 && prev === queue.length) {\n // Wait until two consecutive iterations where no additional states were dequeued successfully.\n // throw new Error(`Cannot register orphaned state '${name}'`);\n queue.push(state);\n notifyListeners();\n return states;\n }\n else if (orphanIdx < 0) {\n orphans.push(state);\n }\n queue.push(state);\n }\n notifyListeners();\n return states;\n };\n StateQueueManager.prototype.attachRoute = function (state) {\n if (state.abstract || !state.url)\n return;\n var rulesApi = this.router.urlService.rules;\n rulesApi.rule(rulesApi.urlRuleFactory.create(state));\n };\n return StateQueueManager;\n}());\nexport { StateQueueManager };\n","import { StateMatcher } from './stateMatcher';\nimport { StateBuilder } from './stateBuilder';\nimport { StateQueueManager } from './stateQueueManager';\nimport { removeFrom } from '../common/common';\nimport { propEq } from '../common/hof';\n/**\n * A registry for all of the application's [[StateDeclaration]]s\n *\n * This API is found at `router.stateRegistry` ([[UIRouter.stateRegistry]])\n */\nvar StateRegistry = /** @class */ (function () {\n /** @internal */\n function StateRegistry(router) {\n this.router = router;\n this.states = {};\n /** @internal */\n this.listeners = [];\n this.matcher = new StateMatcher(this.states);\n this.builder = new StateBuilder(this.matcher, router.urlMatcherFactory);\n this.stateQueue = new StateQueueManager(router, this.states, this.builder, this.listeners);\n this._registerRoot();\n }\n /** @internal */\n StateRegistry.prototype._registerRoot = function () {\n var rootStateDef = {\n name: '',\n url: '^',\n views: null,\n params: {\n '#': { value: null, type: 'hash', dynamic: true },\n },\n abstract: true,\n };\n var _root = (this._root = this.stateQueue.register(rootStateDef));\n _root.navigable = null;\n };\n /** @internal */\n StateRegistry.prototype.dispose = function () {\n var _this = this;\n this.stateQueue.dispose();\n this.listeners = [];\n this.get().forEach(function (state) { return _this.get(state) && _this.deregister(state); });\n };\n /**\n * Listen for a State Registry events\n *\n * Adds a callback that is invoked when states are registered or deregistered with the StateRegistry.\n *\n * #### Example:\n * ```js\n * let allStates = registry.get();\n *\n * // Later, invoke deregisterFn() to remove the listener\n * let deregisterFn = registry.onStatesChanged((event, states) => {\n * switch(event) {\n * case: 'registered':\n * states.forEach(state => allStates.push(state));\n * break;\n * case: 'deregistered':\n * states.forEach(state => {\n * let idx = allStates.indexOf(state);\n * if (idx !== -1) allStates.splice(idx, 1);\n * });\n * break;\n * }\n * });\n * ```\n *\n * @param listener a callback function invoked when the registered states changes.\n * The function receives two parameters, `event` and `state`.\n * See [[StateRegistryListener]]\n * @return a function that deregisters the listener\n */\n StateRegistry.prototype.onStatesChanged = function (listener) {\n this.listeners.push(listener);\n return function deregisterListener() {\n removeFrom(this.listeners)(listener);\n }.bind(this);\n };\n /**\n * Gets the implicit root state\n *\n * Gets the root of the state tree.\n * The root state is implicitly created by UI-Router.\n * Note: this returns the internal [[StateObject]] representation, not a [[StateDeclaration]]\n *\n * @return the root [[StateObject]]\n */\n StateRegistry.prototype.root = function () {\n return this._root;\n };\n /**\n * Adds a state to the registry\n *\n * Registers a [[StateDeclaration]] or queues it for registration.\n *\n * Note: a state will be queued if the state's parent isn't yet registered.\n *\n * @param stateDefinition the definition of the state to register.\n * @returns the internal [[StateObject]] object.\n * If the state was successfully registered, then the object is fully built (See: [[StateBuilder]]).\n * If the state was only queued, then the object is not fully built.\n */\n StateRegistry.prototype.register = function (stateDefinition) {\n return this.stateQueue.register(stateDefinition);\n };\n /** @internal */\n StateRegistry.prototype._deregisterTree = function (state) {\n var _this = this;\n var all = this.get().map(function (s) { return s.$$state(); });\n var getChildren = function (states) {\n var _children = all.filter(function (s) { return states.indexOf(s.parent) !== -1; });\n return _children.length === 0 ? _children : _children.concat(getChildren(_children));\n };\n var children = getChildren([state]);\n var deregistered = [state].concat(children).reverse();\n deregistered.forEach(function (_state) {\n var rulesApi = _this.router.urlService.rules;\n // Remove URL rule\n rulesApi\n .rules()\n .filter(propEq('state', _state))\n .forEach(function (rule) { return rulesApi.removeRule(rule); });\n // Remove state from registry\n delete _this.states[_state.name];\n });\n return deregistered;\n };\n /**\n * Removes a state from the registry\n *\n * This removes a state from the registry.\n * If the state has children, they are are also removed from the registry.\n *\n * @param stateOrName the state's name or object representation\n * @returns {StateObject[]} a list of removed states\n */\n StateRegistry.prototype.deregister = function (stateOrName) {\n var _state = this.get(stateOrName);\n if (!_state)\n throw new Error(\"Can't deregister state; not found: \" + stateOrName);\n var deregisteredStates = this._deregisterTree(_state.$$state());\n this.listeners.forEach(function (listener) {\n return listener('deregistered', deregisteredStates.map(function (s) { return s.self; }));\n });\n return deregisteredStates;\n };\n StateRegistry.prototype.get = function (stateOrName, base) {\n var _this = this;\n if (arguments.length === 0)\n return Object.keys(this.states).map(function (name) { return _this.states[name].self; });\n var found = this.matcher.find(stateOrName, base);\n return (found && found.self) || null;\n };\n /**\n * Registers a [[BuilderFunction]] for a specific [[StateObject]] property (e.g., `parent`, `url`, or `path`).\n * More than one BuilderFunction can be registered for a given property.\n *\n * The BuilderFunction(s) will be used to define the property on any subsequently built [[StateObject]] objects.\n *\n * @param property The name of the State property being registered for.\n * @param builderFunction The BuilderFunction which will be used to build the State property\n * @returns a function which deregisters the BuilderFunction\n */\n StateRegistry.prototype.decorator = function (property, builderFunction) {\n return this.builder.builder(property, builderFunction);\n };\n return StateRegistry;\n}());\nexport { StateRegistry };\n","import { createProxyFunctions, defaults, extend, inArray, noop, removeFrom, silenceUncaughtInPromise, silentRejection, } from '../common/common';\nimport { isDefined, isObject, isString } from '../common/predicates';\nimport { Queue } from '../common/queue';\nimport { services } from '../common/coreservices';\nimport { PathUtils } from '../path/pathUtils';\nimport { PathNode } from '../path/pathNode';\nimport { defaultTransOpts } from '../transition/transitionService';\nimport { Rejection, RejectType } from '../transition/rejectFactory';\nimport { TargetState } from './targetState';\nimport { Param } from '../params/param';\nimport { Glob } from '../common/glob';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { lazyLoadState } from '../hooks/lazyLoad';\nimport { not, val } from '../common/hof';\n/**\n * Provides services related to ui-router states.\n *\n * This API is located at `router.stateService` ([[UIRouter.stateService]])\n */\nvar StateService = /** @class */ (function () {\n /** @internal */\n function StateService(/** @internal */ router) {\n this.router = router;\n /** @internal */\n this.invalidCallbacks = [];\n /** @internal */\n this._defaultErrorHandler = function $defaultErrorHandler($error$) {\n if ($error$ instanceof Error && $error$.stack) {\n console.error($error$);\n console.error($error$.stack);\n }\n else if ($error$ instanceof Rejection) {\n console.error($error$.toString());\n if ($error$.detail && $error$.detail.stack)\n console.error($error$.detail.stack);\n }\n else {\n console.error($error$);\n }\n };\n var getters = ['current', '$current', 'params', 'transition'];\n var boundFns = Object.keys(StateService.prototype).filter(not(inArray(getters)));\n createProxyFunctions(val(StateService.prototype), this, val(this), boundFns);\n }\n Object.defineProperty(StateService.prototype, \"transition\", {\n /**\n * The [[Transition]] currently in progress (or null)\n *\n * @deprecated This is a passthrough through to [[UIRouterGlobals.transition]]\n */\n get: function () {\n return this.router.globals.transition;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateService.prototype, \"params\", {\n /**\n * The latest successful state parameters\n *\n * @deprecated This is a passthrough through to [[UIRouterGlobals.params]]\n */\n get: function () {\n return this.router.globals.params;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateService.prototype, \"current\", {\n /**\n * The current [[StateDeclaration]]\n *\n * @deprecated This is a passthrough through to [[UIRouterGlobals.current]]\n */\n get: function () {\n return this.router.globals.current;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateService.prototype, \"$current\", {\n /**\n * The current [[StateObject]] (an internal API)\n *\n * @deprecated This is a passthrough through to [[UIRouterGlobals.$current]]\n */\n get: function () {\n return this.router.globals.$current;\n },\n enumerable: false,\n configurable: true\n });\n /** @internal */\n StateService.prototype.dispose = function () {\n this.defaultErrorHandler(noop);\n this.invalidCallbacks = [];\n };\n /**\n * Handler for when [[transitionTo]] is called with an invalid state.\n *\n * Invokes the [[onInvalid]] callbacks, in natural order.\n * Each callback's return value is checked in sequence until one of them returns an instance of TargetState.\n * The results of the callbacks are wrapped in $q.when(), so the callbacks may return promises.\n *\n * If a callback returns an TargetState, then it is used as arguments to $state.transitionTo() and the result returned.\n *\n * @internal\n */\n StateService.prototype._handleInvalidTargetState = function (fromPath, toState) {\n var _this = this;\n var fromState = PathUtils.makeTargetState(this.router.stateRegistry, fromPath);\n var globals = this.router.globals;\n var latestThing = function () { return globals.transitionHistory.peekTail(); };\n var latest = latestThing();\n var callbackQueue = new Queue(this.invalidCallbacks.slice());\n var injector = new ResolveContext(fromPath).injector();\n var checkForRedirect = function (result) {\n if (!(result instanceof TargetState)) {\n return;\n }\n var target = result;\n // Recreate the TargetState, in case the state is now defined.\n target = _this.target(target.identifier(), target.params(), target.options());\n if (!target.valid()) {\n return Rejection.invalid(target.error()).toPromise();\n }\n if (latestThing() !== latest) {\n return Rejection.superseded().toPromise();\n }\n return _this.transitionTo(target.identifier(), target.params(), target.options());\n };\n function invokeNextCallback() {\n var nextCallback = callbackQueue.dequeue();\n if (nextCallback === undefined)\n return Rejection.invalid(toState.error()).toPromise();\n var callbackResult = services.$q.when(nextCallback(toState, fromState, injector));\n return callbackResult.then(checkForRedirect).then(function (result) { return result || invokeNextCallback(); });\n }\n return invokeNextCallback();\n };\n /**\n * Registers an Invalid State handler\n *\n * Registers a [[OnInvalidCallback]] function to be invoked when [[StateService.transitionTo]]\n * has been called with an invalid state reference parameter\n *\n * Example:\n * ```js\n * stateService.onInvalid(function(to, from, injector) {\n * if (to.name() === 'foo') {\n * let lazyLoader = injector.get('LazyLoadService');\n * return lazyLoader.load('foo')\n * .then(() => stateService.target('foo'));\n * }\n * });\n * ```\n *\n * @param {function} callback invoked when the toState is invalid\n * This function receives the (invalid) toState, the fromState, and an injector.\n * The function may optionally return a [[TargetState]] or a Promise for a TargetState.\n * If one is returned, it is treated as a redirect.\n *\n * @returns a function which deregisters the callback\n */\n StateService.prototype.onInvalid = function (callback) {\n this.invalidCallbacks.push(callback);\n return function deregisterListener() {\n removeFrom(this.invalidCallbacks)(callback);\n }.bind(this);\n };\n /**\n * Reloads the current state\n *\n * A method that force reloads the current state, or a partial state hierarchy.\n * All resolves are re-resolved, and components reinstantiated.\n *\n * #### Example:\n * ```js\n * let app angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.reload = function(){\n * $state.reload();\n * }\n * });\n * ```\n *\n * Note: `reload()` is just an alias for:\n *\n * ```js\n * $state.transitionTo($state.current, $state.params, {\n * reload: true, inherit: false\n * });\n * ```\n *\n * @param reloadState A state name or a state object.\n * If present, this state and all its children will be reloaded, but ancestors will not reload.\n *\n * #### Example:\n * ```js\n * //assuming app application consists of 3 states: 'contacts', 'contacts.detail', 'contacts.detail.item'\n * //and current state is 'contacts.detail.item'\n * let app angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.reload = function(){\n * //will reload 'contact.detail' and nested 'contact.detail.item' states\n * $state.reload('contact.detail');\n * }\n * });\n * ```\n *\n * @returns A promise representing the state of the new transition. See [[StateService.go]]\n */\n StateService.prototype.reload = function (reloadState) {\n return this.transitionTo(this.current, this.params, {\n reload: isDefined(reloadState) ? reloadState : true,\n inherit: false,\n notify: false,\n });\n };\n /**\n * Transition to a different state and/or parameters\n *\n * Convenience method for transitioning to a new state.\n *\n * `$state.go` calls `$state.transitionTo` internally but automatically sets options to\n * `{ location: true, inherit: true, relative: router.globals.$current, notify: true }`.\n * This allows you to use either an absolute or relative `to` argument (because of `relative: router.globals.$current`).\n * It also allows you to specify * only the parameters you'd like to update, while letting unspecified parameters\n * inherit from the current parameter values (because of `inherit: true`).\n *\n * #### Example:\n * ```js\n * let app = angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.changeState = function () {\n * $state.go('contact.detail');\n * };\n * });\n * ```\n *\n * @param to Absolute state name, state object, or relative state path (relative to current state).\n *\n * Some examples:\n *\n * - `$state.go('contact.detail')` - will go to the `contact.detail` state\n * - `$state.go('^')` - will go to the parent state\n * - `$state.go('^.sibling')` - if current state is `home.child`, will go to the `home.sibling` state\n * - `$state.go('.child.grandchild')` - if current state is home, will go to the `home.child.grandchild` state\n *\n * @param params A map of the parameters that will be sent to the state, will populate $stateParams.\n *\n * Any parameters that are not specified will be inherited from current parameter values (because of `inherit: true`).\n * This allows, for example, going to a sibling state that shares parameters defined by a parent state.\n *\n * @param options Transition options\n *\n * @returns {promise} A promise representing the state of the new transition.\n */\n StateService.prototype.go = function (to, params, options) {\n var defautGoOpts = { relative: this.$current, inherit: true };\n var transOpts = defaults(options, defautGoOpts, defaultTransOpts);\n return this.transitionTo(to, params, transOpts);\n };\n /**\n * Creates a [[TargetState]]\n *\n * This is a factory method for creating a TargetState\n *\n * This may be returned from a Transition Hook to redirect a transition, for example.\n */\n StateService.prototype.target = function (identifier, params, options) {\n if (options === void 0) { options = {}; }\n // If we're reloading, find the state object to reload from\n if (isObject(options.reload) && !options.reload.name)\n throw new Error('Invalid reload state object');\n var reg = this.router.stateRegistry;\n options.reloadState =\n options.reload === true ? reg.root() : reg.matcher.find(options.reload, options.relative);\n if (options.reload && !options.reloadState)\n throw new Error(\"No such reload state '\" + (isString(options.reload) ? options.reload : options.reload.name) + \"'\");\n return new TargetState(this.router.stateRegistry, identifier, params, options);\n };\n /** @internal */\n StateService.prototype.getCurrentPath = function () {\n var _this = this;\n var globals = this.router.globals;\n var latestSuccess = globals.successfulTransitions.peekTail();\n var rootPath = function () { return [new PathNode(_this.router.stateRegistry.root())]; };\n return latestSuccess ? latestSuccess.treeChanges().to : rootPath();\n };\n /**\n * Low-level method for transitioning to a new state.\n *\n * The [[go]] method (which uses `transitionTo` internally) is recommended in most situations.\n *\n * #### Example:\n * ```js\n * let app = angular.module('app', ['ui.router']);\n *\n * app.controller('ctrl', function ($scope, $state) {\n * $scope.changeState = function () {\n * $state.transitionTo('contact.detail');\n * };\n * });\n * ```\n *\n * @param to State name or state object.\n * @param toParams A map of the parameters that will be sent to the state,\n * will populate $stateParams.\n * @param options Transition options\n *\n * @returns A promise representing the state of the new transition. See [[go]]\n */\n StateService.prototype.transitionTo = function (to, toParams, options) {\n var _this = this;\n if (toParams === void 0) { toParams = {}; }\n if (options === void 0) { options = {}; }\n var router = this.router;\n var globals = router.globals;\n options = defaults(options, defaultTransOpts);\n var getCurrent = function () { return globals.transition; };\n options = extend(options, { current: getCurrent });\n var ref = this.target(to, toParams, options);\n var currentPath = this.getCurrentPath();\n if (!ref.exists())\n return this._handleInvalidTargetState(currentPath, ref);\n if (!ref.valid())\n return silentRejection(ref.error());\n if (options.supercede === false && getCurrent()) {\n return (Rejection.ignored('Another transition is in progress and supercede has been set to false in TransitionOptions for the transition. So the transition was ignored in favour of the existing one in progress.').toPromise());\n }\n /**\n * Special handling for Ignored, Aborted, and Redirected transitions\n *\n * The semantics for the transition.run() promise and the StateService.transitionTo()\n * promise differ. For instance, the run() promise may be rejected because it was\n * IGNORED, but the transitionTo() promise is resolved because from the user perspective\n * no error occurred. Likewise, the transition.run() promise may be rejected because of\n * a Redirect, but the transitionTo() promise is chained to the new Transition's promise.\n */\n var rejectedTransitionHandler = function (trans) { return function (error) {\n if (error instanceof Rejection) {\n var isLatest = router.globals.lastStartedTransitionId <= trans.$id;\n if (error.type === RejectType.IGNORED) {\n isLatest && router.urlRouter.update();\n // Consider ignored `Transition.run()` as a successful `transitionTo`\n return services.$q.when(globals.current);\n }\n var detail = error.detail;\n if (error.type === RejectType.SUPERSEDED && error.redirected && detail instanceof TargetState) {\n // If `Transition.run()` was redirected, allow the `transitionTo()` promise to resolve successfully\n // by returning the promise for the new (redirect) `Transition.run()`.\n var redirect = trans.redirect(detail);\n return redirect.run().catch(rejectedTransitionHandler(redirect));\n }\n if (error.type === RejectType.ABORTED) {\n isLatest && router.urlRouter.update();\n return services.$q.reject(error);\n }\n }\n var errorHandler = _this.defaultErrorHandler();\n errorHandler(error);\n return services.$q.reject(error);\n }; };\n var transition = this.router.transitionService.create(currentPath, ref);\n var transitionToPromise = transition.run().catch(rejectedTransitionHandler(transition));\n silenceUncaughtInPromise(transitionToPromise); // issue #2676\n // Return a promise for the transition, which also has the transition object on it.\n return extend(transitionToPromise, { transition: transition });\n };\n /**\n * Checks if the current state *is* the provided state\n *\n * Similar to [[includes]] but only checks for the full state name.\n * If params is supplied then it will be tested for strict equality against the current\n * active params object, so all params must match with none missing and no extras.\n *\n * #### Example:\n * ```js\n * $state.$current.name = 'contacts.details.item';\n *\n * // absolute name\n * $state.is('contact.details.item'); // returns true\n * $state.is(contactDetailItemStateObject); // returns true\n * ```\n *\n * // relative name (. and ^), typically from a template\n * // E.g. from the 'contacts.details' template\n * ```html\n *
Item
\n * ```\n *\n * @param stateOrName The state name (absolute or relative) or state object you'd like to check.\n * @param params A param object, e.g. `{sectionId: section.id}`, that you'd like\n * to test against the current active state.\n * @param options An options object. The options are:\n * - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n * test relative to `options.relative` state (or name).\n *\n * @returns Returns true if it is the state.\n */\n StateService.prototype.is = function (stateOrName, params, options) {\n options = defaults(options, { relative: this.$current });\n var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n if (!isDefined(state))\n return undefined;\n if (this.$current !== state)\n return false;\n if (!params)\n return true;\n var schema = state.parameters({ inherit: true, matchingKeys: params });\n return Param.equals(schema, Param.values(schema, params), this.params);\n };\n /**\n * Checks if the current state *includes* the provided state\n *\n * A method to determine if the current active state is equal to or is the child of the\n * state stateName. If any params are passed then they will be tested for a match as well.\n * Not all the parameters need to be passed, just the ones you'd like to test for equality.\n *\n * #### Example when `$state.$current.name === 'contacts.details.item'`\n * ```js\n * // Using partial names\n * $state.includes(\"contacts\"); // returns true\n * $state.includes(\"contacts.details\"); // returns true\n * $state.includes(\"contacts.details.item\"); // returns true\n * $state.includes(\"contacts.list\"); // returns false\n * $state.includes(\"about\"); // returns false\n * ```\n *\n * #### Glob Examples when `* $state.$current.name === 'contacts.details.item.url'`:\n * ```js\n * $state.includes(\"*.details.*.*\"); // returns true\n * $state.includes(\"*.details.**\"); // returns true\n * $state.includes(\"**.item.**\"); // returns true\n * $state.includes(\"*.details.item.url\"); // returns true\n * $state.includes(\"*.details.*.url\"); // returns true\n * $state.includes(\"*.details.*\"); // returns false\n * $state.includes(\"item.**\"); // returns false\n * ```\n *\n * @param stateOrName A partial name, relative name, glob pattern,\n * or state object to be searched for within the current state name.\n * @param params A param object, e.g. `{sectionId: section.id}`,\n * that you'd like to test against the current active state.\n * @param options An options object. The options are:\n * - `relative`: If `stateOrName` is a relative state name and `options.relative` is set, .is will\n * test relative to `options.relative` state (or name).\n *\n * @returns {boolean} Returns true if it does include the state\n */\n StateService.prototype.includes = function (stateOrName, params, options) {\n options = defaults(options, { relative: this.$current });\n var glob = isString(stateOrName) && Glob.fromString(stateOrName);\n if (glob) {\n if (!glob.matches(this.$current.name))\n return false;\n stateOrName = this.$current.name;\n }\n var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative), include = this.$current.includes;\n if (!isDefined(state))\n return undefined;\n if (!isDefined(include[state.name]))\n return false;\n if (!params)\n return true;\n var schema = state.parameters({ inherit: true, matchingKeys: params });\n return Param.equals(schema, Param.values(schema, params), this.params);\n };\n /**\n * Generates a URL for a state and parameters\n *\n * Returns the url for the given state populated with the given params.\n *\n * #### Example:\n * ```js\n * expect($state.href(\"about.person\", { person: \"bob\" })).toEqual(\"/about/bob\");\n * ```\n *\n * @param stateOrName The state name or state object you'd like to generate a url from.\n * @param params An object of parameter values to fill the state's required parameters.\n * @param options Options object. The options are:\n *\n * @returns {string} compiled state url\n */\n StateService.prototype.href = function (stateOrName, params, options) {\n var defaultHrefOpts = {\n lossy: true,\n inherit: true,\n absolute: false,\n relative: this.$current,\n };\n options = defaults(options, defaultHrefOpts);\n params = params || {};\n var state = this.router.stateRegistry.matcher.find(stateOrName, options.relative);\n if (!isDefined(state))\n return null;\n if (options.inherit)\n params = this.params.$inherit(params, this.$current, state);\n var nav = state && options.lossy ? state.navigable : state;\n if (!nav || nav.url === undefined || nav.url === null) {\n return null;\n }\n return this.router.urlRouter.href(nav.url, params, { absolute: options.absolute });\n };\n /**\n * Sets or gets the default [[transitionTo]] error handler.\n *\n * The error handler is called when a [[Transition]] is rejected or when any error occurred during the Transition.\n * This includes errors caused by resolves and transition hooks.\n *\n * Note:\n * This handler does not receive certain Transition rejections.\n * Redirected and Ignored Transitions are not considered to be errors by [[StateService.transitionTo]].\n *\n * The built-in default error handler logs the error to the console.\n *\n * You can provide your own custom handler.\n *\n * #### Example:\n * ```js\n * stateService.defaultErrorHandler(function() {\n * // Do not log transitionTo errors\n * });\n * ```\n *\n * @param handler a global error handler function\n * @returns the current global error handler\n */\n StateService.prototype.defaultErrorHandler = function (handler) {\n return (this._defaultErrorHandler = handler || this._defaultErrorHandler);\n };\n StateService.prototype.get = function (stateOrName, base) {\n var reg = this.router.stateRegistry;\n if (arguments.length === 0)\n return reg.get();\n return reg.get(stateOrName, base || this.$current);\n };\n /**\n * Lazy loads a state\n *\n * Explicitly runs a state's [[StateDeclaration.lazyLoad]] function.\n *\n * @param stateOrName the state that should be lazy loaded\n * @param transition the optional Transition context to use (if the lazyLoad function requires an injector, etc)\n * Note: If no transition is provided, a noop transition is created using the from the current state to the current state.\n * This noop transition is not actually run.\n *\n * @returns a promise to lazy load\n */\n StateService.prototype.lazyLoad = function (stateOrName, transition) {\n var state = this.get(stateOrName);\n if (!state || !state.lazyLoad)\n throw new Error('Can not lazy load ' + stateOrName);\n var currentPath = this.getCurrentPath();\n var target = PathUtils.makeTargetState(this.router.stateRegistry, currentPath);\n transition = transition || this.router.transitionService.create(currentPath, target);\n return lazyLoadState(transition, state);\n };\n return StateService;\n}());\nexport { StateService };\n","import { isObject, isString } from '../common/predicates';\nimport { stringify } from '../common/strings';\nimport { extend } from '../common';\n/**\n * Encapsulate the target (destination) state/params/options of a [[Transition]].\n *\n * This class is frequently used to redirect a transition to a new destination.\n *\n * See:\n *\n * - [[HookResult]]\n * - [[TransitionHookFn]]\n * - [[TransitionService.onStart]]\n *\n * To create a `TargetState`, use [[StateService.target]].\n *\n * ---\n *\n * This class wraps:\n *\n * 1) an identifier for a state\n * 2) a set of parameters\n * 3) and transition options\n * 4) the registered state object (the [[StateDeclaration]])\n *\n * Many UI-Router APIs such as [[StateService.go]] take a [[StateOrName]] argument which can\n * either be a *state object* (a [[StateDeclaration]] or [[StateObject]]) or a *state name* (a string).\n * The `TargetState` class normalizes those options.\n *\n * A `TargetState` may be valid (the state being targeted exists in the registry)\n * or invalid (the state being targeted is not registered).\n */\nvar TargetState = /** @class */ (function () {\n /**\n * The TargetState constructor\n *\n * Note: Do not construct a `TargetState` manually.\n * To create a `TargetState`, use the [[StateService.target]] factory method.\n *\n * @param _stateRegistry The StateRegistry to use to look up the _definition\n * @param _identifier An identifier for a state.\n * Either a fully-qualified state name, or the object used to define the state.\n * @param _params Parameters for the target state\n * @param _options Transition options.\n *\n * @internal\n */\n function TargetState(_stateRegistry, _identifier, _params, _options) {\n this._stateRegistry = _stateRegistry;\n this._identifier = _identifier;\n this._identifier = _identifier;\n this._params = extend({}, _params || {});\n this._options = extend({}, _options || {});\n this._definition = _stateRegistry.matcher.find(_identifier, this._options.relative);\n }\n /** The name of the state this object targets */\n TargetState.prototype.name = function () {\n return (this._definition && this._definition.name) || this._identifier;\n };\n /** The identifier used when creating this TargetState */\n TargetState.prototype.identifier = function () {\n return this._identifier;\n };\n /** The target parameter values */\n TargetState.prototype.params = function () {\n return this._params;\n };\n /** The internal state object (if it was found) */\n TargetState.prototype.$state = function () {\n return this._definition;\n };\n /** The internal state declaration (if it was found) */\n TargetState.prototype.state = function () {\n return this._definition && this._definition.self;\n };\n /** The target options */\n TargetState.prototype.options = function () {\n return this._options;\n };\n /** True if the target state was found */\n TargetState.prototype.exists = function () {\n return !!(this._definition && this._definition.self);\n };\n /** True if the object is valid */\n TargetState.prototype.valid = function () {\n return !this.error();\n };\n /** If the object is invalid, returns the reason why */\n TargetState.prototype.error = function () {\n var base = this.options().relative;\n if (!this._definition && !!base) {\n var stateName = base.name ? base.name : base;\n return \"Could not resolve '\" + this.name() + \"' from state '\" + stateName + \"'\";\n }\n if (!this._definition)\n return \"No such state '\" + this.name() + \"'\";\n if (!this._definition.self)\n return \"State '\" + this.name() + \"' has an invalid definition\";\n };\n TargetState.prototype.toString = function () {\n return \"'\" + this.name() + \"'\" + stringify(this.params());\n };\n /**\n * Returns a copy of this TargetState which targets a different state.\n * The new TargetState has the same parameter values and transition options.\n *\n * @param state The new state that should be targeted\n */\n TargetState.prototype.withState = function (state) {\n return new TargetState(this._stateRegistry, state, this._params, this._options);\n };\n /**\n * Returns a copy of this TargetState, using the specified parameter values.\n *\n * @param params the new parameter values to use\n * @param replace When false (default) the new parameter values will be merged with the current values.\n * When true the parameter values will be used instead of the current values.\n */\n TargetState.prototype.withParams = function (params, replace) {\n if (replace === void 0) { replace = false; }\n var newParams = replace ? params : extend({}, this._params, params);\n return new TargetState(this._stateRegistry, this._identifier, newParams, this._options);\n };\n /**\n * Returns a copy of this TargetState, using the specified Transition Options.\n *\n * @param options the new options to use\n * @param replace When false (default) the new options will be merged with the current options.\n * When true the options will be used instead of the current options.\n */\n TargetState.prototype.withOptions = function (options, replace) {\n if (replace === void 0) { replace = false; }\n var newOpts = replace ? options : extend({}, this._options, options);\n return new TargetState(this._stateRegistry, this._identifier, this._params, newOpts);\n };\n /** Returns true if the object has a state property that might be a state or state name */\n TargetState.isDef = function (obj) {\n return obj && obj.state && (isString(obj.state) || (isObject(obj.state) && isString(obj.state.name)));\n };\n return TargetState;\n}());\nexport { TargetState };\n","import { extend, assertPredicate, unnestR, identity } from '../common/common';\nimport { isArray } from '../common/predicates';\nimport { TransitionHookPhase, TransitionHookScope, } from './interface';\nimport { TransitionHook } from './transitionHook';\n/**\n * This class returns applicable TransitionHooks for a specific Transition instance.\n *\n * Hooks ([[RegisteredHook]]) may be registered globally, e.g., $transitions.onEnter(...), or locally, e.g.\n * myTransition.onEnter(...). The HookBuilder finds matching RegisteredHooks (where the match criteria is\n * determined by the type of hook)\n *\n * The HookBuilder also converts RegisteredHooks objects to TransitionHook objects, which are used to run a Transition.\n *\n * The HookBuilder constructor is given the $transitions service and a Transition instance. Thus, a HookBuilder\n * instance may only be used for one specific Transition object. (side note: the _treeChanges accessor is private\n * in the Transition class, so we must also provide the Transition's _treeChanges)\n */\nvar HookBuilder = /** @class */ (function () {\n function HookBuilder(transition) {\n this.transition = transition;\n }\n HookBuilder.prototype.buildHooksForPhase = function (phase) {\n var _this = this;\n var $transitions = this.transition.router.transitionService;\n return $transitions._pluginapi\n ._getEvents(phase)\n .map(function (type) { return _this.buildHooks(type); })\n .reduce(unnestR, [])\n .filter(identity);\n };\n /**\n * Returns an array of newly built TransitionHook objects.\n *\n * - Finds all RegisteredHooks registered for the given `hookType` which matched the transition's [[TreeChanges]].\n * - Finds [[PathNode]] (or `PathNode[]`) to use as the TransitionHook context(s)\n * - For each of the [[PathNode]]s, creates a TransitionHook\n *\n * @param hookType the type of the hook registration function, e.g., 'onEnter', 'onFinish'.\n */\n HookBuilder.prototype.buildHooks = function (hookType) {\n var transition = this.transition;\n var treeChanges = transition.treeChanges();\n // Find all the matching registered hooks for a given hook type\n var matchingHooks = this.getMatchingHooks(hookType, treeChanges, transition);\n if (!matchingHooks)\n return [];\n var baseHookOptions = {\n transition: transition,\n current: transition.options().current,\n };\n var makeTransitionHooks = function (hook) {\n // Fetch the Nodes that caused this hook to match.\n var matches = hook.matches(treeChanges, transition);\n // Select the PathNode[] that will be used as TransitionHook context objects\n var matchingNodes = matches[hookType.criteriaMatchPath.name];\n // Return an array of HookTuples\n return matchingNodes.map(function (node) {\n var _options = extend({\n bind: hook.bind,\n traceData: { hookType: hookType.name, context: node },\n }, baseHookOptions);\n var state = hookType.criteriaMatchPath.scope === TransitionHookScope.STATE ? node.state.self : null;\n var transitionHook = new TransitionHook(transition, state, hook, _options);\n return { hook: hook, node: node, transitionHook: transitionHook };\n });\n };\n return matchingHooks\n .map(makeTransitionHooks)\n .reduce(unnestR, [])\n .sort(tupleSort(hookType.reverseSort))\n .map(function (tuple) { return tuple.transitionHook; });\n };\n /**\n * Finds all RegisteredHooks from:\n * - The Transition object instance hook registry\n * - The TransitionService ($transitions) global hook registry\n *\n * which matched:\n * - the eventType\n * - the matchCriteria (to, from, exiting, retained, entering)\n *\n * @returns an array of matched [[RegisteredHook]]s\n */\n HookBuilder.prototype.getMatchingHooks = function (hookType, treeChanges, transition) {\n var isCreate = hookType.hookPhase === TransitionHookPhase.CREATE;\n // Instance and Global hook registries\n var $transitions = this.transition.router.transitionService;\n var registries = isCreate ? [$transitions] : [this.transition, $transitions];\n return registries\n .map(function (reg) { return reg.getHooks(hookType.name); }) // Get named hooks from registries\n .filter(assertPredicate(isArray, \"broken event named: \" + hookType.name)) // Sanity check\n .reduce(unnestR, []) // Un-nest RegisteredHook[][] to RegisteredHook[] array\n .filter(function (hook) { return hook.matches(treeChanges, transition); }); // Only those satisfying matchCriteria\n };\n return HookBuilder;\n}());\nexport { HookBuilder };\n/**\n * A factory for a sort function for HookTuples.\n *\n * The sort function first compares the PathNode depth (how deep in the state tree a node is), then compares\n * the EventHook priority.\n *\n * @param reverseDepthSort a boolean, when true, reverses the sort order for the node depth\n * @returns a tuple sort function\n */\nfunction tupleSort(reverseDepthSort) {\n if (reverseDepthSort === void 0) { reverseDepthSort = false; }\n return function nodeDepthThenPriority(l, r) {\n var factor = reverseDepthSort ? -1 : 1;\n var depthDelta = (l.node.state.path.length - r.node.state.path.length) * factor;\n return depthDelta !== 0 ? depthDelta : r.hook.priority - l.hook.priority;\n };\n}\n","import { isString, isFunction, Glob, extend, removeFrom, tail, values, identity, mapObj } from '../common';\nimport { // has or is using\nTransitionHookScope, } from './interface';\n/**\n * Determines if the given state matches the matchCriteria\n *\n * @internal\n *\n * @param state a State Object to test against\n * @param criterion\n * - If a string, matchState uses the string as a glob-matcher against the state name\n * - If an array (of strings), matchState uses each string in the array as a glob-matchers against the state name\n * and returns a positive match if any of the globs match.\n * - If a function, matchState calls the function with the state and returns true if the function's result is truthy.\n * @returns {boolean}\n */\nexport function matchState(state, criterion, transition) {\n var toMatch = isString(criterion) ? [criterion] : criterion;\n function matchGlobs(_state) {\n var globStrings = toMatch;\n for (var i = 0; i < globStrings.length; i++) {\n var glob = new Glob(globStrings[i]);\n if ((glob && glob.matches(_state.name)) || (!glob && globStrings[i] === _state.name)) {\n return true;\n }\n }\n return false;\n }\n var matchFn = (isFunction(toMatch) ? toMatch : matchGlobs);\n return !!matchFn(state, transition);\n}\n/**\n * The registration data for a registered transition hook\n */\nvar RegisteredHook = /** @class */ (function () {\n function RegisteredHook(tranSvc, eventType, callback, matchCriteria, removeHookFromRegistry, options) {\n if (options === void 0) { options = {}; }\n this.tranSvc = tranSvc;\n this.eventType = eventType;\n this.callback = callback;\n this.matchCriteria = matchCriteria;\n this.removeHookFromRegistry = removeHookFromRegistry;\n this.invokeCount = 0;\n this._deregistered = false;\n this.priority = options.priority || 0;\n this.bind = options.bind || null;\n this.invokeLimit = options.invokeLimit;\n }\n /**\n * Gets the matching [[PathNode]]s\n *\n * Given an array of [[PathNode]]s, and a [[HookMatchCriterion]], returns an array containing\n * the [[PathNode]]s that the criteria matches, or `null` if there were no matching nodes.\n *\n * Returning `null` is significant to distinguish between the default\n * \"match-all criterion value\" of `true` compared to a `() => true` function,\n * when the nodes is an empty array.\n *\n * This is useful to allow a transition match criteria of `entering: true`\n * to still match a transition, even when `entering === []`. Contrast that\n * with `entering: (state) => true` which only matches when a state is actually\n * being entered.\n */\n RegisteredHook.prototype._matchingNodes = function (nodes, criterion, transition) {\n if (criterion === true)\n return nodes;\n var matching = nodes.filter(function (node) { return matchState(node.state, criterion, transition); });\n return matching.length ? matching : null;\n };\n /**\n * Gets the default match criteria (all `true`)\n *\n * Returns an object which has all the criteria match paths as keys and `true` as values, i.e.:\n *\n * ```js\n * {\n * to: true,\n * from: true,\n * entering: true,\n * exiting: true,\n * retained: true,\n * }\n */\n RegisteredHook.prototype._getDefaultMatchCriteria = function () {\n return mapObj(this.tranSvc._pluginapi._getPathTypes(), function () { return true; });\n };\n /**\n * Gets matching nodes as [[IMatchingNodes]]\n *\n * Create a IMatchingNodes object from the TransitionHookTypes that is roughly equivalent to:\n *\n * ```js\n * let matches: IMatchingNodes = {\n * to: _matchingNodes([tail(treeChanges.to)], mc.to),\n * from: _matchingNodes([tail(treeChanges.from)], mc.from),\n * exiting: _matchingNodes(treeChanges.exiting, mc.exiting),\n * retained: _matchingNodes(treeChanges.retained, mc.retained),\n * entering: _matchingNodes(treeChanges.entering, mc.entering),\n * };\n * ```\n */\n RegisteredHook.prototype._getMatchingNodes = function (treeChanges, transition) {\n var _this = this;\n var criteria = extend(this._getDefaultMatchCriteria(), this.matchCriteria);\n var paths = values(this.tranSvc._pluginapi._getPathTypes());\n return paths.reduce(function (mn, pathtype) {\n // STATE scope criteria matches against every node in the path.\n // TRANSITION scope criteria matches against only the last node in the path\n var isStateHook = pathtype.scope === TransitionHookScope.STATE;\n var path = treeChanges[pathtype.name] || [];\n var nodes = isStateHook ? path : [tail(path)];\n mn[pathtype.name] = _this._matchingNodes(nodes, criteria[pathtype.name], transition);\n return mn;\n }, {});\n };\n /**\n * Determines if this hook's [[matchCriteria]] match the given [[TreeChanges]]\n *\n * @returns an IMatchingNodes object, or null. If an IMatchingNodes object is returned, its values\n * are the matching [[PathNode]]s for each [[HookMatchCriterion]] (to, from, exiting, retained, entering)\n */\n RegisteredHook.prototype.matches = function (treeChanges, transition) {\n var matches = this._getMatchingNodes(treeChanges, transition);\n // Check if all the criteria matched the TreeChanges object\n var allMatched = values(matches).every(identity);\n return allMatched ? matches : null;\n };\n RegisteredHook.prototype.deregister = function () {\n this.removeHookFromRegistry(this);\n this._deregistered = true;\n };\n return RegisteredHook;\n}());\nexport { RegisteredHook };\n/** Return a registration function of the requested type. */\nexport function makeEvent(registry, transitionService, eventType) {\n // Create the object which holds the registered transition hooks.\n var _registeredHooks = (registry._registeredHooks = registry._registeredHooks || {});\n var hooks = (_registeredHooks[eventType.name] = []);\n var removeHookFn = removeFrom(hooks);\n // Create hook registration function on the IHookRegistry for the event\n registry[eventType.name] = hookRegistrationFn;\n function hookRegistrationFn(matchObject, callback, options) {\n if (options === void 0) { options = {}; }\n var registeredHook = new RegisteredHook(transitionService, eventType, callback, matchObject, removeHookFn, options);\n hooks.push(registeredHook);\n return registeredHook.deregister.bind(registeredHook);\n }\n return hookRegistrationFn;\n}\n","var TransitionHookPhase;\n(function (TransitionHookPhase) {\n TransitionHookPhase[TransitionHookPhase[\"CREATE\"] = 0] = \"CREATE\";\n TransitionHookPhase[TransitionHookPhase[\"BEFORE\"] = 1] = \"BEFORE\";\n TransitionHookPhase[TransitionHookPhase[\"RUN\"] = 2] = \"RUN\";\n TransitionHookPhase[TransitionHookPhase[\"SUCCESS\"] = 3] = \"SUCCESS\";\n TransitionHookPhase[TransitionHookPhase[\"ERROR\"] = 4] = \"ERROR\";\n})(TransitionHookPhase || (TransitionHookPhase = {}));\nvar TransitionHookScope;\n(function (TransitionHookScope) {\n TransitionHookScope[TransitionHookScope[\"TRANSITION\"] = 0] = \"TRANSITION\";\n TransitionHookScope[TransitionHookScope[\"STATE\"] = 1] = \"STATE\";\n})(TransitionHookScope || (TransitionHookScope = {}));\nexport { TransitionHookPhase, TransitionHookScope };\n","'use strict';\nimport { extend, silentRejection } from '../common/common';\nimport { stringify } from '../common/strings';\nimport { is } from '../common/hof';\n/** An enum for Transition Rejection reasons */\nvar RejectType;\n(function (RejectType) {\n /**\n * A new transition superseded this one.\n *\n * While this transition was running, a new transition started.\n * This transition is cancelled because it was superseded by new transition.\n */\n RejectType[RejectType[\"SUPERSEDED\"] = 2] = \"SUPERSEDED\";\n /**\n * The transition was aborted\n *\n * The transition was aborted by a hook which returned `false`\n */\n RejectType[RejectType[\"ABORTED\"] = 3] = \"ABORTED\";\n /**\n * The transition was invalid\n *\n * The transition was never started because it was invalid\n */\n RejectType[RejectType[\"INVALID\"] = 4] = \"INVALID\";\n /**\n * The transition was ignored\n *\n * The transition was ignored because it would have no effect.\n *\n * Either:\n *\n * - The transition is targeting the current state and parameter values\n * - The transition is targeting the same state and parameter values as the currently running transition.\n */\n RejectType[RejectType[\"IGNORED\"] = 5] = \"IGNORED\";\n /**\n * The transition errored.\n *\n * This generally means a hook threw an error or returned a rejected promise\n */\n RejectType[RejectType[\"ERROR\"] = 6] = \"ERROR\";\n})(RejectType || (RejectType = {}));\nexport { RejectType };\n/** @internal */\nvar id = 0;\nvar Rejection = /** @class */ (function () {\n function Rejection(type, message, detail) {\n /** @internal */\n this.$id = id++;\n this.type = type;\n this.message = message;\n this.detail = detail;\n }\n /** Returns true if the obj is a rejected promise created from the `asPromise` factory */\n Rejection.isRejectionPromise = function (obj) {\n return obj && typeof obj.then === 'function' && is(Rejection)(obj._transitionRejection);\n };\n /** Returns a Rejection due to transition superseded */\n Rejection.superseded = function (detail, options) {\n var message = 'The transition has been superseded by a different transition';\n var rejection = new Rejection(RejectType.SUPERSEDED, message, detail);\n if (options && options.redirected) {\n rejection.redirected = true;\n }\n return rejection;\n };\n /** Returns a Rejection due to redirected transition */\n Rejection.redirected = function (detail) {\n return Rejection.superseded(detail, { redirected: true });\n };\n /** Returns a Rejection due to invalid transition */\n Rejection.invalid = function (detail) {\n var message = 'This transition is invalid';\n return new Rejection(RejectType.INVALID, message, detail);\n };\n /** Returns a Rejection due to ignored transition */\n Rejection.ignored = function (detail) {\n var message = 'The transition was ignored';\n return new Rejection(RejectType.IGNORED, message, detail);\n };\n /** Returns a Rejection due to aborted transition */\n Rejection.aborted = function (detail) {\n var message = 'The transition has been aborted';\n return new Rejection(RejectType.ABORTED, message, detail);\n };\n /** Returns a Rejection due to aborted transition */\n Rejection.errored = function (detail) {\n var message = 'The transition errored';\n return new Rejection(RejectType.ERROR, message, detail);\n };\n /**\n * Returns a Rejection\n *\n * Normalizes a value as a Rejection.\n * If the value is already a Rejection, returns it.\n * Otherwise, wraps and returns the value as a Rejection (Rejection type: ERROR).\n *\n * @returns `detail` if it is already a `Rejection`, else returns an ERROR Rejection.\n */\n Rejection.normalize = function (detail) {\n return is(Rejection)(detail) ? detail : Rejection.errored(detail);\n };\n Rejection.prototype.toString = function () {\n var detailString = function (d) { return (d && d.toString !== Object.prototype.toString ? d.toString() : stringify(d)); };\n var detail = detailString(this.detail);\n var _a = this, $id = _a.$id, type = _a.type, message = _a.message;\n return \"Transition Rejection($id: \" + $id + \" type: \" + type + \", message: \" + message + \", detail: \" + detail + \")\";\n };\n Rejection.prototype.toPromise = function () {\n return extend(silentRejection(this), { _transitionRejection: this });\n };\n return Rejection;\n}());\nexport { Rejection };\n","import { trace } from '../common/trace';\nimport { services } from '../common/coreservices';\nimport { stringify } from '../common/strings';\nimport { map, find, extend, mergeR, tail, omit, arrayTuples, unnestR, identity, anyTrueR } from '../common/common';\nimport { isObject, isUndefined } from '../common/predicates';\nimport { prop, propEq, val, not, is } from '../common/hof';\nimport { TransitionHookPhase, } from './interface'; // has or is using\nimport { TransitionHook } from './transitionHook';\nimport { matchState, makeEvent } from './hookRegistry';\nimport { HookBuilder } from './hookBuilder';\nimport { PathUtils } from '../path/pathUtils';\nimport { Param } from '../params/param';\nimport { Resolvable } from '../resolve/resolvable';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { Rejection } from './rejectFactory';\nimport { flattenR, uniqR } from '../common';\n/** @internal */\nvar stateSelf = prop('self');\n/**\n * Represents a transition between two states.\n *\n * When navigating to a state, we are transitioning **from** the current state **to** the new state.\n *\n * This object contains all contextual information about the to/from states, parameters, resolves.\n * It has information about all states being entered and exited as a result of the transition.\n */\nvar Transition = /** @class */ (function () {\n /**\n * Creates a new Transition object.\n *\n * If the target state is not valid, an error is thrown.\n *\n * @internal\n *\n * @param fromPath The path of [[PathNode]]s from which the transition is leaving. The last node in the `fromPath`\n * encapsulates the \"from state\".\n * @param targetState The target state and parameters being transitioned to (also, the transition options)\n * @param router The [[UIRouter]] instance\n * @internal\n */\n function Transition(fromPath, targetState, router) {\n var _this = this;\n /** @internal */\n this._deferred = services.$q.defer();\n /**\n * This promise is resolved or rejected based on the outcome of the Transition.\n *\n * When the transition is successful, the promise is resolved\n * When the transition is unsuccessful, the promise is rejected with the [[Rejection]] or javascript error\n */\n this.promise = this._deferred.promise;\n /** @internal Holds the hook registration functions such as those passed to Transition.onStart() */\n this._registeredHooks = {};\n /** @internal */\n this._hookBuilder = new HookBuilder(this);\n /** Checks if this transition is currently active/running. */\n this.isActive = function () { return _this.router.globals.transition === _this; };\n this.router = router;\n this._targetState = targetState;\n if (!targetState.valid()) {\n throw new Error(targetState.error());\n }\n // current() is assumed to come from targetState.options, but provide a naive implementation otherwise.\n this._options = extend({ current: val(this) }, targetState.options());\n this.$id = router.transitionService._transitionCount++;\n var toPath = PathUtils.buildToPath(fromPath, targetState);\n this._treeChanges = PathUtils.treeChanges(fromPath, toPath, this._options.reloadState);\n this.createTransitionHookRegFns();\n var onCreateHooks = this._hookBuilder.buildHooksForPhase(TransitionHookPhase.CREATE);\n TransitionHook.invokeHooks(onCreateHooks, function () { return null; });\n this.applyViewConfigs(router);\n }\n /** @internal */\n Transition.prototype.onBefore = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onStart = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onExit = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onRetain = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onEnter = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onFinish = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onSuccess = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n Transition.prototype.onError = function (criteria, callback, options) {\n return;\n };\n /** @internal\n * Creates the transition-level hook registration functions\n * (which can then be used to register hooks)\n */\n Transition.prototype.createTransitionHookRegFns = function () {\n var _this = this;\n this.router.transitionService._pluginapi\n ._getEvents()\n .filter(function (type) { return type.hookPhase !== TransitionHookPhase.CREATE; })\n .forEach(function (type) { return makeEvent(_this, _this.router.transitionService, type); });\n };\n /** @internal */\n Transition.prototype.getHooks = function (hookName) {\n return this._registeredHooks[hookName];\n };\n Transition.prototype.applyViewConfigs = function (router) {\n var enteringStates = this._treeChanges.entering.map(function (node) { return node.state; });\n PathUtils.applyViewConfigs(router.transitionService.$view, this._treeChanges.to, enteringStates);\n };\n /**\n * @internal\n * @returns the internal from [State] object\n */\n Transition.prototype.$from = function () {\n return tail(this._treeChanges.from).state;\n };\n /**\n * @internal\n * @returns the internal to [State] object\n */\n Transition.prototype.$to = function () {\n return tail(this._treeChanges.to).state;\n };\n /**\n * Returns the \"from state\"\n *\n * Returns the state that the transition is coming *from*.\n *\n * @returns The state declaration object for the Transition's (\"from state\").\n */\n Transition.prototype.from = function () {\n return this.$from().self;\n };\n /**\n * Returns the \"to state\"\n *\n * Returns the state that the transition is going *to*.\n *\n * @returns The state declaration object for the Transition's target state (\"to state\").\n */\n Transition.prototype.to = function () {\n return this.$to().self;\n };\n /**\n * Gets the Target State\n *\n * A transition's [[TargetState]] encapsulates the [[to]] state, the [[params]], and the [[options]] as a single object.\n *\n * @returns the [[TargetState]] of this Transition\n */\n Transition.prototype.targetState = function () {\n return this._targetState;\n };\n /**\n * Determines whether two transitions are equivalent.\n * @deprecated\n */\n Transition.prototype.is = function (compare) {\n if (compare instanceof Transition) {\n // TODO: Also compare parameters\n return this.is({ to: compare.$to().name, from: compare.$from().name });\n }\n return !((compare.to && !matchState(this.$to(), compare.to, this)) ||\n (compare.from && !matchState(this.$from(), compare.from, this)));\n };\n Transition.prototype.params = function (pathname) {\n if (pathname === void 0) { pathname = 'to'; }\n return Object.freeze(this._treeChanges[pathname].map(prop('paramValues')).reduce(mergeR, {}));\n };\n Transition.prototype.paramsChanged = function () {\n var fromParams = this.params('from');\n var toParams = this.params('to');\n // All the parameters declared on both the \"to\" and \"from\" paths\n var allParamDescriptors = []\n .concat(this._treeChanges.to)\n .concat(this._treeChanges.from)\n .map(function (pathNode) { return pathNode.paramSchema; })\n .reduce(flattenR, [])\n .reduce(uniqR, []);\n var changedParamDescriptors = Param.changed(allParamDescriptors, fromParams, toParams);\n return changedParamDescriptors.reduce(function (changedValues, descriptor) {\n changedValues[descriptor.id] = toParams[descriptor.id];\n return changedValues;\n }, {});\n };\n /**\n * Creates a [[UIInjector]] Dependency Injector\n *\n * Returns a Dependency Injector for the Transition's target state (to state).\n * The injector provides resolve values which the target state has access to.\n *\n * The `UIInjector` can also provide values from the native root/global injector (ng1/ng2).\n *\n * #### Example:\n * ```js\n * .onEnter({ entering: 'myState' }, trans => {\n * var myResolveValue = trans.injector().get('myResolve');\n * // Inject a global service from the global/native injector (if it exists)\n * var MyService = trans.injector().get('MyService');\n * })\n * ```\n *\n * In some cases (such as `onBefore`), you may need access to some resolve data but it has not yet been fetched.\n * You can use [[UIInjector.getAsync]] to get a promise for the data.\n * #### Example:\n * ```js\n * .onBefore({}, trans => {\n * return trans.injector().getAsync('myResolve').then(myResolveValue =>\n * return myResolveValue !== 'ABORT';\n * });\n * });\n * ```\n *\n * If a `state` is provided, the injector that is returned will be limited to resolve values that the provided state has access to.\n * This can be useful if both a parent state `foo` and a child state `foo.bar` have both defined a resolve such as `data`.\n * #### Example:\n * ```js\n * .onEnter({ to: 'foo.bar' }, trans => {\n * // returns result of `foo` state's `myResolve` resolve\n * // even though `foo.bar` also has a `myResolve` resolve\n * var fooData = trans.injector('foo').get('myResolve');\n * });\n * ```\n *\n * If you need resolve data from the exiting states, pass `'from'` as `pathName`.\n * The resolve data from the `from` path will be returned.\n * #### Example:\n * ```js\n * .onExit({ exiting: 'foo.bar' }, trans => {\n * // Gets the resolve value of `myResolve` from the state being exited\n * var fooData = trans.injector(null, 'from').get('myResolve');\n * });\n * ```\n *\n *\n * @param state Limits the resolves provided to only the resolves the provided state has access to.\n * @param pathName Default: `'to'`: Chooses the path for which to create the injector. Use this to access resolves for `exiting` states.\n *\n * @returns a [[UIInjector]]\n */\n Transition.prototype.injector = function (state, pathName) {\n if (pathName === void 0) { pathName = 'to'; }\n var path = this._treeChanges[pathName];\n if (state)\n path = PathUtils.subPath(path, function (node) { return node.state === state || node.state.name === state; });\n return new ResolveContext(path).injector();\n };\n /**\n * Gets all available resolve tokens (keys)\n *\n * This method can be used in conjunction with [[injector]] to inspect the resolve values\n * available to the Transition.\n *\n * This returns all the tokens defined on [[StateDeclaration.resolve]] blocks, for the states\n * in the Transition's [[TreeChanges.to]] path.\n *\n * #### Example:\n * This example logs all resolve values\n * ```js\n * let tokens = trans.getResolveTokens();\n * tokens.forEach(token => console.log(token + \" = \" + trans.injector().get(token)));\n * ```\n *\n * #### Example:\n * This example creates promises for each resolve value.\n * This triggers fetches of resolves (if any have not yet been fetched).\n * When all promises have all settled, it logs the resolve values.\n * ```js\n * let tokens = trans.getResolveTokens();\n * let promise = tokens.map(token => trans.injector().getAsync(token));\n * Promise.all(promises).then(values => console.log(\"Resolved values: \" + values));\n * ```\n *\n * Note: Angular 1 users whould use `$q.all()`\n *\n * @param pathname resolve context's path name (e.g., `to` or `from`)\n *\n * @returns an array of resolve tokens (keys)\n */\n Transition.prototype.getResolveTokens = function (pathname) {\n if (pathname === void 0) { pathname = 'to'; }\n return new ResolveContext(this._treeChanges[pathname]).getTokens();\n };\n /**\n * Dynamically adds a new [[Resolvable]] (i.e., [[StateDeclaration.resolve]]) to this transition.\n *\n * Allows a transition hook to dynamically add a Resolvable to this Transition.\n *\n * Use the [[Transition.injector]] to retrieve the resolved data in subsequent hooks ([[UIInjector.get]]).\n *\n * If a `state` argument is provided, the Resolvable is processed when that state is being entered.\n * If no `state` is provided then the root state is used.\n * If the given `state` has already been entered, the Resolvable is processed when any child state is entered.\n * If no child states will be entered, the Resolvable is processed during the `onFinish` phase of the Transition.\n *\n * The `state` argument also scopes the resolved data.\n * The resolved data is available from the injector for that `state` and any children states.\n *\n * #### Example:\n * ```js\n * transitionService.onBefore({}, transition => {\n * transition.addResolvable({\n * token: 'myResolve',\n * deps: ['MyService'],\n * resolveFn: myService => myService.getData()\n * });\n * });\n * ```\n *\n * @param resolvable a [[ResolvableLiteral]] object (or a [[Resolvable]])\n * @param state the state in the \"to path\" which should receive the new resolve (otherwise, the root state)\n */\n Transition.prototype.addResolvable = function (resolvable, state) {\n if (state === void 0) { state = ''; }\n resolvable = is(Resolvable)(resolvable) ? resolvable : new Resolvable(resolvable);\n var stateName = typeof state === 'string' ? state : state.name;\n var topath = this._treeChanges.to;\n var targetNode = find(topath, function (node) { return node.state.name === stateName; });\n var resolveContext = new ResolveContext(topath);\n resolveContext.addResolvables([resolvable], targetNode.state);\n };\n /**\n * Gets the transition from which this transition was redirected.\n *\n * If the current transition is a redirect, this method returns the transition that was redirected.\n *\n * #### Example:\n * ```js\n * let transitionA = $state.go('A').transition\n * transitionA.onStart({}, () => $state.target('B'));\n * $transitions.onSuccess({ to: 'B' }, (trans) => {\n * trans.to().name === 'B'; // true\n * trans.redirectedFrom() === transitionA; // true\n * });\n * ```\n *\n * @returns The previous Transition, or null if this Transition is not the result of a redirection\n */\n Transition.prototype.redirectedFrom = function () {\n return this._options.redirectedFrom || null;\n };\n /**\n * Gets the original transition in a redirect chain\n *\n * A transition might belong to a long chain of multiple redirects.\n * This method walks the [[redirectedFrom]] chain back to the original (first) transition in the chain.\n *\n * #### Example:\n * ```js\n * // states\n * registry.register({ name: 'A', redirectTo: 'B' });\n * registry.register({ name: 'B', redirectTo: 'C' });\n * registry.register({ name: 'C', redirectTo: 'D' });\n * registry.register({ name: 'D' });\n *\n * let transitionA = $state.go('A').transition\n *\n * $transitions.onSuccess({ to: 'D' }, (trans) => {\n * trans.to().name === 'D'; // true\n * trans.redirectedFrom().to().name === 'C'; // true\n * trans.originalTransition() === transitionA; // true\n * trans.originalTransition().to().name === 'A'; // true\n * });\n * ```\n *\n * @returns The original Transition that started a redirect chain\n */\n Transition.prototype.originalTransition = function () {\n var rf = this.redirectedFrom();\n return (rf && rf.originalTransition()) || this;\n };\n /**\n * Get the transition options\n *\n * @returns the options for this Transition.\n */\n Transition.prototype.options = function () {\n return this._options;\n };\n /**\n * Gets the states being entered.\n *\n * @returns an array of states that will be entered during this transition.\n */\n Transition.prototype.entering = function () {\n return map(this._treeChanges.entering, prop('state')).map(stateSelf);\n };\n /**\n * Gets the states being exited.\n *\n * @returns an array of states that will be exited during this transition.\n */\n Transition.prototype.exiting = function () {\n return map(this._treeChanges.exiting, prop('state')).map(stateSelf).reverse();\n };\n /**\n * Gets the states being retained.\n *\n * @returns an array of states that are already entered from a previous Transition, that will not be\n * exited during this Transition\n */\n Transition.prototype.retained = function () {\n return map(this._treeChanges.retained, prop('state')).map(stateSelf);\n };\n /**\n * Get the [[ViewConfig]]s associated with this Transition\n *\n * Each state can define one or more views (template/controller), which are encapsulated as `ViewConfig` objects.\n * This method fetches the `ViewConfigs` for a given path in the Transition (e.g., \"to\" or \"entering\").\n *\n * @param pathname the name of the path to fetch views for:\n * (`'to'`, `'from'`, `'entering'`, `'exiting'`, `'retained'`)\n * @param state If provided, only returns the `ViewConfig`s for a single state in the path\n *\n * @returns a list of ViewConfig objects for the given path.\n */\n Transition.prototype.views = function (pathname, state) {\n if (pathname === void 0) { pathname = 'entering'; }\n var path = this._treeChanges[pathname];\n path = !state ? path : path.filter(propEq('state', state));\n return path.map(prop('views')).filter(identity).reduce(unnestR, []);\n };\n Transition.prototype.treeChanges = function (pathname) {\n return pathname ? this._treeChanges[pathname] : this._treeChanges;\n };\n /**\n * Creates a new transition that is a redirection of the current one.\n *\n * This transition can be returned from a [[TransitionService]] hook to\n * redirect a transition to a new state and/or set of parameters.\n *\n * @internal\n *\n * @returns Returns a new [[Transition]] instance.\n */\n Transition.prototype.redirect = function (targetState) {\n var redirects = 1, trans = this;\n // tslint:disable-next-line:no-conditional-assignment\n while ((trans = trans.redirectedFrom()) != null) {\n if (++redirects > 20)\n throw new Error(\"Too many consecutive Transition redirects (20+)\");\n }\n var redirectOpts = { redirectedFrom: this, source: 'redirect' };\n // If the original transition was caused by URL sync, then use { location: 'replace' }\n // on the new transition (unless the target state explicitly specifies location: false).\n // This causes the original url to be replaced with the url for the redirect target\n // so the original url disappears from the browser history.\n if (this.options().source === 'url' && targetState.options().location !== false) {\n redirectOpts.location = 'replace';\n }\n var newOptions = extend({}, this.options(), targetState.options(), redirectOpts);\n targetState = targetState.withOptions(newOptions, true);\n var newTransition = this.router.transitionService.create(this._treeChanges.from, targetState);\n var originalEnteringNodes = this._treeChanges.entering;\n var redirectEnteringNodes = newTransition._treeChanges.entering;\n // --- Re-use resolve data from original transition ---\n // When redirecting from a parent state to a child state where the parent parameter values haven't changed\n // (because of the redirect), the resolves fetched by the original transition are still valid in the\n // redirected transition.\n //\n // This allows you to define a redirect on a parent state which depends on an async resolve value.\n // You can wait for the resolve, then redirect to a child state based on the result.\n // The redirected transition does not have to re-fetch the resolve.\n // ---------------------------------------------------------\n var nodeIsReloading = function (reloadState) { return function (node) {\n return reloadState && node.state.includes[reloadState.name];\n }; };\n // Find any \"entering\" nodes in the redirect path that match the original path and aren't being reloaded\n var matchingEnteringNodes = PathUtils.matching(redirectEnteringNodes, originalEnteringNodes, PathUtils.nonDynamicParams).filter(not(nodeIsReloading(targetState.options().reloadState)));\n // Use the existing (possibly pre-resolved) resolvables for the matching entering nodes.\n matchingEnteringNodes.forEach(function (node, idx) {\n node.resolvables = originalEnteringNodes[idx].resolvables;\n });\n return newTransition;\n };\n /** @internal If a transition doesn't exit/enter any states, returns any [[Param]] whose value changed */\n Transition.prototype._changedParams = function () {\n var tc = this._treeChanges;\n /** Return undefined if it's not a \"dynamic\" transition, for the following reasons */\n // If user explicitly wants a reload\n if (this._options.reload)\n return undefined;\n // If any states are exiting or entering\n if (tc.exiting.length || tc.entering.length)\n return undefined;\n // If to/from path lengths differ\n if (tc.to.length !== tc.from.length)\n return undefined;\n // If the to/from paths are different\n var pathsDiffer = arrayTuples(tc.to, tc.from)\n .map(function (tuple) { return tuple[0].state !== tuple[1].state; })\n .reduce(anyTrueR, false);\n if (pathsDiffer)\n return undefined;\n // Find any parameter values that differ\n var nodeSchemas = tc.to.map(function (node) { return node.paramSchema; });\n var _a = [tc.to, tc.from].map(function (path) { return path.map(function (x) { return x.paramValues; }); }), toValues = _a[0], fromValues = _a[1];\n var tuples = arrayTuples(nodeSchemas, toValues, fromValues);\n return tuples.map(function (_a) {\n var schema = _a[0], toVals = _a[1], fromVals = _a[2];\n return Param.changed(schema, toVals, fromVals);\n }).reduce(unnestR, []);\n };\n /**\n * Returns true if the transition is dynamic.\n *\n * A transition is dynamic if no states are entered nor exited, but at least one dynamic parameter has changed.\n *\n * @returns true if the Transition is dynamic\n */\n Transition.prototype.dynamic = function () {\n var changes = this._changedParams();\n return !changes ? false : changes.map(function (x) { return x.dynamic; }).reduce(anyTrueR, false);\n };\n /**\n * Returns true if the transition is ignored.\n *\n * A transition is ignored if no states are entered nor exited, and no parameter values have changed.\n *\n * @returns true if the Transition is ignored.\n */\n Transition.prototype.ignored = function () {\n return !!this._ignoredReason();\n };\n /** @internal */\n Transition.prototype._ignoredReason = function () {\n var pending = this.router.globals.transition;\n var reloadState = this._options.reloadState;\n var same = function (pathA, pathB) {\n if (pathA.length !== pathB.length)\n return false;\n var matching = PathUtils.matching(pathA, pathB);\n return pathA.length === matching.filter(function (node) { return !reloadState || !node.state.includes[reloadState.name]; }).length;\n };\n var newTC = this.treeChanges();\n var pendTC = pending && pending.treeChanges();\n if (pendTC && same(pendTC.to, newTC.to) && same(pendTC.exiting, newTC.exiting))\n return 'SameAsPending';\n if (newTC.exiting.length === 0 && newTC.entering.length === 0 && same(newTC.from, newTC.to))\n return 'SameAsCurrent';\n };\n /**\n * Runs the transition\n *\n * This method is generally called from the [[StateService.transitionTo]]\n *\n * @internal\n *\n * @returns a promise for a successful transition.\n */\n Transition.prototype.run = function () {\n var _this = this;\n var runAllHooks = TransitionHook.runAllHooks;\n // Gets transition hooks array for the given phase\n var getHooksFor = function (phase) { return _this._hookBuilder.buildHooksForPhase(phase); };\n // When the chain is complete, then resolve or reject the deferred\n var transitionSuccess = function () {\n trace.traceSuccess(_this.$to(), _this);\n _this.success = true;\n _this._deferred.resolve(_this.to());\n runAllHooks(getHooksFor(TransitionHookPhase.SUCCESS));\n };\n var transitionError = function (reason) {\n trace.traceError(reason, _this);\n _this.success = false;\n _this._deferred.reject(reason);\n _this._error = reason;\n runAllHooks(getHooksFor(TransitionHookPhase.ERROR));\n };\n var runTransition = function () {\n // Wait to build the RUN hook chain until the BEFORE hooks are done\n // This allows a BEFORE hook to dynamically add additional RUN hooks via the Transition object.\n var allRunHooks = getHooksFor(TransitionHookPhase.RUN);\n var done = function () { return services.$q.when(undefined); };\n return TransitionHook.invokeHooks(allRunHooks, done);\n };\n var startTransition = function () {\n var globals = _this.router.globals;\n globals.lastStartedTransitionId = _this.$id;\n globals.transition = _this;\n globals.transitionHistory.enqueue(_this);\n trace.traceTransitionStart(_this);\n return services.$q.when(undefined);\n };\n var allBeforeHooks = getHooksFor(TransitionHookPhase.BEFORE);\n TransitionHook.invokeHooks(allBeforeHooks, startTransition)\n .then(runTransition)\n .then(transitionSuccess, transitionError);\n return this.promise;\n };\n /**\n * Checks if the Transition is valid\n *\n * @returns true if the Transition is valid\n */\n Transition.prototype.valid = function () {\n return !this.error() || this.success !== undefined;\n };\n /**\n * Aborts this transition\n *\n * Imperative API to abort a Transition.\n * This only applies to Transitions that are not yet complete.\n */\n Transition.prototype.abort = function () {\n // Do not set flag if the transition is already complete\n if (isUndefined(this.success)) {\n this._aborted = true;\n }\n };\n /**\n * The Transition error reason.\n *\n * If the transition is invalid (and could not be run), returns the reason the transition is invalid.\n * If the transition was valid and ran, but was not successful, returns the reason the transition failed.\n *\n * @returns a transition rejection explaining why the transition is invalid, or the reason the transition failed.\n */\n Transition.prototype.error = function () {\n var state = this.$to();\n if (state.self.abstract) {\n return Rejection.invalid(\"Cannot transition to abstract state '\" + state.name + \"'\");\n }\n var paramDefs = state.parameters();\n var values = this.params();\n var invalidParams = paramDefs.filter(function (param) { return !param.validates(values[param.id]); });\n if (invalidParams.length) {\n var invalidValues = invalidParams.map(function (param) { return \"[\" + param.id + \":\" + stringify(values[param.id]) + \"]\"; }).join(', ');\n var detail = \"The following parameter values are not valid for state '\" + state.name + \"': \" + invalidValues;\n return Rejection.invalid(detail);\n }\n if (this.success === false)\n return this._error;\n };\n /**\n * A string representation of the Transition\n *\n * @returns A string representation of the Transition\n */\n Transition.prototype.toString = function () {\n var fromStateOrName = this.from();\n var toStateOrName = this.to();\n var avoidEmptyHash = function (params) {\n return params['#'] !== null && params['#'] !== undefined ? params : omit(params, ['#']);\n };\n // (X) means the to state is invalid.\n var id = this.$id, from = isObject(fromStateOrName) ? fromStateOrName.name : fromStateOrName, fromParams = stringify(avoidEmptyHash(this._treeChanges.from.map(prop('paramValues')).reduce(mergeR, {}))), toValid = this.valid() ? '' : '(X) ', to = isObject(toStateOrName) ? toStateOrName.name : toStateOrName, toParams = stringify(avoidEmptyHash(this.params()));\n return \"Transition#\" + id + \"( '\" + from + \"'\" + fromParams + \" -> \" + toValid + \"'\" + to + \"'\" + toParams + \" )\";\n };\n /** @internal */\n Transition.diToken = Transition;\n return Transition;\n}());\nexport { Transition };\n","import { TransitionHook } from './transitionHook';\n/**\n * This class defines a type of hook, such as `onBefore` or `onEnter`.\n * Plugins can define custom hook types, such as sticky states does for `onInactive`.\n */\nvar TransitionEventType = /** @class */ (function () {\n /* tslint:disable:no-inferrable-types */\n function TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous) {\n if (reverseSort === void 0) { reverseSort = false; }\n if (getResultHandler === void 0) { getResultHandler = TransitionHook.HANDLE_RESULT; }\n if (getErrorHandler === void 0) { getErrorHandler = TransitionHook.REJECT_ERROR; }\n if (synchronous === void 0) { synchronous = false; }\n this.name = name;\n this.hookPhase = hookPhase;\n this.hookOrder = hookOrder;\n this.criteriaMatchPath = criteriaMatchPath;\n this.reverseSort = reverseSort;\n this.getResultHandler = getResultHandler;\n this.getErrorHandler = getErrorHandler;\n this.synchronous = synchronous;\n }\n return TransitionEventType;\n}());\nexport { TransitionEventType };\n","import { TransitionHookPhase } from './interface';\nimport { defaults, noop, silentRejection } from '../common/common';\nimport { fnToString, maxLength } from '../common/strings';\nimport { isPromise } from '../common/predicates';\nimport { is, parse } from '../common/hof';\nimport { trace } from '../common/trace';\nimport { services } from '../common/coreservices';\nimport { Rejection } from './rejectFactory';\nimport { TargetState } from '../state/targetState';\nvar defaultOptions = {\n current: noop,\n transition: null,\n traceData: {},\n bind: null,\n};\nvar TransitionHook = /** @class */ (function () {\n function TransitionHook(transition, stateContext, registeredHook, options) {\n var _this = this;\n this.transition = transition;\n this.stateContext = stateContext;\n this.registeredHook = registeredHook;\n this.options = options;\n this.isSuperseded = function () { return _this.type.hookPhase === TransitionHookPhase.RUN && !_this.options.transition.isActive(); };\n this.options = defaults(options, defaultOptions);\n this.type = registeredHook.eventType;\n }\n /**\n * Chains together an array of TransitionHooks.\n *\n * Given a list of [[TransitionHook]] objects, chains them together.\n * Each hook is invoked after the previous one completes.\n *\n * #### Example:\n * ```js\n * var hooks: TransitionHook[] = getHooks();\n * let promise: Promise = TransitionHook.chain(hooks);\n *\n * promise.then(handleSuccess, handleError);\n * ```\n *\n * @param hooks the list of hooks to chain together\n * @param waitFor if provided, the chain is `.then()`'ed off this promise\n * @returns a `Promise` for sequentially invoking the hooks (in order)\n */\n TransitionHook.chain = function (hooks, waitFor) {\n // Chain the next hook off the previous\n var createHookChainR = function (prev, nextHook) { return prev.then(function () { return nextHook.invokeHook(); }); };\n return hooks.reduce(createHookChainR, waitFor || services.$q.when());\n };\n /**\n * Invokes all the provided TransitionHooks, in order.\n * Each hook's return value is checked.\n * If any hook returns a promise, then the rest of the hooks are chained off that promise, and the promise is returned.\n * If no hook returns a promise, then all hooks are processed synchronously.\n *\n * @param hooks the list of TransitionHooks to invoke\n * @param doneCallback a callback that is invoked after all the hooks have successfully completed\n *\n * @returns a promise for the async result, or the result of the callback\n */\n TransitionHook.invokeHooks = function (hooks, doneCallback) {\n for (var idx = 0; idx < hooks.length; idx++) {\n var hookResult = hooks[idx].invokeHook();\n if (isPromise(hookResult)) {\n var remainingHooks = hooks.slice(idx + 1);\n return TransitionHook.chain(remainingHooks, hookResult).then(doneCallback);\n }\n }\n return doneCallback();\n };\n /**\n * Run all TransitionHooks, ignoring their return value.\n */\n TransitionHook.runAllHooks = function (hooks) {\n hooks.forEach(function (hook) { return hook.invokeHook(); });\n };\n TransitionHook.prototype.logError = function (err) {\n this.transition.router.stateService.defaultErrorHandler()(err);\n };\n TransitionHook.prototype.invokeHook = function () {\n var _this = this;\n var hook = this.registeredHook;\n if (hook._deregistered)\n return;\n var notCurrent = this.getNotCurrentRejection();\n if (notCurrent)\n return notCurrent;\n var options = this.options;\n trace.traceHookInvocation(this, this.transition, options);\n var invokeCallback = function () { return hook.callback.call(options.bind, _this.transition, _this.stateContext); };\n var normalizeErr = function (err) { return Rejection.normalize(err).toPromise(); };\n var handleError = function (err) { return hook.eventType.getErrorHandler(_this)(err); };\n var handleResult = function (result) { return hook.eventType.getResultHandler(_this)(result); };\n try {\n var result = invokeCallback();\n if (!this.type.synchronous && isPromise(result)) {\n return result.catch(normalizeErr).then(handleResult, handleError);\n }\n else {\n return handleResult(result);\n }\n }\n catch (err) {\n // If callback throws (synchronously)\n return handleError(Rejection.normalize(err));\n }\n finally {\n if (hook.invokeLimit && ++hook.invokeCount >= hook.invokeLimit) {\n hook.deregister();\n }\n }\n };\n /**\n * This method handles the return value of a Transition Hook.\n *\n * A hook can return false (cancel), a TargetState (redirect),\n * or a promise (which may later resolve to false or a redirect)\n *\n * This also handles \"transition superseded\" -- when a new transition\n * was started while the hook was still running\n */\n TransitionHook.prototype.handleHookResult = function (result) {\n var _this = this;\n var notCurrent = this.getNotCurrentRejection();\n if (notCurrent)\n return notCurrent;\n // Hook returned a promise\n if (isPromise(result)) {\n // Wait for the promise, then reprocess with the resulting value\n return result.then(function (val) { return _this.handleHookResult(val); });\n }\n trace.traceHookResult(result, this.transition, this.options);\n // Hook returned false\n if (result === false) {\n // Abort this Transition\n return Rejection.aborted('Hook aborted transition').toPromise();\n }\n var isTargetState = is(TargetState);\n // hook returned a TargetState\n if (isTargetState(result)) {\n // Halt the current Transition and redirect (a new Transition) to the TargetState.\n return Rejection.redirected(result).toPromise();\n }\n };\n /**\n * Return a Rejection promise if the transition is no longer current due\n * to a stopped router (disposed), or a new transition has started and superseded this one.\n */\n TransitionHook.prototype.getNotCurrentRejection = function () {\n var router = this.transition.router;\n // The router is stopped\n if (router._disposed) {\n return Rejection.aborted(\"UIRouter instance #\" + router.$id + \" has been stopped (disposed)\").toPromise();\n }\n if (this.transition._aborted) {\n return Rejection.aborted().toPromise();\n }\n // This transition is no longer current.\n // Another transition started while this hook was still running.\n if (this.isSuperseded()) {\n // Abort this transition\n return Rejection.superseded(this.options.current()).toPromise();\n }\n };\n TransitionHook.prototype.toString = function () {\n var _a = this, options = _a.options, registeredHook = _a.registeredHook;\n var event = parse('traceData.hookType')(options) || 'internal', context = parse('traceData.context.state.name')(options) || parse('traceData.context')(options) || 'unknown', name = fnToString(registeredHook.callback);\n return event + \" context: \" + context + \", \" + maxLength(200, name);\n };\n /**\n * These GetResultHandler(s) are used by [[invokeHook]] below\n * Each HookType chooses a GetResultHandler (See: [[TransitionService._defineCoreEvents]])\n */\n TransitionHook.HANDLE_RESULT = function (hook) { return function (result) {\n return hook.handleHookResult(result);\n }; };\n /**\n * If the result is a promise rejection, log it.\n * Otherwise, ignore the result.\n */\n TransitionHook.LOG_REJECTED_RESULT = function (hook) { return function (result) {\n isPromise(result) && result.catch(function (err) { return hook.logError(Rejection.normalize(err)); });\n return undefined;\n }; };\n /**\n * These GetErrorHandler(s) are used by [[invokeHook]] below\n * Each HookType chooses a GetErrorHandler (See: [[TransitionService._defineCoreEvents]])\n */\n TransitionHook.LOG_ERROR = function (hook) { return function (error) { return hook.logError(error); }; };\n TransitionHook.REJECT_ERROR = function (hook) { return function (error) { return silentRejection(error); }; };\n TransitionHook.THROW_ERROR = function (hook) { return function (error) {\n throw error;\n }; };\n return TransitionHook;\n}());\nexport { TransitionHook };\n","import { Transition } from '../transition/transition';\nimport { UIRouter } from '../router';\nimport { Resolvable } from '../resolve';\nimport { inArray, uniqR, unnestR, values } from '../common';\nfunction addCoreResolvables(trans) {\n trans.addResolvable(Resolvable.fromData(UIRouter, trans.router), '');\n trans.addResolvable(Resolvable.fromData(Transition, trans), '');\n trans.addResolvable(Resolvable.fromData('$transition$', trans), '');\n trans.addResolvable(Resolvable.fromData('$stateParams', trans.params()), '');\n trans.entering().forEach(function (state) {\n trans.addResolvable(Resolvable.fromData('$state$', state), state);\n });\n}\nexport var registerAddCoreResolvables = function (transitionService) {\n return transitionService.onCreate({}, addCoreResolvables);\n};\nvar TRANSITION_TOKENS = ['$transition$', Transition];\nvar isTransition = inArray(TRANSITION_TOKENS);\n// References to Transition in the treeChanges pathnodes makes all\n// previous Transitions reachable in memory, causing a memory leak\n// This function removes resolves for '$transition$' and `Transition` from the treeChanges.\n// Do not use this on current transitions, only on old ones.\nexport var treeChangesCleanup = function (trans) {\n var nodes = values(trans.treeChanges()).reduce(unnestR, []).reduce(uniqR, []);\n // If the resolvable is a Transition, return a new resolvable with null data\n var replaceTransitionWithNull = function (r) {\n return isTransition(r.token) ? Resolvable.fromData(r.token, null) : r;\n };\n nodes.forEach(function (node) {\n node.resolvables = node.resolvables.map(replaceTransitionWithNull);\n });\n};\n","import { isString, isFunction } from '../common/predicates';\nimport { services } from '../common/coreservices';\nimport { TargetState } from '../state/targetState';\n/**\n * A [[TransitionHookFn]] that redirects to a different state or params\n *\n * Registered using `transitionService.onStart({ to: (state) => !!state.redirectTo }, redirectHook);`\n *\n * See [[StateDeclaration.redirectTo]]\n */\nvar redirectToHook = function (trans) {\n var redirect = trans.to().redirectTo;\n if (!redirect)\n return;\n var $state = trans.router.stateService;\n function handleResult(result) {\n if (!result)\n return;\n if (result instanceof TargetState)\n return result;\n if (isString(result))\n return $state.target(result, trans.params(), trans.options());\n if (result['state'] || result['params'])\n return $state.target(result['state'] || trans.to(), result['params'] || trans.params(), trans.options());\n }\n if (isFunction(redirect)) {\n return services.$q.when(redirect(trans)).then(handleResult);\n }\n return handleResult(redirect);\n};\nexport var registerRedirectToHook = function (transitionService) {\n return transitionService.onStart({ to: function (state) { return !!state.redirectTo; } }, redirectToHook);\n};\n","/**\n * A factory which creates an onEnter, onExit or onRetain transition hook function\n *\n * The returned function invokes the (for instance) state.onEnter hook when the\n * state is being entered.\n */\nfunction makeEnterExitRetainHook(hookName) {\n return function (transition, state) {\n var _state = state.$$state();\n var hookFn = _state[hookName];\n return hookFn(transition, state);\n };\n}\n/**\n * The [[TransitionStateHookFn]] for onExit\n *\n * When the state is being exited, the state's .onExit function is invoked.\n *\n * Registered using `transitionService.onExit({ exiting: (state) => !!state.onExit }, onExitHook);`\n *\n * See: [[IHookRegistry.onExit]]\n */\nvar onExitHook = makeEnterExitRetainHook('onExit');\nexport var registerOnExitHook = function (transitionService) {\n return transitionService.onExit({ exiting: function (state) { return !!state.onExit; } }, onExitHook);\n};\n/**\n * The [[TransitionStateHookFn]] for onRetain\n *\n * When the state was already entered, and is not being exited or re-entered, the state's .onRetain function is invoked.\n *\n * Registered using `transitionService.onRetain({ retained: (state) => !!state.onRetain }, onRetainHook);`\n *\n * See: [[IHookRegistry.onRetain]]\n */\nvar onRetainHook = makeEnterExitRetainHook('onRetain');\nexport var registerOnRetainHook = function (transitionService) {\n return transitionService.onRetain({ retained: function (state) { return !!state.onRetain; } }, onRetainHook);\n};\n/**\n * The [[TransitionStateHookFn]] for onEnter\n *\n * When the state is being entered, the state's .onEnter function is invoked.\n *\n * Registered using `transitionService.onEnter({ entering: (state) => !!state.onEnter }, onEnterHook);`\n *\n * See: [[IHookRegistry.onEnter]]\n */\nvar onEnterHook = makeEnterExitRetainHook('onEnter');\nexport var registerOnEnterHook = function (transitionService) {\n return transitionService.onEnter({ entering: function (state) { return !!state.onEnter; } }, onEnterHook);\n};\n","import { noop } from '../common/common';\nimport { ResolveContext } from '../resolve/resolveContext';\nimport { val } from '../common/hof';\nexport var RESOLVE_HOOK_PRIORITY = 1000;\n/**\n * A [[TransitionHookFn]] which resolves all EAGER Resolvables in the To Path\n *\n * Registered using `transitionService.onStart({}, eagerResolvePath, { priority: 1000 });`\n *\n * When a Transition starts, this hook resolves all the EAGER Resolvables, which the transition then waits for.\n *\n * See [[StateDeclaration.resolve]]\n */\nvar eagerResolvePath = function (trans) {\n return new ResolveContext(trans.treeChanges().to).resolvePath('EAGER', trans).then(noop);\n};\nexport var registerEagerResolvePath = function (transitionService) {\n return transitionService.onStart({}, eagerResolvePath, { priority: RESOLVE_HOOK_PRIORITY });\n};\n/**\n * A [[TransitionHookFn]] which resolves all LAZY Resolvables for the state (and all its ancestors) in the To Path\n *\n * Registered using `transitionService.onEnter({ entering: () => true }, lazyResolveState, { priority: 1000 });`\n *\n * When a State is being entered, this hook resolves all the Resolvables for this state, which the transition then waits for.\n *\n * See [[StateDeclaration.resolve]]\n */\nvar lazyResolveState = function (trans, state) {\n return new ResolveContext(trans.treeChanges().to).subContext(state.$$state()).resolvePath('LAZY', trans).then(noop);\n};\nexport var registerLazyResolveState = function (transitionService) {\n return transitionService.onEnter({ entering: val(true) }, lazyResolveState, { priority: RESOLVE_HOOK_PRIORITY });\n};\n/**\n * A [[TransitionHookFn]] which resolves any dynamically added (LAZY or EAGER) Resolvables.\n *\n * Registered using `transitionService.onFinish({}, eagerResolvePath, { priority: 1000 });`\n *\n * After all entering states have been entered, this hook resolves any remaining Resolvables.\n * These are typically dynamic resolves which were added by some Transition Hook using [[Transition.addResolvable]].\n *\n * See [[StateDeclaration.resolve]]\n */\nvar resolveRemaining = function (trans) {\n return new ResolveContext(trans.treeChanges().to).resolvePath('LAZY', trans).then(noop);\n};\nexport var registerResolveRemaining = function (transitionService) {\n return transitionService.onFinish({}, resolveRemaining, { priority: RESOLVE_HOOK_PRIORITY });\n};\n","import { noop } from '../common/common';\nimport { services } from '../common/coreservices';\n/**\n * A [[TransitionHookFn]] which waits for the views to load\n *\n * Registered using `transitionService.onStart({}, loadEnteringViews);`\n *\n * Allows the views to do async work in [[ViewConfig.load]] before the transition continues.\n * In angular 1, this includes loading the templates.\n */\nvar loadEnteringViews = function (transition) {\n var $q = services.$q;\n var enteringViews = transition.views('entering');\n if (!enteringViews.length)\n return;\n return $q.all(enteringViews.map(function (view) { return $q.when(view.load()); })).then(noop);\n};\nexport var registerLoadEnteringViews = function (transitionService) {\n return transitionService.onFinish({}, loadEnteringViews);\n};\n/**\n * A [[TransitionHookFn]] which activates the new views when a transition is successful.\n *\n * Registered using `transitionService.onSuccess({}, activateViews);`\n *\n * After a transition is complete, this hook deactivates the old views from the previous state,\n * and activates the new views from the destination state.\n *\n * See [[ViewService]]\n */\nvar activateViews = function (transition) {\n var enteringViews = transition.views('entering');\n var exitingViews = transition.views('exiting');\n if (!enteringViews.length && !exitingViews.length)\n return;\n var $view = transition.router.viewService;\n exitingViews.forEach(function (vc) { return $view.deactivateViewConfig(vc); });\n enteringViews.forEach(function (vc) { return $view.activateViewConfig(vc); });\n $view.sync();\n};\nexport var registerActivateViews = function (transitionService) {\n return transitionService.onSuccess({}, activateViews);\n};\n","import { copy } from '../common/common';\n/**\n * A [[TransitionHookFn]] which updates global UI-Router state\n *\n * Registered using `transitionService.onBefore({}, updateGlobalState);`\n *\n * Before a [[Transition]] starts, updates the global value of \"the current transition\" ([[Globals.transition]]).\n * After a successful [[Transition]], updates the global values of \"the current state\"\n * ([[Globals.current]] and [[Globals.$current]]) and \"the current param values\" ([[Globals.params]]).\n *\n * See also the deprecated properties:\n * [[StateService.transition]], [[StateService.current]], [[StateService.params]]\n */\nvar updateGlobalState = function (trans) {\n var globals = trans.router.globals;\n var transitionSuccessful = function () {\n globals.successfulTransitions.enqueue(trans);\n globals.$current = trans.$to();\n globals.current = globals.$current.self;\n copy(trans.params(), globals.params);\n };\n var clearCurrentTransition = function () {\n // Do not clear globals.transition if a different transition has started in the meantime\n if (globals.transition === trans)\n globals.transition = null;\n };\n trans.onSuccess({}, transitionSuccessful, { priority: 10000 });\n trans.promise.then(clearCurrentTransition, clearCurrentTransition);\n};\nexport var registerUpdateGlobalState = function (transitionService) {\n return transitionService.onCreate({}, updateGlobalState);\n};\n","/**\n * A [[TransitionHookFn]] which updates the URL after a successful transition\n *\n * Registered using `transitionService.onSuccess({}, updateUrl);`\n */\nvar updateUrl = function (transition) {\n var options = transition.options();\n var $state = transition.router.stateService;\n var $urlRouter = transition.router.urlRouter;\n // Dont update the url in these situations:\n // The transition was triggered by a URL sync (options.source === 'url')\n // The user doesn't want the url to update (options.location === false)\n // The destination state, and all parents have no navigable url\n if (options.source !== 'url' && options.location && $state.$current.navigable) {\n var urlOptions = { replace: options.location === 'replace' };\n $urlRouter.push($state.$current.navigable.url, $state.params, urlOptions);\n }\n $urlRouter.update(true);\n};\nexport var registerUpdateUrl = function (transitionService) {\n return transitionService.onSuccess({}, updateUrl, { priority: 9999 });\n};\n","import { trace } from '../common/trace';\nimport { Rejection } from '../transition/rejectFactory';\n/**\n * A [[TransitionHookFn]] that skips a transition if it should be ignored\n *\n * This hook is invoked at the end of the onBefore phase.\n *\n * If the transition should be ignored (because no parameter or states changed)\n * then the transition is ignored and not processed.\n */\nfunction ignoredHook(trans) {\n var ignoredReason = trans._ignoredReason();\n if (!ignoredReason)\n return;\n trace.traceTransitionIgnored(trans);\n var pending = trans.router.globals.transition;\n // The user clicked a link going back to the *current state* ('A')\n // However, there is also a pending transition in flight (to 'B')\n // Abort the transition to 'B' because the user now wants to be back at 'A'.\n if (ignoredReason === 'SameAsCurrent' && pending) {\n pending.abort();\n }\n return Rejection.ignored().toPromise();\n}\nexport var registerIgnoredTransitionHook = function (transitionService) {\n return transitionService.onBefore({}, ignoredHook, { priority: -9999 });\n};\n","/**\n * A [[TransitionHookFn]] that rejects the Transition if it is invalid\n *\n * This hook is invoked at the end of the onBefore phase.\n * If the transition is invalid (for example, param values do not validate)\n * then the transition is rejected.\n */\nfunction invalidTransitionHook(trans) {\n if (!trans.valid()) {\n throw new Error(trans.error().toString());\n }\n}\nexport var registerInvalidTransitionHook = function (transitionService) {\n return transitionService.onBefore({}, invalidTransitionHook, { priority: -10000 });\n};\n","import { TransitionHookScope, TransitionHookPhase, } from './interface';\nimport { Transition } from './transition';\nimport { makeEvent } from './hookRegistry';\nimport { registerAddCoreResolvables, treeChangesCleanup } from '../hooks/coreResolvables';\nimport { registerRedirectToHook } from '../hooks/redirectTo';\nimport { registerOnExitHook, registerOnRetainHook, registerOnEnterHook } from '../hooks/onEnterExitRetain';\nimport { registerEagerResolvePath, registerLazyResolveState, registerResolveRemaining } from '../hooks/resolve';\nimport { registerLoadEnteringViews, registerActivateViews } from '../hooks/views';\nimport { registerUpdateGlobalState } from '../hooks/updateGlobals';\nimport { registerUpdateUrl } from '../hooks/url';\nimport { registerLazyLoadHook } from '../hooks/lazyLoad';\nimport { TransitionEventType } from './transitionEventType';\nimport { TransitionHook } from './transitionHook';\nimport { isDefined } from '../common/predicates';\nimport { removeFrom, values, createProxyFunctions } from '../common/common';\nimport { val } from '../common/hof';\nimport { registerIgnoredTransitionHook } from '../hooks/ignoredTransition';\nimport { registerInvalidTransitionHook } from '../hooks/invalidTransition';\n/**\n * The default [[Transition]] options.\n *\n * Include this object when applying custom defaults:\n * let reloadOpts = { reload: true, notify: true }\n * let options = defaults(theirOpts, customDefaults, defaultOptions);\n */\nexport var defaultTransOpts = {\n location: true,\n relative: null,\n inherit: false,\n notify: true,\n reload: false,\n supercede: true,\n custom: {},\n current: function () { return null; },\n source: 'unknown',\n};\n/**\n * This class provides services related to Transitions.\n *\n * - Most importantly, it allows global Transition Hooks to be registered.\n * - It allows the default transition error handler to be set.\n * - It also has a factory function for creating new [[Transition]] objects, (used internally by the [[StateService]]).\n *\n * At bootstrap, [[UIRouter]] creates a single instance (singleton) of this class.\n *\n * This API is located at `router.transitionService` ([[UIRouter.transitionService]])\n */\nvar TransitionService = /** @class */ (function () {\n /** @internal */\n function TransitionService(_router) {\n /** @internal */\n this._transitionCount = 0;\n /** The transition hook types, such as `onEnter`, `onStart`, etc */\n this._eventTypes = [];\n /** @internal The registered transition hooks */\n this._registeredHooks = {};\n /** The paths on a criteria object */\n this._criteriaPaths = {};\n this._router = _router;\n this.$view = _router.viewService;\n this._deregisterHookFns = {};\n this._pluginapi = (createProxyFunctions(val(this), {}, val(this), [\n '_definePathType',\n '_defineEvent',\n '_getPathTypes',\n '_getEvents',\n 'getHooks',\n ]));\n this._defineCorePaths();\n this._defineCoreEvents();\n this._registerCoreTransitionHooks();\n _router.globals.successfulTransitions.onEvict(treeChangesCleanup);\n }\n /**\n * Registers a [[TransitionHookFn]], called *while a transition is being constructed*.\n *\n * Registers a transition lifecycle hook, which is invoked during transition construction.\n *\n * This low level hook should only be used by plugins.\n * This can be a useful time for plugins to add resolves or mutate the transition as needed.\n * The Sticky States plugin uses this hook to modify the treechanges.\n *\n * ### Lifecycle\n *\n * `onCreate` hooks are invoked *while a transition is being constructed*.\n *\n * ### Return value\n *\n * The hook's return value is ignored\n *\n * @internal\n * @param criteria defines which Transitions the Hook should be invoked for.\n * @param callback the hook function which will be invoked.\n * @param options the registration options\n * @returns a function which deregisters the hook.\n */\n TransitionService.prototype.onCreate = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onBefore = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onStart = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onExit = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onRetain = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onEnter = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onFinish = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onSuccess = function (criteria, callback, options) {\n return;\n };\n /** @inheritdoc */\n TransitionService.prototype.onError = function (criteria, callback, options) {\n return;\n };\n /**\n * dispose\n * @internal\n */\n TransitionService.prototype.dispose = function (router) {\n values(this._registeredHooks).forEach(function (hooksArray) {\n return hooksArray.forEach(function (hook) {\n hook._deregistered = true;\n removeFrom(hooksArray, hook);\n });\n });\n };\n /**\n * Creates a new [[Transition]] object\n *\n * This is a factory function for creating new Transition objects.\n * It is used internally by the [[StateService]] and should generally not be called by application code.\n *\n * @internal\n * @param fromPath the path to the current state (the from state)\n * @param targetState the target state (destination)\n * @returns a Transition\n */\n TransitionService.prototype.create = function (fromPath, targetState) {\n return new Transition(fromPath, targetState, this._router);\n };\n /** @internal */\n TransitionService.prototype._defineCoreEvents = function () {\n var Phase = TransitionHookPhase;\n var TH = TransitionHook;\n var paths = this._criteriaPaths;\n var NORMAL_SORT = false, REVERSE_SORT = true;\n var SYNCHRONOUS = true;\n this._defineEvent('onCreate', Phase.CREATE, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.THROW_ERROR, SYNCHRONOUS);\n this._defineEvent('onBefore', Phase.BEFORE, 0, paths.to);\n this._defineEvent('onStart', Phase.RUN, 0, paths.to);\n this._defineEvent('onExit', Phase.RUN, 100, paths.exiting, REVERSE_SORT);\n this._defineEvent('onRetain', Phase.RUN, 200, paths.retained);\n this._defineEvent('onEnter', Phase.RUN, 300, paths.entering);\n this._defineEvent('onFinish', Phase.RUN, 400, paths.to);\n this._defineEvent('onSuccess', Phase.SUCCESS, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n this._defineEvent('onError', Phase.ERROR, 0, paths.to, NORMAL_SORT, TH.LOG_REJECTED_RESULT, TH.LOG_ERROR, SYNCHRONOUS);\n };\n /** @internal */\n TransitionService.prototype._defineCorePaths = function () {\n var STATE = TransitionHookScope.STATE, TRANSITION = TransitionHookScope.TRANSITION;\n this._definePathType('to', TRANSITION);\n this._definePathType('from', TRANSITION);\n this._definePathType('exiting', STATE);\n this._definePathType('retained', STATE);\n this._definePathType('entering', STATE);\n };\n /** @internal */\n TransitionService.prototype._defineEvent = function (name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous) {\n if (reverseSort === void 0) { reverseSort = false; }\n if (getResultHandler === void 0) { getResultHandler = TransitionHook.HANDLE_RESULT; }\n if (getErrorHandler === void 0) { getErrorHandler = TransitionHook.REJECT_ERROR; }\n if (synchronous === void 0) { synchronous = false; }\n var eventType = new TransitionEventType(name, hookPhase, hookOrder, criteriaMatchPath, reverseSort, getResultHandler, getErrorHandler, synchronous);\n this._eventTypes.push(eventType);\n makeEvent(this, this, eventType);\n };\n /** @internal */\n TransitionService.prototype._getEvents = function (phase) {\n var transitionHookTypes = isDefined(phase)\n ? this._eventTypes.filter(function (type) { return type.hookPhase === phase; })\n : this._eventTypes.slice();\n return transitionHookTypes.sort(function (l, r) {\n var cmpByPhase = l.hookPhase - r.hookPhase;\n return cmpByPhase === 0 ? l.hookOrder - r.hookOrder : cmpByPhase;\n });\n };\n /**\n * Adds a Path to be used as a criterion against a TreeChanges path\n *\n * For example: the `exiting` path in [[HookMatchCriteria]] is a STATE scoped path.\n * It was defined by calling `defineTreeChangesCriterion('exiting', TransitionHookScope.STATE)`\n * Each state in the exiting path is checked against the criteria and returned as part of the match.\n *\n * Another example: the `to` path in [[HookMatchCriteria]] is a TRANSITION scoped path.\n * It was defined by calling `defineTreeChangesCriterion('to', TransitionHookScope.TRANSITION)`\n * Only the tail of the `to` path is checked against the criteria and returned as part of the match.\n *\n * @internal\n */\n TransitionService.prototype._definePathType = function (name, hookScope) {\n this._criteriaPaths[name] = { name: name, scope: hookScope };\n };\n /** @internal */\n // tslint:disable-next-line\n TransitionService.prototype._getPathTypes = function () {\n return this._criteriaPaths;\n };\n /** @internal */\n TransitionService.prototype.getHooks = function (hookName) {\n return this._registeredHooks[hookName];\n };\n /** @internal */\n TransitionService.prototype._registerCoreTransitionHooks = function () {\n var fns = this._deregisterHookFns;\n fns.addCoreResolves = registerAddCoreResolvables(this);\n fns.ignored = registerIgnoredTransitionHook(this);\n fns.invalid = registerInvalidTransitionHook(this);\n // Wire up redirectTo hook\n fns.redirectTo = registerRedirectToHook(this);\n // Wire up onExit/Retain/Enter state hooks\n fns.onExit = registerOnExitHook(this);\n fns.onRetain = registerOnRetainHook(this);\n fns.onEnter = registerOnEnterHook(this);\n // Wire up Resolve hooks\n fns.eagerResolve = registerEagerResolvePath(this);\n fns.lazyResolve = registerLazyResolveState(this);\n fns.resolveAll = registerResolveRemaining(this);\n // Wire up the View management hooks\n fns.loadViews = registerLoadEnteringViews(this);\n fns.activateViews = registerActivateViews(this);\n // Updates global state after a transition\n fns.updateGlobals = registerUpdateGlobalState(this);\n // After globals.current is updated at priority: 10000\n fns.updateUrl = registerUpdateUrl(this);\n // Lazy load state trees\n fns.lazyLoad = registerLazyLoadHook(this);\n };\n return TransitionService;\n}());\nexport { TransitionService };\n","import { ParamTypes } from '../params';\nimport { isDefined, isString } from '../common';\n/**\n * An API to customize the URL behavior and retrieve URL configuration\n *\n * This API is used to customize the behavior of the URL.\n * This includes optional trailing slashes ([[strictMode]]), case sensitivity ([[caseInsensitive]]),\n * and custom parameter encoding (custom [[type]]).\n *\n * It also has information about the location (url) configuration such as [[port]] and [[baseHref]].\n * This information can be used to build absolute URLs, such as\n * `https://example.com:443/basepath/state/substate?param1=a#hashvalue`;\n *\n * This API is found at `router.urlService.config` (see: [[UIRouter.urlService]], [[URLService.config]])\n */\nvar UrlConfig = /** @class */ (function () {\n /** @internal */ function UrlConfig(/** @internal */ router) {\n var _this = this;\n this.router = router;\n /** @internal */ this.paramTypes = new ParamTypes();\n /** @internal */ this._decodeParams = true;\n /** @internal */ this._isCaseInsensitive = false;\n /** @internal */ this._isStrictMode = true;\n /** @internal */ this._defaultSquashPolicy = false;\n /** @internal */ this.dispose = function () { return _this.paramTypes.dispose(); };\n // Delegate these calls to the current LocationConfig implementation\n /**\n * Gets the base Href, e.g., `http://localhost/approot/`\n *\n * @return the application's base href\n */\n this.baseHref = function () { return _this.router.locationConfig.baseHref(); };\n /**\n * Gets or sets the hashPrefix\n *\n * This only applies when not running in [[html5Mode]] (pushstate mode)\n *\n * If the current url is `http://localhost/app#!/uirouter/path/#anchor`, it returns `!` which is the prefix for the \"hashbang\" portion.\n *\n * @return the hash prefix\n */\n this.hashPrefix = function (newprefix) { return _this.router.locationConfig.hashPrefix(newprefix); };\n /**\n * Gets the host, e.g., `localhost`\n *\n * @return the protocol\n */\n this.host = function () { return _this.router.locationConfig.host(); };\n /**\n * Returns true when running in pushstate mode\n *\n * @return true when running in html5 mode (pushstate mode).\n */\n this.html5Mode = function () { return _this.router.locationConfig.html5Mode(); };\n /**\n * Gets the port, e.g., `80`\n *\n * @return the port number\n */\n this.port = function () { return _this.router.locationConfig.port(); };\n /**\n * Gets the protocol, e.g., `http`\n *\n * @return the protocol\n */\n this.protocol = function () { return _this.router.locationConfig.protocol(); };\n }\n /**\n * Defines whether URL matching should be case sensitive (the default behavior), or not.\n *\n * #### Example:\n * ```js\n * // Allow case insensitive url matches\n * urlService.config.caseInsensitive(true);\n * ```\n *\n * @param value `false` to match URL in a case sensitive manner; otherwise `true`;\n * @returns the current value of caseInsensitive\n */\n UrlConfig.prototype.caseInsensitive = function (value) {\n return (this._isCaseInsensitive = isDefined(value) ? value : this._isCaseInsensitive);\n };\n /**\n * Sets the default behavior when generating or matching URLs with default parameter values.\n *\n * #### Example:\n * ```js\n * // Remove default parameter values from the url\n * urlService.config.defaultSquashPolicy(true);\n * ```\n *\n * @param value A string that defines the default parameter URL squashing behavior.\n * - `nosquash`: When generating an href with a default parameter value, do not squash the parameter value from the URL\n * - `slash`: When generating an href with a default parameter value, squash (remove) the parameter value, and, if the\n * parameter is surrounded by slashes, squash (remove) one slash from the URL\n * - any other string, e.g. \"~\": When generating an href with a default parameter value, squash (remove)\n * the parameter value from the URL and replace it with this string.\n * @returns the current value of defaultSquashPolicy\n */\n UrlConfig.prototype.defaultSquashPolicy = function (value) {\n if (isDefined(value) && value !== true && value !== false && !isString(value))\n throw new Error(\"Invalid squash policy: \" + value + \". Valid policies: false, true, arbitrary-string\");\n return (this._defaultSquashPolicy = isDefined(value) ? value : this._defaultSquashPolicy);\n };\n /**\n * Defines whether URLs should match trailing slashes, or not (the default behavior).\n *\n * #### Example:\n * ```js\n * // Allow optional trailing slashes\n * urlService.config.strictMode(false);\n * ```\n *\n * @param value `false` to match trailing slashes in URLs, otherwise `true`.\n * @returns the current value of strictMode\n */\n UrlConfig.prototype.strictMode = function (value) {\n return (this._isStrictMode = isDefined(value) ? value : this._isStrictMode);\n };\n /**\n * Creates and registers a custom [[ParamType]] object\n *\n * A custom parameter type can be used to generate URLs with typed parameters or custom encoding/decoding.\n *\n * #### Note: Register custom types *before using them* in a state definition.\n *\n * #### Example:\n * ```js\n * // Encode object parameter as JSON string\n * urlService.config.type('myjson', {\n * encode: (obj) => JSON.stringify(obj),\n * decode: (str) => JSON.parse(str),\n * is: (val) => typeof(val) === 'object',\n * pattern: /[^/]+/,\n * equals: (a, b) => _.isEqual(a, b),\n * });\n * ```\n *\n * See [[ParamTypeDefinition]] for more examples\n *\n * @param name The type name.\n * @param definition The type definition. See [[ParamTypeDefinition]] for information on the values accepted.\n * @param definitionFn A function that is injected before the app runtime starts.\n * The result of this function should be a [[ParamTypeDefinition]].\n * The result is merged into the existing `definition`.\n * See [[ParamType]] for information on the values accepted.\n *\n * @returns if only the `name` parameter was specified: the currently registered [[ParamType]] object, or undefined\n */\n UrlConfig.prototype.type = function (name, definition, definitionFn) {\n var type = this.paramTypes.type(name, definition, definitionFn);\n return !isDefined(definition) ? type : this;\n };\n return UrlConfig;\n}());\nexport { UrlConfig };\n","import { map, inherit, identity, unnest, tail, find, allTrueR, unnestR, arrayTuples } from '../common/common';\nimport { prop, propEq } from '../common/hof';\nimport { isArray, isString, isDefined } from '../common/predicates';\nimport { Param, DefType } from '../params/param';\nimport { joinNeighborsR, splitOnDelim } from '../common/strings';\nimport { defaults } from '../common';\nfunction quoteRegExp(str, param) {\n var surroundPattern = ['', ''], result = str.replace(/[\\\\\\[\\]\\^$*+?.()|{}]/g, '\\\\$&');\n if (!param)\n return result;\n switch (param.squash) {\n case false:\n surroundPattern = ['(', ')' + (param.isOptional ? '?' : '')];\n break;\n case true:\n result = result.replace(/\\/$/, '');\n surroundPattern = ['(?:/(', ')|/)?'];\n break;\n default:\n surroundPattern = [\"(\" + param.squash + \"|\", ')?'];\n break;\n }\n return result + surroundPattern[0] + param.type.pattern.source + surroundPattern[1];\n}\nvar memoizeTo = function (obj, _prop, fn) { return (obj[_prop] = obj[_prop] || fn()); };\nvar splitOnSlash = splitOnDelim('/');\nvar defaultConfig = {\n state: { params: {} },\n strict: true,\n caseInsensitive: true,\n decodeParams: true,\n};\n/**\n * Matches URLs against patterns.\n *\n * Matches URLs against patterns and extracts named parameters from the path or the search\n * part of the URL.\n *\n * A URL pattern consists of a path pattern, optionally followed by '?' and a list of search (query)\n * parameters. Multiple search parameter names are separated by '&'. Search parameters\n * do not influence whether or not a URL is matched, but their values are passed through into\n * the matched parameters returned by [[UrlMatcher.exec]].\n *\n * - *Path parameters* are defined using curly brace placeholders (`/somepath/{param}`)\n * or colon placeholders (`/somePath/:param`).\n *\n * - *A parameter RegExp* may be defined for a param after a colon\n * (`/somePath/{param:[a-zA-Z0-9]+}`) in a curly brace placeholder.\n * The regexp must match for the url to be matched.\n * Should the regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash.\n *\n * Note: a RegExp parameter will encode its value using either [[ParamTypes.path]] or [[ParamTypes.query]].\n *\n * - *Custom parameter types* may also be specified after a colon (`/somePath/{param:int}`) in curly brace parameters.\n * See [[UrlMatcherFactory.type]] for more information.\n *\n * - *Catch-all parameters* are defined using an asterisk placeholder (`/somepath/*catchallparam`).\n * A catch-all * parameter value will contain the remainder of the URL.\n *\n * ---\n *\n * Parameter names may contain only word characters (latin letters, digits, and underscore) and\n * must be unique within the pattern (across both path and search parameters).\n * A path parameter matches any number of characters other than '/'. For catch-all\n * placeholders the path parameter matches any number of characters.\n *\n * Examples:\n *\n * * `'/hello/'` - Matches only if the path is exactly '/hello/'. There is no special treatment for\n * trailing slashes, and patterns have to match the entire path, not just a prefix.\n * * `'/user/:id'` - Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or\n * '/user/bob/details'. The second path segment will be captured as the parameter 'id'.\n * * `'/user/{id}'` - Same as the previous example, but using curly brace syntax.\n * * `'/user/{id:[^/]*}'` - Same as the previous example.\n * * `'/user/{id:[0-9a-fA-F]{1,8}}'` - Similar to the previous example, but only matches if the id\n * parameter consists of 1 to 8 hex digits.\n * * `'/files/{path:.*}'` - Matches any URL starting with '/files/' and captures the rest of the\n * path into the parameter 'path'.\n * * `'/files/*path'` - ditto.\n * * `'/calendar/{start:date}'` - Matches \"/calendar/2014-11-12\" (because the pattern defined\n * in the built-in `date` ParamType matches `2014-11-12`) and provides a Date object in $stateParams.start\n *\n */\nvar UrlMatcher = /** @class */ (function () {\n /**\n * @param pattern The pattern to compile into a matcher.\n * @param paramTypes The [[ParamTypes]] registry\n * @param paramFactory A [[ParamFactory]] object\n * @param config A [[UrlMatcherCompileConfig]] configuration object\n */\n function UrlMatcher(pattern, paramTypes, paramFactory, config) {\n var _this = this;\n /** @internal */\n this._cache = { path: [this] };\n /** @internal */\n this._children = [];\n /** @internal */\n this._params = [];\n /** @internal */\n this._segments = [];\n /** @internal */\n this._compiled = [];\n this.config = config = defaults(config, defaultConfig);\n this.pattern = pattern;\n // Find all placeholders and create a compiled pattern, using either classic or curly syntax:\n // '*' name\n // ':' name\n // '{' name '}'\n // '{' name ':' regexp '}'\n // The regular expression is somewhat complicated due to the need to allow curly braces\n // inside the regular expression. The placeholder regexp breaks down as follows:\n // ([:*])([\\w\\[\\]]+) - classic placeholder ($1 / $2) (search version has - for snake-case)\n // \\{([\\w\\[\\]]+)(?:\\:\\s*( ... ))?\\} - curly brace placeholder ($3) with optional regexp/type ... ($4) (search version has - for snake-case\n // (?: ... | ... | ... )+ - the regexp consists of any number of atoms, an atom being either\n // [^{}\\\\]+ - anything other than curly braces or backslash\n // \\\\. - a backslash escape\n // \\{(?:[^{}\\\\]+|\\\\.)*\\} - a matched set of curly braces containing other atoms\n var placeholder = /([:*])([\\w\\[\\]]+)|\\{([\\w\\[\\]]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n var searchPlaceholder = /([:]?)([\\w\\[\\].-]+)|\\{([\\w\\[\\].-]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g;\n var patterns = [];\n var last = 0;\n var matchArray;\n var checkParamErrors = function (id) {\n if (!UrlMatcher.nameValidator.test(id))\n throw new Error(\"Invalid parameter name '\" + id + \"' in pattern '\" + pattern + \"'\");\n if (find(_this._params, propEq('id', id)))\n throw new Error(\"Duplicate parameter name '\" + id + \"' in pattern '\" + pattern + \"'\");\n };\n // Split into static segments separated by path parameter placeholders.\n // The number of segments is always 1 more than the number of parameters.\n var matchDetails = function (m, isSearch) {\n // IE[78] returns '' for unmatched groups instead of null\n var id = m[2] || m[3];\n var regexp = isSearch ? m[4] : m[4] || (m[1] === '*' ? '[\\\\s\\\\S]*' : null);\n var makeRegexpType = function (str) {\n return inherit(paramTypes.type(isSearch ? 'query' : 'path'), {\n pattern: new RegExp(str, _this.config.caseInsensitive ? 'i' : undefined),\n });\n };\n return {\n id: id,\n regexp: regexp,\n segment: pattern.substring(last, m.index),\n type: !regexp ? null : paramTypes.type(regexp) || makeRegexpType(regexp),\n };\n };\n var details;\n var segment;\n // tslint:disable-next-line:no-conditional-assignment\n while ((matchArray = placeholder.exec(pattern))) {\n details = matchDetails(matchArray, false);\n if (details.segment.indexOf('?') >= 0)\n break; // we're into the search part\n checkParamErrors(details.id);\n this._params.push(paramFactory.fromPath(details.id, details.type, config.state));\n this._segments.push(details.segment);\n patterns.push([details.segment, tail(this._params)]);\n last = placeholder.lastIndex;\n }\n segment = pattern.substring(last);\n // Find any search parameter names and remove them from the last segment\n var i = segment.indexOf('?');\n if (i >= 0) {\n var search = segment.substring(i);\n segment = segment.substring(0, i);\n if (search.length > 0) {\n last = 0;\n // tslint:disable-next-line:no-conditional-assignment\n while ((matchArray = searchPlaceholder.exec(search))) {\n details = matchDetails(matchArray, true);\n checkParamErrors(details.id);\n this._params.push(paramFactory.fromSearch(details.id, details.type, config.state));\n last = placeholder.lastIndex;\n // check if ?&\n }\n }\n }\n this._segments.push(segment);\n this._compiled = patterns.map(function (_pattern) { return quoteRegExp.apply(null, _pattern); }).concat(quoteRegExp(segment));\n }\n /** @internal */\n UrlMatcher.encodeDashes = function (str) {\n // Replace dashes with encoded \"\\-\"\n return encodeURIComponent(str).replace(/-/g, function (c) { return \"%5C%\" + c.charCodeAt(0).toString(16).toUpperCase(); });\n };\n /** @internal Given a matcher, return an array with the matcher's path segments and path params, in order */\n UrlMatcher.pathSegmentsAndParams = function (matcher) {\n var staticSegments = matcher._segments;\n var pathParams = matcher._params.filter(function (p) { return p.location === DefType.PATH; });\n return arrayTuples(staticSegments, pathParams.concat(undefined))\n .reduce(unnestR, [])\n .filter(function (x) { return x !== '' && isDefined(x); });\n };\n /** @internal Given a matcher, return an array with the matcher's query params */\n UrlMatcher.queryParams = function (matcher) {\n return matcher._params.filter(function (p) { return p.location === DefType.SEARCH; });\n };\n /**\n * Compare two UrlMatchers\n *\n * This comparison function converts a UrlMatcher into static and dynamic path segments.\n * Each static path segment is a static string between a path separator (slash character).\n * Each dynamic segment is a path parameter.\n *\n * The comparison function sorts static segments before dynamic ones.\n */\n UrlMatcher.compare = function (a, b) {\n /**\n * Turn a UrlMatcher and all its parent matchers into an array\n * of slash literals '/', string literals, and Param objects\n *\n * This example matcher matches strings like \"/foo/:param/tail\":\n * var matcher = $umf.compile(\"/foo\").append($umf.compile(\"/:param\")).append($umf.compile(\"/\")).append($umf.compile(\"tail\"));\n * var result = segments(matcher); // [ '/', 'foo', '/', Param, '/', 'tail' ]\n *\n * Caches the result as `matcher._cache.segments`\n */\n var segments = function (matcher) {\n return (matcher._cache.segments =\n matcher._cache.segments ||\n matcher._cache.path\n .map(UrlMatcher.pathSegmentsAndParams)\n .reduce(unnestR, [])\n .reduce(joinNeighborsR, [])\n .map(function (x) { return (isString(x) ? splitOnSlash(x) : x); })\n .reduce(unnestR, []));\n };\n /**\n * Gets the sort weight for each segment of a UrlMatcher\n *\n * Caches the result as `matcher._cache.weights`\n */\n var weights = function (matcher) {\n return (matcher._cache.weights =\n matcher._cache.weights ||\n segments(matcher).map(function (segment) {\n // Sort slashes first, then static strings, the Params\n if (segment === '/')\n return 1;\n if (isString(segment))\n return 2;\n if (segment instanceof Param)\n return 3;\n }));\n };\n /**\n * Pads shorter array in-place (mutates)\n */\n var padArrays = function (l, r, padVal) {\n var len = Math.max(l.length, r.length);\n while (l.length < len)\n l.push(padVal);\n while (r.length < len)\n r.push(padVal);\n };\n var weightsA = weights(a), weightsB = weights(b);\n padArrays(weightsA, weightsB, 0);\n var _pairs = arrayTuples(weightsA, weightsB);\n var cmp, i;\n for (i = 0; i < _pairs.length; i++) {\n cmp = _pairs[i][0] - _pairs[i][1];\n if (cmp !== 0)\n return cmp;\n }\n return 0;\n };\n /**\n * Creates a new concatenated UrlMatcher\n *\n * Builds a new UrlMatcher by appending another UrlMatcher to this one.\n *\n * @param url A `UrlMatcher` instance to append as a child of the current `UrlMatcher`.\n */\n UrlMatcher.prototype.append = function (url) {\n this._children.push(url);\n url._cache = {\n path: this._cache.path.concat(url),\n parent: this,\n pattern: null,\n };\n return url;\n };\n /** @internal */\n UrlMatcher.prototype.isRoot = function () {\n return this._cache.path[0] === this;\n };\n /** Returns the input pattern string */\n UrlMatcher.prototype.toString = function () {\n return this.pattern;\n };\n UrlMatcher.prototype._getDecodedParamValue = function (value, param) {\n if (isDefined(value)) {\n if (this.config.decodeParams && !param.type.raw) {\n if (isArray(value)) {\n value = value.map(function (paramValue) { return decodeURIComponent(paramValue); });\n }\n else {\n value = decodeURIComponent(value);\n }\n }\n value = param.type.decode(value);\n }\n return param.value(value);\n };\n /**\n * Tests the specified url/path against this matcher.\n *\n * Tests if the given url matches this matcher's pattern, and returns an object containing the captured\n * parameter values. Returns null if the path does not match.\n *\n * The returned object contains the values\n * of any search parameters that are mentioned in the pattern, but their value may be null if\n * they are not present in `search`. This means that search parameters are always treated\n * as optional.\n *\n * #### Example:\n * ```js\n * new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {\n * x: '1', q: 'hello'\n * });\n * // returns { id: 'bob', q: 'hello', r: null }\n * ```\n *\n * @param path The URL path to match, e.g. `$location.path()`.\n * @param search URL search parameters, e.g. `$location.search()`.\n * @param hash URL hash e.g. `$location.hash()`.\n * @param options\n *\n * @returns The captured parameter values.\n */\n UrlMatcher.prototype.exec = function (path, search, hash, options) {\n var _this = this;\n if (search === void 0) { search = {}; }\n if (options === void 0) { options = {}; }\n var match = memoizeTo(this._cache, 'pattern', function () {\n return new RegExp([\n '^',\n unnest(_this._cache.path.map(prop('_compiled'))).join(''),\n _this.config.strict === false ? '/?' : '',\n '$',\n ].join(''), _this.config.caseInsensitive ? 'i' : undefined);\n }).exec(path);\n if (!match)\n return null;\n // options = defaults(options, { isolate: false });\n var allParams = this.parameters(), pathParams = allParams.filter(function (param) { return !param.isSearch(); }), searchParams = allParams.filter(function (param) { return param.isSearch(); }), nPathSegments = this._cache.path.map(function (urlm) { return urlm._segments.length - 1; }).reduce(function (a, x) { return a + x; }), values = {};\n if (nPathSegments !== match.length - 1)\n throw new Error(\"Unbalanced capture group in route '\" + this.pattern + \"'\");\n function decodePathArray(paramVal) {\n var reverseString = function (str) { return str.split('').reverse().join(''); };\n var unquoteDashes = function (str) { return str.replace(/\\\\-/g, '-'); };\n var split = reverseString(paramVal).split(/-(?!\\\\)/);\n var allReversed = map(split, reverseString);\n return map(allReversed, unquoteDashes).reverse();\n }\n for (var i = 0; i < nPathSegments; i++) {\n var param = pathParams[i];\n var value = match[i + 1];\n // if the param value matches a pre-replace pair, replace the value before decoding.\n for (var j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === value)\n value = param.replace[j].to;\n }\n if (value && param.array === true)\n value = decodePathArray(value);\n values[param.id] = this._getDecodedParamValue(value, param);\n }\n searchParams.forEach(function (param) {\n var value = search[param.id];\n for (var j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === value)\n value = param.replace[j].to;\n }\n values[param.id] = _this._getDecodedParamValue(value, param);\n });\n if (hash)\n values['#'] = hash;\n return values;\n };\n /**\n * @internal\n * Returns all the [[Param]] objects of all path and search parameters of this pattern in order of appearance.\n *\n * @returns {Array.} An array of [[Param]] objects. Must be treated as read-only. If the\n * pattern has no parameters, an empty array is returned.\n */\n UrlMatcher.prototype.parameters = function (opts) {\n if (opts === void 0) { opts = {}; }\n if (opts.inherit === false)\n return this._params;\n return unnest(this._cache.path.map(function (matcher) { return matcher._params; }));\n };\n /**\n * @internal\n * Returns a single parameter from this UrlMatcher by id\n *\n * @param id\n * @param opts\n * @returns {T|Param|any|boolean|UrlMatcher|null}\n */\n UrlMatcher.prototype.parameter = function (id, opts) {\n var _this = this;\n if (opts === void 0) { opts = {}; }\n var findParam = function () {\n for (var _i = 0, _a = _this._params; _i < _a.length; _i++) {\n var param = _a[_i];\n if (param.id === id)\n return param;\n }\n };\n var parent = this._cache.parent;\n return findParam() || (opts.inherit !== false && parent && parent.parameter(id, opts)) || null;\n };\n /**\n * Validates the input parameter values against this UrlMatcher\n *\n * Checks an object hash of parameters to validate their correctness according to the parameter\n * types of this `UrlMatcher`.\n *\n * @param params The object hash of parameters to validate.\n * @returns Returns `true` if `params` validates, otherwise `false`.\n */\n UrlMatcher.prototype.validates = function (params) {\n var validParamVal = function (param, val) { return !param || param.validates(val); };\n params = params || {};\n // I'm not sure why this checks only the param keys passed in, and not all the params known to the matcher\n var paramSchema = this.parameters().filter(function (paramDef) { return params.hasOwnProperty(paramDef.id); });\n return paramSchema.map(function (paramDef) { return validParamVal(paramDef, params[paramDef.id]); }).reduce(allTrueR, true);\n };\n /**\n * Given a set of parameter values, creates a URL from this UrlMatcher.\n *\n * Creates a URL that matches this pattern by substituting the specified values\n * for the path and search parameters.\n *\n * #### Example:\n * ```js\n * new UrlMatcher('/user/{id}?q').format({ id:'bob', q:'yes' });\n * // returns '/user/bob?q=yes'\n * ```\n *\n * @param values the values to substitute for the parameters in this pattern.\n * @returns the formatted URL (path and optionally search part).\n */\n UrlMatcher.prototype.format = function (values) {\n if (values === void 0) { values = {}; }\n // Build the full path of UrlMatchers (including all parent UrlMatchers)\n var urlMatchers = this._cache.path;\n // Extract all the static segments and Params (processed as ParamDetails)\n // into an ordered array\n var pathSegmentsAndParams = urlMatchers\n .map(UrlMatcher.pathSegmentsAndParams)\n .reduce(unnestR, [])\n .map(function (x) { return (isString(x) ? x : getDetails(x)); });\n // Extract the query params into a separate array\n var queryParams = urlMatchers\n .map(UrlMatcher.queryParams)\n .reduce(unnestR, [])\n .map(getDetails);\n var isInvalid = function (param) { return param.isValid === false; };\n if (pathSegmentsAndParams.concat(queryParams).filter(isInvalid).length) {\n return null;\n }\n /**\n * Given a Param, applies the parameter value, then returns detailed information about it\n */\n function getDetails(param) {\n // Normalize to typed value\n var value = param.value(values[param.id]);\n var isValid = param.validates(value);\n var isDefaultValue = param.isDefaultValue(value);\n // Check if we're in squash mode for the parameter\n var squash = isDefaultValue ? param.squash : false;\n // Allow the Parameter's Type to encode the value\n var encoded = param.type.encode(value);\n return { param: param, value: value, isValid: isValid, isDefaultValue: isDefaultValue, squash: squash, encoded: encoded };\n }\n // Build up the path-portion from the list of static segments and parameters\n var pathString = pathSegmentsAndParams.reduce(function (acc, x) {\n // The element is a static segment (a raw string); just append it\n if (isString(x))\n return acc + x;\n // Otherwise, it's a ParamDetails.\n var squash = x.squash, encoded = x.encoded, param = x.param;\n // If squash is === true, try to remove a slash from the path\n if (squash === true)\n return acc.match(/\\/$/) ? acc.slice(0, -1) : acc;\n // If squash is a string, use the string for the param value\n if (isString(squash))\n return acc + squash;\n if (squash !== false)\n return acc; // ?\n if (encoded == null)\n return acc;\n // If this parameter value is an array, encode the value using encodeDashes\n if (isArray(encoded))\n return acc + map(encoded, UrlMatcher.encodeDashes).join('-');\n // If the parameter type is \"raw\", then do not encodeURIComponent\n if (param.raw)\n return acc + encoded;\n // Encode the value\n return acc + encodeURIComponent(encoded);\n }, '');\n // Build the query string by applying parameter values (array or regular)\n // then mapping to key=value, then flattening and joining using \"&\"\n var queryString = queryParams\n .map(function (paramDetails) {\n var param = paramDetails.param, squash = paramDetails.squash, encoded = paramDetails.encoded, isDefaultValue = paramDetails.isDefaultValue;\n if (encoded == null || (isDefaultValue && squash !== false))\n return;\n if (!isArray(encoded))\n encoded = [encoded];\n if (encoded.length === 0)\n return;\n if (!param.raw)\n encoded = map(encoded, encodeURIComponent);\n return encoded.map(function (val) { return param.id + \"=\" + val; });\n })\n .filter(identity)\n .reduce(unnestR, [])\n .join('&');\n // Concat the pathstring with the queryString (if exists) and the hashString (if exists)\n return pathString + (queryString ? \"?\" + queryString : '') + (values['#'] ? '#' + values['#'] : '');\n };\n /** @internal */\n UrlMatcher.nameValidator = /^\\w+([-.]+\\w+)*(?:\\[\\])?$/;\n return UrlMatcher;\n}());\nexport { UrlMatcher };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { extend, forEach, isDefined, isFunction, isObject } from '../common';\nimport { UrlMatcher } from './urlMatcher';\nimport { DefType, Param } from '../params';\nvar ParamFactory = /** @class */ (function () {\n function ParamFactory(router) {\n this.router = router;\n }\n ParamFactory.prototype.fromConfig = function (id, type, state) {\n return new Param(id, type, DefType.CONFIG, this.router.urlService.config, state);\n };\n ParamFactory.prototype.fromPath = function (id, type, state) {\n return new Param(id, type, DefType.PATH, this.router.urlService.config, state);\n };\n ParamFactory.prototype.fromSearch = function (id, type, state) {\n return new Param(id, type, DefType.SEARCH, this.router.urlService.config, state);\n };\n return ParamFactory;\n}());\nexport { ParamFactory };\n/**\n * Factory for [[UrlMatcher]] instances.\n *\n * The factory is available to ng1 services as\n * `$urlMatcherFactory` or ng1 providers as `$urlMatcherFactoryProvider`.\n */\nvar UrlMatcherFactory = /** @class */ (function () {\n // TODO: move implementations to UrlConfig (urlService.config)\n function UrlMatcherFactory(/** @internal */ router) {\n var _this = this;\n this.router = router;\n /** Creates a new [[Param]] for a given location (DefType) */\n this.paramFactory = new ParamFactory(this.router);\n // TODO: Check if removal of this will break anything, then remove these\n this.UrlMatcher = UrlMatcher;\n this.Param = Param;\n /** @deprecated use [[UrlConfig.caseInsensitive]] */\n this.caseInsensitive = function (value) { return _this.router.urlService.config.caseInsensitive(value); };\n /** @deprecated use [[UrlConfig.defaultSquashPolicy]] */\n this.defaultSquashPolicy = function (value) { return _this.router.urlService.config.defaultSquashPolicy(value); };\n /** @deprecated use [[UrlConfig.strictMode]] */\n this.strictMode = function (value) { return _this.router.urlService.config.strictMode(value); };\n /** @deprecated use [[UrlConfig.type]] */\n this.type = function (name, definition, definitionFn) {\n return _this.router.urlService.config.type(name, definition, definitionFn) || _this;\n };\n }\n /**\n * Creates a [[UrlMatcher]] for the specified pattern.\n *\n * @param pattern The URL pattern.\n * @param config The config object hash.\n * @returns The UrlMatcher.\n */\n UrlMatcherFactory.prototype.compile = function (pattern, config) {\n var urlConfig = this.router.urlService.config;\n // backward-compatible support for config.params -> config.state.params\n var params = config && !config.state && config.params;\n config = params ? __assign({ state: { params: params } }, config) : config;\n var globalConfig = {\n strict: urlConfig._isStrictMode,\n caseInsensitive: urlConfig._isCaseInsensitive,\n decodeParams: urlConfig._decodeParams,\n };\n return new UrlMatcher(pattern, urlConfig.paramTypes, this.paramFactory, extend(globalConfig, config));\n };\n /**\n * Returns true if the specified object is a [[UrlMatcher]], or false otherwise.\n *\n * @param object The object to perform the type check against.\n * @returns `true` if the object matches the `UrlMatcher` interface, by\n * implementing all the same methods.\n */\n UrlMatcherFactory.prototype.isMatcher = function (object) {\n // TODO: typeof?\n if (!isObject(object))\n return false;\n var result = true;\n forEach(UrlMatcher.prototype, function (val, name) {\n if (isFunction(val))\n result = result && isDefined(object[name]) && isFunction(object[name]);\n });\n return result;\n };\n /** @internal */\n UrlMatcherFactory.prototype.$get = function () {\n var urlConfig = this.router.urlService.config;\n urlConfig.paramTypes.enqueue = false;\n urlConfig.paramTypes._flushTypeQueue();\n return this;\n };\n return UrlMatcherFactory;\n}());\nexport { UrlMatcherFactory };\n","import { stripLastPathElement } from '../common';\nimport { UrlRuleFactory } from './urlRule';\nfunction appendBasePath(url, isHtml5, absolute, baseHref) {\n if (baseHref === '/')\n return url;\n if (isHtml5)\n return stripLastPathElement(baseHref) + url;\n if (absolute)\n return baseHref.slice(1) + url;\n return url;\n}\n/**\n * Updates URL and responds to URL changes\n *\n * ### Deprecation warning:\n * This class is now considered to be an internal API\n * Use the [[UrlService]] instead.\n * For configuring URL rules, use the [[UrlRules]] which can be found as [[UrlService.rules]].\n */\nvar UrlRouter = /** @class */ (function () {\n /** @internal */\n function UrlRouter(/** @internal */ router) {\n var _this = this;\n this.router = router;\n // Delegate these calls to [[UrlService]]\n /** @deprecated use [[UrlService.sync]]*/\n this.sync = function (evt) { return _this.router.urlService.sync(evt); };\n /** @deprecated use [[UrlService.listen]]*/\n this.listen = function (enabled) { return _this.router.urlService.listen(enabled); };\n /** @deprecated use [[UrlService.deferIntercept]]*/\n this.deferIntercept = function (defer) { return _this.router.urlService.deferIntercept(defer); };\n /** @deprecated use [[UrlService.match]]*/\n this.match = function (urlParts) { return _this.router.urlService.match(urlParts); };\n // Delegate these calls to [[UrlRules]]\n /** @deprecated use [[UrlRules.initial]]*/\n this.initial = function (handler) {\n return _this.router.urlService.rules.initial(handler);\n };\n /** @deprecated use [[UrlRules.otherwise]]*/\n this.otherwise = function (handler) {\n return _this.router.urlService.rules.otherwise(handler);\n };\n /** @deprecated use [[UrlRules.removeRule]]*/\n this.removeRule = function (rule) { return _this.router.urlService.rules.removeRule(rule); };\n /** @deprecated use [[UrlRules.rule]]*/\n this.rule = function (rule) { return _this.router.urlService.rules.rule(rule); };\n /** @deprecated use [[UrlRules.rules]]*/\n this.rules = function () { return _this.router.urlService.rules.rules(); };\n /** @deprecated use [[UrlRules.sort]]*/\n this.sort = function (compareFn) { return _this.router.urlService.rules.sort(compareFn); };\n /** @deprecated use [[UrlRules.when]]*/\n this.when = function (matcher, handler, options) { return _this.router.urlService.rules.when(matcher, handler, options); };\n this.urlRuleFactory = new UrlRuleFactory(router);\n }\n /** Internal API. */\n UrlRouter.prototype.update = function (read) {\n var $url = this.router.locationService;\n if (read) {\n this.location = $url.url();\n return;\n }\n if ($url.url() === this.location)\n return;\n $url.url(this.location, true);\n };\n /**\n * Internal API.\n *\n * Pushes a new location to the browser history.\n *\n * @internal\n * @param urlMatcher\n * @param params\n * @param options\n */\n UrlRouter.prototype.push = function (urlMatcher, params, options) {\n var replace = options && !!options.replace;\n this.router.urlService.url(urlMatcher.format(params || {}), replace);\n };\n /**\n * Builds and returns a URL with interpolated parameters\n *\n * #### Example:\n * ```js\n * matcher = $umf.compile(\"/about/:person\");\n * params = { person: \"bob\" };\n * $bob = $urlRouter.href(matcher, params);\n * // $bob == \"/about/bob\";\n * ```\n *\n * @param urlMatcher The [[UrlMatcher]] object which is used as the template of the URL to generate.\n * @param params An object of parameter values to fill the matcher's required parameters.\n * @param options Options object. The options are:\n *\n * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. \"http://www.example.com/fullurl\".\n *\n * @returns Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`\n */\n UrlRouter.prototype.href = function (urlMatcher, params, options) {\n var url = urlMatcher.format(params);\n if (url == null)\n return null;\n options = options || { absolute: false };\n var cfg = this.router.urlService.config;\n var isHtml5 = cfg.html5Mode();\n if (!isHtml5 && url !== null) {\n url = '#' + cfg.hashPrefix() + url;\n }\n url = appendBasePath(url, isHtml5, options.absolute, cfg.baseHref());\n if (!options.absolute || !url) {\n return url;\n }\n var slash = !isHtml5 && url ? '/' : '';\n var cfgPort = cfg.port();\n var port = (cfgPort === 80 || cfgPort === 443 ? '' : ':' + cfgPort);\n return [cfg.protocol(), '://', cfg.host(), port, slash, url].join('');\n };\n Object.defineProperty(UrlRouter.prototype, \"interceptDeferred\", {\n /** @deprecated use [[UrlService.interceptDeferred]]*/\n get: function () {\n return this.router.urlService.interceptDeferred;\n },\n enumerable: false,\n configurable: true\n });\n return UrlRouter;\n}());\nexport { UrlRouter };\n","import { UrlMatcher } from './urlMatcher';\nimport { isString, isDefined, isFunction } from '../common/predicates';\nimport { identity, extend } from '../common/common';\nimport { is, or, pattern } from '../common/hof';\nimport { StateObject } from '../state/stateObject';\n/**\n * Creates a [[UrlRule]]\n *\n * Creates a [[UrlRule]] from a:\n *\n * - `string`\n * - [[UrlMatcher]]\n * - `RegExp`\n * - [[StateObject]]\n */\nvar UrlRuleFactory = /** @class */ (function () {\n function UrlRuleFactory(router) {\n this.router = router;\n }\n UrlRuleFactory.prototype.compile = function (str) {\n return this.router.urlMatcherFactory.compile(str);\n };\n UrlRuleFactory.prototype.create = function (what, handler) {\n var _this = this;\n var isState = StateObject.isState, isStateDeclaration = StateObject.isStateDeclaration;\n var makeRule = pattern([\n [isString, function (_what) { return makeRule(_this.compile(_what)); }],\n [is(UrlMatcher), function (_what) { return _this.fromUrlMatcher(_what, handler); }],\n [or(isState, isStateDeclaration), function (_what) { return _this.fromState(_what, _this.router); }],\n [is(RegExp), function (_what) { return _this.fromRegExp(_what, handler); }],\n [isFunction, function (_what) { return new BaseUrlRule(_what, handler); }],\n ]);\n var rule = makeRule(what);\n if (!rule)\n throw new Error(\"invalid 'what' in when()\");\n return rule;\n };\n /**\n * A UrlRule which matches based on a UrlMatcher\n *\n * The `handler` may be either a `string`, a [[UrlRuleHandlerFn]] or another [[UrlMatcher]]\n *\n * ## Handler as a function\n *\n * If `handler` is a function, the function is invoked with:\n *\n * - matched parameter values ([[RawParams]] from [[UrlMatcher.exec]])\n * - url: the current Url ([[UrlParts]])\n * - router: the router object ([[UIRouter]])\n *\n * #### Example:\n * ```js\n * var urlMatcher = $umf.compile(\"/foo/:fooId/:barId\");\n * var rule = factory.fromUrlMatcher(urlMatcher, match => \"/home/\" + match.fooId + \"/\" + match.barId);\n * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n * var result = rule.handler(match); // '/home/123/456'\n * ```\n *\n * ## Handler as UrlMatcher\n *\n * If `handler` is a UrlMatcher, the handler matcher is used to create the new url.\n * The `handler` UrlMatcher is formatted using the matched param from the first matcher.\n * The url is replaced with the result.\n *\n * #### Example:\n * ```js\n * var urlMatcher = $umf.compile(\"/foo/:fooId/:barId\");\n * var handler = $umf.compile(\"/home/:fooId/:barId\");\n * var rule = factory.fromUrlMatcher(urlMatcher, handler);\n * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n * var result = rule.handler(match); // '/home/123/456'\n * ```\n */\n UrlRuleFactory.prototype.fromUrlMatcher = function (urlMatcher, handler) {\n var _handler = handler;\n if (isString(handler))\n handler = this.router.urlMatcherFactory.compile(handler);\n if (is(UrlMatcher)(handler))\n _handler = function (match) { return handler.format(match); };\n function matchUrlParamters(url) {\n var params = urlMatcher.exec(url.path, url.search, url.hash);\n return urlMatcher.validates(params) && params;\n }\n // Prioritize URLs, lowest to highest:\n // - Some optional URL parameters, but none matched\n // - No optional parameters in URL\n // - Some optional parameters, some matched\n // - Some optional parameters, all matched\n function matchPriority(params) {\n var optional = urlMatcher.parameters().filter(function (param) { return param.isOptional; });\n if (!optional.length)\n return 0.000001;\n var matched = optional.filter(function (param) { return params[param.id]; });\n return matched.length / optional.length;\n }\n var details = { urlMatcher: urlMatcher, matchPriority: matchPriority, type: 'URLMATCHER' };\n return extend(new BaseUrlRule(matchUrlParamters, _handler), details);\n };\n /**\n * A UrlRule which matches a state by its url\n *\n * #### Example:\n * ```js\n * var rule = factory.fromState($state.get('foo'), router);\n * var match = rule.match('/foo/123/456'); // results in { fooId: '123', barId: '456' }\n * var result = rule.handler(match);\n * // Starts a transition to 'foo' with params: { fooId: '123', barId: '456' }\n * ```\n */\n UrlRuleFactory.prototype.fromState = function (stateOrDecl, router) {\n var state = StateObject.isStateDeclaration(stateOrDecl) ? stateOrDecl.$$state() : stateOrDecl;\n /**\n * Handles match by transitioning to matched state\n *\n * First checks if the router should start a new transition.\n * A new transition is not required if the current state's URL\n * and the new URL are already identical\n */\n var handler = function (match) {\n var $state = router.stateService;\n var globals = router.globals;\n if ($state.href(state, match) !== $state.href(globals.current, globals.params)) {\n $state.transitionTo(state, match, { inherit: true, source: 'url' });\n }\n };\n var details = { state: state, type: 'STATE' };\n return extend(this.fromUrlMatcher(state.url, handler), details);\n };\n /**\n * A UrlRule which matches based on a regular expression\n *\n * The `handler` may be either a [[UrlRuleHandlerFn]] or a string.\n *\n * ## Handler as a function\n *\n * If `handler` is a function, the function is invoked with:\n *\n * - regexp match array (from `regexp`)\n * - url: the current Url ([[UrlParts]])\n * - router: the router object ([[UIRouter]])\n *\n * #### Example:\n * ```js\n * var rule = factory.fromRegExp(/^\\/foo\\/(bar|baz)$/, match => \"/home/\" + match[1])\n * var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]\n * var result = rule.handler(match); // '/home/bar'\n * ```\n *\n * ## Handler as string\n *\n * If `handler` is a string, the url is *replaced by the string* when the Rule is invoked.\n * The string is first interpolated using `string.replace()` style pattern.\n *\n * #### Example:\n * ```js\n * var rule = factory.fromRegExp(/^\\/foo\\/(bar|baz)$/, \"/home/$1\")\n * var match = rule.match('/foo/bar'); // results in [ '/foo/bar', 'bar' ]\n * var result = rule.handler(match); // '/home/bar'\n * ```\n */\n UrlRuleFactory.prototype.fromRegExp = function (regexp, handler) {\n if (regexp.global || regexp.sticky)\n throw new Error('Rule RegExp must not be global or sticky');\n /**\n * If handler is a string, the url will be replaced by the string.\n * If the string has any String.replace() style variables in it (like `$2`),\n * they will be replaced by the captures from [[match]]\n */\n var redirectUrlTo = function (match) {\n // Interpolates matched values into $1 $2, etc using a String.replace()-style pattern\n return handler.replace(/\\$(\\$|\\d{1,2})/, function (m, what) { return match[what === '$' ? 0 : Number(what)]; });\n };\n var _handler = isString(handler) ? redirectUrlTo : handler;\n var matchParamsFromRegexp = function (url) { return regexp.exec(url.path); };\n var details = { regexp: regexp, type: 'REGEXP' };\n return extend(new BaseUrlRule(matchParamsFromRegexp, _handler), details);\n };\n UrlRuleFactory.isUrlRule = function (obj) { return obj && ['type', 'match', 'handler'].every(function (key) { return isDefined(obj[key]); }); };\n return UrlRuleFactory;\n}());\nexport { UrlRuleFactory };\n/**\n * A base rule which calls `match`\n *\n * The value from the `match` function is passed through to the `handler`.\n * @internal\n */\nvar BaseUrlRule = /** @class */ (function () {\n function BaseUrlRule(match, handler) {\n var _this = this;\n this.match = match;\n this.type = 'RAW';\n this.matchPriority = function (match) { return 0 - _this.$id; };\n this.handler = handler || identity;\n }\n return BaseUrlRule;\n}());\nexport { BaseUrlRule };\n","import { TargetState } from '../state';\nimport { UrlMatcher } from './urlMatcher';\nimport { is, isDefined, isFunction, isString, removeFrom, val } from '../common';\nimport { UrlRuleFactory } from './urlRule';\nvar prioritySort = function (a, b) { return (b.priority || 0) - (a.priority || 0); };\nvar typeSort = function (a, b) {\n var weights = { STATE: 4, URLMATCHER: 4, REGEXP: 3, RAW: 2, OTHER: 1 };\n return (weights[a.type] || 0) - (weights[b.type] || 0);\n};\nvar urlMatcherSort = function (a, b) {\n return !a.urlMatcher || !b.urlMatcher ? 0 : UrlMatcher.compare(a.urlMatcher, b.urlMatcher);\n};\nvar idSort = function (a, b) {\n // Identically sorted STATE and URLMATCHER best rule will be chosen by `matchPriority` after each rule matches the URL\n var useMatchPriority = { STATE: true, URLMATCHER: true };\n var equal = useMatchPriority[a.type] && useMatchPriority[b.type];\n return equal ? 0 : (a.$id || 0) - (b.$id || 0);\n};\n/**\n * Default rule priority sorting function.\n *\n * Sorts rules by:\n *\n * - Explicit priority (set rule priority using [[UrlRules.when]])\n * - Rule type (STATE: 4, URLMATCHER: 4, REGEXP: 3, RAW: 2, OTHER: 1)\n * - `UrlMatcher` specificity ([[UrlMatcher.compare]]): works for STATE and URLMATCHER types to pick the most specific rule.\n * - Rule registration order (for rule types other than STATE and URLMATCHER)\n * - Equally sorted State and UrlMatcher rules will each match the URL.\n * Then, the *best* match is chosen based on how many parameter values were matched.\n */\nvar defaultRuleSortFn;\ndefaultRuleSortFn = function (a, b) {\n var cmp = prioritySort(a, b);\n if (cmp !== 0)\n return cmp;\n cmp = typeSort(a, b);\n if (cmp !== 0)\n return cmp;\n cmp = urlMatcherSort(a, b);\n if (cmp !== 0)\n return cmp;\n return idSort(a, b);\n};\nfunction getHandlerFn(handler) {\n if (!isFunction(handler) && !isString(handler) && !is(TargetState)(handler) && !TargetState.isDef(handler)) {\n throw new Error(\"'handler' must be a string, function, TargetState, or have a state: 'newtarget' property\");\n }\n return isFunction(handler) ? handler : val(handler);\n}\n/**\n * API for managing URL rules\n *\n * This API is used to create and manage URL rules.\n * URL rules are a mechanism to respond to specific URL patterns.\n *\n * The most commonly used methods are [[otherwise]] and [[when]].\n *\n * This API is found at `router.urlService.rules` (see: [[UIRouter.urlService]], [[URLService.rules]])\n */\nvar UrlRules = /** @class */ (function () {\n /** @internal */\n function UrlRules(/** @internal */ router) {\n this.router = router;\n /** @internal */ this._sortFn = defaultRuleSortFn;\n /** @internal */ this._rules = [];\n /** @internal */ this._id = 0;\n this.urlRuleFactory = new UrlRuleFactory(router);\n }\n /** @internal */\n UrlRules.prototype.dispose = function (router) {\n this._rules = [];\n delete this._otherwiseFn;\n };\n /**\n * Defines the initial state, path, or behavior to use when the app starts.\n *\n * This rule defines the initial/starting state for the application.\n *\n * This rule is triggered the first time the URL is checked (when the app initially loads).\n * The rule is triggered only when the url matches either `\"\"` or `\"/\"`.\n *\n * Note: The rule is intended to be used when the root of the application is directly linked to.\n * When the URL is *not* `\"\"` or `\"/\"` and doesn't match other rules, the [[otherwise]] rule is triggered.\n * This allows 404-like behavior when an unknown URL is deep-linked.\n *\n * #### Example:\n * Start app at `home` state.\n * ```js\n * .initial({ state: 'home' });\n * ```\n *\n * #### Example:\n * Start app at `/home` (by url)\n * ```js\n * .initial('/home');\n * ```\n *\n * #### Example:\n * When no other url rule matches, go to `home` state\n * ```js\n * .initial((matchValue, url, router) => {\n * console.log('initial state');\n * return { state: 'home' };\n * })\n * ```\n *\n * @param handler The initial state or url path, or a function which returns the state or url path (or performs custom logic).\n */\n UrlRules.prototype.initial = function (handler) {\n var handlerFn = getHandlerFn(handler);\n var matchFn = function (urlParts, router) {\n return router.globals.transitionHistory.size() === 0 && !!/^\\/?$/.exec(urlParts.path);\n };\n this.rule(this.urlRuleFactory.create(matchFn, handlerFn));\n };\n /**\n * Defines the state, url, or behavior to use when no other rule matches the URL.\n *\n * This rule is matched when *no other rule* matches.\n * It is generally used to handle unknown URLs (similar to \"404\" behavior, but on the client side).\n *\n * - If `handler` a string, it is treated as a url redirect\n *\n * #### Example:\n * When no other url rule matches, redirect to `/index`\n * ```js\n * .otherwise('/index');\n * ```\n *\n * - If `handler` is an object with a `state` property, the state is activated.\n *\n * #### Example:\n * When no other url rule matches, redirect to `home` and provide a `dashboard` parameter value.\n * ```js\n * .otherwise({ state: 'home', params: { dashboard: 'default' } });\n * ```\n *\n * - If `handler` is a function, the function receives the current url ([[UrlParts]]) and the [[UIRouter]] object.\n * The function can perform actions, and/or return a value.\n *\n * #### Example:\n * When no other url rule matches, manually trigger a transition to the `home` state\n * ```js\n * .otherwise((matchValue, urlParts, router) => {\n * router.stateService.go('home');\n * });\n * ```\n *\n * #### Example:\n * When no other url rule matches, go to `home` state\n * ```js\n * .otherwise((matchValue, urlParts, router) => {\n * return { state: 'home' };\n * });\n * ```\n *\n * @param handler The url path to redirect to, or a function which returns the url path (or performs custom logic).\n */\n UrlRules.prototype.otherwise = function (handler) {\n var handlerFn = getHandlerFn(handler);\n this._otherwiseFn = this.urlRuleFactory.create(val(true), handlerFn);\n this._sorted = false;\n };\n /**\n * Remove a rule previously registered\n *\n * @param rule the matcher rule that was previously registered using [[rule]]\n */\n UrlRules.prototype.removeRule = function (rule) {\n removeFrom(this._rules, rule);\n };\n /**\n * Manually adds a URL Rule.\n *\n * Usually, a url rule is added using [[StateDeclaration.url]] or [[when]].\n * This api can be used directly for more control (to register a [[BaseUrlRule]], for example).\n * Rules can be created using [[urlRuleFactory]], or created manually as simple objects.\n *\n * A rule should have a `match` function which returns truthy if the rule matched.\n * It should also have a `handler` function which is invoked if the rule is the best match.\n *\n * @return a function that deregisters the rule\n */\n UrlRules.prototype.rule = function (rule) {\n var _this = this;\n if (!UrlRuleFactory.isUrlRule(rule))\n throw new Error('invalid rule');\n rule.$id = this._id++;\n rule.priority = rule.priority || 0;\n this._rules.push(rule);\n this._sorted = false;\n return function () { return _this.removeRule(rule); };\n };\n /**\n * Gets all registered rules\n *\n * @returns an array of all the registered rules\n */\n UrlRules.prototype.rules = function () {\n this.ensureSorted();\n return this._rules.concat(this._otherwiseFn ? [this._otherwiseFn] : []);\n };\n /**\n * Defines URL Rule priorities\n *\n * More than one rule ([[UrlRule]]) might match a given URL.\n * This `compareFn` is used to sort the rules by priority.\n * Higher priority rules should sort earlier.\n *\n * The [[defaultRuleSortFn]] is used by default.\n *\n * You only need to call this function once.\n * The `compareFn` will be used to sort the rules as each is registered.\n *\n * If called without any parameter, it will re-sort the rules.\n *\n * ---\n *\n * Url rules may come from multiple sources: states's urls ([[StateDeclaration.url]]), [[when]], and [[rule]].\n * Each rule has a (user-provided) [[UrlRule.priority]], a [[UrlRule.type]], and a [[UrlRule.$id]]\n * The `$id` is is the order in which the rule was registered.\n *\n * The sort function should use these data, or data found on a specific type\n * of [[UrlRule]] (such as [[StateRule.state]]), to order the rules as desired.\n *\n * #### Example:\n * This compare function prioritizes rules by the order in which the rules were registered.\n * A rule registered earlier has higher priority.\n *\n * ```js\n * function compareFn(a, b) {\n * return a.$id - b.$id;\n * }\n * ```\n *\n * @param compareFn a function that compares to [[UrlRule]] objects.\n * The `compareFn` should abide by the `Array.sort` compare function rules.\n * Given two rules, `a` and `b`, return a negative number if `a` should be higher priority.\n * Return a positive number if `b` should be higher priority.\n * Return `0` if the rules are identical.\n *\n * See the [mozilla reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#Description)\n * for details.\n */\n UrlRules.prototype.sort = function (compareFn) {\n var sorted = this.stableSort(this._rules, (this._sortFn = compareFn || this._sortFn));\n // precompute _sortGroup values and apply to each rule\n var group = 0;\n for (var i = 0; i < sorted.length; i++) {\n sorted[i]._group = group;\n if (i < sorted.length - 1 && this._sortFn(sorted[i], sorted[i + 1]) !== 0) {\n group++;\n }\n }\n this._rules = sorted;\n this._sorted = true;\n };\n /** @internal */\n UrlRules.prototype.ensureSorted = function () {\n this._sorted || this.sort();\n };\n /** @internal */\n UrlRules.prototype.stableSort = function (arr, compareFn) {\n var arrOfWrapper = arr.map(function (elem, idx) { return ({ elem: elem, idx: idx }); });\n arrOfWrapper.sort(function (wrapperA, wrapperB) {\n var cmpDiff = compareFn(wrapperA.elem, wrapperB.elem);\n return cmpDiff === 0 ? wrapperA.idx - wrapperB.idx : cmpDiff;\n });\n return arrOfWrapper.map(function (wrapper) { return wrapper.elem; });\n };\n /**\n * Registers a `matcher` and `handler` for custom URLs handling.\n *\n * The `matcher` can be:\n *\n * - a [[UrlMatcher]]: See: [[UrlMatcherFactory.compile]]\n * - a `string`: The string is compiled to a [[UrlMatcher]]\n * - a `RegExp`: The regexp is used to match the url.\n *\n * The `handler` can be:\n *\n * - a string: The url is redirected to the value of the string.\n * - a function: The url is redirected to the return value of the function.\n *\n * ---\n *\n * When the `handler` is a `string` and the `matcher` is a `UrlMatcher` (or string), the redirect\n * string is interpolated with parameter values.\n *\n * #### Example:\n * When the URL is `/foo/123` the rule will redirect to `/bar/123`.\n * ```js\n * .when(\"/foo/:param1\", \"/bar/:param1\")\n * ```\n *\n * ---\n *\n * When the `handler` is a string and the `matcher` is a `RegExp`, the redirect string is\n * interpolated with capture groups from the RegExp.\n *\n * #### Example:\n * When the URL is `/foo/123` the rule will redirect to `/bar/123`.\n * ```js\n * .when(new RegExp(\"^/foo/(.*)$\"), \"/bar/$1\");\n * ```\n *\n * ---\n *\n * When the handler is a function, it receives the matched value, the current URL, and the `UIRouter` object (See [[UrlRuleHandlerFn]]).\n * The \"matched value\" differs based on the `matcher`.\n * For [[UrlMatcher]]s, it will be the matched state params.\n * For `RegExp`, it will be the match array from `regexp.exec()`.\n *\n * If the handler returns a string, the URL is redirected to the string.\n *\n * #### Example:\n * When the URL is `/foo/123` the rule will redirect to `/bar/123`.\n * ```js\n * .when(new RegExp(\"^/foo/(.*)$\"), match => \"/bar/\" + match[1]);\n * ```\n *\n * Note: the `handler` may also invoke arbitrary code, such as `$state.go()`\n *\n * @param matcher A pattern `string` to match, compiled as a [[UrlMatcher]], or a `RegExp`.\n * @param handler The path to redirect to, or a function that returns the path.\n * @param options `{ priority: number }`\n *\n * @return the registered [[UrlRule]]\n */\n UrlRules.prototype.when = function (matcher, handler, options) {\n var rule = this.urlRuleFactory.create(matcher, handler);\n if (isDefined(options && options.priority))\n rule.priority = options.priority;\n this.rule(rule);\n return rule;\n };\n return UrlRules;\n}());\nexport { UrlRules };\n","import { extend, is, isString, pattern } from '../common';\nimport { UrlRules } from './urlRules';\nimport { UrlConfig } from './urlConfig';\nimport { TargetState } from '../state';\n/**\n * API for URL management\n */\nvar UrlService = /** @class */ (function () {\n /** @internal */\n function UrlService(/** @internal */ router) {\n var _this = this;\n this.router = router;\n /** @internal */ this.interceptDeferred = false;\n /**\n * The nested [[UrlRules]] API for managing URL rules and rewrites\n *\n * See: [[UrlRules]] for details\n */\n this.rules = new UrlRules(this.router);\n /**\n * The nested [[UrlConfig]] API to configure the URL and retrieve URL information\n *\n * See: [[UrlConfig]] for details\n */\n this.config = new UrlConfig(this.router);\n // Delegate these calls to the current LocationServices implementation\n /**\n * Gets the current url, or updates the url\n *\n * ### Getting the current URL\n *\n * When no arguments are passed, returns the current URL.\n * The URL is normalized using the internal [[path]]/[[search]]/[[hash]] values.\n *\n * For example, the URL may be stored in the hash ([[HashLocationServices]]) or\n * have a base HREF prepended ([[PushStateLocationServices]]).\n *\n * The raw URL in the browser might be:\n *\n * ```\n * http://mysite.com/somepath/index.html#/internal/path/123?param1=foo#anchor\n * ```\n *\n * or\n *\n * ```\n * http://mysite.com/basepath/internal/path/123?param1=foo#anchor\n * ```\n *\n * then this method returns:\n *\n * ```\n * /internal/path/123?param1=foo#anchor\n * ```\n *\n *\n * #### Example:\n * ```js\n * locationServices.url(); // \"/some/path?query=value#anchor\"\n * ```\n *\n * ### Updating the URL\n *\n * When `newurl` arguments is provided, changes the URL to reflect `newurl`\n *\n * #### Example:\n * ```js\n * locationServices.url(\"/some/path?query=value#anchor\", true);\n * ```\n *\n * @param newurl The new value for the URL.\n * This url should reflect only the new internal [[path]], [[search]], and [[hash]] values.\n * It should not include the protocol, site, port, or base path of an absolute HREF.\n * @param replace When true, replaces the current history entry (instead of appending it) with this new url\n * @param state The history's state object, i.e., pushState (if the LocationServices implementation supports it)\n *\n * @return the url (after potentially being processed)\n */\n this.url = function (newurl, replace, state) {\n return _this.router.locationService.url(newurl, replace, state);\n };\n /**\n * Gets the path part of the current url\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `/some/path`\n *\n * @return the path portion of the url\n */\n this.path = function () { return _this.router.locationService.path(); };\n /**\n * Gets the search part of the current url as an object\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `{ query: 'value' }`\n *\n * @return the search (query) portion of the url, as an object\n */\n this.search = function () { return _this.router.locationService.search(); };\n /**\n * Gets the hash part of the current url\n *\n * If the current URL is `/some/path?query=value#anchor`, this returns `anchor`\n *\n * @return the hash (anchor) portion of the url\n */\n this.hash = function () { return _this.router.locationService.hash(); };\n /**\n * @internal\n *\n * Registers a low level url change handler\n *\n * Note: Because this is a low level handler, it's not recommended for general use.\n *\n * #### Example:\n * ```js\n * let deregisterFn = locationServices.onChange((evt) => console.log(\"url change\", evt));\n * ```\n *\n * @param callback a function that will be called when the url is changing\n * @return a function that de-registers the callback\n */\n this.onChange = function (callback) { return _this.router.locationService.onChange(callback); };\n }\n /** @internal */\n UrlService.prototype.dispose = function () {\n this.listen(false);\n this.rules.dispose();\n };\n /**\n * Gets the current URL parts\n *\n * This method returns the different parts of the current URL (the [[path]], [[search]], and [[hash]]) as a [[UrlParts]] object.\n */\n UrlService.prototype.parts = function () {\n return { path: this.path(), search: this.search(), hash: this.hash() };\n };\n /**\n * Activates the best rule for the current URL\n *\n * Checks the current URL for a matching [[UrlRule]], then invokes that rule's handler.\n * This method is called internally any time the URL has changed.\n *\n * This effectively activates the state (or redirect, etc) which matches the current URL.\n *\n * #### Example:\n * ```js\n * urlService.deferIntercept();\n *\n * fetch('/states.json').then(resp => resp.json()).then(data => {\n * data.forEach(state => $stateRegistry.register(state));\n * urlService.listen();\n * // Find the matching URL and invoke the handler.\n * urlService.sync();\n * });\n * ```\n */\n UrlService.prototype.sync = function (evt) {\n if (evt && evt.defaultPrevented)\n return;\n var _a = this.router, urlService = _a.urlService, stateService = _a.stateService;\n var url = { path: urlService.path(), search: urlService.search(), hash: urlService.hash() };\n var best = this.match(url);\n var applyResult = pattern([\n [isString, function (newurl) { return urlService.url(newurl, true); }],\n [TargetState.isDef, function (def) { return stateService.go(def.state, def.params, def.options); }],\n [is(TargetState), function (target) { return stateService.go(target.state(), target.params(), target.options()); }],\n ]);\n applyResult(best && best.rule.handler(best.match, url, this.router));\n };\n /**\n * Starts or stops listening for URL changes\n *\n * Call this sometime after calling [[deferIntercept]] to start monitoring the url.\n * This causes UI-Router to start listening for changes to the URL, if it wasn't already listening.\n *\n * If called with `false`, UI-Router will stop listening (call listen(true) to start listening again).\n *\n * #### Example:\n * ```js\n * urlService.deferIntercept();\n *\n * fetch('/states.json').then(resp => resp.json()).then(data => {\n * data.forEach(state => $stateRegistry.register(state));\n * // Start responding to URL changes\n * urlService.listen();\n * urlService.sync();\n * });\n * ```\n *\n * @param enabled `true` or `false` to start or stop listening to URL changes\n */\n UrlService.prototype.listen = function (enabled) {\n var _this = this;\n if (enabled === false) {\n this._stopListeningFn && this._stopListeningFn();\n delete this._stopListeningFn;\n }\n else {\n return (this._stopListeningFn =\n this._stopListeningFn || this.router.urlService.onChange(function (evt) { return _this.sync(evt); }));\n }\n };\n /**\n * Disables monitoring of the URL.\n *\n * Call this method before UI-Router has bootstrapped.\n * It will stop UI-Router from performing the initial url sync.\n *\n * This can be useful to perform some asynchronous initialization before the router starts.\n * Once the initialization is complete, call [[listen]] to tell UI-Router to start watching and synchronizing the URL.\n *\n * #### Example:\n * ```js\n * // Prevent UI-Router from automatically intercepting URL changes when it starts;\n * urlService.deferIntercept();\n *\n * fetch('/states.json').then(resp => resp.json()).then(data => {\n * data.forEach(state => $stateRegistry.register(state));\n * urlService.listen();\n * urlService.sync();\n * });\n * ```\n *\n * @param defer Indicates whether to defer location change interception.\n * Passing no parameter is equivalent to `true`.\n */\n UrlService.prototype.deferIntercept = function (defer) {\n if (defer === undefined)\n defer = true;\n this.interceptDeferred = defer;\n };\n /**\n * Matches a URL\n *\n * Given a URL (as a [[UrlParts]] object), check all rules and determine the best matching rule.\n * Return the result as a [[MatchResult]].\n */\n UrlService.prototype.match = function (url) {\n var _this = this;\n url = extend({ path: '', search: {}, hash: '' }, url);\n var rules = this.rules.rules();\n // Checks a single rule. Returns { rule: rule, match: match, weight: weight } if it matched, or undefined\n var checkRule = function (rule) {\n var match = rule.match(url, _this.router);\n return match && { match: match, rule: rule, weight: rule.matchPriority(match) };\n };\n // The rules are pre-sorted.\n // - Find the first matching rule.\n // - Find any other matching rule that sorted *exactly the same*, according to `.sort()`.\n // - Choose the rule with the highest match weight.\n var best;\n for (var i = 0; i < rules.length; i++) {\n // Stop when there is a 'best' rule and the next rule sorts differently than it.\n if (best && best.rule._group !== rules[i]._group)\n break;\n var current = checkRule(rules[i]);\n // Pick the best MatchResult\n best = !best || (current && current.weight > best.weight) ? current : best;\n }\n return best;\n };\n return UrlService;\n}());\nexport { UrlService };\n","import { deregAll, isDefined, removeFrom, root } from '../common';\nimport { buildUrl, getParams, parseUrl } from './utils';\n/** A base `LocationServices` */\nvar BaseLocationServices = /** @class */ (function () {\n function BaseLocationServices(router, fireAfterUpdate) {\n var _this = this;\n this.fireAfterUpdate = fireAfterUpdate;\n this._listeners = [];\n this._listener = function (evt) { return _this._listeners.forEach(function (cb) { return cb(evt); }); };\n this.hash = function () { return parseUrl(_this._get()).hash; };\n this.path = function () { return parseUrl(_this._get()).path; };\n this.search = function () { return getParams(parseUrl(_this._get()).search); };\n this._location = root.location;\n this._history = root.history;\n }\n BaseLocationServices.prototype.url = function (url, replace) {\n if (replace === void 0) { replace = true; }\n if (isDefined(url) && url !== this._get()) {\n this._set(null, null, url, replace);\n if (this.fireAfterUpdate) {\n this._listeners.forEach(function (cb) { return cb({ url: url }); });\n }\n }\n return buildUrl(this);\n };\n BaseLocationServices.prototype.onChange = function (cb) {\n var _this = this;\n this._listeners.push(cb);\n return function () { return removeFrom(_this._listeners, cb); };\n };\n BaseLocationServices.prototype.dispose = function (router) {\n deregAll(this._listeners);\n };\n return BaseLocationServices;\n}());\nexport { BaseLocationServices };\n","import { isDefined, isUndefined } from '../common/predicates';\n/** A `LocationConfig` that delegates to the browser's `location` object */\nvar BrowserLocationConfig = /** @class */ (function () {\n function BrowserLocationConfig(router, _isHtml5) {\n if (_isHtml5 === void 0) { _isHtml5 = false; }\n this._isHtml5 = _isHtml5;\n this._baseHref = undefined;\n this._hashPrefix = '';\n }\n BrowserLocationConfig.prototype.port = function () {\n if (location.port) {\n return Number(location.port);\n }\n return this.protocol() === 'https' ? 443 : 80;\n };\n BrowserLocationConfig.prototype.protocol = function () {\n return location.protocol.replace(/:/g, '');\n };\n BrowserLocationConfig.prototype.host = function () {\n return location.hostname;\n };\n BrowserLocationConfig.prototype.html5Mode = function () {\n return this._isHtml5;\n };\n BrowserLocationConfig.prototype.hashPrefix = function (newprefix) {\n return isDefined(newprefix) ? (this._hashPrefix = newprefix) : this._hashPrefix;\n };\n BrowserLocationConfig.prototype.baseHref = function (href) {\n if (isDefined(href))\n this._baseHref = href;\n if (isUndefined(this._baseHref))\n this._baseHref = this.getBaseHref();\n return this._baseHref;\n };\n BrowserLocationConfig.prototype.getBaseHref = function () {\n var baseTag = document.getElementsByTagName('base')[0];\n if (baseTag && baseTag.href) {\n return baseTag.href.replace(/^([^/:]*:)?\\/\\/[^/]*/, '');\n }\n return this._isHtml5 ? '/' : location.pathname || '/';\n };\n BrowserLocationConfig.prototype.dispose = function () { };\n return BrowserLocationConfig;\n}());\nexport { BrowserLocationConfig };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (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})();\nimport { root, trimHashVal } from '../common';\nimport { BaseLocationServices } from './baseLocationService';\n/** A `LocationServices` that uses the browser hash \"#\" to get/set the current location */\nvar HashLocationService = /** @class */ (function (_super) {\n __extends(HashLocationService, _super);\n function HashLocationService(router) {\n var _this = _super.call(this, router, false) || this;\n root.addEventListener('hashchange', _this._listener, false);\n return _this;\n }\n HashLocationService.prototype._get = function () {\n return trimHashVal(this._location.hash);\n };\n HashLocationService.prototype._set = function (state, title, url, replace) {\n this._location.hash = url;\n };\n HashLocationService.prototype.dispose = function (router) {\n _super.prototype.dispose.call(this, router);\n root.removeEventListener('hashchange', this._listener);\n };\n return HashLocationService;\n}(BaseLocationServices));\nexport { HashLocationService };\n","import { extend, assertPredicate, isFunction, isArray, isInjectable, } from '../common/index';\n// globally available injectables\nvar globals = {};\nvar STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/gm;\nvar ARGUMENT_NAMES = /([^\\s,]+)/g;\n/**\n * A basic angular1-like injector api\n *\n * This object implements four methods similar to the\n * [angular 1 dependency injector](https://docs.angularjs.org/api/auto/service/$injector)\n *\n * UI-Router evolved from an angular 1 library to a framework agnostic library.\n * However, some of the `@uirouter/core` code uses these ng1 style APIs to support ng1 style dependency injection.\n *\n * This object provides a naive implementation of a globally scoped dependency injection system.\n * It supports the following DI approaches:\n *\n * ### Function parameter names\n *\n * A function's `.toString()` is called, and the parameter names are parsed.\n * This only works when the parameter names aren't \"mangled\" by a minifier such as UglifyJS.\n *\n * ```js\n * function injectedFunction(FooService, BarService) {\n * // FooService and BarService are injected\n * }\n * ```\n *\n * ### Function annotation\n *\n * A function may be annotated with an array of dependency names as the `$inject` property.\n *\n * ```js\n * injectedFunction.$inject = [ 'FooService', 'BarService' ];\n * function injectedFunction(fs, bs) {\n * // FooService and BarService are injected as fs and bs parameters\n * }\n * ```\n *\n * ### Array notation\n *\n * An array provides the names of the dependencies to inject (as strings).\n * The function is the last element of the array.\n *\n * ```js\n * [ 'FooService', 'BarService', function (fs, bs) {\n * // FooService and BarService are injected as fs and bs parameters\n * }]\n * ```\n *\n * @type {$InjectorLike}\n */\nexport var $injector = {\n /** Gets an object from DI based on a string token */\n get: function (name) { return globals[name]; },\n /** Returns true if an object named `name` exists in global DI */\n has: function (name) { return $injector.get(name) != null; },\n /**\n * Injects a function\n *\n * @param fn the function to inject\n * @param context the function's `this` binding\n * @param locals An object with additional DI tokens and values, such as `{ someToken: { foo: 1 } }`\n */\n invoke: function (fn, context, locals) {\n var all = extend({}, globals, locals || {});\n var params = $injector.annotate(fn);\n var ensureExist = assertPredicate(function (key) { return all.hasOwnProperty(key); }, function (key) { return \"DI can't find injectable: '\" + key + \"'\"; });\n var args = params.filter(ensureExist).map(function (x) { return all[x]; });\n if (isFunction(fn))\n return fn.apply(context, args);\n else\n return fn.slice(-1)[0].apply(context, args);\n },\n /**\n * Returns a function's dependencies\n *\n * Analyzes a function (or array) and returns an array of DI tokens that the function requires.\n * @return an array of `string`s\n */\n annotate: function (fn) {\n if (!isInjectable(fn))\n throw new Error(\"Not an injectable function: \" + fn);\n if (fn && fn.$inject)\n return fn.$inject;\n if (isArray(fn))\n return fn.slice(0, -1);\n var fnStr = fn.toString().replace(STRIP_COMMENTS, '');\n var result = fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(ARGUMENT_NAMES);\n return result || [];\n },\n};\n","import { isDefined } from '../common/predicates';\nimport { noop } from '../common/common';\n/** A `LocationConfig` mock that gets/sets all config from an in-memory object */\nvar MemoryLocationConfig = /** @class */ (function () {\n function MemoryLocationConfig() {\n var _this = this;\n this.dispose = noop;\n this._baseHref = '';\n this._port = 80;\n this._protocol = 'http';\n this._host = 'localhost';\n this._hashPrefix = '';\n this.port = function () { return _this._port; };\n this.protocol = function () { return _this._protocol; };\n this.host = function () { return _this._host; };\n this.baseHref = function () { return _this._baseHref; };\n this.html5Mode = function () { return false; };\n this.hashPrefix = function (newval) { return (isDefined(newval) ? (_this._hashPrefix = newval) : _this._hashPrefix); };\n }\n return MemoryLocationConfig;\n}());\nexport { MemoryLocationConfig };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (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})();\nimport { BaseLocationServices } from './baseLocationService';\n/** A `LocationServices` that gets/sets the current location from an in-memory object */\nvar MemoryLocationService = /** @class */ (function (_super) {\n __extends(MemoryLocationService, _super);\n function MemoryLocationService(router) {\n return _super.call(this, router, true) || this;\n }\n MemoryLocationService.prototype._get = function () {\n return this._url;\n };\n MemoryLocationService.prototype._set = function (state, title, url, replace) {\n this._url = url;\n };\n return MemoryLocationService;\n}(BaseLocationServices));\nexport { MemoryLocationService };\n","import { BrowserLocationConfig } from './browserLocationConfig';\nimport { HashLocationService } from './hashLocationService';\nimport { locationPluginFactory } from './utils';\nimport { PushStateLocationService } from './pushStateLocationService';\nimport { MemoryLocationService } from './memoryLocationService';\nimport { MemoryLocationConfig } from './memoryLocationConfig';\nimport { $injector } from './injector';\nimport { $q } from './q';\nimport { services } from '../common/coreservices';\nexport function servicesPlugin(router) {\n services.$injector = $injector;\n services.$q = $q;\n return { name: 'vanilla.services', $q: $q, $injector: $injector, dispose: function () { return null; } };\n}\n/** A `UIRouterPlugin` uses the browser hash to get/set the current location */\nexport var hashLocationPlugin = locationPluginFactory('vanilla.hashBangLocation', false, HashLocationService, BrowserLocationConfig);\n/** A `UIRouterPlugin` that gets/sets the current location using the browser's `location` and `history` apis */\nexport var pushStateLocationPlugin = locationPluginFactory('vanilla.pushStateLocation', true, PushStateLocationService, BrowserLocationConfig);\n/** A `UIRouterPlugin` that gets/sets the current location from an in-memory object */\nexport var memoryLocationPlugin = locationPluginFactory('vanilla.memoryLocation', false, MemoryLocationService, MemoryLocationConfig);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (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})();\nimport { BaseLocationServices } from './baseLocationService';\nimport { root, splitHash, splitQuery, stripLastPathElement } from '../common';\n/**\n * A `LocationServices` that gets/sets the current location using the browser's `location` and `history` apis\n *\n * Uses `history.pushState` and `history.replaceState`\n */\nvar PushStateLocationService = /** @class */ (function (_super) {\n __extends(PushStateLocationService, _super);\n function PushStateLocationService(router) {\n var _this = _super.call(this, router, true) || this;\n _this._config = router.urlService.config;\n root.addEventListener('popstate', _this._listener, false);\n return _this;\n }\n /**\n * Gets the base prefix without:\n * - trailing slash\n * - trailing filename\n * - protocol and hostname\n *\n * If , this returns '/base'.\n * If , this returns '/foo/base'.\n * If , this returns '/base'.\n * If , this returns '/base'.\n * If , this returns ''.\n * If , this returns ''.\n * If , this returns ''.\n *\n * See: https://html.spec.whatwg.org/dev/semantics.html#the-base-element\n */\n PushStateLocationService.prototype._getBasePrefix = function () {\n return stripLastPathElement(this._config.baseHref());\n };\n PushStateLocationService.prototype._get = function () {\n var _a = this._location, pathname = _a.pathname, hash = _a.hash, search = _a.search;\n search = splitQuery(search)[1]; // strip ? if found\n hash = splitHash(hash)[1]; // strip # if found\n var basePrefix = this._getBasePrefix();\n var exactBaseHrefMatch = pathname === this._config.baseHref();\n var startsWithBase = pathname.substr(0, basePrefix.length) === basePrefix;\n pathname = exactBaseHrefMatch ? '/' : startsWithBase ? pathname.substring(basePrefix.length) : pathname;\n return pathname + (search ? '?' + search : '') + (hash ? '#' + hash : '');\n };\n PushStateLocationService.prototype._set = function (state, title, url, replace) {\n var basePrefix = this._getBasePrefix();\n var slash = url && url[0] !== '/' ? '/' : '';\n var fullUrl = url === '' || url === '/' ? this._config.baseHref() : basePrefix + slash + url;\n if (replace) {\n this._history.replaceState(state, title, fullUrl);\n }\n else {\n this._history.pushState(state, title, fullUrl);\n }\n };\n PushStateLocationService.prototype.dispose = function (router) {\n _super.prototype.dispose.call(this, router);\n root.removeEventListener('popstate', this._listener);\n };\n return PushStateLocationService;\n}(BaseLocationServices));\nexport { PushStateLocationService };\n","import { isArray, isObject } from '../common/index';\n/**\n * An angular1-like promise api\n *\n * This object implements four methods similar to the\n * [angular 1 promise api](https://docs.angularjs.org/api/ng/service/$q)\n *\n * UI-Router evolved from an angular 1 library to a framework agnostic library.\n * However, some of the `@uirouter/core` code uses these ng1 style APIs to support ng1 style dependency injection.\n *\n * This API provides native ES6 promise support wrapped as a $q-like API.\n * Internally, UI-Router uses this $q object to perform promise operations.\n * The `angular-ui-router` (ui-router for angular 1) uses the $q API provided by angular.\n *\n * $q-like promise api\n */\nexport var $q = {\n /** Normalizes a value as a promise */\n when: function (val) { return new Promise(function (resolve, reject) { return resolve(val); }); },\n /** Normalizes a value as a promise rejection */\n reject: function (val) {\n return new Promise(function (resolve, reject) {\n reject(val);\n });\n },\n /** @returns a deferred object, which has `resolve` and `reject` functions */\n defer: function () {\n var deferred = {};\n deferred.promise = new Promise(function (resolve, reject) {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n },\n /** Like Promise.all(), but also supports object key/promise notation like $q */\n all: function (promises) {\n if (isArray(promises)) {\n return Promise.all(promises);\n }\n if (isObject(promises)) {\n // Convert promises map to promises array.\n // When each promise resolves, map it to a tuple { key: key, val: val }\n var chain = Object.keys(promises).map(function (key) { return promises[key].then(function (val) { return ({ key: key, val: val }); }); });\n // Then wait for all promises to resolve, and convert them back to an object\n return $q.all(chain).then(function (values) {\n return values.reduce(function (acc, tuple) {\n acc[tuple.key] = tuple.val;\n return acc;\n }, {});\n });\n }\n },\n};\n","import { identity, unnestR, isArray, splitEqual, splitHash, splitQuery, } from '../common';\nexport var keyValsToObjectR = function (accum, _a) {\n var key = _a[0], val = _a[1];\n if (!accum.hasOwnProperty(key)) {\n accum[key] = val;\n }\n else if (isArray(accum[key])) {\n accum[key].push(val);\n }\n else {\n accum[key] = [accum[key], val];\n }\n return accum;\n};\nexport var getParams = function (queryString) {\n return queryString.split('&').filter(identity).map(splitEqual).reduce(keyValsToObjectR, {});\n};\nexport function parseUrl(url) {\n var orEmptyString = function (x) { return x || ''; };\n var _a = splitHash(url).map(orEmptyString), beforehash = _a[0], hash = _a[1];\n var _b = splitQuery(beforehash).map(orEmptyString), path = _b[0], search = _b[1];\n return { path: path, search: search, hash: hash, url: url };\n}\nexport var buildUrl = function (loc) {\n var path = loc.path();\n var searchObject = loc.search();\n var hash = loc.hash();\n var search = Object.keys(searchObject)\n .map(function (key) {\n var param = searchObject[key];\n var vals = isArray(param) ? param : [param];\n return vals.map(function (val) { return key + '=' + val; });\n })\n .reduce(unnestR, [])\n .join('&');\n return path + (search ? '?' + search : '') + (hash ? '#' + hash : '');\n};\nexport function locationPluginFactory(name, isHtml5, serviceClass, configurationClass) {\n return function (uiRouter) {\n var service = (uiRouter.locationService = new serviceClass(uiRouter));\n var configuration = (uiRouter.locationConfig = new configurationClass(uiRouter, isHtml5));\n function dispose(router) {\n router.dispose(service);\n router.dispose(configuration);\n }\n return { name: name, service: service, configuration: configuration, dispose: dispose };\n };\n}\n","import { equals, applyPairs, removeFrom, inArray, find } from '../common/common';\nimport { curry, prop } from '../common/hof';\nimport { isString, isArray } from '../common/predicates';\nimport { trace } from '../common/trace';\n/**\n * The View service\n *\n * This service pairs existing `ui-view` components (which live in the DOM)\n * with view configs (from the state declaration objects: [[StateDeclaration.views]]).\n *\n * - After a successful Transition, the views from the newly entered states are activated via [[activateViewConfig]].\n * The views from exited states are deactivated via [[deactivateViewConfig]].\n * (See: the [[registerActivateViews]] Transition Hook)\n *\n * - As `ui-view` components pop in and out of existence, they register themselves using [[registerUIView]].\n *\n * - When the [[sync]] function is called, the registered `ui-view`(s) ([[ActiveUIView]])\n * are configured with the matching [[ViewConfig]](s)\n *\n */\nvar ViewService = /** @class */ (function () {\n /** @internal */\n function ViewService(/** @internal */ router) {\n var _this = this;\n this.router = router;\n /** @internal */ this._uiViews = [];\n /** @internal */ this._viewConfigs = [];\n /** @internal */ this._viewConfigFactories = {};\n /** @internal */ this._listeners = [];\n /** @internal */\n this._pluginapi = {\n _rootViewContext: this._rootViewContext.bind(this),\n _viewConfigFactory: this._viewConfigFactory.bind(this),\n _registeredUIView: function (id) { return find(_this._uiViews, function (view) { return _this.router.$id + \".\" + view.id === id; }); },\n _registeredUIViews: function () { return _this._uiViews; },\n _activeViewConfigs: function () { return _this._viewConfigs; },\n _onSync: function (listener) {\n _this._listeners.push(listener);\n return function () { return removeFrom(_this._listeners, listener); };\n },\n };\n }\n /**\n * Normalizes a view's name from a state.views configuration block.\n *\n * This should be used by a framework implementation to calculate the values for\n * [[_ViewDeclaration.$uiViewName]] and [[_ViewDeclaration.$uiViewContextAnchor]].\n *\n * @param context the context object (state declaration) that the view belongs to\n * @param rawViewName the name of the view, as declared in the [[StateDeclaration.views]]\n *\n * @returns the normalized uiViewName and uiViewContextAnchor that the view targets\n */\n ViewService.normalizeUIViewTarget = function (context, rawViewName) {\n if (rawViewName === void 0) { rawViewName = ''; }\n // TODO: Validate incoming view name with a regexp to allow:\n // ex: \"view.name@foo.bar\" , \"^.^.view.name\" , \"view.name@^.^\" , \"\" ,\n // \"@\" , \"$default@^\" , \"!$default.$default\" , \"!foo.bar\"\n var viewAtContext = rawViewName.split('@');\n var uiViewName = viewAtContext[0] || '$default'; // default to unnamed view\n var uiViewContextAnchor = isString(viewAtContext[1]) ? viewAtContext[1] : '^'; // default to parent context\n // Handle relative view-name sugar syntax.\n // Matches rawViewName \"^.^.^.foo.bar\" into array: [\"^.^.^.foo.bar\", \"^.^.^\", \"foo.bar\"],\n var relativeViewNameSugar = /^(\\^(?:\\.\\^)*)\\.(.*$)/.exec(uiViewName);\n if (relativeViewNameSugar) {\n // Clobbers existing contextAnchor (rawViewName validation will fix this)\n uiViewContextAnchor = relativeViewNameSugar[1]; // set anchor to \"^.^.^\"\n uiViewName = relativeViewNameSugar[2]; // set view-name to \"foo.bar\"\n }\n if (uiViewName.charAt(0) === '!') {\n uiViewName = uiViewName.substr(1);\n uiViewContextAnchor = ''; // target absolutely from root\n }\n // handle parent relative targeting \"^.^.^\"\n var relativeMatch = /^(\\^(?:\\.\\^)*)$/;\n if (relativeMatch.exec(uiViewContextAnchor)) {\n var anchorState = uiViewContextAnchor.split('.').reduce(function (anchor, x) { return anchor.parent; }, context);\n uiViewContextAnchor = anchorState.name;\n }\n else if (uiViewContextAnchor === '.') {\n uiViewContextAnchor = context.name;\n }\n return { uiViewName: uiViewName, uiViewContextAnchor: uiViewContextAnchor };\n };\n /** @internal */\n ViewService.prototype._rootViewContext = function (context) {\n return (this._rootContext = context || this._rootContext);\n };\n /** @internal */\n ViewService.prototype._viewConfigFactory = function (viewType, factory) {\n this._viewConfigFactories[viewType] = factory;\n };\n ViewService.prototype.createViewConfig = function (path, decl) {\n var cfgFactory = this._viewConfigFactories[decl.$type];\n if (!cfgFactory)\n throw new Error('ViewService: No view config factory registered for type ' + decl.$type);\n var cfgs = cfgFactory(path, decl);\n return isArray(cfgs) ? cfgs : [cfgs];\n };\n /**\n * Deactivates a ViewConfig.\n *\n * This function deactivates a `ViewConfig`.\n * After calling [[sync]], it will un-pair from any `ui-view` with which it is currently paired.\n *\n * @param viewConfig The ViewConfig view to deregister.\n */\n ViewService.prototype.deactivateViewConfig = function (viewConfig) {\n trace.traceViewServiceEvent('<- Removing', viewConfig);\n removeFrom(this._viewConfigs, viewConfig);\n };\n ViewService.prototype.activateViewConfig = function (viewConfig) {\n trace.traceViewServiceEvent('-> Registering', viewConfig);\n this._viewConfigs.push(viewConfig);\n };\n ViewService.prototype.sync = function () {\n var _this = this;\n var uiViewsByFqn = this._uiViews.map(function (uiv) { return [uiv.fqn, uiv]; }).reduce(applyPairs, {});\n // Return a weighted depth value for a uiView.\n // The depth is the nesting depth of ui-views (based on FQN; times 10,000)\n // plus the depth of the state that is populating the uiView\n function uiViewDepth(uiView) {\n var stateDepth = function (context) { return (context && context.parent ? stateDepth(context.parent) + 1 : 1); };\n return uiView.fqn.split('.').length * 10000 + stateDepth(uiView.creationContext);\n }\n // Return the ViewConfig's context's depth in the context tree.\n function viewConfigDepth(config) {\n var context = config.viewDecl.$context, count = 0;\n while (++count && context.parent)\n context = context.parent;\n return count;\n }\n // Given a depth function, returns a compare function which can return either ascending or descending order\n var depthCompare = curry(function (depthFn, posNeg, left, right) { return posNeg * (depthFn(left) - depthFn(right)); });\n var matchingConfigPair = function (uiView) {\n var matchingConfigs = _this._viewConfigs.filter(ViewService.matches(uiViewsByFqn, uiView));\n if (matchingConfigs.length > 1) {\n // This is OK. Child states can target a ui-view that the parent state also targets (the child wins)\n // Sort by depth and return the match from the deepest child\n // console.log(`Multiple matching view configs for ${uiView.fqn}`, matchingConfigs);\n matchingConfigs.sort(depthCompare(viewConfigDepth, -1)); // descending\n }\n return { uiView: uiView, viewConfig: matchingConfigs[0] };\n };\n var configureUIView = function (tuple) {\n // If a parent ui-view is reconfigured, it could destroy child ui-views.\n // Before configuring a child ui-view, make sure it's still in the active uiViews array.\n if (_this._uiViews.indexOf(tuple.uiView) !== -1)\n tuple.uiView.configUpdated(tuple.viewConfig);\n };\n // Sort views by FQN and state depth. Process uiviews nearest the root first.\n var uiViewTuples = this._uiViews.sort(depthCompare(uiViewDepth, 1)).map(matchingConfigPair);\n var matchedViewConfigs = uiViewTuples.map(function (tuple) { return tuple.viewConfig; });\n var unmatchedConfigTuples = this._viewConfigs\n .filter(function (config) { return !inArray(matchedViewConfigs, config); })\n .map(function (viewConfig) { return ({ uiView: undefined, viewConfig: viewConfig }); });\n uiViewTuples.forEach(configureUIView);\n var allTuples = uiViewTuples.concat(unmatchedConfigTuples);\n this._listeners.forEach(function (cb) { return cb(allTuples); });\n trace.traceViewSync(allTuples);\n };\n /**\n * Registers a `ui-view` component\n *\n * When a `ui-view` component is created, it uses this method to register itself.\n * After registration the [[sync]] method is used to ensure all `ui-view` are configured with the proper [[ViewConfig]].\n *\n * Note: the `ui-view` component uses the `ViewConfig` to determine what view should be loaded inside the `ui-view`,\n * and what the view's state context is.\n *\n * Note: There is no corresponding `deregisterUIView`.\n * A `ui-view` should hang on to the return value of `registerUIView` and invoke it to deregister itself.\n *\n * @param uiView The metadata for a UIView\n * @return a de-registration function used when the view is destroyed.\n */\n ViewService.prototype.registerUIView = function (uiView) {\n trace.traceViewServiceUIViewEvent('-> Registering', uiView);\n var uiViews = this._uiViews;\n var fqnAndTypeMatches = function (uiv) { return uiv.fqn === uiView.fqn && uiv.$type === uiView.$type; };\n if (uiViews.filter(fqnAndTypeMatches).length)\n trace.traceViewServiceUIViewEvent('!!!! duplicate uiView named:', uiView);\n uiViews.push(uiView);\n this.sync();\n return function () {\n var idx = uiViews.indexOf(uiView);\n if (idx === -1) {\n trace.traceViewServiceUIViewEvent('Tried removing non-registered uiView', uiView);\n return;\n }\n trace.traceViewServiceUIViewEvent('<- Deregistering', uiView);\n removeFrom(uiViews)(uiView);\n };\n };\n /**\n * Returns the list of views currently available on the page, by fully-qualified name.\n *\n * @return {Array} Returns an array of fully-qualified view names.\n */\n ViewService.prototype.available = function () {\n return this._uiViews.map(prop('fqn'));\n };\n /**\n * Returns the list of views on the page containing loaded content.\n *\n * @return {Array} Returns an array of fully-qualified view names.\n */\n ViewService.prototype.active = function () {\n return this._uiViews.filter(prop('$config')).map(prop('name'));\n };\n /**\n * Given a ui-view and a ViewConfig, determines if they \"match\".\n *\n * A ui-view has a fully qualified name (fqn) and a context object. The fqn is built from its overall location in\n * the DOM, describing its nesting relationship to any parent ui-view tags it is nested inside of.\n *\n * A ViewConfig has a target ui-view name and a context anchor. The ui-view name can be a simple name, or\n * can be a segmented ui-view path, describing a portion of a ui-view fqn.\n *\n * In order for a ui-view to match ViewConfig, ui-view's $type must match the ViewConfig's $type\n *\n * If the ViewConfig's target ui-view name is a simple name (no dots), then a ui-view matches if:\n * - the ui-view's name matches the ViewConfig's target name\n * - the ui-view's context matches the ViewConfig's anchor\n *\n * If the ViewConfig's target ui-view name is a segmented name (with dots), then a ui-view matches if:\n * - There exists a parent ui-view where:\n * - the parent ui-view's name matches the first segment (index 0) of the ViewConfig's target name\n * - the parent ui-view's context matches the ViewConfig's anchor\n * - And the remaining segments (index 1..n) of the ViewConfig's target name match the tail of the ui-view's fqn\n *\n * Example:\n *\n * DOM:\n * \n * \n * \n * \n * \n * \n * \n * \n *\n * uiViews: [\n * { fqn: \"$default\", creationContext: { name: \"\" } },\n * { fqn: \"$default.foo\", creationContext: { name: \"A\" } },\n * { fqn: \"$default.foo.$default\", creationContext: { name: \"A.B\" } }\n * { fqn: \"$default.foo.$default.bar\", creationContext: { name: \"A.B.C\" } }\n * ]\n *\n * These four view configs all match the ui-view with the fqn: \"$default.foo.$default.bar\":\n *\n * - ViewConfig1: { uiViewName: \"bar\", uiViewContextAnchor: \"A.B.C\" }\n * - ViewConfig2: { uiViewName: \"$default.bar\", uiViewContextAnchor: \"A.B\" }\n * - ViewConfig3: { uiViewName: \"foo.$default.bar\", uiViewContextAnchor: \"A\" }\n * - ViewConfig4: { uiViewName: \"$default.foo.$default.bar\", uiViewContextAnchor: \"\" }\n *\n * Using ViewConfig3 as an example, it matches the ui-view with fqn \"$default.foo.$default.bar\" because:\n * - The ViewConfig's segmented target name is: [ \"foo\", \"$default\", \"bar\" ]\n * - There exists a parent ui-view (which has fqn: \"$default.foo\") where:\n * - the parent ui-view's name \"foo\" matches the first segment \"foo\" of the ViewConfig's target name\n * - the parent ui-view's context \"A\" matches the ViewConfig's anchor context \"A\"\n * - And the remaining segments [ \"$default\", \"bar\" ].join(\".\"_ of the ViewConfig's target name match\n * the tail of the ui-view's fqn \"default.bar\"\n *\n * @internal\n */\n ViewService.matches = function (uiViewsByFqn, uiView) { return function (viewConfig) {\n // Don't supply an ng1 ui-view with an ng2 ViewConfig, etc\n if (uiView.$type !== viewConfig.viewDecl.$type)\n return false;\n // Split names apart from both viewConfig and uiView into segments\n var vc = viewConfig.viewDecl;\n var vcSegments = vc.$uiViewName.split('.');\n var uivSegments = uiView.fqn.split('.');\n // Check if the tails of the segment arrays match. ex, these arrays' tails match:\n // vc: [\"foo\", \"bar\"], uiv fqn: [\"$default\", \"foo\", \"bar\"]\n if (!equals(vcSegments, uivSegments.slice(0 - vcSegments.length)))\n return false;\n // Now check if the fqn ending at the first segment of the viewConfig matches the context:\n // [\"$default\", \"foo\"].join(\".\") == \"$default.foo\", does the ui-view $default.foo context match?\n var negOffset = 1 - vcSegments.length || undefined;\n var fqnToFirstSegment = uivSegments.slice(0, negOffset).join('.');\n var uiViewContext = uiViewsByFqn[fqnToFirstSegment].creationContext;\n return vc.$uiViewContextAnchor === (uiViewContext && uiViewContext.name);\n }; };\n return ViewService;\n}());\nexport { ViewService };\n","/** @packageDocumentation @publicapi @module rx */\nimport { ReplaySubject } from 'rxjs';\nimport { filter, map, mergeMap } from 'rxjs/operators';\n/** Augments UIRouterGlobals with observables for transition starts, successful transitions, and state parameters */\nvar UIRouterRx = /** @class */ (function () {\n function UIRouterRx(router) {\n this.name = '@uirouter/rx';\n this.deregisterFns = [];\n var start$ = new ReplaySubject(1);\n var success$ = start$.pipe(mergeMap(function (t) {\n return t.promise.then(function () { return t; }, function () { return null; });\n }), filter(function (t) { return !!t; }));\n var params$ = success$.pipe(map(function (transition) { return transition.params(); }));\n var states$ = new ReplaySubject(1);\n function onStatesChangedEvent(event, states) {\n var changeEvent = {\n currentStates: router.stateRegistry.get(),\n registered: [],\n deregistered: [],\n };\n if (event)\n changeEvent[event] = states;\n states$.next(changeEvent);\n }\n this.deregisterFns.push(router.transitionService.onStart({}, function (transition) { return start$.next(transition); }));\n this.deregisterFns.push(router.stateRegistry.onStatesChanged(onStatesChangedEvent));\n onStatesChangedEvent(null, null);\n Object.assign(router.globals, { start$: start$, success$: success$, params$: params$, states$: states$ });\n }\n UIRouterRx.prototype.dispose = function () {\n this.deregisterFns.forEach(function (deregisterFn) { return deregisterFn(); });\n this.deregisterFns = [];\n };\n return UIRouterRx;\n}());\nexport { UIRouterRx };\nexport var UIRouterRxPlugin = UIRouterRx;\n","import { ReplaySubject } from \"rxjs\";\nimport { takeUntil } from \"rxjs/operators\";\n/*\nfunction getInternalAngularComponent(type: any): any {\n noinspection JSNonASCIINames\n // return type.ɵdir || type.ɵcmp;\n}\n\nexport function ObserveOnDestroy() {\n return (target: any) => {\n const componentDefinition = getInternalAngularComponent(target);\n if (componentDefinition) {\n const old = componentDefinition.onDestroy;\n componentDefinition.onDestroy = function (this: any) {\n const onDestroySubject = componentDestroyed(this) as Subject;\n onDestroySubject.next();\n\n if (old !== undefined && old !== null) {\n old();\n }\n };\n } else {\n throw new Error(\"Ivy and AoT must be enabled for @ObserveOnDestroy().\");\n }\n\n function decorated(this: any) {\n const instance = Reflect.construct(target, arguments);\n instance[ON_DESTROY_SUBJECT_KEY] = new ReplaySubject(1);\n return instance;\n }\n\n Object.setPrototypeOf(decorated, target);\n return decorated as any;\n };\n}\n*/\nvar ON_DESTROY_SUBJECT_KEY = Symbol(\"ON_DESTROY_SUBJECT_KEY\");\nvar OnDestroyMixin = /** @class */ (function () {\n function OnDestroyMixin() {\n this[ON_DESTROY_SUBJECT_KEY] = new ReplaySubject();\n }\n OnDestroyMixin.prototype.observeOnDestroy = function () {\n return this[ON_DESTROY_SUBJECT_KEY];\n };\n OnDestroyMixin.prototype.ngOnDestroy = function () {\n this.observeOnDestroy().next();\n };\n return OnDestroyMixin;\n}());\nexport { OnDestroyMixin };\nexport function componentDestroyed(target) {\n var onDestroySubject = target[ON_DESTROY_SUBJECT_KEY];\n if (onDestroySubject === undefined) {\n var proto = Object.getPrototypeOf(target);\n var compInfo = proto !== undefined && proto.constructor !== undefined !== proto.constructor.name !== undefined\n ? \" (component: \" + proto.constructor.name + \")\"\n : \"\";\n throw new Error(\"You are almost there! Please extends the base class 'OnDestroyMixin'\" + compInfo + \".\");\n }\n return onDestroySubject;\n}\nexport function untilComponentDestroyed(component) {\n return function (source) { return source.pipe(takeUntil(componentDestroyed(component))); };\n}\n","class e{constructor(e,t){this.items=e||[],this._lastUniqueId=(t||0)+1}addItem(){let e;if(2===arguments.length){const t=arguments[0];if(e=arguments[1],this.items[t])throw\"ID clash: '\"+t+\"'\";return this.items[t]=e,t}for(e=arguments[0]||{};;){const t=this._lastUniqueId++;if(!this.items[t])return this.items[t]=e,t}}removeItem(e){const t=this.items[e];return delete this.items[e],t}}const t=new e;class i{constructor(e){this.id=e,this.parentItem=null,this.groups=[],this.menuElement=null,this.shown=!1,this.mouseOver=0}}class s{constructor(){this.items=[]}}class r{constructor(e,t,i,s,r){this.id=e,this.getTitle=t,this.doAction=i,this.getEnabled=s,this.getShown=r,this.itemElement=null,this.subMenu=null,this.enabled=!0}}class o{constructor(e={}){this._id=t.addItem(),this._context=null,this._enabled=!1,this._itemsCfg=[],this._rootMenu=null,this._menuList=[],this._menuMap={},this._itemList=[],this._itemMap={},this._shown=!1,this._nextId=0,this._eventSubs={},!1!==e.hideOnMouseDown&&(document.addEventListener(\"mousedown\",(e=>{e.target.classList.contains(\"xeokit-context-menu-item\")||this.hide()})),document.addEventListener(\"touchstart\",this._canvasTouchStartHandler=e=>{e.target.classList.contains(\"xeokit-context-menu-item\")||this.hide()})),e.items&&(this.items=e.items),this.context=e.context,this.enabled=!1!==e.enabled,this.hide()}on(e,t){let i=this._eventSubs[e];i||(i=[],this._eventSubs[e]=i),i.push(t)}fire(e,t){const i=this._eventSubs[e];if(i)for(let e=0,s=i.length;e{const o=this._getNextId(),a=new i(o);for(let i=0,o=e.length;i0,h=this._getNextId(),c=i.getTitle||(()=>i.title||\"\"),u=i.doAction||i.callback||(()=>{}),d=i.getEnabled||(()=>!0),p=i.getShown||(()=>!0),f=new r(h,c,u,d,p);if(f.parentMenu=a,n.items.push(f),l){const e=t(s);f.subMenu=e,e.parentItem=f}this._itemList.push(f),this._itemMap[f.id]=f}}return this._menuList.push(a),this._menuMap[a.id]=a,a};this._rootMenu=t(e)}_getNextId(){return\"ContextMenu_\"+this._id+this._nextId++}_createUI(){const e=t=>{this._createMenuUI(t);const i=t.groups;for(let t=0,s=i.length;t'),i.push(\"
    \"),t)for(let e=0,s=t.length;e'+l+\" [MORE]\"):i.push('
  • '+l+\"
  • \")}}i.push(\"
\"),i.push(\"\");const s=i.join(\"\");document.body.insertAdjacentHTML(\"beforeend\",s);const r=document.querySelector(\".\"+e.id);e.menuElement=r,r.style[\"border-radius\"]=\"4px\",r.style.display=\"none\",r.style[\"z-index\"]=3e5,r.style.background=\"white\",r.style.border=\"1px solid black\",r.style[\"box-shadow\"]=\"0 4px 5px 0 gray\",r.oncontextmenu=e=>{e.preventDefault()};const o=this;let a=null;if(t)for(let e=0,i=t.length;e{if(e.preventDefault(),!1===t.enabled)return;const i=t.subMenu;if(!i)return void(a&&(o._hideMenu(a.id),a=null));a&&a.id!==i.id&&(o._hideMenu(a.id),a=null);const s=t.itemElement,r=i.menuElement,n=s.getBoundingClientRect();r.getBoundingClientRect();n.right+200>window.innerWidth?o._showMenu(i.id,n.left-200,n.top-1):o._showMenu(i.id,n.right-5,n.top-1),a=i})),s||(t.itemElement.addEventListener(\"click\",(e=>{e.preventDefault(),o.hide(),o._context&&!1!==t.enabled&&t.doAction&&t.doAction(o._context)})),t.itemElement.addEventListener(\"mouseenter\",(e=>{e.preventDefault(),!1!==t.enabled&&t.doHover&&t.doHover(o._context)})))):console.error(\"ContextMenu item element not found: \"+t.id)}}}_updateItemsTitles(){if(this._context)for(let e=0,t=this._itemList.length;ewindow.innerHeight&&(i=window.innerHeight-s),t+r>window.innerWidth&&(t=window.innerWidth-r),e.style.left=t+\"px\",e.style.top=i+\"px\"}_hideMenuElement(e){e.style.display=\"none\"}}class a{constructor(e,t,i){this.id=i&&i.id?i.id:e,this.viewer=t,this._eventSubs={},t.addPlugin(this)}on(e,t){let i=this._eventSubs[e];i||(i=[],this._eventSubs[e]=i),i.push(t)}fire(e,t){const i=this._eventSubs[e];if(i)for(let e=0,s=i.length;ee+\"#\"+t,vec2:e=>new n(e||2),vec3:e=>new n(e||3),vec4:e=>new n(e||4),mat3:e=>new n(e||9),mat3ToMat4:(e,t=new n(16))=>(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=0,t[4]=e[3],t[5]=e[4],t[6]=e[5],t[7]=0,t[8]=e[6],t[9]=e[7],t[10]=e[8],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t),mat4:e=>new n(e||16),mat4ToMat3(e,t){},doublesToFloats(e,t,i){const s=new n(2);for(let r=0,o=e.length;r{const e=[];for(let t=0;t<256;t++)e[t]=(t<16?\"0\":\"\")+t.toString(16);return()=>{const t=4294967295*Math.random()|0,i=4294967295*Math.random()|0,s=4294967295*Math.random()|0,r=4294967295*Math.random()|0;return`${e[255&t]+e[t>>8&255]+e[t>>16&255]+e[t>>24&255]}-${e[255&i]}${e[i>>8&255]}-${e[i>>16&15|64]}${e[i>>24&255]}-${e[63&s|128]}${e[s>>8&255]}-${e[s>>16&255]}${e[s>>24&255]}${e[255&r]}${e[r>>8&255]}${e[r>>16&255]}${e[r>>24&255]}`}})(),clamp:(e,t,i)=>Math.max(t,Math.min(i,e)),fmod(e,t){if(ee[0]===t[0]&&e[1]===t[1]&&e[2]===t[2],negateVec3:(e,t)=>(t||(t=e),t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t),negateVec4:(e,t)=>(t||(t=e),t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t),addVec4:(e,t,i)=>(i||(i=e),i[0]=e[0]+t[0],i[1]=e[1]+t[1],i[2]=e[2]+t[2],i[3]=e[3]+t[3],i),addVec4Scalar:(e,t,i)=>(i||(i=e),i[0]=e[0]+t,i[1]=e[1]+t,i[2]=e[2]+t,i[3]=e[3]+t,i),addVec3:(e,t,i)=>(i||(i=e),i[0]=e[0]+t[0],i[1]=e[1]+t[1],i[2]=e[2]+t[2],i),addVec3Scalar:(e,t,i)=>(i||(i=e),i[0]=e[0]+t,i[1]=e[1]+t,i[2]=e[2]+t,i),subVec4:(e,t,i)=>(i||(i=e),i[0]=e[0]-t[0],i[1]=e[1]-t[1],i[2]=e[2]-t[2],i[3]=e[3]-t[3],i),subVec3:(e,t,i)=>(i||(i=e),i[0]=e[0]-t[0],i[1]=e[1]-t[1],i[2]=e[2]-t[2],i),subVec2:(e,t,i)=>(i||(i=e),i[0]=e[0]-t[0],i[1]=e[1]-t[1],i),geometricMeanVec2(...e){const t=new n(e[0]);for(let i=1;i(i||(i=e),i[0]=e[0]-t,i[1]=e[1]-t,i[2]=e[2]-t,i[3]=e[3]-t,i),subScalarVec4:(e,t,i)=>(i||(i=e),i[0]=t-e[0],i[1]=t-e[1],i[2]=t-e[2],i[3]=t-e[3],i),mulVec4:(e,t,i)=>(i||(i=e),i[0]=e[0]*t[0],i[1]=e[1]*t[1],i[2]=e[2]*t[2],i[3]=e[3]*t[3],i),mulVec4Scalar:(e,t,i)=>(i||(i=e),i[0]=e[0]*t,i[1]=e[1]*t,i[2]=e[2]*t,i[3]=e[3]*t,i),mulVec3Scalar:(e,t,i)=>(i||(i=e),i[0]=e[0]*t,i[1]=e[1]*t,i[2]=e[2]*t,i),mulVec2Scalar:(e,t,i)=>(i||(i=e),i[0]=e[0]*t,i[1]=e[1]*t,i),divVec3:(e,t,i)=>(i||(i=e),i[0]=e[0]/t[0],i[1]=e[1]/t[1],i[2]=e[2]/t[2],i),divVec4:(e,t,i)=>(i||(i=e),i[0]=e[0]/t[0],i[1]=e[1]/t[1],i[2]=e[2]/t[2],i[3]=e[3]/t[3],i),divScalarVec3:(e,t,i)=>(i||(i=t),i[0]=e/t[0],i[1]=e/t[1],i[2]=e/t[2],i),divVec3Scalar:(e,t,i)=>(i||(i=e),i[0]=e[0]/t,i[1]=e[1]/t,i[2]=e[2]/t,i),divVec4Scalar:(e,t,i)=>(i||(i=e),i[0]=e[0]/t,i[1]=e[1]/t,i[2]=e[2]/t,i[3]=e[3]/t,i),divScalarVec4:(e,t,i)=>(i||(i=t),i[0]=e/t[0],i[1]=e/t[1],i[2]=e/t[2],i[3]=e/t[3],i),dotVec4:(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2]+e[3]*t[3],cross3Vec4(e,t){const i=e[0],s=e[1],r=e[2],o=t[0],a=t[1],n=t[2];return[s*n-r*a,r*o-i*n,i*a-s*o,0]},cross3Vec3(e,t,i){i||(i=e);const s=e[0],r=e[1],o=e[2],a=t[0],n=t[1],l=t[2];return i[0]=r*l-o*n,i[1]=o*a-s*l,i[2]=s*n-r*a,i},sqLenVec4:e=>u.dotVec4(e,e),lenVec4:e=>Math.sqrt(u.sqLenVec4(e)),dotVec3:(e,t)=>e[0]*t[0]+e[1]*t[1]+e[2]*t[2],dotVec2:(e,t)=>e[0]*t[0]+e[1]*t[1],sqLenVec3:e=>u.dotVec3(e,e),sqLenVec2:e=>u.dotVec2(e,e),lenVec3:e=>Math.sqrt(u.sqLenVec3(e)),distVec3:(()=>{const e=new n(3);return(t,i)=>u.lenVec3(u.subVec3(t,i,e))})(),lenVec2:e=>Math.sqrt(u.sqLenVec2(e)),distVec2:(()=>{const e=new n(2);return(t,i)=>u.lenVec2(u.subVec2(t,i,e))})(),rcpVec3:(e,t)=>u.divScalarVec3(1,e,t),normalizeVec4(e,t){const i=1/u.lenVec4(e);return u.mulVec4Scalar(e,i,t)},normalizeVec3(e,t){const i=1/u.lenVec3(e);return u.mulVec3Scalar(e,i,t)},normalizeVec2(e,t){const i=1/u.lenVec2(e);return u.mulVec2Scalar(e,i,t)},angleVec3(e,t){let i=u.dotVec3(e,t)/Math.sqrt(u.sqLenVec3(e)*u.sqLenVec3(t));return i=i<-1?-1:i>1?1:i,Math.acos(i)},vec3FromMat4Scale:(()=>{const e=new n(3);return(t,i)=>(e[0]=t[0],e[1]=t[1],e[2]=t[2],i[0]=u.lenVec3(e),e[0]=t[4],e[1]=t[5],e[2]=t[6],i[1]=u.lenVec3(e),e[0]=t[8],e[1]=t[9],e[2]=t[10],i[2]=u.lenVec3(e),i)})(),vecToArray:(()=>{function e(e){return Math.round(1e5*e)/1e5}return t=>{for(let i=0,s=(t=Array.prototype.slice.call(t)).length;i({x:e[0],y:e[1],z:e[2]}),xyzObjectToArray:(e,t)=>((t=t||u.vec3())[0]=e.x,t[1]=e.y,t[2]=e.z,t),dupMat4:e=>e.slice(0,16),mat4To3:e=>[e[0],e[1],e[2],e[4],e[5],e[6],e[8],e[9],e[10]],m4s:e=>[e,e,e,e,e,e,e,e,e,e,e,e,e,e,e,e],setMat4ToZeroes:()=>u.m4s(0),setMat4ToOnes:()=>u.m4s(1),diagonalMat4v:e=>new n([e[0],0,0,0,0,e[1],0,0,0,0,e[2],0,0,0,0,e[3]]),diagonalMat4c:(e,t,i,s)=>u.diagonalMat4v([e,t,i,s]),diagonalMat4s:e=>u.diagonalMat4c(e,e,e,e),identityMat4:(e=new n(16))=>(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e),identityMat3:(e=new n(9))=>(e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e),isIdentityMat4:e=>1===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&1===e[5]&&0===e[6]&&0===e[7]&&0===e[8]&&0===e[9]&&1===e[10]&&0===e[11]&&0===e[12]&&0===e[13]&&0===e[14]&&1===e[15],negateMat4:(e,t)=>(t||(t=e),t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=-e[3],t[4]=-e[4],t[5]=-e[5],t[6]=-e[6],t[7]=-e[7],t[8]=-e[8],t[9]=-e[9],t[10]=-e[10],t[11]=-e[11],t[12]=-e[12],t[13]=-e[13],t[14]=-e[14],t[15]=-e[15],t),addMat4:(e,t,i)=>(i||(i=e),i[0]=e[0]+t[0],i[1]=e[1]+t[1],i[2]=e[2]+t[2],i[3]=e[3]+t[3],i[4]=e[4]+t[4],i[5]=e[5]+t[5],i[6]=e[6]+t[6],i[7]=e[7]+t[7],i[8]=e[8]+t[8],i[9]=e[9]+t[9],i[10]=e[10]+t[10],i[11]=e[11]+t[11],i[12]=e[12]+t[12],i[13]=e[13]+t[13],i[14]=e[14]+t[14],i[15]=e[15]+t[15],i),addMat4Scalar:(e,t,i)=>(i||(i=e),i[0]=e[0]+t,i[1]=e[1]+t,i[2]=e[2]+t,i[3]=e[3]+t,i[4]=e[4]+t,i[5]=e[5]+t,i[6]=e[6]+t,i[7]=e[7]+t,i[8]=e[8]+t,i[9]=e[9]+t,i[10]=e[10]+t,i[11]=e[11]+t,i[12]=e[12]+t,i[13]=e[13]+t,i[14]=e[14]+t,i[15]=e[15]+t,i),addScalarMat4:(e,t,i)=>u.addMat4Scalar(t,e,i),subMat4:(e,t,i)=>(i||(i=e),i[0]=e[0]-t[0],i[1]=e[1]-t[1],i[2]=e[2]-t[2],i[3]=e[3]-t[3],i[4]=e[4]-t[4],i[5]=e[5]-t[5],i[6]=e[6]-t[6],i[7]=e[7]-t[7],i[8]=e[8]-t[8],i[9]=e[9]-t[9],i[10]=e[10]-t[10],i[11]=e[11]-t[11],i[12]=e[12]-t[12],i[13]=e[13]-t[13],i[14]=e[14]-t[14],i[15]=e[15]-t[15],i),subMat4Scalar:(e,t,i)=>(i||(i=e),i[0]=e[0]-t,i[1]=e[1]-t,i[2]=e[2]-t,i[3]=e[3]-t,i[4]=e[4]-t,i[5]=e[5]-t,i[6]=e[6]-t,i[7]=e[7]-t,i[8]=e[8]-t,i[9]=e[9]-t,i[10]=e[10]-t,i[11]=e[11]-t,i[12]=e[12]-t,i[13]=e[13]-t,i[14]=e[14]-t,i[15]=e[15]-t,i),subScalarMat4:(e,t,i)=>(i||(i=t),i[0]=e-t[0],i[1]=e-t[1],i[2]=e-t[2],i[3]=e-t[3],i[4]=e-t[4],i[5]=e-t[5],i[6]=e-t[6],i[7]=e-t[7],i[8]=e-t[8],i[9]=e-t[9],i[10]=e-t[10],i[11]=e-t[11],i[12]=e-t[12],i[13]=e-t[13],i[14]=e-t[14],i[15]=e-t[15],i),mulMat4(e,t,i){i||(i=e);const s=e[0],r=e[1],o=e[2],a=e[3],n=e[4],l=e[5],h=e[6],c=e[7],u=e[8],d=e[9],p=e[10],f=e[11],_=e[12],g=e[13],m=e[14],v=e[15],b=t[0],P=t[1],y=t[2],x=t[3],M=t[4],w=t[5],E=t[6],C=t[7],A=t[8],S=t[9],D=t[10],L=t[11],B=t[12],T=t[13],R=t[14],F=t[15];return i[0]=b*s+P*n+y*u+x*_,i[1]=b*r+P*l+y*d+x*g,i[2]=b*o+P*h+y*p+x*m,i[3]=b*a+P*c+y*f+x*v,i[4]=M*s+w*n+E*u+C*_,i[5]=M*r+w*l+E*d+C*g,i[6]=M*o+w*h+E*p+C*m,i[7]=M*a+w*c+E*f+C*v,i[8]=A*s+S*n+D*u+L*_,i[9]=A*r+S*l+D*d+L*g,i[10]=A*o+S*h+D*p+L*m,i[11]=A*a+S*c+D*f+L*v,i[12]=B*s+T*n+R*u+F*_,i[13]=B*r+T*l+R*d+F*g,i[14]=B*o+T*h+R*p+F*m,i[15]=B*a+T*c+R*f+F*v,i},mulMat3(e,t,i){i||(i=new n(9));const s=e[0],r=e[3],o=e[6],a=e[1],l=e[4],h=e[7],c=e[2],u=e[5],d=e[8],p=t[0],f=t[3],_=t[6],g=t[1],m=t[4],v=t[7],b=t[2],P=t[5],y=t[8];return i[0]=s*p+r*g+o*b,i[3]=s*f+r*m+o*P,i[6]=s*_+r*v+o*y,i[1]=a*p+l*g+h*b,i[4]=a*f+l*m+h*P,i[7]=a*_+l*v+h*y,i[2]=c*p+u*g+d*b,i[5]=c*f+u*m+d*P,i[8]=c*_+u*v+d*y,i},mulMat4Scalar:(e,t,i)=>(i||(i=e),i[0]=e[0]*t,i[1]=e[1]*t,i[2]=e[2]*t,i[3]=e[3]*t,i[4]=e[4]*t,i[5]=e[5]*t,i[6]=e[6]*t,i[7]=e[7]*t,i[8]=e[8]*t,i[9]=e[9]*t,i[10]=e[10]*t,i[11]=e[11]*t,i[12]=e[12]*t,i[13]=e[13]*t,i[14]=e[14]*t,i[15]=e[15]*t,i),mulMat4v4(e,t,i=u.vec4()){const s=t[0],r=t[1],o=t[2],a=t[3];return i[0]=e[0]*s+e[4]*r+e[8]*o+e[12]*a,i[1]=e[1]*s+e[5]*r+e[9]*o+e[13]*a,i[2]=e[2]*s+e[6]*r+e[10]*o+e[14]*a,i[3]=e[3]*s+e[7]*r+e[11]*o+e[15]*a,i},transposeMat4(e,t){const i=e[4],s=e[14],r=e[8],o=e[13],a=e[12],n=e[9];if(!t||e===t){const t=e[1],l=e[2],h=e[3],c=e[6],u=e[7],d=e[11];return e[1]=i,e[2]=r,e[3]=a,e[4]=t,e[6]=n,e[7]=o,e[8]=l,e[9]=c,e[11]=s,e[12]=h,e[13]=u,e[14]=d,e}return t[0]=e[0],t[1]=i,t[2]=r,t[3]=a,t[4]=e[1],t[5]=e[5],t[6]=n,t[7]=o,t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=s,t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15],t},transposeMat3(e,t){if(t===e){const i=e[1],s=e[2],r=e[5];t[1]=e[3],t[2]=e[6],t[3]=i,t[5]=e[7],t[6]=s,t[7]=r}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t},determinantMat4(e){const t=e[0],i=e[1],s=e[2],r=e[3],o=e[4],a=e[5],n=e[6],l=e[7],h=e[8],c=e[9],u=e[10],d=e[11],p=e[12],f=e[13],_=e[14],g=e[15];return p*c*n*r-h*f*n*r-p*a*u*r+o*f*u*r+h*a*_*r-o*c*_*r-p*c*s*l+h*f*s*l+p*i*u*l-t*f*u*l-h*i*_*l+t*c*_*l+p*a*s*d-o*f*s*d-p*i*n*d+t*f*n*d+o*i*_*d-t*a*_*d-h*a*s*g+o*c*s*g+h*i*n*g-t*c*n*g-o*i*u*g+t*a*u*g},inverseMat4(e,t){t||(t=e);const i=e[0],s=e[1],r=e[2],o=e[3],a=e[4],n=e[5],l=e[6],h=e[7],c=e[8],u=e[9],d=e[10],p=e[11],f=e[12],_=e[13],g=e[14],m=e[15],v=i*n-s*a,b=i*l-r*a,P=i*h-o*a,y=s*l-r*n,x=s*h-o*n,M=r*h-o*l,w=c*_-u*f,E=c*g-d*f,C=c*m-p*f,A=u*g-d*_,S=u*m-p*_,D=d*m-p*g,L=1/(v*D-b*S+P*A+y*C-x*E+M*w);return t[0]=(n*D-l*S+h*A)*L,t[1]=(-s*D+r*S-o*A)*L,t[2]=(_*M-g*x+m*y)*L,t[3]=(-u*M+d*x-p*y)*L,t[4]=(-a*D+l*C-h*E)*L,t[5]=(i*D-r*C+o*E)*L,t[6]=(-f*M+g*P-m*b)*L,t[7]=(c*M-d*P+p*b)*L,t[8]=(a*S-n*C+h*w)*L,t[9]=(-i*S+s*C-o*w)*L,t[10]=(f*x-_*P+m*v)*L,t[11]=(-c*x+u*P-p*v)*L,t[12]=(-a*A+n*E-l*w)*L,t[13]=(i*A-s*E+r*w)*L,t[14]=(-f*y+_*b-g*v)*L,t[15]=(c*y-u*b+d*v)*L,t},traceMat4:e=>e[0]+e[5]+e[10]+e[15],translationMat4v(e,t){const i=t||u.identityMat4();return i[12]=e[0],i[13]=e[1],i[14]=e[2],i},translationMat3v(e,t){const i=t||u.identityMat3();return i[6]=e[0],i[7]=e[1],i},translationMat4c:(()=>{const e=new n(3);return(t,i,s,r)=>(e[0]=t,e[1]=i,e[2]=s,u.translationMat4v(e,r))})(),translationMat4s:(e,t)=>u.translationMat4c(e,e,e,t),translateMat4v:(e,t)=>u.translateMat4c(e[0],e[1],e[2],t),OLDtranslateMat4c(e,t,i,s){const r=s[12];s[0]+=r*e,s[4]+=r*t,s[8]+=r*i;const o=s[13];s[1]+=o*e,s[5]+=o*t,s[9]+=o*i;const a=s[14];s[2]+=a*e,s[6]+=a*t,s[10]+=a*i;const n=s[15];return s[3]+=n*e,s[7]+=n*t,s[11]+=n*i,s},translateMat4c(e,t,i,s){const r=s[3];s[0]+=r*e,s[1]+=r*t,s[2]+=r*i;const o=s[7];s[4]+=o*e,s[5]+=o*t,s[6]+=o*i;const a=s[11];s[8]+=a*e,s[9]+=a*t,s[10]+=a*i;const n=s[15];return s[12]+=n*e,s[13]+=n*t,s[14]+=n*i,s},setMat4Translation:(e,t,i)=>(i[0]=e[0],i[1]=e[1],i[2]=e[2],i[3]=e[3],i[4]=e[4],i[5]=e[5],i[6]=e[6],i[7]=e[7],i[8]=e[8],i[9]=e[9],i[10]=e[10],i[11]=e[11],i[12]=t[0],i[13]=t[1],i[14]=t[2],i[15]=e[15],i),rotationMat4v(e,t,i){const s=u.normalizeVec4([t[0],t[1],t[2],0],[]),r=Math.sin(e),o=Math.cos(e),a=1-o,n=s[0],l=s[1],h=s[2];let c,d,p,f,_,g;return c=n*l,d=l*h,p=h*n,f=n*r,_=l*r,g=h*r,(i=i||u.mat4())[0]=a*n*n+o,i[1]=a*c+g,i[2]=a*p-_,i[3]=0,i[4]=a*c-g,i[5]=a*l*l+o,i[6]=a*d+f,i[7]=0,i[8]=a*p+_,i[9]=a*d-f,i[10]=a*h*h+o,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,i},rotationMat4c:(e,t,i,s,r)=>u.rotationMat4v(e,[t,i,s],r),scalingMat4v:(e,t=u.identityMat4())=>(t[0]=e[0],t[5]=e[1],t[10]=e[2],t),scalingMat3v:(e,t=u.identityMat3())=>(t[0]=e[0],t[4]=e[1],t),scalingMat4c:(()=>{const e=new n(3);return(t,i,s,r)=>(e[0]=t,e[1]=i,e[2]=s,u.scalingMat4v(e,r))})(),scaleMat4c:(e,t,i,s)=>(s[0]*=e,s[4]*=t,s[8]*=i,s[1]*=e,s[5]*=t,s[9]*=i,s[2]*=e,s[6]*=t,s[10]*=i,s[3]*=e,s[7]*=t,s[11]*=i,s),scaleMat4v(e,t){const i=e[0],s=e[1],r=e[2];return t[0]*=i,t[4]*=s,t[8]*=r,t[1]*=i,t[5]*=s,t[9]*=r,t[2]*=i,t[6]*=s,t[10]*=r,t[3]*=i,t[7]*=s,t[11]*=r,t},scalingMat4s:e=>u.scalingMat4c(e,e,e),rotationTranslationMat4(e,t,i=u.mat4()){const s=e[0],r=e[1],o=e[2],a=e[3],n=s+s,l=r+r,h=o+o,c=s*n,d=s*l,p=s*h,f=r*l,_=r*h,g=o*h,m=a*n,v=a*l,b=a*h;return i[0]=1-(f+g),i[1]=d+b,i[2]=p-v,i[3]=0,i[4]=d-b,i[5]=1-(c+g),i[6]=_+m,i[7]=0,i[8]=p+v,i[9]=_-m,i[10]=1-(c+f),i[11]=0,i[12]=t[0],i[13]=t[1],i[14]=t[2],i[15]=1,i},mat4ToEuler(e,t,i=u.vec4()){const s=u.clamp,r=e[0],o=e[4],a=e[8],n=e[1],l=e[5],h=e[9],c=e[2],d=e[6],p=e[10];return\"XYZ\"===t?(i[1]=Math.asin(s(a,-1,1)),Math.abs(a)<.99999?(i[0]=Math.atan2(-h,p),i[2]=Math.atan2(-o,r)):(i[0]=Math.atan2(d,l),i[2]=0)):\"YXZ\"===t?(i[0]=Math.asin(-s(h,-1,1)),Math.abs(h)<.99999?(i[1]=Math.atan2(a,p),i[2]=Math.atan2(n,l)):(i[1]=Math.atan2(-c,r),i[2]=0)):\"ZXY\"===t?(i[0]=Math.asin(s(d,-1,1)),Math.abs(d)<.99999?(i[1]=Math.atan2(-c,p),i[2]=Math.atan2(-o,l)):(i[1]=0,i[2]=Math.atan2(n,r))):\"ZYX\"===t?(i[1]=Math.asin(-s(c,-1,1)),Math.abs(c)<.99999?(i[0]=Math.atan2(d,p),i[2]=Math.atan2(n,r)):(i[0]=0,i[2]=Math.atan2(-o,l))):\"YZX\"===t?(i[2]=Math.asin(s(n,-1,1)),Math.abs(n)<.99999?(i[0]=Math.atan2(-h,l),i[1]=Math.atan2(-c,r)):(i[0]=0,i[1]=Math.atan2(a,p))):\"XZY\"===t&&(i[2]=Math.asin(-s(o,-1,1)),Math.abs(o)<.99999?(i[0]=Math.atan2(d,l),i[1]=Math.atan2(a,r)):(i[0]=Math.atan2(-h,p),i[1]=0)),i},composeMat4:(e,t,i,s=u.mat4())=>(u.quaternionToRotationMat4(t,s),u.scaleMat4v(i,s),u.translateMat4v(e,s),s),decomposeMat4:(()=>{const e=new n(3),t=new n(16);return function(i,s,r,o){e[0]=i[0],e[1]=i[1],e[2]=i[2];let a=u.lenVec3(e);e[0]=i[4],e[1]=i[5],e[2]=i[6];const n=u.lenVec3(e);e[8]=i[8],e[9]=i[9],e[10]=i[10];const l=u.lenVec3(e);u.determinantMat4(i)<0&&(a=-a),s[0]=i[12],s[1]=i[13],s[2]=i[14],t.set(i);const h=1/a,c=1/n,d=1/l;return t[0]*=h,t[1]*=h,t[2]*=h,t[4]*=c,t[5]*=c,t[6]*=c,t[8]*=d,t[9]*=d,t[10]*=d,u.mat4ToQuaternion(t,r),o[0]=a,o[1]=n,o[2]=l,this}})(),getColMat4(e,t){const i=4*t;return[e[i],e[i+1],e[i+2],e[i+3]]},setRowMat4(e,t,i){e[t]=i[0],e[t+4]=i[1],e[t+8]=i[2],e[t+12]=i[3]},lookAtMat4v(e,t,i,s){s||(s=u.mat4());const r=e[0],o=e[1],a=e[2],n=i[0],l=i[1],h=i[2],c=t[0],d=t[1],p=t[2];if(r===c&&o===d&&a===p)return u.identityMat4();let f,_,g,m,v,b,P,y,x,M;return f=r-c,_=o-d,g=a-p,M=1/Math.sqrt(f*f+_*_+g*g),f*=M,_*=M,g*=M,m=l*g-h*_,v=h*f-n*g,b=n*_-l*f,M=Math.sqrt(m*m+v*v+b*b),M?(M=1/M,m*=M,v*=M,b*=M):(m=0,v=0,b=0),P=_*b-g*v,y=g*m-f*b,x=f*v-_*m,M=Math.sqrt(P*P+y*y+x*x),M?(M=1/M,P*=M,y*=M,x*=M):(P=0,y=0,x=0),s[0]=m,s[1]=P,s[2]=f,s[3]=0,s[4]=v,s[5]=y,s[6]=_,s[7]=0,s[8]=b,s[9]=x,s[10]=g,s[11]=0,s[12]=-(m*r+v*o+b*a),s[13]=-(P*r+y*o+x*a),s[14]=-(f*r+_*o+g*a),s[15]=1,s},lookAtMat4c:(e,t,i,s,r,o,a,n,l)=>u.lookAtMat4v([e,t,i],[s,r,o],[a,n,l],[]),orthoMat4c(e,t,i,s,r,o,a){a||(a=u.mat4());const n=t-e,l=s-i,h=o-r;return a[0]=2/n,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=2/l,a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=-2/h,a[11]=0,a[12]=-(e+t)/n,a[13]=-(s+i)/l,a[14]=-(o+r)/h,a[15]=1,a},frustumMat4v(e,t,i){i||(i=u.mat4());const s=[e[0],e[1],e[2],0],r=[t[0],t[1],t[2],0];u.addVec4(r,s,l),u.subVec4(r,s,h);const o=2*s[2],a=h[0],n=h[1],c=h[2];return i[0]=o/a,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=o/n,i[6]=0,i[7]=0,i[8]=l[0]/a,i[9]=l[1]/n,i[10]=-l[2]/c,i[11]=-1,i[12]=0,i[13]=0,i[14]=-o*r[2]/c,i[15]=0,i},frustumMat4(e,t,i,s,r,o,a){a||(a=u.mat4());const n=t-e,l=s-i,h=o-r;return a[0]=2*r/n,a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=2*r/l,a[6]=0,a[7]=0,a[8]=(t+e)/n,a[9]=(s+i)/l,a[10]=-(o+r)/h,a[11]=-1,a[12]=0,a[13]=0,a[14]=-o*r*2/h,a[15]=0,a},perspectiveMat4(e,t,i,s,r){const o=[],a=[];return o[2]=i,a[2]=s,a[1]=o[2]*Math.tan(e/2),o[1]=-a[1],a[0]=a[1]*t,o[0]=-a[0],u.frustumMat4v(o,a,r)},compareMat4:(e,t)=>e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15],transformPoint3(e,t,i=u.vec3()){const s=t[0],r=t[1],o=t[2];return i[0]=e[0]*s+e[4]*r+e[8]*o+e[12],i[1]=e[1]*s+e[5]*r+e[9]*o+e[13],i[2]=e[2]*s+e[6]*r+e[10]*o+e[14],i},transformPoint4:(e,t,i=u.vec4())=>(i[0]=e[0]*t[0]+e[4]*t[1]+e[8]*t[2]+e[12]*t[3],i[1]=e[1]*t[0]+e[5]*t[1]+e[9]*t[2]+e[13]*t[3],i[2]=e[2]*t[0]+e[6]*t[1]+e[10]*t[2]+e[14]*t[3],i[3]=e[3]*t[0]+e[7]*t[1]+e[11]*t[2]+e[15]*t[3],i),transformPoints3(e,t,i){const s=i||[],r=t.length;let o,a,n,l;const h=e[0],c=e[1],u=e[2],d=e[3],p=e[4],f=e[5],_=e[6],g=e[7],m=e[8],v=e[9],b=e[10],P=e[11],y=e[12],x=e[13],M=e[14],w=e[15];let E;for(let e=0;e{const e=new n(16),t=new n(16),i=new n(16);return function(s,r,o,a){return this.transformVec3(this.mulMat4(this.inverseMat4(r,e),this.inverseMat4(o,t),i),s,a)}})(),lerpVec3(e,t,i,s,r,o){const a=o||u.vec3(),n=(e-t)/(i-t);return a[0]=s[0]+n*(r[0]-s[0]),a[1]=s[1]+n*(r[1]-s[1]),a[2]=s[2]+n*(r[2]-s[2]),a},lerpMat4(e,t,i,s,r,o){const a=o||u.mat4(),n=(e-t)/(i-t);return a[0]=s[0]+n*(r[0]-s[0]),a[1]=s[1]+n*(r[1]-s[1]),a[2]=s[2]+n*(r[2]-s[2]),a[3]=s[3]+n*(r[3]-s[3]),a[4]=s[4]+n*(r[4]-s[4]),a[5]=s[5]+n*(r[5]-s[5]),a[6]=s[6]+n*(r[6]-s[6]),a[7]=s[7]+n*(r[7]-s[7]),a[8]=s[8]+n*(r[8]-s[8]),a[9]=s[9]+n*(r[9]-s[9]),a[10]=s[10]+n*(r[10]-s[10]),a[11]=s[11]+n*(r[11]-s[11]),a[12]=s[12]+n*(r[12]-s[12]),a[13]=s[13]+n*(r[13]-s[13]),a[14]=s[14]+n*(r[14]-s[14]),a[15]=s[15]+n*(r[15]-s[15]),a},flatten(e){const t=[];let i,s,r,o,a;for(i=0,s=e.length;i(e[0]=0,e[1]=0,e[2]=0,e[3]=1,e),eulerToQuaternion(e,t,i=u.vec4()){const s=e[0]*u.DEGTORAD/2,r=e[1]*u.DEGTORAD/2,o=e[2]*u.DEGTORAD/2,a=Math.cos(s),n=Math.cos(r),l=Math.cos(o),h=Math.sin(s),c=Math.sin(r),d=Math.sin(o);return\"XYZ\"===t?(i[0]=h*n*l+a*c*d,i[1]=a*c*l-h*n*d,i[2]=a*n*d+h*c*l,i[3]=a*n*l-h*c*d):\"YXZ\"===t?(i[0]=h*n*l+a*c*d,i[1]=a*c*l-h*n*d,i[2]=a*n*d-h*c*l,i[3]=a*n*l+h*c*d):\"ZXY\"===t?(i[0]=h*n*l-a*c*d,i[1]=a*c*l+h*n*d,i[2]=a*n*d+h*c*l,i[3]=a*n*l-h*c*d):\"ZYX\"===t?(i[0]=h*n*l-a*c*d,i[1]=a*c*l+h*n*d,i[2]=a*n*d-h*c*l,i[3]=a*n*l+h*c*d):\"YZX\"===t?(i[0]=h*n*l+a*c*d,i[1]=a*c*l+h*n*d,i[2]=a*n*d-h*c*l,i[3]=a*n*l-h*c*d):\"XZY\"===t&&(i[0]=h*n*l-a*c*d,i[1]=a*c*l-h*n*d,i[2]=a*n*d+h*c*l,i[3]=a*n*l+h*c*d),i},mat4ToQuaternion(e,t=u.vec4()){const i=e[0],s=e[4],r=e[8],o=e[1],a=e[5],n=e[9],l=e[2],h=e[6],c=e[10];let d;const p=i+a+c;return p>0?(d=.5/Math.sqrt(p+1),t[3]=.25/d,t[0]=(h-n)*d,t[1]=(r-l)*d,t[2]=(o-s)*d):i>a&&i>c?(d=2*Math.sqrt(1+i-a-c),t[3]=(h-n)/d,t[0]=.25*d,t[1]=(s+o)/d,t[2]=(r+l)/d):a>c?(d=2*Math.sqrt(1+a-i-c),t[3]=(r-l)/d,t[0]=(s+o)/d,t[1]=.25*d,t[2]=(n+h)/d):(d=2*Math.sqrt(1+c-i-a),t[3]=(o-s)/d,t[0]=(r+l)/d,t[1]=(n+h)/d,t[2]=.25*d),t},vec3PairToQuaternion(e,t,i=u.vec4()){const s=Math.sqrt(u.dotVec3(e,e)*u.dotVec3(t,t));let r=s+u.dotVec3(e,t);return r<1e-8*s?(r=0,Math.abs(e[0])>Math.abs(e[2])?(i[0]=-e[1],i[1]=e[0],i[2]=0):(i[0]=0,i[1]=-e[2],i[2]=e[1])):u.cross3Vec3(e,t,i),i[3]=r,u.normalizeQuaternion(i)},angleAxisToQuaternion(e,t=u.vec4()){const i=e[3]/2,s=Math.sin(i);return t[0]=s*e[0],t[1]=s*e[1],t[2]=s*e[2],t[3]=Math.cos(i),t},quaternionToEuler:(()=>{const e=new n(16);return(t,i,s)=>(s=s||u.vec3(),u.quaternionToRotationMat4(t,e),u.mat4ToEuler(e,i,s),s)})(),mulQuaternions(e,t,i=u.vec4()){const s=e[0],r=e[1],o=e[2],a=e[3],n=t[0],l=t[1],h=t[2],c=t[3];return i[0]=a*n+s*c+r*h-o*l,i[1]=a*l+r*c+o*n-s*h,i[2]=a*h+o*c+s*l-r*n,i[3]=a*c-s*n-r*l-o*h,i},vec3ApplyQuaternion(e,t,i=u.vec3()){const s=t[0],r=t[1],o=t[2],a=e[0],n=e[1],l=e[2],h=e[3],c=h*s+n*o-l*r,d=h*r+l*s-a*o,p=h*o+a*r-n*s,f=-a*s-n*r-l*o;return i[0]=c*h+f*-a+d*-l-p*-n,i[1]=d*h+f*-n+p*-a-c*-l,i[2]=p*h+f*-l+c*-n-d*-a,i},quaternionToMat4(e,t){t=u.identityMat4(t);const i=e[0],s=e[1],r=e[2],o=e[3],a=2*i,n=2*s,l=2*r,h=a*o,c=n*o,d=l*o,p=a*i,f=n*i,_=l*i,g=n*s,m=l*s,v=l*r;return t[0]=1-(g+v),t[1]=f+d,t[2]=_-c,t[4]=f-d,t[5]=1-(p+v),t[6]=m+h,t[8]=_+c,t[9]=m-h,t[10]=1-(p+g),t},quaternionToRotationMat4(e,t){const i=e[0],s=e[1],r=e[2],o=e[3],a=i+i,n=s+s,l=r+r,h=i*a,c=i*n,u=i*l,d=s*n,p=s*l,f=r*l,_=o*a,g=o*n,m=o*l;return t[0]=1-(d+f),t[4]=c-m,t[8]=u+g,t[1]=c+m,t[5]=1-(h+f),t[9]=p-_,t[2]=u-g,t[6]=p+_,t[10]=1-(h+d),t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t},normalizeQuaternion(e,t=e){const i=u.lenVec4([e[0],e[1],e[2],e[3]]);return t[0]=e[0]/i,t[1]=e[1]/i,t[2]=e[2]/i,t[3]=e[3]/i,t},conjugateQuaternion:(e,t=e)=>(t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t),inverseQuaternion:(e,t)=>u.normalizeQuaternion(u.conjugateQuaternion(e,t)),quaternionToAngleAxis(e,t=u.vec4()){const i=(e=u.normalizeQuaternion(e,c))[3],s=2*Math.acos(i),r=Math.sqrt(1-i*i);return r<.001?(t[0]=e[0],t[1]=e[1],t[2]=e[2]):(t[0]=e[0]/r,t[1]=e[1]/r,t[2]=e[2]/r),t[3]=s,t},AABB3:e=>new n(e||6),AABB2:e=>new n(e||4),OBB3:e=>new n(e||32),OBB2:e=>new n(e||16),Sphere3:(e,t,i,s)=>new n([e,t,i,s]),transformOBB3(e,t,i=t){let s;const r=t.length;let o,a,n;const l=e[0],h=e[1],c=e[2],u=e[3],d=e[4],p=e[5],f=e[6],_=e[7],g=e[8],m=e[9],v=e[10],b=e[11],P=e[12],y=e[13],x=e[14],M=e[15];for(s=0;s{const e=new n(3),t=new n(3),i=new n(3);return s=>(e[0]=s[0],e[1]=s[1],e[2]=s[2],t[0]=s[3],t[1]=s[4],t[2]=s[5],u.subVec3(t,e,i),Math.abs(u.lenVec3(i)))})(),getAABB3DiagPoint:(()=>{const e=new n(3),t=new n(3),i=new n(3);return(s,r)=>{e[0]=s[0],e[1]=s[1],e[2]=s[2],t[0]=s[3],t[1]=s[4],t[2]=s[5];const o=u.subVec3(t,e,i),a=r[0]-s[0],n=s[3]-r[0],l=r[1]-s[1],h=s[4]-r[1],c=r[2]-s[2],d=s[5]-r[2];return o[0]+=a>n?a:n,o[1]+=l>h?l:h,o[2]+=c>d?c:d,Math.abs(u.lenVec3(o))}})(),getAABB3Area:e=>(e[3]-e[0])*(e[4]-e[1])*(e[5]-e[2]),getAABB3Center(e,t){const i=t||u.vec3();return i[0]=(e[0]+e[3])/2,i[1]=(e[1]+e[4])/2,i[2]=(e[2]+e[5])/2,i},getAABB2Center(e,t){const i=t||u.vec2();return i[0]=(e[2]+e[0])/2,i[1]=(e[3]+e[1])/2,i},collapseAABB3:(e=u.AABB3())=>(e[0]=u.MAX_DOUBLE,e[1]=u.MAX_DOUBLE,e[2]=u.MAX_DOUBLE,e[3]=u.MIN_DOUBLE,e[4]=u.MIN_DOUBLE,e[5]=u.MIN_DOUBLE,e),AABB3ToOBB3:(e,t=u.OBB3())=>(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=1,t[4]=e[3],t[5]=e[1],t[6]=e[2],t[7]=1,t[8]=e[3],t[9]=e[4],t[10]=e[2],t[11]=1,t[12]=e[0],t[13]=e[4],t[14]=e[2],t[15]=1,t[16]=e[0],t[17]=e[1],t[18]=e[5],t[19]=1,t[20]=e[3],t[21]=e[1],t[22]=e[5],t[23]=1,t[24]=e[3],t[25]=e[4],t[26]=e[5],t[27]=1,t[28]=e[0],t[29]=e[4],t[30]=e[5],t[31]=1,t),positions3ToAABB3:(()=>{const e=new n(3);return(t,i,s)=>{i=i||u.AABB3();let r,o,a,n=u.MAX_DOUBLE,l=u.MAX_DOUBLE,h=u.MAX_DOUBLE,c=u.MIN_DOUBLE,d=u.MIN_DOUBLE,p=u.MIN_DOUBLE;for(let i=0,f=t.length;ic&&(c=r),o>d&&(d=o),a>p&&(p=a);return i[0]=n,i[1]=l,i[2]=h,i[3]=c,i[4]=d,i[5]=p,i}})(),OBB3ToAABB3(e,t=u.AABB3()){let i,s,r,o=u.MAX_DOUBLE,a=u.MAX_DOUBLE,n=u.MAX_DOUBLE,l=u.MIN_DOUBLE,h=u.MIN_DOUBLE,c=u.MIN_DOUBLE;for(let t=0,u=e.length;tl&&(l=i),s>h&&(h=s),r>c&&(c=r);return t[0]=o,t[1]=a,t[2]=n,t[3]=l,t[4]=h,t[5]=c,t},points3ToAABB3(e,t=u.AABB3()){let i,s,r,o=u.MAX_DOUBLE,a=u.MAX_DOUBLE,n=u.MAX_DOUBLE,l=u.MIN_DOUBLE,h=u.MIN_DOUBLE,c=u.MIN_DOUBLE;for(let t=0,u=e.length;tl&&(l=i),s>h&&(h=s),r>c&&(c=r);return t[0]=o,t[1]=a,t[2]=n,t[3]=l,t[4]=h,t[5]=c,t},points3ToSphere3:(()=>{const e=new n(3);return(t,i)=>{i=i||u.vec4();let s,r=0,o=0,a=0;const n=t.length;for(s=0;sh&&(h=l);return i[3]=h,i}})(),positions3ToSphere3:(()=>{const e=new n(3),t=new n(3);return(i,s)=>{s=s||u.vec4();let r,o=0,a=0,n=0;const l=i.length;let h=0;for(r=0;rh&&(h=d);return s[3]=h,s}})(),OBB3ToSphere3:(()=>{const e=new n(3),t=new n(3);return(i,s)=>{s=s||u.vec4();let r,o=0,a=0,n=0;const l=i.length,h=l/4;for(r=0;rd&&(d=c);return s[3]=d,s}})(),getSphere3Center:(e,t=u.vec3())=>(t[0]=e[0],t[1]=e[1],t[2]=e[2],t),getPositionsCenter(e,t=u.vec3()){let i=0,s=0,r=0;for(var o=0,a=e.length;o(e[0]>t[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2]>t[2]&&(e[2]=t[2]),e[3](e[0]>t[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2]>t[2]&&(e[2]=t[2]),e[3]i&&(e[0]=i),e[1]>s&&(e[1]=s),e[2]>r&&(e[2]=r),e[3](e[0]=u.MAX_DOUBLE,e[1]=u.MAX_DOUBLE,e[2]=u.MIN_DOUBLE,e[3]=u.MIN_DOUBLE,e),point3AABB3Intersect:(e,t)=>e[0]>t[0]||e[3]t[1]||e[4]t[2]||e[5]0?(s=e[0]*i[0],r=e[0]*i[3]):(s=e[0]*i[3],r=e[0]*i[0]),e[1]>0?(s+=e[1]*i[1],r+=e[1]*i[4]):(s+=e[1]*i[4],r+=e[1]*i[1]),e[2]>0?(s+=e[2]*i[2],r+=e[2]*i[5]):(s+=e[2]*i[5],r+=e[2]*i[2]);if(s<=-t&&r<=-t)return-1;return s>=-t&&r>=-t?1:0},OBB3ToAABB2(e,t=u.AABB2()){let i,s,r,o,a=u.MAX_DOUBLE,n=u.MAX_DOUBLE,l=u.MIN_DOUBLE,h=u.MIN_DOUBLE;for(let t=0,c=e.length;tl&&(l=i),s>h&&(h=s);return t[0]=a,t[1]=n,t[2]=l,t[3]=h,t},expandAABB2:(e,t)=>(e[0]>t[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2](e[0]>t[0]&&(e[0]=t[0]),e[1]>t[1]&&(e[1]=t[1]),e[2]2*(1-e)*(i-t)+2*e*(s-i),tangentQuadraticBezier3:(e,t,i,s,r)=>-3*t*(1-e)*(1-e)+3*i*(1-e)*(1-e)-6*e*i*(1-e)+6*e*s*(1-e)-3*e*e*s+3*e*e*r,tangentSpline:e=>6*e*e-6*e+(3*e*e-4*e+1)+(-6*e*e+6*e)+(3*e*e-2*e),catmullRomInterpolate(e,t,i,s,r){const o=.5*(i-e),a=.5*(s-t),n=r*r;return(2*t-2*i+o+a)*(r*n)+(-3*t+3*i-2*o-a)*n+o*r+t},b2p0(e,t){const i=1-e;return i*i*t},b2p1:(e,t)=>2*(1-e)*e*t,b2p2:(e,t)=>e*e*t,b2(e,t,i,s){return this.b2p0(e,t)+this.b2p1(e,i)+this.b2p2(e,s)},b3p0(e,t){const i=1-e;return i*i*i*t},b3p1(e,t){const i=1-e;return 3*i*i*e*t},b3p2:(e,t)=>3*(1-e)*e*e*t,b3p3:(e,t)=>e*e*e*t,b3(e,t,i,s,r){return this.b3p0(e,t)+this.b3p1(e,i)+this.b3p2(e,s)+this.b3p3(e,r)},triangleNormal(e,t,i,s=u.vec3()){const r=t[0]-e[0],o=t[1]-e[1],a=t[2]-e[2],n=i[0]-e[0],l=i[1]-e[1],h=i[2]-e[2],c=o*h-a*l,d=a*n-r*h,p=r*l-o*n,f=Math.sqrt(c*c+d*d+p*p);return 0===f?(s[0]=0,s[1]=0,s[2]=0):(s[0]=c/f,s[1]=d/f,s[2]=p/f),s},rayTriangleIntersect:(()=>{const e=new n(3),t=new n(3),i=new n(3),s=new n(3),r=new n(3);return(o,a,n,l,h,c)=>{c=c||u.vec3();const d=u.subVec3(l,n,e),p=u.subVec3(h,n,t),f=u.cross3Vec3(a,p,i),_=u.dotVec3(d,f);if(_<1e-6)return null;const g=u.subVec3(o,n,s),m=u.dotVec3(g,f);if(m<0||m>_)return null;const v=u.cross3Vec3(g,d,r),b=u.dotVec3(a,v);if(b<0||m+b>_)return null;const P=u.dotVec3(p,v)/_;return c[0]=o[0]+P*a[0],c[1]=o[1]+P*a[1],c[2]=o[2]+P*a[2],c}})(),rayPlaneIntersect:(()=>{const e=new n(3),t=new n(3),i=new n(3),s=new n(3);return(r,o,a,n,l,h)=>{h=h||u.vec3(),o=u.normalizeVec3(o,e);const c=u.subVec3(n,a,t),d=u.subVec3(l,a,i),p=u.cross3Vec3(c,d,s);u.normalizeVec3(p,p);const f=-u.dotVec3(a,p),_=-(u.dotVec3(r,p)+f)/u.dotVec3(o,p);return h[0]=r[0]+_*o[0],h[1]=r[1]+_*o[1],h[2]=r[2]+_*o[2],h}})(),cartesianToBarycentric:(()=>{const e=new n(3),t=new n(3),i=new n(3);return(s,r,o,a,n)=>{const l=u.subVec3(a,r,e),h=u.subVec3(o,r,t),c=u.subVec3(s,r,i),d=u.dotVec3(l,l),p=u.dotVec3(l,h),f=u.dotVec3(l,c),_=u.dotVec3(h,h),g=u.dotVec3(h,c),m=d*_-p*p;if(0===m)return null;const v=1/m,b=(_*f-p*g)*v,P=(d*g-p*f)*v;return n[0]=1-b-P,n[1]=P,n[2]=b,n}})(),barycentricInsideTriangle(e){const t=e[1],i=e[2];return i>=0&&t>=0&&i+t<1},barycentricToCartesian(e,t,i,s,r=u.vec3()){const o=e[0],a=e[1],n=e[2];return r[0]=t[0]*o+i[0]*a+s[0]*n,r[1]=t[1]*o+i[1]*a+s[1]*n,r[2]=t[2]*o+i[2]*a+s[2]*n,r},mergeVertices(e,t,i,s){const r={},o=[],a=[],n=t?[]:null,l=i?[]:null,h=[];let c,u,d,p;const f=1e4;let _,g,m=0;for(_=0,g=e.length;_{const e=new n(3),t=new n(3),i=new n(3),s=new n(3),r=new n(3),o=new n(3);return(a,n,l)=>{let h,c;const d=new Array(a.length/3);let p,f,_,g,m,v,b;for(h=0,c=n.length;h{const e=new n(3),t=new n(3),i=new n(3),s=new n(3),r=new n(3),o=new n(3),a=new n(3);return(n,l,h)=>{const c=new Float32Array(n.length);for(let d=0;d>24&255,c=d>>16&255,h=d>>8&255,l=255&d,n=t[i],a=3*n,r[p++]=e[a],r[p++]=e[a+1],r[p++]=e[a+2],o[f++]=l,o[f++]=h,o[f++]=c,o[f++]=u,n=t[i+1],a=3*n,r[p++]=e[a],r[p++]=e[a+1],r[p++]=e[a+2],o[f++]=l,o[f++]=h,o[f++]=c,o[f++]=u,n=t[i+2],a=3*n,r[p++]=e[a],r[p++]=e[a+1],r[p++]=e[a+2],o[f++]=l,o[f++]=h,o[f++]=c,o[f++]=u,d++;return{positions:r,colors:o}},faceToVertexNormals(e,t,i={}){const s=i.smoothNormalsAngleThreshold||20,r={},o=[],a={};let n,l,h,c,d;const p=1e4;let f,_,g,m,v,b;for(_=0,m=e.length;_{const e=new n(4),t=new n(4);return(i,s,r,o,a)=>{e[0]=s[0],e[1]=s[1],e[2]=s[2],e[3]=1,u.transformVec4(i,e,t),o[0]=t[0],o[1]=t[1],o[2]=t[2],e[0]=r[0],e[1]=r[1],e[2]=r[2],u.transformVec3(i,e,t),u.normalizeVec3(t),a[0]=t[0],a[1]=t[1],a[2]=t[2]}})(),canvasPosToWorldRay:(()=>{const e=new n(16),t=new n(16),i=new n(4),s=new n(4),r=new n(4),o=new n(4);return(a,n,l,h,c,d)=>{const p=u.mulMat4(l,n,e),f=u.inverseMat4(p,t),_=a.width,g=a.height,m=(h[0]-_/2)/(_/2),v=-(h[1]-g/2)/(g/2);i[0]=m,i[1]=v,i[2]=-1,i[3]=1,u.transformVec4(f,i,s),u.mulVec4Scalar(s,1/s[3]),r[0]=m,r[1]=v,r[2]=1,r[3]=1,u.transformVec4(f,r,o),u.mulVec4Scalar(o,1/o[3]),c[0]=o[0],c[1]=o[1],c[2]=o[2],u.subVec3(o,s,d),u.normalizeVec3(d)}})(),canvasPosToLocalRay:(()=>{const e=new n(3),t=new n(3);return(i,s,r,o,a,n,l)=>{u.canvasPosToWorldRay(i,s,r,a,e,t),u.worldRayToLocalRay(o,e,t,n,l)}})(),worldRayToLocalRay:(()=>{const e=new n(16),t=new n(4),i=new n(4);return(s,r,o,a,n)=>{const l=u.inverseMat4(s,e);t[0]=r[0],t[1]=r[1],t[2]=r[2],t[3]=1,u.transformVec4(l,t,i),a[0]=i[0],a[1]=i[1],a[2]=i[2],u.transformVec3(l,o,n)}})(),buildKDTree:(()=>{const e=new Float32Array;function t(i,s,r,o){const a=new n(6),l={triangles:null,left:null,right:null,leaf:!1,splitDim:0,aabb:a};let h,c;for(a[0]=a[1]=a[2]=Number.POSITIVE_INFINITY,a[3]=a[4]=a[5]=Number.NEGATIVE_INFINITY,h=0,c=i.length;ha[3]&&(a[3]=r[t]),r[t+1]a[4]&&(a[4]=r[t+1]),r[t+2]a[5]&&(a[5]=r[t+2])}}if(i.length<20||o>10)return l.triangles=i,l.leaf=!0,l;e[0]=a[3]-a[0],e[1]=a[4]-a[1],e[2]=a[5]-a[2];let d=0;e[1]>e[d]&&(d=1),e[2]>e[d]&&(d=2),l.splitDim=d;const p=(a[d]+a[d+3])/2,f=new Array(i.length);let _=0;const g=new Array(i.length);let m=0;for(h=0,c=i.length;h{const s=e.length/3,r=new Array(s);for(let e=0;e=0?1:-1),s=(1-Math.abs(i))*(s>=0?1:-1));const o=Math.sqrt(i*i+s*s+r*r);return t[0]=i/o,t[1]=s/o,t[2]=r/o,t},octDecodeVec2s(e,t){for(let i=0,s=0,r=e.length;i=0?1:-1),o=(1-Math.abs(r))*(o>=0?1:-1));const n=Math.sqrt(r*r+o*o+a*a);t[s+0]=r/n,t[s+1]=o/n,t[s+2]=a/n,s+=3}return t}};u.buildEdgeIndices=function(){const e=[],t=[],i=[],s=[],r=[];let o=0;const a=new Uint16Array(3),n=new Uint16Array(3),l=new Uint16Array(3),h=u.vec3(),c=u.vec3(),d=u.vec3(),p=u.vec3(),f=u.vec3(),_=u.vec3(),g=u.vec3();return function(m,v,b,P){!function(r,o){const a={};let n,l,h,c;const u=Math.pow(10,4);let d,p,f=0;for(d=0,p=r.length;dx)||(R=i[D.index1],F=i[D.index2],(!N&&R>65535||F>65535)&&(N=!0),y.push(R),y.push(F));return N?new Uint32Array(y):new Uint16Array(y)}}();const d={build:{version:\"0.8\"},client:{browser:navigator&&navigator.userAgent?navigator.userAgent:\"n/a\"},components:{scenes:0,models:0,meshes:0,objects:0},memory:{meshes:0,positions:0,colors:0,normals:0,uvs:0,indices:0,textures:0,transforms:0,materials:0,programs:0},frame:{frameCount:0,fps:0,useProgram:0,bindTexture:0,bindArray:0,drawElements:0,drawArrays:0,tasksRun:0,tasksScheduled:0}};var p=[[\"0\",10],[\"A\",26],[\"a\",26],[\"_\",1],[\"$\",1]].map((function(e){for(var t=[],i=e[0].charCodeAt(0),s=i+e[1],r=i;r{};t=t||s,i=i||s;var r=new XMLHttpRequest;r.overrideMimeType(\"application/json\"),r.open(\"GET\",e,!0),r.addEventListener(\"load\",(function(e){var s=e.target.response;if(200===this.status){var r;try{r=JSON.parse(s)}catch(e){i(`utils.loadJSON(): Failed to parse JSON response - ${e}`)}t(r)}else if(0===this.status){console.warn(\"loadFile: HTTP Status 0 received.\");try{t(JSON.parse(s))}catch(e){i(`utils.loadJSON(): Failed to parse JSON response - ${e}`)}}else i(e)}),!1),r.addEventListener(\"error\",(function(e){i(e)}),!1),r.send(null)},loadArraybuffer:function(e,t,i){var s=e=>{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var a=0;a=this._headLength){const e=this._head;if(e.length=0,this._head=this._tail,this._tail=e,this._index=0,this._headLength=this._head.length,!this._headLength)return}const e=this._head[this._index];return this._index<0?delete this._head[this._index++]:this._head[this._index++]=void 0,this._length--,e}push(e){return this._length++,this._tail.push(e),this}unshift(e){return this._head[--this._index]=e,this._length++,this}},b={sceneId:null,time:null,startTime:null,prevTime:null,deltaTime:null},P=[];let y,x=0,M=0;const w=new function(){this.version=\"1.0.0\",this.scenes={},this._superTypes={},this._addScene=function(e){if(e.id){if(w.scenes[e.id])return void console.error(`[ERROR] Scene ${_.inQuotes(e.id)} already exists`)}else e.id=m.addItem({});w.scenes[e.id]=e;const t=e.ticksPerOcclusionTest,i=e.ticksPerRender;g[e.id]={ticksPerOcclusionTest:t,ticksPerRender:i,renderCountdown:i},d.components.scenes++,e.once(\"destroyed\",(()=>{m.removeItem(e.id),delete w.scenes[e.id],delete g[e.id],d.components.scenes--}))},this.clear=function(){let e;for(const t in w.scenes)w.scenes.hasOwnProperty(t)&&(e=w.scenes[t],\"default.scene\"===t?e.clear():(e.destroy(),delete w.scenes[e.id]))},this.scheduleTask=function(e,t){v.push(e),v.push(t)},this.runTasks=function(e=-1){let t,i,s=(new Date).getTime(),r=0;for(;v.length>0&&(e<0||s0){y=e-x;var t=1e3/y;M+=t,P.push(t),P.length>=30&&(M-=P.shift()),d.frame.fps=Math.round(M/P.length)}!function(e){const t=w.runTasks(e+10),i=w.getNumTasks();d.frame.tasksRun=t,d.frame.tasksScheduled=i,d.frame.tasksBudget=10}(e),function(e){for(var t in b.time=e,w.scenes)if(w.scenes.hasOwnProperty(t)){var i=w.scenes[t];b.sceneId=t,b.startTime=i.startTime,b.deltaTime=null!=b.prevTime?b.time-b.prevTime:0,i.fire(\"tick\",b,!0)}b.prevTime=e}(e),function(){const e=w.scenes,t=!1;let i,s,r,o,a;for(a in e)e.hasOwnProperty(a)&&(i=e[a],s=g[a],s||(s=g[a]={}),r=i.ticksPerOcclusionTest,s.ticksPerOcclusionTest!==r&&(s.ticksPerOcclusionTest=r,s.renderCountdown=r),--i.occlusionTestCountdown<=0&&(i.doOcclusionTest(),i.occlusionTestCountdown=r),o=i.ticksPerRender,s.ticksPerRender!==o&&(s.ticksPerRender=o,s.renderCountdown=o),0==--s.renderCountdown&&(i.render(t),s.renderCountdown=o))}(),x=e,window.requestAnimationFrame(E)};window.requestAnimationFrame(E);class C{get type(){return\"Component\"}get isComponent(){return!0}constructor(e=null,t={}){if(this.scene=null,\"Scene\"===this.type)this.scene=this,this.viewer=t.viewer;else{if(\"Scene\"===e.type)this.scene=e;else{if(!(e instanceof C))throw\"Invalid param: owner must be a Component\";this.scene=e.scene}this._owner=e,this._renderer=this.scene._renderer}this._dontClear=!!t.dontClear,this._renderer=this.scene._renderer,this.meta=t.meta||{},this.id=t.id,this.destroyed=!1,this._attached={},this._attachments=null,this._subIdMap=null,this._subIdEvents=null,this._eventSubs=null,this._eventSubsNum=null,this._events=null,this._eventCallDepth=0,this._ownedComponents=null,this!==this.scene&&this.scene._addComponent(this),this._updateScheduled=!1,e&&e._own(this)}glRedraw(){this._renderer&&(this._renderer.imageDirty(),this.castsShadow&&this._renderer.shadowsDirty())}glResort(){this._renderer&&this._renderer.needStateSort()}get owner(){return this._owner}isType(e){return this.type===e}fire(e,t,i){this._events||(this._events={}),this._eventSubs||(this._eventSubs={},this._eventSubsNum={}),!0!==i&&(this._events[e]=t||!0);const s=this._eventSubs[e];let r;if(s)for(const i in s)s.hasOwnProperty(i)&&(r=s[i],this._eventCallDepth++,this._eventCallDepth<300?r.callback.call(r.scope,t):this.error(\"fire: potential stack overflow from recursive event '\"+e+\"' - dropping this event\"),this._eventCallDepth--)}on(t,i,s){this._events||(this._events={}),this._subIdMap||(this._subIdMap=new e),this._subIdEvents||(this._subIdEvents={}),this._eventSubs||(this._eventSubs={}),this._eventSubsNum||(this._eventSubsNum={});let r=this._eventSubs[t];r?this._eventSubsNum[t]++:(r={},this._eventSubs[t]=r,this._eventSubsNum[t]=1);const o=this._subIdMap.addItem();r[o]={callback:i,scope:s||this},this._subIdEvents[o]=t;const a=this._events[t];return void 0!==a&&i.call(s||this,a),o}off(e){if(null==e)return;if(!this._subIdEvents)return;const t=this._subIdEvents[e];if(t){delete this._subIdEvents[e];const i=this._eventSubs[t];i&&(delete i[e],this._eventSubsNum[t]--),this._subIdMap.removeItem(e)}}once(e,t,i){const s=this,r=this.on(e,(function(e){s.off(r),t.call(i||this,e)}),i)}hasSubs(e){return this._eventSubsNum&&this._eventSubsNum[e]>0}log(e){e=\"[LOG]\"+this._message(e),window.console.log(e),this.scene.fire(\"log\",e)}_message(e){return\" [\"+this.type+\" \"+_.inQuotes(this.id)+\"]: \"+e}warn(e){e=\"[WARN]\"+this._message(e),window.console.warn(e),this.scene.fire(\"warn\",e)}error(e){e=\"[ERROR]\"+this._message(e),window.console.error(e),this.scene.fire(\"error\",e)}_attach(e){const t=e.name;if(!t)return void this.error(\"Component 'name' expected\");let i=e.component;const s=e.sceneDefault,r=e.sceneSingleton,o=e.type,a=e.on,n=!1!==e.recompiles;if(i&&(_.isNumeric(i)||_.isString(i))){const e=i;if(i=this.scene.components[e],!i)return void this.error(\"Component not found: \"+_.inQuotes(e))}if(!i)if(!0===r){const e=this.scene.types[o];for(const t in e)if(e.hasOwnProperty){i=e[t];break}if(!i)return this.error(\"Scene has no default component for '\"+t+\"'\"),null}else if(!0===s&&(i=this.scene[t],!i))return this.error(\"Scene has no default component for '\"+t+\"'\"),null;if(i){if(i.scene.id!==this.scene.id)return void this.error(\"Not in same scene: \"+i.type+\" \"+_.inQuotes(i.id));if(o&&!i.isType(o))return void this.error(\"Expected a \"+o+\" type or subtype: \"+i.type+\" \"+_.inQuotes(i.id))}this._attachments||(this._attachments={});const l=this._attached[t];let h,c,u;if(l){if(i&&l.id===i.id)return;const e=this._attachments[l.id];for(h=e.subs,c=0,u=h.length;c{delete this._ownedComponents[e.id]}),this)}_needUpdate(e){this._updateScheduled||(this._updateScheduled=!0,0===e?this._doUpdate():w.scheduleTask(this._doUpdate,this))}_doUpdate(){this._updateScheduled&&(this._updateScheduled=!1,this._update&&this._update())}_update(){}clear(){if(this._ownedComponents)for(var e in this._ownedComponents)if(this._ownedComponents.hasOwnProperty(e)){this._ownedComponents[e].destroy(),delete this._ownedComponents[e]}}destroy(){if(this.destroyed)return;let e,t,i,s,r,o;if(this.fire(\"destroyed\",this.destroyed=!0),this._attachments)for(e in this._attachments)if(this._attachments.hasOwnProperty(e)){for(t=this._attachments[e],i=t.component,s=t.subs,r=0,o=s.length;r1&&(e=1),s=Math.floor(255*e),i===s)return}else if(s=255,i===s)return;for(let e=0,t=this.meshes.length;e0?this.meshes[0]._colorize[3]/255:1}set offset(e){e?(this._offset[0]=e[0],this._offset[1]=e[1],this._offset[2]=e[2]):(this._offset[0]=0,this._offset[1]=0,this._offset[2]=0);for(let e=0,t=this.meshes.length;e
',this._canvas.parentElement.appendChild(e),this._element=e,this._isCustom=!1,this._adjustPosition()}_injectDefaultCSS(){const e=\"xeokit-spinner-css\";if(document.getElementById(e))return;const t=document.createElement(\"style\");t.innerHTML=\".sk-fading-circle { background: transparent; margin: 20px auto; width: 50px; height:50px; position: relative; } .sk-fading-circle .sk-circle { width: 120%; height: 120%; position: absolute; left: 0; top: 0; } .sk-fading-circle .sk-circle:before { content: ''; display: block; margin: 0 auto; width: 15%; height: 15%; background-color: #ff8800; border-radius: 100%; -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both; animation: sk-circleFadeDelay 1.2s infinite ease-in-out both; } .sk-fading-circle .sk-circle2 { -webkit-transform: rotate(30deg); -ms-transform: rotate(30deg); transform: rotate(30deg); } .sk-fading-circle .sk-circle3 { -webkit-transform: rotate(60deg); -ms-transform: rotate(60deg); transform: rotate(60deg); } .sk-fading-circle .sk-circle4 { -webkit-transform: rotate(90deg); -ms-transform: rotate(90deg); transform: rotate(90deg); } .sk-fading-circle .sk-circle5 { -webkit-transform: rotate(120deg); -ms-transform: rotate(120deg); transform: rotate(120deg); } .sk-fading-circle .sk-circle6 { -webkit-transform: rotate(150deg); -ms-transform: rotate(150deg); transform: rotate(150deg); } .sk-fading-circle .sk-circle7 { -webkit-transform: rotate(180deg); -ms-transform: rotate(180deg); transform: rotate(180deg); } .sk-fading-circle .sk-circle8 { -webkit-transform: rotate(210deg); -ms-transform: rotate(210deg); transform: rotate(210deg); } .sk-fading-circle .sk-circle9 { -webkit-transform: rotate(240deg); -ms-transform: rotate(240deg); transform: rotate(240deg); } .sk-fading-circle .sk-circle10 { -webkit-transform: rotate(270deg); -ms-transform: rotate(270deg); transform: rotate(270deg); } .sk-fading-circle .sk-circle11 { -webkit-transform: rotate(300deg); -ms-transform: rotate(300deg); transform: rotate(300deg); } .sk-fading-circle .sk-circle12 { -webkit-transform: rotate(330deg); -ms-transform: rotate(330deg); transform: rotate(330deg); } .sk-fading-circle .sk-circle2:before { -webkit-animation-delay: -1.1s; animation-delay: -1.1s; } .sk-fading-circle .sk-circle3:before { -webkit-animation-delay: -1s; animation-delay: -1s; } .sk-fading-circle .sk-circle4:before { -webkit-animation-delay: -0.9s; animation-delay: -0.9s; } .sk-fading-circle .sk-circle5:before { -webkit-animation-delay: -0.8s; animation-delay: -0.8s; } .sk-fading-circle .sk-circle6:before { -webkit-animation-delay: -0.7s; animation-delay: -0.7s; } .sk-fading-circle .sk-circle7:before { -webkit-animation-delay: -0.6s; animation-delay: -0.6s; } .sk-fading-circle .sk-circle8:before { -webkit-animation-delay: -0.5s; animation-delay: -0.5s; } .sk-fading-circle .sk-circle9:before { -webkit-animation-delay: -0.4s; animation-delay: -0.4s; } .sk-fading-circle .sk-circle10:before { -webkit-animation-delay: -0.3s; animation-delay: -0.3s; } .sk-fading-circle .sk-circle11:before { -webkit-animation-delay: -0.2s; animation-delay: -0.2s; } .sk-fading-circle .sk-circle12:before { -webkit-animation-delay: -0.1s; animation-delay: -0.1s; } @-webkit-keyframes sk-circleFadeDelay { 0%, 39%, 100% { opacity: 0; } 40% { opacity: 1; } } @keyframes sk-circleFadeDelay { 0%, 39%, 100% { opacity: 0; } 40% { opacity: 1; } }\",t.id=e,document.body.appendChild(t)}_adjustPosition(){if(this._isCustom)return;const e=this._canvas,t=this._element,i=t.style;i.left=e.offsetLeft+.5*e.clientWidth-.5*t.clientWidth+\"px\",i.top=e.offsetTop+.5*e.clientHeight-.5*t.clientHeight+\"px\"}set processes(e){if(e=e||0,this._processes===e)return;if(e<0)return;const t=this._processes;this._processes=e;const i=this._element;i&&(i.style.visibility=this._processes>0?\"visible\":\"hidden\"),this.fire(\"processes\",this._processes),0===this._processes&&this._processes!==t&&this.fire(\"zeroProcesses\",this._processes)}get processes(){return this._processes}_destroy(){this._element&&!this._isCustom&&(this._element.parentNode.removeChild(this._element),this._element=null);const e=document.getElementById(\"xeokit-spinner-css\");e&&e.parentNode.removeChild(e)}}const G={WEBGL:!1,SUPPORTED_EXTENSIONS:{}},X=document.createElement(\"canvas\");if(X){const e=X.getContext(\"webgl\",{antialias:!0})||X.getContext(\"experimental-webgl\",{antialias:!0});G.WEBGL=!!e,G.WEBGL&&(G.ANTIALIAS=e.getContextAttributes().antialias,e.getShaderPrecisionFormat?e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0?G.FS_MAX_FLOAT_PRECISION=\"highp\":e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?G.FS_MAX_FLOAT_PRECISION=\"mediump\":G.FS_MAX_FLOAT_PRECISION=\"lowp\":G.FS_MAX_FLOAT_PRECISION=\"mediump\",G.DEPTH_BUFFER_BITS=e.getParameter(e.DEPTH_BITS),G.MAX_TEXTURE_SIZE=e.getParameter(e.MAX_TEXTURE_SIZE),G.MAX_CUBE_MAP_SIZE=e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),G.MAX_RENDERBUFFER_SIZE=e.getParameter(e.MAX_RENDERBUFFER_SIZE),G.MAX_TEXTURE_UNITS=e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS),G.MAX_TEXTURE_IMAGE_UNITS=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),G.MAX_VERTEX_ATTRIBS=e.getParameter(e.MAX_VERTEX_ATTRIBS),G.MAX_VERTEX_UNIFORM_VECTORS=e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),G.MAX_FRAGMENT_UNIFORM_VECTORS=e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),G.MAX_VARYING_VECTORS=e.getParameter(e.MAX_VARYING_VECTORS),e.getSupportedExtensions().forEach((function(e){G.SUPPORTED_EXTENSIONS[e]=!0})),G.depthTexturesSupported=G.SUPPORTED_EXTENSIONS.WEBGL_depth_texture)}const H=[\"webgl\",\"experimental-webgl\",\"webkit-3d\",\"moz-webgl\",\"moz-glweb20\"];class W extends C{get type(){return\"Canvas\"}constructor(e,t={}){super(e,t),this._backgroundColor=u.vec3([t.backgroundColor?t.backgroundColor[0]:1,t.backgroundColor?t.backgroundColor[1]:1,t.backgroundColor?t.backgroundColor[2]:1]),this._backgroundColorFromAmbientLight=!!t.backgroundColorFromAmbientLight,this.canvas=t.canvas,this.gl=null,this.webgl2=!1,this.transparent=!!t.transparent,this.contextAttr=t.contextAttr||{},this.contextAttr.alpha=this.transparent,this.contextAttr.preserveDrawingBuffer=!!this.contextAttr.preserveDrawingBuffer,this.contextAttr.stencil=!1,this.contextAttr.premultipliedAlpha=!!this.contextAttr.premultipliedAlpha,this.contextAttr.antialias=!1!==this.contextAttr.antialias,this.canvas.width=this.canvas.clientWidth,this.canvas.height=this.canvas.clientHeight,this.boundary=[this.canvas.offsetLeft,this.canvas.offsetTop,this.canvas.clientWidth,this.canvas.clientHeight],this._initWebGL(t);const i=this;this.canvas.addEventListener(\"webglcontextlost\",this._webglcontextlostListener=function(e){console.time(\"webglcontextrestored\"),i.scene._webglContextLost(),i.fire(\"webglcontextlost\"),e.preventDefault()},!1),this.canvas.addEventListener(\"webglcontextrestored\",this._webglcontextrestoredListener=function(e){i._initWebGL(),i.gl&&(i.scene._webglContextRestored(i.gl),i.fire(\"webglcontextrestored\",i.gl),e.preventDefault()),console.timeEnd(\"webglcontextrestored\")},!1);let s=null,r=null,o=null,a=null,n=null,l=null,h=null;this._tick=this.scene.on(\"tick\",(function(){const e=i.canvas,t=window.innerWidth!==s||window.innerHeight!==r,c=e.clientWidth!==o||e.clientHeight!==a,u=e.offsetLeft!==n||e.offsetTop!==l,p=e.parentElement;if(t||c||u||p!==h){if(i._spinner._adjustPosition(),c||u){const t=e.clientWidth,s=e.clientHeight;if(c){let t,i=0;for(const e in w.scenes)w.scenes.hasOwnProperty(e)&&(t=w.scenes[e],i+=t.canvas.canvas.clientWidth*t.canvas.canvas.clientHeight);d.memory.pixels=i,e.width=e.clientWidth,e.height=e.clientHeight}const r=i.boundary;r[0]=e.offsetLeft,r[1]=e.offsetTop,r[2]=t,r[3]=s,i.fire(\"boundary\",r),o=t,a=s}t&&(s=window.innerWidth,r=window.innerHeight),u&&(n=e.offsetLeft,l=e.offsetTop),h=p}})),this._spinner=new U(this.scene,{canvas:this.canvas,elementId:t.spinnerElementId})}_createCanvas(){const e=\"xeokit-canvas-\"+u.createUUID(),t=document.getElementsByTagName(\"body\")[0],i=document.createElement(\"div\"),s=i.style;s.height=\"100%\",s.width=\"100%\",s.padding=\"0\",s.margin=\"0\",s.background=\"rgba(0,0,0,0);\",s.float=\"left\",s.left=\"0\",s.top=\"0\",s.position=\"absolute\",s.opacity=\"1.0\",s[\"z-index\"]=\"-10000\",i.innerHTML+='',t.appendChild(i),this.canvas=document.getElementById(e)}_getElementXY(e){let t=0,i=0;for(;e;)t+=e.offsetLeft-e.scrollLeft,i+=e.offsetTop-e.scrollTop,e=e.offsetParent;return{x:t,y:i}}_initWebGL(){if(!this.gl)for(let e=0;!this.gl&&e0&&\"/\"===i.charAt(s+1)&&(i=i.substring(0,s)),t.push(i);return t.join(\"\\n\")}function ie(e){console.error(e.join(\"\\n\"))}class se{constructor(e,t){this.id=ee.addItem({}),this.source=t,this.init(e)}init(e){if(this.gl=e,this.allocated=!1,this.compiled=!1,this.linked=!1,this.validated=!1,this.errors=null,this.uniforms={},this.samplers={},this.attributes={},this._vertexShader=new Q(e,e.VERTEX_SHADER,te(this.source.vertex)),this._fragmentShader=new Q(e,e.FRAGMENT_SHADER,te(this.source.fragment)),!this._vertexShader.allocated)return this.errors=[\"Vertex shader failed to allocate\"].concat(this._vertexShader.errors),void ie(this.errors);if(!this._fragmentShader.allocated)return this.errors=[\"Fragment shader failed to allocate\"].concat(this._fragmentShader.errors),void ie(this.errors);if(this.allocated=!0,!this._vertexShader.compiled)return this.errors=[\"Vertex shader failed to compile\"].concat(this._vertexShader.errors),void ie(this.errors);if(!this._fragmentShader.compiled)return this.errors=[\"Fragment shader failed to compile\"].concat(this._fragmentShader.errors),void ie(this.errors);let t,i,s,r,o;if(this.compiled=!0,this.handle=e.createProgram(),!this.handle)return void(this.errors=[\"Failed to allocate program\"]);if(e.attachShader(this.handle,this._vertexShader.handle),e.attachShader(this.handle,this._fragmentShader.handle),e.linkProgram(this.handle),this.linked=e.getProgramParameter(this.handle,e.LINK_STATUS),this.validated=!0,!this.linked||!this.validated)return this.errors=[],this.errors.push(\"\"),this.errors.push(e.getProgramInfoLog(this.handle)),this.errors.push(\"\\nVertex shader:\\n\"),this.errors=this.errors.concat(this.source.vertex),this.errors.push(\"\\nFragment shader:\\n\"),this.errors=this.errors.concat(this.source.fragment),void ie(this.errors);const a=e.getProgramParameter(this.handle,e.ACTIVE_UNIFORMS);for(i=0;ithis.dataLength?e.slice(0,this.dataLength):e,this.usage),this._gl.bindBuffer(this.type,null),this.length=e.length,this.numItems=this.length/this.itemSize,this.allocated=!0)}setData(e,t){this.allocated&&(e.length+(t||0)>this.length?(this.destroy(),this._allocate(e)):(this._gl.bindBuffer(this.type,this._handle),t||0===t?this._gl.bufferSubData(this.type,t*this.itemByteSize,e):this._gl.bufferData(this.type,e,this.usage),this._gl.bindBuffer(this.type,null)))}bind(){this.allocated&&this._gl.bindBuffer(this.type,this._handle)}unbind(){this.allocated&&this._gl.bindBuffer(this.type,null)}destroy(){this.allocated&&(this._gl.deleteBuffer(this._handle),this._handle=null,this.allocated=!1)}}class oe{constructor(e,t){this.scene=e,this.aabb=u.AABB3(),this.rtcCenter=u.vec3(t),this.rtcCenterHash=this.rtcCenter.join(),this.numMarkers=0,this.markers={},this.markerList=[],this.markerIndices={},this.positions=[],this.indices=[],this.positionsBuf=null,this.lenPositionsBuf=0,this.indicesBuf=null,this.sectionPlanesActive=[],this.culledBySectionPlanes=!1,this.occlusionTestList=[],this.lenOcclusionTestList=0,this.pixels=[],this.aabbDirty=!1,this.markerListDirty=!1,this.positionsDirty=!0,this.occlusionTestListDirty=!1}addMarker(e){this.markers[e.id]=e,this.markerListDirty=!0,this.numMarkers++}markerWorldPosUpdated(e){if(!this.markers[e.id])return;const t=this.markerIndices[e.id];this.positions[3*t+0]=e.worldPos[0],this.positions[3*t+1]=e.worldPos[1],this.positions[3*t+2]=e.worldPos[2],this.positionsDirty=!0}removeMarker(e){delete this.markers[e.id],this.markerListDirty=!0,this.numMarkers--}update(){this.markerListDirty&&(this._buildMarkerList(),this.markerListDirty=!1,this.positionsDirty=!0,this.occlusionTestListDirty=!0),this.positionsDirty&&(this._buildPositions(),this.positionsDirty=!1,this.aabbDirty=!0,this.vbosDirty=!0),this.aabbDirty&&(this._buildAABB(),this.aabbDirty=!1),this.vbosDirty&&(this._buildVBOs(),this.vbosDirty=!1),this.occlusionTestListDirty&&this._buildOcclusionTestList(),this._updateActiveSectionPlanes()}_buildMarkerList(){for(var e in this.numMarkers=0,this.markers)this.markers.hasOwnProperty(e)&&(this.markerList[this.numMarkers]=this.markers[e],this.markerIndices[e]=this.numMarkers,this.numMarkers++);this.markerList.length=this.numMarkers}_buildPositions(){let e=0;for(let t=0;t-t){i._setVisible(!1);continue}const a=i.canvasPos,n=a[0],l=a[1];n+10<0||l+10<0||n-10>s||l-10>r?i._setVisible(!1):!i.entity||i.entity.visible?i.occludable?(this.occlusionTestList[this.lenOcclusionTestList++]=i,this.pixels[o++]=n,this.pixels[o++]=l):i._setVisible(!0):i._setVisible(!1)}}_updateActiveSectionPlanes(){const e=this.scene._sectionPlanesState.sectionPlanes,t=e.length;if(t>0)for(let i=0;i{this._occlusionTestListDirty=!0})),this._onCameraProjMatrix=e.camera.on(\"projMatrix\",(()=>{this._occlusionTestListDirty=!0})),this._onCanvasBoundary=e.canvas.on(\"boundary\",(()=>{this._occlusionTestListDirty=!0}))}addMarker(e){const t=e.rtcCenter.join();let i=this._occlusionLayers[t];i||(i=new oe(this._scene,e.rtcCenter),this._occlusionLayers[i.rtcCenterHash]=i,this._occlusionLayersListDirty=!0),i.addMarker(e),this._markersToOcclusionLayersMap[e.id]=i,this._occlusionTestListDirty=!0}markerWorldPosUpdated(e){const t=this._markersToOcclusionLayersMap[e.id];if(!t)return void e.error(\"Marker has not been added to OcclusionTester\");const i=e.rtcCenter.join();if(i!==t.rtcCenterHash){1===t.numMarkers?(t.destroy(),delete this._occlusionLayers[t.rtcCenterHash],this._occlusionLayersListDirty=!0):t.removeMarker(e);let s=this._occlusionLayers[i];s||(s=new oe(this._scene,e.rtcCenter),this._occlusionLayers[i]=t,this._occlusionLayersListDirty=!0),s.addMarker(e),this._markersToOcclusionLayersMap[e.id]=s}else t.markerWorldPosUpdated(e)}removeMarker(e){const t=e.rtcCenter.join();let i=this._occlusionLayers[t];i&&(1===i.numMarkers?(i.destroy(),delete this._occlusionLayers[i.rtcCenterHash],this._occlusionLayersListDirty=!0):i.removeMarker(e),delete this._markersToOcclusionLayersMap[e.id])}get needOcclusionTest(){return this._occlusionTestListDirty}bindRenderBuf(){const e=[this._scene.canvas.canvas.id,this._scene._sectionPlanesState.getHash()].join(\";\");if(e!==this._shaderSourceHash&&(this._shaderSourceHash=e,this._shaderSourceDirty=!0),this._shaderSourceDirty&&(this._buildShaderSource(),this._shaderSourceDirty=!1,this._programDirty=!0),this._programDirty&&(this._buildProgram(),this._programDirty=!1,this._occlusionTestListDirty=!0),this._occlusionLayersListDirty&&(this._buildOcclusionLayersList(),this._occlusionLayersListDirty=!1),this._occlusionTestListDirty){for(let e=0,t=this._occlusionLayersList.length;e0,i=[];return i.push(\"// OcclusionTester vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"attribute vec3 position;\"),i.push(\"uniform mat4 modelMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\")),t&&i.push(\"varying vec4 vWorldPosition;\"),i.push(\"void main(void) {\"),i.push(\"vec4 worldPosition = vec4(position, 1.0); \"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition;\"),t&&i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vec4 clipPos = projMatrix * viewPosition;\"),i.push(\" gl_Position = clipPos;\"),i.push(\" gl_PointSize = 20.0;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\"))),i.push(\"}\"),i}_buildFragmentShaderSource(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// OcclusionTester fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\");for(let e=0;e 0.0) { discard; }\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); \"),s.push(\"}\"),s}_buildProgram(){this._program&&this._program.destroy();const e=this._scene,t=e.canvas.gl,i=e._sectionPlanesState;if(this._program=new se(t,this._shaderSource),this._program.errors)return void(this.errors=this._program.errors);const s=this._program;this._uViewMatrix=s.getLocation(\"viewMatrix\"),this._uProjMatrix=s.getLocation(\"projMatrix\"),this._uSectionPlanes=[];for(let e=0,t=i.sectionPlanes.length;e0){const e=s.sectionPlanes;for(let s=0;s{let e=!0;this._scene.camera.on(\"projMatrix\",(function(){e=!0}));const t=u.mat4();return()=>(e&&u.inverseMat4(s.camera.projMatrix,t),t)})());const t=this._scene.canvas.gl,i=this._program,s=this._scene,r=s.sao,o=t.drawingBufferWidth,a=t.drawingBufferHeight,n=s.camera.project._state,l=n.near,h=n.far,c=n.matrix,d=this._getInverseProjectMat(),p=Math.random(),f=\"perspective\"===s.camera.projection;he[0]=o,he[1]=a,t.getExtension(\"OES_standard_derivatives\"),t.viewport(0,0,o,a),t.clearColor(0,0,0,1),t.disable(t.DEPTH_TEST),t.disable(t.BLEND),t.frontFace(t.CCW),t.clear(t.COLOR_BUFFER_BIT),i.bind(),t.uniform1f(this._uCameraNear,l),t.uniform1f(this._uCameraFar,h),t.uniformMatrix4fv(this._uCameraProjectionMatrix,!1,c),t.uniformMatrix4fv(this._uCameraInverseProjectionMatrix,!1,d),t.uniform1i(this._uPerspective,f),t.uniform1f(this._uScale,r.scale*(h/5)),t.uniform1f(this._uIntensity,r.intensity),t.uniform1f(this._uBias,r.bias),t.uniform1f(this._uKernelRadius,r.kernelRadius),t.uniform1f(this._uMinResolution,r.minResolution),t.uniform2fv(this._uViewport,he),t.uniform1f(this._uRandomSeed,p);const _=G.SUPPORTED_EXTENSIONS.WEBGL_depth_texture?e.getDepthTexture():e.getTexture();i.bindTexture(this._uDepthTexture,_,0),this._aUV.bindArrayBuffer(this._uvBuf),this._aPosition.bindArrayBuffer(this._positionsBuf),this._indicesBuf.bind(),t.drawElements(t.TRIANGLES,this._indicesBuf.numItems,this._indicesBuf.itemType,0)}_build(){let e=!1;const t=this._scene.sao;if(t.numSamples!==this._numSamples&&(this._numSamples=Math.floor(t.numSamples),e=!0),!e)return;const i=this._scene.canvas.gl;if(this._program&&(this._program.destroy(),this._program=null),this._program=new se(i,{vertex:[\"precision highp float;\\n precision highp int;\\n \\n attribute vec3 aPosition;\\n attribute vec2 aUV; \\n \\n varying vec2 vUV;\\n \\n void main () {\\n gl_Position = vec4(aPosition, 1.0);\\n vUV = aUV;\\n }\"],fragment:[`#extension GL_OES_standard_derivatives : require \\n precision highp float;\\n precision highp int; \\n \\n #define NORMAL_TEXTURE 0\\n #define PI 3.14159265359\\n #define PI2 6.28318530718\\n #define EPSILON 1e-6\\n #define NUM_SAMPLES ${this._numSamples}\\n #define NUM_RINGS 4 \\n \\n varying vec2 vUV;\\n \\n uniform sampler2D uDepthTexture;\\n \\n uniform float uCameraNear;\\n uniform float uCameraFar;\\n uniform mat4 uProjectMatrix;\\n uniform mat4 uInverseProjectMatrix;\\n \\n uniform bool uPerspective;\\n\\n uniform float uScale;\\n uniform float uIntensity;\\n uniform float uBias;\\n uniform float uKernelRadius;\\n uniform float uMinResolution;\\n uniform vec2 uViewport;\\n uniform float uRandomSeed;\\n\\n float pow2( const in float x ) { return x*x; }\\n \\n highp float rand( const in vec2 uv ) {\\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n return fract(sin(sn) * c);\\n }\\n\\n vec3 packNormalToRGB( const in vec3 normal ) {\\n return normalize( normal ) * 0.5 + 0.5;\\n }\\n\\n vec3 unpackRGBToNormal( const in vec3 rgb ) {\\n return 2.0 * rgb.xyz - 1.0;\\n }\\n\\n const float packUpscale = 256. / 255.;\\n const float unpackDownScale = 255. / 256.; \\n\\n const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\n const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. ); \\n\\n const float shiftRights = 1. / 256.;\\n\\n vec4 packFloatToRGBA( const in float v ) {\\n vec4 r = vec4( fract( v * packFactors ), v );\\n r.yzw -= r.xyz * shiftRights; \\n return r * packUpscale;\\n }\\n\\n float unpackRGBAToFloat( const in vec4 v ) { \\n return dot( floor( v * 255.0 + 0.5 ) / 255.0, unPackFactors );\\n }\\n \\n float perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n return ( near * far ) / ( ( far - near ) * invClipZ - far );\\n }\\n\\n float orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n return linearClipZ * ( near - far ) - near;\\n }\\n \\n float getDepth( const in vec2 screenPosition ) {`+(G.SUPPORTED_EXTENSIONS.WEBGL_depth_texture?\"return texture2D(uDepthTexture, screenPosition).r;\":\"return unpackRGBAToFloat(texture2D( uDepthTexture, screenPosition));\")+\"}\\n\\n float getViewZ( const in float depth ) {\\n if (uPerspective) {\\n return perspectiveDepthToViewZ( depth, uCameraNear, uCameraFar );\\n } else {\\n return orthographicDepthToViewZ( depth, uCameraNear, uCameraFar );\\n }\\n }\\n\\n vec3 getViewPos( const in vec2 screenPos, const in float depth, const in float viewZ ) {\\n \\tfloat clipW = uProjectMatrix[2][3] * viewZ + uProjectMatrix[3][3];\\n \\tvec4 clipPosition = vec4( ( vec3( screenPos, depth ) - 0.5 ) * 2.0, 1.0 );\\n \\tclipPosition *= clipW; \\n \\treturn ( uInverseProjectMatrix * clipPosition ).xyz;\\n }\\n\\n vec3 getViewNormal( const in vec3 viewPosition, const in vec2 screenPos ) { \\n return normalize( cross( dFdx( viewPosition ), dFdy( viewPosition ) ) );\\n }\\n\\n float scaleDividedByCameraFar;\\n float minResolutionMultipliedByCameraFar;\\n\\n float getOcclusion( const in vec3 centerViewPosition, const in vec3 centerViewNormal, const in vec3 sampleViewPosition ) {\\n \\tvec3 viewDelta = sampleViewPosition - centerViewPosition;\\n \\tfloat viewDistance = length( viewDelta );\\n \\tfloat scaledScreenDistance = scaleDividedByCameraFar * viewDistance;\\n \\treturn max(0.0, (dot(centerViewNormal, viewDelta) - minResolutionMultipliedByCameraFar) / scaledScreenDistance - uBias) / (1.0 + pow2( scaledScreenDistance ) );\\n }\\n\\n const float ANGLE_STEP = PI2 * float( NUM_RINGS ) / float( NUM_SAMPLES );\\n const float INV_NUM_SAMPLES = 1.0 / float( NUM_SAMPLES );\\n\\n float getAmbientOcclusion( const in vec3 centerViewPosition ) {\\n \\n \\tscaleDividedByCameraFar = uScale / uCameraFar;\\n \\tminResolutionMultipliedByCameraFar = uMinResolution * uCameraFar;\\n \\tvec3 centerViewNormal = getViewNormal( centerViewPosition, vUV );\\n\\n \\tfloat angle = rand( vUV + uRandomSeed ) * PI2;\\n \\tvec2 radius = vec2( uKernelRadius * INV_NUM_SAMPLES ) / uViewport;\\n \\tvec2 radiusStep = radius;\\n\\n \\tfloat occlusionSum = 0.0;\\n \\tfloat weightSum = 0.0;\\n\\n \\tfor( int i = 0; i < NUM_SAMPLES; i ++ ) {\\n \\t\\tvec2 sampleUv = vUV + vec2( cos( angle ), sin( angle ) ) * radius;\\n \\t\\tradius += radiusStep;\\n \\t\\tangle += ANGLE_STEP;\\n\\n \\t\\tfloat sampleDepth = getDepth( sampleUv );\\n \\t\\tif( sampleDepth >= ( 1.0 - EPSILON ) ) {\\n \\t\\t\\tcontinue;\\n \\t\\t}\\n\\n \\t\\tfloat sampleViewZ = getViewZ( sampleDepth );\\n \\t\\tvec3 sampleViewPosition = getViewPos( sampleUv, sampleDepth, sampleViewZ );\\n \\t\\tocclusionSum += getOcclusion( centerViewPosition, centerViewNormal, sampleViewPosition );\\n \\t\\tweightSum += 1.0;\\n \\t}\\n\\n \\tif( weightSum == 0.0 ) discard;\\n\\n \\treturn occlusionSum * ( uIntensity / weightSum );\\n }\\n\\n void main() {\\n \\n \\tfloat centerDepth = getDepth( vUV );\\n \\t\\n \\tif( centerDepth >= ( 1.0 - EPSILON ) ) {\\n \\t\\tdiscard;\\n \\t}\\n\\n \\tfloat centerViewZ = getViewZ( centerDepth );\\n \\tvec3 viewPosition = getViewPos( vUV, centerDepth, centerViewZ );\\n\\n \\tfloat ambientOcclusion = getAmbientOcclusion( viewPosition );\\n \\n \\tgl_FragColor = packFloatToRGBA( 1.0- ambientOcclusion );\\n }\"]}),this._program.errors)return console.error(this._program.errors.join(\"\\n\")),void(this._programError=!0);const s=new Float32Array([1,1,0,1,0,0,1,0]),r=new Float32Array([1,1,0,-1,1,0,-1,-1,0,1,-1,0]),o=new Uint8Array([0,1,2,0,2,3]);this._positionsBuf=new re(i,i.ARRAY_BUFFER,r,r.length,3,i.STATIC_DRAW),this._uvBuf=new re(i,i.ARRAY_BUFFER,s,s.length,2,i.STATIC_DRAW),this._indicesBuf=new re(i,i.ELEMENT_ARRAY_BUFFER,o,o.length,1,i.STATIC_DRAW),this._program.bind(),this._uCameraNear=this._program.getLocation(\"uCameraNear\"),this._uCameraFar=this._program.getLocation(\"uCameraFar\"),this._uCameraProjectionMatrix=this._program.getLocation(\"uProjectMatrix\"),this._uCameraInverseProjectionMatrix=this._program.getLocation(\"uInverseProjectMatrix\"),this._uPerspective=this._program.getLocation(\"uPerspective\"),this._uScale=this._program.getLocation(\"uScale\"),this._uIntensity=this._program.getLocation(\"uIntensity\"),this._uBias=this._program.getLocation(\"uBias\"),this._uKernelRadius=this._program.getLocation(\"uKernelRadius\"),this._uMinResolution=this._program.getLocation(\"uMinResolution\"),this._uViewport=this._program.getLocation(\"uViewport\"),this._uRandomSeed=this._program.getLocation(\"uRandomSeed\"),this._aPosition=this._program.getAttribute(\"aPosition\"),this._aUV=this._program.getAttribute(\"aUV\"),this._dirty=!1}destroy(){this._program&&(this._program.destroy(),this._program=null)}}const ue=new Float32Array(me(17,[0,1])),de=new Float32Array(me(17,[1,0])),pe=new Float32Array(function(e,t){const i=[];for(let s=0;s<=e;s++)i.push(ge(s,t));return i}(17,4)),fe=new Float32Array(2);class _e{constructor(e){this._scene=e,this._program=null,this._programError=!1,this._aPosition=null,this._aUV=null,this._uDepthTexture=\"uDepthTexture\",this._uOcclusionTexture=\"uOcclusionTexture\",this._uViewport=null,this._uCameraNear=null,this._uCameraFar=null,this._uCameraProjectionMatrix=null,this._uCameraInverseProjectionMatrix=null,this._uScale=null,this._uIntensity=null,this._uBias=null,this._uKernelRadius=null,this._uMinResolution=null,this._uvBuf=null,this._positionsBuf=null,this._indicesBuf=null,this.init()}init(){const e=this._scene.canvas.gl;if(this._program=new se(e,{vertex:[\"precision highp float;\\n precision highp int;\\n \\n attribute vec3 aPosition;\\n attribute vec2 aUV;\\n uniform vec2 uViewport;\\n varying vec2 vUV;\\n varying vec2 vInvSize;\\n void main () {\\n vUV = aUV;\\n vInvSize = 1.0 / uViewport;\\n gl_Position = vec4(aPosition, 1.0);\\n }\"],fragment:[\"precision highp float;\\n precision highp int;\\n \\n #define PI 3.14159265359\\n #define PI2 6.28318530718\\n #define EPSILON 1e-6\\n\\n #define KERNEL_RADIUS 16\\n\\n varying vec2 vUV;\\n varying vec2 vInvSize;\\n \\n uniform sampler2D uDepthTexture;\\n uniform sampler2D uOcclusionTexture; \\n \\n uniform float uCameraNear;\\n uniform float uCameraFar; \\n uniform float uDepthCutoff;\\n\\n uniform vec2 uSampleOffsets[ KERNEL_RADIUS + 1 ];\\n uniform float uSampleWeights[ KERNEL_RADIUS + 1 ];\\n\\n const float unpackDownscale = 255. / 256.; \\n\\n const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\n const vec4 unpackFactors = unpackDownscale / vec4( packFactors, 1. ); \\n\\n const float packUpscale = 256. / 255.;\\n \\n const float shiftRights = 1. / 256.;\\n \\n float unpackRGBAToFloat( const in vec4 v ) {\\n return dot( floor( v * 255.0 + 0.5 ) / 255.0, unpackFactors );\\n } \\n\\n vec4 packFloatToRGBA( const in float v ) {\\n vec4 r = vec4( fract( v * packFactors ), v );\\n r.yzw -= r.xyz * shiftRights; \\n return r * packUpscale;\\n }\\n\\n float viewZToOrthographicDepth( const in float viewZ) {\\n return ( viewZ + uCameraNear ) / ( uCameraNear - uCameraFar );\\n }\\n \\n float orthographicDepthToViewZ( const in float linearClipZ) {\\n return linearClipZ * ( uCameraNear - uCameraFar ) - uCameraNear;\\n }\\n\\n float viewZToPerspectiveDepth( const in float viewZ) {\\n return (( uCameraNear + viewZ ) * uCameraFar ) / (( uCameraFar - uCameraNear ) * viewZ );\\n }\\n \\n float perspectiveDepthToViewZ( const in float invClipZ) {\\n return ( uCameraNear * uCameraFar ) / ( ( uCameraFar - uCameraNear ) * invClipZ - uCameraFar );\\n }\\n\\n float getDepth( const in vec2 screenPosition ) {\"+(G.SUPPORTED_EXTENSIONS.WEBGL_depth_texture?\"return texture2D(uDepthTexture, screenPosition).r;\":\"return unpackRGBAToFloat(texture2D( uDepthTexture, screenPosition));\")+\"}\\n\\n float getViewZ( const in float depth ) {\\n return perspectiveDepthToViewZ( depth );\\n }\\n\\n void main() {\\n \\n float depth = getDepth( vUV );\\n if( depth >= ( 1.0 - EPSILON ) ) {\\n discard;\\n }\\n\\n float centerViewZ = -getViewZ( depth );\\n bool rBreak = false;\\n bool lBreak = false;\\n\\n float weightSum = uSampleWeights[0];\\n float occlusionSum = unpackRGBAToFloat(texture2D( uOcclusionTexture, vUV )) * weightSum;\\n\\n for( int i = 1; i <= KERNEL_RADIUS; i ++ ) {\\n\\n float sampleWeight = uSampleWeights[i];\\n vec2 sampleUVOffset = uSampleOffsets[i] * vInvSize;\\n\\n vec2 sampleUV = vUV + sampleUVOffset;\\n float viewZ = -getViewZ( getDepth( sampleUV ) );\\n\\n if( abs( viewZ - centerViewZ ) > uDepthCutoff ) {\\n rBreak = true;\\n }\\n\\n if( ! rBreak ) {\\n occlusionSum += unpackRGBAToFloat(texture2D( uOcclusionTexture, sampleUV )) * sampleWeight;\\n weightSum += sampleWeight;\\n }\\n\\n sampleUV = vUV - sampleUVOffset;\\n viewZ = -getViewZ( getDepth( sampleUV ) );\\n\\n if( abs( viewZ - centerViewZ ) > uDepthCutoff ) {\\n lBreak = true;\\n }\\n\\n if( ! lBreak ) {\\n occlusionSum += unpackRGBAToFloat(texture2D( uOcclusionTexture, sampleUV )) * sampleWeight;\\n weightSum += sampleWeight;\\n }\\n }\\n\\n gl_FragColor = packFloatToRGBA(occlusionSum / weightSum);\\n }\"]}),this._program.errors)return console.error(this._program.errors.join(\"\\n\")),void(this._programError=!0);const t=new Float32Array([1,1,0,1,0,0,1,0]),i=new Float32Array([1,1,0,-1,1,0,-1,-1,0,1,-1,0]),s=new Uint8Array([0,1,2,0,2,3]);this._positionsBuf=new re(e,e.ARRAY_BUFFER,i,i.length,3,e.STATIC_DRAW),this._uvBuf=new re(e,e.ARRAY_BUFFER,t,t.length,2,e.STATIC_DRAW),this._indicesBuf=new re(e,e.ELEMENT_ARRAY_BUFFER,s,s.length,1,e.STATIC_DRAW),this._program.bind(),this._uViewport=this._program.getLocation(\"uViewport\"),this._uCameraNear=this._program.getLocation(\"uCameraNear\"),this._uCameraFar=this._program.getLocation(\"uCameraFar\"),this._uDepthCutoff=this._program.getLocation(\"uDepthCutoff\"),this._uSampleOffsets=e.getUniformLocation(this._program.handle,\"uSampleOffsets\"),this._uSampleWeights=e.getUniformLocation(this._program.handle,\"uSampleWeights\"),this._aPosition=this._program.getAttribute(\"aPosition\"),this._aUV=this._program.getAttribute(\"aUV\")}render(e,t,i){if(this._programError)return;this._getInverseProjectMat||(this._getInverseProjectMat=(()=>{let e=!0;this._scene.camera.on(\"projMatrix\",(function(){e=!0}));const t=u.mat4();return()=>(e&&u.inverseMat4(o.camera.projMatrix,t),t)})());const s=this._scene.canvas.gl,r=this._program,o=this._scene,a=s.drawingBufferWidth,n=s.drawingBufferHeight,l=o.camera.project._state,h=l.near,c=l.far;s.viewport(0,0,a,n),s.clearColor(0,0,0,1),s.enable(s.DEPTH_TEST),s.disable(s.BLEND),s.frontFace(s.CCW),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),r.bind(),fe[0]=a,fe[1]=n,s.uniform2fv(this._uViewport,fe),s.uniform1f(this._uCameraNear,h),s.uniform1f(this._uCameraFar,c),s.uniform1f(this._uDepthCutoff,.01),0===i?s.uniform2fv(this._uSampleOffsets,de):s.uniform2fv(this._uSampleOffsets,ue),s.uniform1fv(this._uSampleWeights,pe);const d=G.SUPPORTED_EXTENSIONS.WEBGL_depth_texture?e.getDepthTexture():e.getTexture(),p=t.getTexture();r.bindTexture(this._uDepthTexture,d,0),r.bindTexture(this._uOcclusionTexture,p,1),this._aUV.bindArrayBuffer(this._uvBuf),this._aPosition.bindArrayBuffer(this._positionsBuf),this._indicesBuf.bind(),s.drawElements(s.TRIANGLES,this._indicesBuf.numItems,this._indicesBuf.itemType,0)}destroy(){this._program.destroy()}}function ge(e,t){return Math.exp(-e*e/(t*t*2))/(Math.sqrt(2*Math.PI)*t)}function me(e,t){const i=[];for(let s=0;s<=e;s++)i.push(t[0]*s),i.push(t[1]*s);return i}const ve=function(t,i){i=i||{};const s=new Y(t),r=t.canvas.canvas,o=t.canvas.gl,a=!!i.transparent,n=i.alphaDepthMask,l=new e({});let h={},c={},p=!0,f=!0,_=!0;const g=new K(r,o,{depthTexture:G.SUPPORTED_EXTENSIONS.WEBGL_depth_texture}),m=new K(r,o),v=new K(r,o),b=new K(r,o),P=new K(r,o);let y=!1;const x=new ce(t),M=new _e(t);function w(){p&&(!function(){for(let e in h)if(h.hasOwnProperty(e)){const t=h[e],i=t.drawableMap,s=t.drawableListPreCull;let r=0;for(let e in i)i.hasOwnProperty(e)&&(s[r++]=i[e]);s.length=r}}(),p=!1,f=!0),f&&(!function(){for(let e in h)if(h.hasOwnProperty(e)){const t=h[e];t.isStateSortable&&t.drawableListPreCull.sort(t.stateSortCompare)}}(),f=!1,_=!0),_&&function(){for(let e in h)if(h.hasOwnProperty(e)){const t=h[e],i=t.drawableListPreCull,s=t.drawableList;let r=0;for(let e=0,t=i.length;e0)for(s.withSAO=!0,A=0;A0)for(A=0;A0)for(A=0;A0)for(A=0;A0||k>0||R>0||F>0){if(o.enable(o.CULL_FACE),o.enable(o.BLEND),a?(o.blendEquation(o.FUNC_ADD),o.blendFuncSeparate(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA,o.ONE,o.ONE_MINUS_SRC_ALPHA)):(o.blendEquation(o.FUNC_ADD),o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA)),s.backfaces=!1,n||o.depthMask(!1),k>0)for(A=0;A0)for(A=0;A0||F>0)&&o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),F>0)for(A=0;A0)for(A=0;A0||j>0){if(s.lastProgramId=null,o.clear(o.DEPTH_BUFFER_BIT),j>0)for(A=0;A0)for(A=0;A0||U>0||V>0){if(s.lastProgramId=null,o.clear(o.DEPTH_BUFFER_BIT),o.enable(o.CULL_FACE),o.enable(o.BLEND),a?(o.blendEquation(o.FUNC_ADD),o.blendFuncSeparate(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA,o.ONE,o.ONE_MINUS_SRC_ALPHA)):o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),U>0)for(A=0;A0)for(A=0;A0||H>0){if(s.lastProgramId=null,o.clear(o.DEPTH_BUFFER_BIT),H>0)for(A=0;A0)for(A=0;A0||Y>0){if(s.lastProgramId=null,o.clear(o.DEPTH_BUFFER_BIT),o.enable(o.CULL_FACE),o.enable(o.BLEND),a?(o.blendEquation(o.FUNC_ADD),o.blendFuncSeparate(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA,o.ONE,o.ONE_MINUS_SRC_ALPHA)):o.blendFunc(o.SRC_ALPHA,o.ONE_MINUS_SRC_ALPHA),Y>0)for(A=0;A0)for(A=0;A{this.enabled&&this.keyboardEnabled&&\"INPUT\"!==e.target.tagName&&\"TEXTAREA\"!==e.target.tagName&&(e.keyCode===this.KEY_CTRL?this.ctrlDown=!0:e.keyCode===this.KEY_ALT?this.altDown=!0:e.keyCode===this.KEY_SHIFT&&(this.shiftDown=!0),this.keyDown[e.keyCode]=!0,this.fire(\"keydown\",e.keyCode,!0))},!1),this._keyboardEventsElement.addEventListener(\"keyup\",this._keyUpListener=e=>{this.enabled&&this.keyboardEnabled&&\"INPUT\"!==e.target.tagName&&\"TEXTAREA\"!==e.target.tagName&&(e.keyCode===this.KEY_CTRL?this.ctrlDown=!1:e.keyCode===this.KEY_ALT?this.altDown=!1:e.keyCode===this.KEY_SHIFT&&(this.shiftDown=!1),this.keyDown[e.keyCode]=!1,this.fire(\"keyup\",e.keyCode,!0))}),this.element.addEventListener(\"mouseenter\",this._mouseEnterListener=e=>{this.enabled&&(this.mouseover=!0,this._getMouseCanvasPos(e),this.fire(\"mouseenter\",this.mouseCanvasPos,!0))}),this.element.addEventListener(\"mouseleave\",this._mouseLeaveListener=e=>{this.enabled&&(this.mouseover=!1,this._getMouseCanvasPos(e),this.fire(\"mouseleave\",this.mouseCanvasPos,!0))}),this.element.addEventListener(\"mousedown\",this._mouseDownListener=e=>{if(this.enabled){switch(e.which){case 1:this.mouseDownLeft=!0;break;case 2:this.mouseDownMiddle=!0;break;case 3:this.mouseDownRight=!0}this._getMouseCanvasPos(e),this.element.focus(),this.fire(\"mousedown\",this.mouseCanvasPos,!0),this.mouseover&&e.preventDefault()}}),document.addEventListener(\"mouseup\",this._mouseUpListener=e=>{if(this.enabled){switch(e.which){case 1:this.mouseDownLeft=!1;break;case 2:this.mouseDownMiddle=!1;break;case 3:this.mouseDownRight=!1}this.fire(\"mouseup\",this.mouseCanvasPos,!0)}},!0),document.addEventListener(\"click\",this._clickListener=e=>{if(this.enabled){switch(e.which){case 1:this.mouseDownLeft=!1,this.mouseDownRight=!1;break;case 2:this.mouseDownMiddle=!1;break;case 3:this.mouseDownLeft=!1,this.mouseDownRight=!1}this._getMouseCanvasPos(e),this.fire(\"click\",this.mouseCanvasPos,!0),this.mouseover&&e.preventDefault()}}),document.addEventListener(\"dblclick\",this._dblClickListener=e=>{if(this.enabled){switch(e.which){case 1:this.mouseDownLeft=!1,this.mouseDownRight=!1;break;case 2:this.mouseDownMiddle=!1;break;case 3:this.mouseDownLeft=!1,this.mouseDownRight=!1}this._getMouseCanvasPos(e),this.fire(\"dblclick\",this.mouseCanvasPos,!0),this.mouseover&&e.preventDefault()}}),this.element.addEventListener(\"mousemove\",this._mouseMoveListener=e=>{this.enabled&&(this._getMouseCanvasPos(e),this.fire(\"mousemove\",this.mouseCanvasPos,!0),this.mouseover&&e.preventDefault())}),this.element.addEventListener(\"wheel\",this._mouseWheelListener=(e,t)=>{if(!this.enabled)return;const i=Math.max(-1,Math.min(1,40*-e.deltaY));this.fire(\"mousewheel\",i,!0)},{passive:!0});{let e,t;const i=2;this.on(\"mousedown\",(i=>{e=i[0],t=i[1]})),this.on(\"mouseup\",(s=>{e>=s[0]-i&&e<=s[0]+i&&t>=s[1]-i&&t<=s[1]+i&&this.fire(\"mouseclicked\",s,!0)}))}this._eventsBound=!0}}_unbindEvents(){this._eventsBound&&(this._keyboardEventsElement.removeEventListener(\"keydown\",this._keyDownListener),this._keyboardEventsElement.removeEventListener(\"keyup\",this._keyUpListener),this.element.removeEventListener(\"mouseenter\",this._mouseEnterListener),this.element.removeEventListener(\"mouseleave\",this._mouseLeaveListener),this.element.removeEventListener(\"mousedown\",this._mouseDownListener),document.removeEventListener(\"mouseup\",this._mouseDownListener),document.removeEventListener(\"click\",this._clickListener),document.removeEventListener(\"dblclick\",this._dblClickListener),this.element.removeEventListener(\"mousemove\",this._mouseMoveListener),this.element.removeEventListener(\"wheel\",this._mouseWheelListener),window.OrientationChangeEvent&&window.removeEventListener(\"orientationchange\",this._orientationchangedListener),window.DeviceMotionEvent&&window.removeEventListener(\"devicemotion\",this._deviceMotionListener),window.DeviceOrientationEvent&&window.removeEventListener(\"deviceorientation\",this._deviceOrientListener),this._eventsBound=!1)}_getMouseCanvasPos(e){if(e){let t=e.target,i=0,s=0;for(;t.offsetParent;)i+=t.offsetLeft,s+=t.offsetTop,t=t.offsetParent;this.mouseCanvasPos[0]=e.pageX-i,this.mouseCanvasPos[1]=e.pageY-s}else e=window.event,this.mouseCanvasPos[0]=e.x,this.mouseCanvasPos[1]=e.y}setEnabled(e){this.enabled!==e&&this.fire(\"enabled\",this.enabled=e)}getEnabled(){return this.enabled}setKeyboardEnabled(e){this.keyboardEnabled=e}getKeyboardEnabled(){return this.keyboardEnabled}destroy(){super.destroy(),this._unbindEvents()}}const Pe=new e({});class ye{constructor(e){this.id=Pe.addItem({});for(const t in e)e.hasOwnProperty(t)&&(this[t]=e[t])}destroy(){Pe.removeItem(this.id)}}class xe extends C{get type(){return\"Viewport\"}constructor(e,t={}){super(e,t),this._state=new ye({boundary:[0,0,100,100]}),this.boundary=t.boundary,this.autoBoundary=t.autoBoundary}set boundary(e){if(!this._autoBoundary){if(!e){const t=this.scene.canvas.boundary;e=[0,0,t[2],t[3]]}this._state.boundary=e,this.glRedraw(),this.fire(\"boundary\",this._state.boundary)}}get boundary(){return this._state.boundary}set autoBoundary(e){(e=!!e)!==this._autoBoundary&&(this._autoBoundary=e,this._autoBoundary?this._onCanvasSize=this.scene.canvas.on(\"boundary\",(function(e){const t=e[2],i=e[3];this._state.boundary=[0,0,t,i],this.glRedraw(),this.fire(\"boundary\",this._state.boundary)}),this):this._onCanvasSize&&(this.scene.canvas.off(this._onCanvasSize),this._onCanvasSize=null),this.fire(\"autoBoundary\",this._autoBoundary))}get autoBoundary(){return this._autoBoundary}_getState(){return this._state}destroy(){super.destroy(),this._state.destroy()}}class Me extends C{get type(){return\"Perspective\"}constructor(e,t={}){super(e,t),this.camera=e,this._state=new ye({matrix:u.mat4(),inverseMatrix:u.mat4(),transposedMatrix:u.mat4(),near:.1,far:2e3}),this._inverseMatrixDirty=!0,this._transposedMatrixDirty=!0,this._fov=60,this._canvasResized=this.scene.canvas.on(\"boundary\",this._needUpdate,this),this.fov=t.fov,this.fovAxis=t.fovAxis,this.near=t.near,this.far=t.far}_update(){const e=this.scene.viewport.boundary,t=e[2]/e[3],i=this._fovAxis;let s=this._fov;(\"x\"===i||\"min\"===i&&t<1||\"max\"===i&&t>1)&&(s/=t),s=Math.min(s,120),u.perspectiveMat4(s*(Math.PI/180),t,this._state.near,this._state.far,this._state.matrix),this._inverseMatrixDirty=!0,this._transposedMatrixDirty=!0,this.glRedraw(),this.fire(\"matrix\",this._state.matrix)}set fov(e){(e=null!=e?e:60)!==this._fov&&(this._fov=e,this._needUpdate(0),this.fire(\"fov\",this._fov))}get fov(){return this._fov}set fovAxis(e){e=e||\"min\",this._fovAxis!==e&&(\"x\"!==e&&\"y\"!==e&&\"min\"!==e&&(this.error(\"Unsupported value for 'fovAxis': \"+e+\" - defaulting to 'min'\"),e=\"min\"),this._fovAxis=e,this._needUpdate(0),this.fire(\"fovAxis\",this._fovAxis))}get fovAxis(){return this._fovAxis}set near(e){const t=null!=e?e:.1;this._state.near!==t&&(this._state.near=t,this._needUpdate(0),this.fire(\"near\",this._state.near))}get near(){return this._state.near}set far(e){const t=null!=e?e:2e3;this._state.far!==t&&(this._state.far=t,this._needUpdate(0),this.fire(\"far\",this._state.far))}get far(){return this._state.far}get matrix(){return this._updateScheduled&&this._doUpdate(),this._state.matrix}get inverseMatrix(){return this._updateScheduled&&this._doUpdate(),this._inverseMatrixDirty&&(u.inverseMat4(this._state.matrix,this._state.inverseMatrix),this._inverseMatrixDirty=!1),this._state.inverseMatrix}get transposedMatrix(){return this._updateScheduled&&this._doUpdate(),this._transposedMatrixDirty&&(u.transposeMat4(this._state.matrix,this._state.transposedMatrix),this._transposedMatrixDirty=!1),this._state.transposedMatrix}unproject(e,t,i,s,r){const o=this.scene.canvas.canvas,a=o.offsetWidth/2,n=o.offsetHeight/2;return i[0]=(e[0]-a)/a,i[1]=(e[1]-n)/n,i[2]=t,i[3]=1,u.mulMat4v4(this.inverseMatrix,i,s),u.mulVec3Scalar(s,1/s[3]),s[3]=1,s[1]*=-1,u.mulMat4v4(this.camera.inverseViewMatrix,s,r),r}destroy(){super.destroy(),this._state.destroy(),this.scene.canvas.off(this._canvasResized)}}class we extends C{get type(){return\"Ortho\"}constructor(e,t={}){super(e,t),this.camera=e,this._state=new ye({matrix:u.mat4(),inverseMatrix:u.mat4(),transposedMatrix:u.mat4(),near:.1,far:2e3}),this._inverseMatrixDirty=!0,this._transposedMatrixDirty=!0,this.scale=t.scale,this.near=t.near,this.far=t.far,this._onCanvasBoundary=this.scene.canvas.on(\"boundary\",this._needUpdate,this)}_update(){const e=this.scene,t=.5*this._scale,i=e.viewport.boundary,s=i[2],r=i[3],o=s/r;let a,n,l,h;s>r?(a=-t,n=t,l=t/o,h=-t/o):(a=-t*o,n=t*o,l=t,h=-t),u.orthoMat4c(a,n,h,l,this._state.near,this._state.far,this._state.matrix),this._inverseMatrixDirty=!0,this._transposedMatrixDirty=!0,this.glRedraw(),this.fire(\"matrix\",this._state.matrix)}set scale(e){null==e&&(e=1),e<=0&&(e=.01),this._scale=e,this._needUpdate(0),this.fire(\"scale\",this._scale)}get scale(){return this._scale}set near(e){const t=null!=e?e:.1;this._state.near!==t&&(this._state.near=t,this._needUpdate(0),this.fire(\"near\",this._state.near))}get near(){return this._state.near}set far(e){const t=null!=e?e:2e3;this._state.far!==t&&(this._state.far=t,this._needUpdate(0),this.fire(\"far\",this._state.far))}get far(){return this._state.far}get matrix(){return this._updateScheduled&&this._doUpdate(),this._state.matrix}get inverseMatrix(){return this._updateScheduled&&this._doUpdate(),this._inverseMatrixDirty&&(u.inverseMat4(this._state.matrix,this._state.inverseMatrix),this._inverseMatrixDirty=!1),this._state.inverseMatrix}get transposedMatrix(){return this._updateScheduled&&this._doUpdate(),this._transposedMatrixDirty&&(u.transposeMat4(this._state.matrix,this._state.transposedMatrix),this._transposedMatrixDirty=!1),this._state.transposedMatrix}unproject(e,t,i,s,r){const o=this.scene.canvas.canvas,a=o.offsetWidth/2,n=o.offsetHeight/2;return i[0]=(e[0]-a)/a,i[1]=(e[1]-n)/n,i[2]=t,i[3]=1,u.mulMat4v4(this.inverseMatrix,i,s),u.mulVec3Scalar(s,1/s[3]),s[3]=1,s[1]*=-1,u.mulMat4v4(this.camera.inverseViewMatrix,s,r),r}destroy(){super.destroy(),this._state.destroy(),this.scene.canvas.off(this._onCanvasBoundary)}}class Ee extends C{get type(){return\"Frustum\"}constructor(e,t={}){super(e,t),this.camera=e,this._state=new ye({matrix:u.mat4(),inverseMatrix:u.mat4(),transposedMatrix:u.mat4(),near:.1,far:1e4}),this._left=-1,this._right=1,this._bottom=-1,this._top=1,this._inverseMatrixDirty=!0,this._transposedMatrixDirty=!0,this.left=t.left,this.right=t.right,this.bottom=t.bottom,this.top=t.top,this.near=t.near,this.far=t.far}_update(){u.frustumMat4(this._left,this._right,this._bottom,this._top,this._state.near,this._state.far,this._state.matrix),this._inverseMatrixDirty=!0,this._transposedMatrixDirty=!0,this.glRedraw(),this.fire(\"matrix\",this._state.matrix)}set left(e){this._left=null!=e?e:-1,this._needUpdate(0),this.fire(\"left\",this._left)}get left(){return this._left}set right(e){this._right=null!=e?e:1,this._needUpdate(0),this.fire(\"right\",this._right)}get right(){return this._right}set top(e){this._top=null!=e?e:1,this._needUpdate(0),this.fire(\"top\",this._top)}get top(){return this._top}set bottom(e){this._bottom=null!=e?e:-1,this._needUpdate(0),this.fire(\"bottom\",this._bottom)}get bottom(){return this._bottom}set near(e){this._state.near=null!=e?e:.1,this._needUpdate(0),this.fire(\"near\",this._state.near)}get near(){return this._state.near}set far(e){this._state.far=null!=e?e:1e4,this._needUpdate(0),this.fire(\"far\",this._state.far)}get far(){return this._state.far}get matrix(){return this._updateScheduled&&this._doUpdate(),this._state.matrix}get inverseMatrix(){return this._updateScheduled&&this._doUpdate(),this._inverseMatrixDirty&&(u.inverseMat4(this._state.matrix,this._state.inverseMatrix),this._inverseMatrixDirty=!1),this._state.inverseMatrix}get transposedMatrix(){return this._updateScheduled&&this._doUpdate(),this._transposedMatrixDirty&&(u.transposeMat4(this._state.matrix,this._state.transposedMatrix),this._transposedMatrixDirty=!1),this._state.transposedMatrix}unproject(e,t,i,s,r){const o=this.scene.canvas.canvas,a=o.offsetWidth/2,n=o.offsetHeight/2;return i[0]=(e[0]-a)/a,i[1]=(e[1]-n)/n,i[2]=t,i[3]=1,u.mulMat4v4(this.inverseMatrix,i,s),u.mulVec3Scalar(s,1/s[3]),s[3]=1,s[1]*=-1,u.mulMat4v4(this.camera.inverseViewMatrix,s,r),r}destroy(){super.destroy(),this._state.destroy(),super.destroy()}}class Ce extends C{get type(){return\"CustomProjection\"}constructor(e,t={}){super(e,t),this.camera=e,this._state=new ye({matrix:u.mat4(),inverseMatrix:u.mat4(),transposedMatrix:u.mat4()}),this._inverseMatrixDirty=!0,this._transposedMatrixDirty=!1,this.matrix=t.matrix}set matrix(e){this._state.matrix.set(e||[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),this._inverseMatrixDirty=!0,this._transposedMatrixDirty=!0,this.glRedraw(),this.fire(\"far\",this._state.matrix)}get matrix(){return this._state.matrix}get inverseMatrix(){return this._updateScheduled&&this._doUpdate(),this._inverseMatrixDirty&&(u.inverseMat4(this._state.matrix,this._state.inverseMatrix),this._inverseMatrixDirty=!1),this._state.inverseMatrix}get transposedMatrix(){return this._updateScheduled&&this._doUpdate(),this._transposedMatrixDirty&&(u.transposeMat4(this._state.matrix,this._state.transposedMatrix),this._transposedMatrixDirty=!1),this._state.transposedMatrix}unproject(e,t,i,s,r){const o=this.scene.canvas.canvas,a=o.offsetWidth/2,n=o.offsetHeight/2;return i[0]=(e[0]-a)/a,i[1]=(e[1]-n)/n,i[2]=t,i[3]=1,u.mulMat4v4(this.inverseMatrix,i,s),u.mulVec3Scalar(s,1/s[3]),s[3]=1,s[1]*=-1,u.mulMat4v4(this.camera.inverseViewMatrix,s,r),r}destroy(){super.destroy(),this._state.destroy()}}const Ae=u.vec3(),Se=u.vec3(),De=u.vec3(),Le=u.vec3(),Be=u.vec3(),Te=u.vec3(),Re=u.mat4(),Fe=u.mat4(),Ne=u.vec3(),Ie=u.vec3(),Oe=u.vec3(),ke=u.vec3();class Ve extends C{get type(){return\"Camera\"}constructor(e,t={}){super(e,t),this._state=new ye({deviceMatrix:u.mat4(),hasDeviceMatrix:!1,matrix:u.mat4(),normalMatrix:u.mat4(),inverseMatrix:u.mat4()}),this._perspective=new Me(this),this._ortho=new we(this),this._frustum=new Ee(this),this._customProjection=new Ce(this),this._project=this._perspective,this._eye=u.vec3([0,0,10]),this._look=u.vec3([0,0,0]),this._up=u.vec3([0,1,0]),this._worldUp=u.vec3([0,1,0]),this._worldRight=u.vec3([1,0,0]),this._worldForward=u.vec3([0,0,-1]),this.deviceMatrix=t.deviceMatrix,this.eye=t.eye,this.look=t.look,this.up=t.up,this.worldAxis=t.worldAxis,this.gimbalLock=t.gimbalLock,this.constrainPitch=t.constrainPitch,this.projection=t.projection,this._perspective.on(\"matrix\",(()=>{\"perspective\"===this._projectionType&&this.fire(\"projMatrix\",this._perspective.matrix)})),this._ortho.on(\"matrix\",(()=>{\"ortho\"===this._projectionType&&this.fire(\"projMatrix\",this._ortho.matrix)})),this._frustum.on(\"matrix\",(()=>{\"frustum\"===this._projectionType&&this.fire(\"projMatrix\",this._frustum.matrix)})),this._customProjection.on(\"matrix\",(()=>{\"customProjection\"===this._projectionType&&this.fire(\"projMatrix\",this._customProjection.matrix)}))}_update(){const e=this._state;let t;\"ortho\"===this.projection?(u.subVec3(this._eye,this._look,Ne),u.normalizeVec3(Ne,Ie),u.mulVec3Scalar(Ie,1e3,Oe),u.addVec3(this._look,Oe,ke),t=ke):t=this._eye,e.hasDeviceMatrix?(u.lookAtMat4v(t,this._look,this._up,Fe),u.mulMat4(e.deviceMatrix,Fe,e.matrix)):u.lookAtMat4v(t,this._look,this._up,e.matrix),u.inverseMat4(this._state.matrix,this._state.inverseMatrix),u.transposeMat4(this._state.inverseMatrix,this._state.normalMatrix),this.glRedraw(),this.fire(\"matrix\",this._state.matrix),this.fire(\"viewMatrix\",this._state.matrix)}orbitYaw(e){let t=u.subVec3(this._eye,this._look,Ae);u.rotationMat4v(.0174532925*e,this._gimbalLock?this._worldUp:this._up,Re),t=u.transformPoint3(Re,t,Se),this.eye=u.addVec3(this._look,t,De),this.up=u.transformPoint3(Re,this._up,Le)}orbitPitch(e){if(this._constrainPitch&&(e=u.dotVec3(this._up,this._worldUp)/u.DEGTORAD)<1)return;let t=u.subVec3(this._eye,this._look,Ae);const i=u.cross3Vec3(u.normalizeVec3(t,Se),u.normalizeVec3(this._up,De));u.rotationMat4v(.0174532925*e,i,Re),t=u.transformPoint3(Re,t,Le),this.up=u.transformPoint3(Re,this._up,Be),this.eye=u.addVec3(t,this._look,Te)}yaw(e){let t=u.subVec3(this._look,this._eye,Ae);u.rotationMat4v(.0174532925*e,this._gimbalLock?this._worldUp:this._up,Re),t=u.transformPoint3(Re,t,Se),this.look=u.addVec3(t,this._eye,De),this._gimbalLock&&(this.up=u.transformPoint3(Re,this._up,Le))}pitch(e){if(this._constrainPitch&&(e=u.dotVec3(this._up,this._worldUp)/u.DEGTORAD)<1)return;let t=u.subVec3(this._look,this._eye,Ae);const i=u.cross3Vec3(u.normalizeVec3(t,Se),u.normalizeVec3(this._up,De));u.rotationMat4v(.0174532925*e,i,Re),this.up=u.transformPoint3(Re,this._up,Te),t=u.transformPoint3(Re,t,Le),this.look=u.addVec3(t,this._eye,Be)}pan(e){const t=u.subVec3(this._eye,this._look,Ae),i=[0,0,0];let s;if(0!==e[0]){const r=u.cross3Vec3(u.normalizeVec3(t,[]),u.normalizeVec3(this._up,Se));s=u.mulVec3Scalar(r,e[0]),i[0]+=s[0],i[1]+=s[1],i[2]+=s[2]}0!==e[1]&&(s=u.mulVec3Scalar(u.normalizeVec3(this._up,De),e[1]),i[0]+=s[0],i[1]+=s[1],i[2]+=s[2]),0!==e[2]&&(s=u.mulVec3Scalar(u.normalizeVec3(t,Le),e[2]),i[0]+=s[0],i[1]+=s[1],i[2]+=s[2]),this.eye=u.addVec3(this._eye,i,Be),this.look=u.addVec3(this._look,i,Te)}zoom(e){const t=u.subVec3(this._eye,this._look,Ae),i=Math.abs(u.lenVec3(t,Se)),s=Math.abs(i+e);if(s<.5)return;const r=u.normalizeVec3(t,De);this.eye=u.addVec3(this._look,u.mulVec3Scalar(r,s),Le)}set eye(e){this._eye.set(e||[0,0,10]),this._needUpdate(0),this.fire(\"eye\",this._eye)}get eye(){return this._eye}set look(e){this._look.set(e||[0,0,0]),this._needUpdate(0),this.fire(\"look\",this._look)}get look(){return this._look}set up(e){this._up.set(e||[0,1,0]),this._needUpdate(0),this.fire(\"up\",this._up)}get up(){return this._up}set deviceMatrix(e){this._state.deviceMatrix.set(e||[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]),this._state.hasDeviceMatrix=!!e,this._needUpdate(0),this.fire(\"deviceMatrix\",this._state.deviceMatrix)}get deviceMatrix(){return this._state.deviceMatrix}set worldAxis(e){e=e||[1,0,0,0,1,0,0,0,1],this._worldAxis?this._worldAxis.set(e):this._worldAxis=u.vec3(e),this._worldRight[0]=this._worldAxis[0],this._worldRight[1]=this._worldAxis[1],this._worldRight[2]=this._worldAxis[2],this._worldUp[0]=this._worldAxis[3],this._worldUp[1]=this._worldAxis[4],this._worldUp[2]=this._worldAxis[5],this._worldForward[0]=this._worldAxis[6],this._worldForward[1]=this._worldAxis[7],this._worldForward[2]=this._worldAxis[8],this.fire(\"worldAxis\",this._worldAxis)}get worldAxis(){return this._worldAxis}get worldUp(){return this._worldUp}get xUp(){return this._worldUp[0]>this._worldUp[1]&&this._worldUp[0]>this._worldUp[2]}get yUp(){return this._worldUp[1]>this._worldUp[0]&&this._worldUp[1]>this._worldUp[2]}get zUp(){return this._worldUp[2]>this._worldUp[0]&&this._worldUp[2]>this._worldUp[1]}get worldRight(){return this._worldRight}get worldForward(){return this._worldForward}set gimbalLock(e){this._gimbalLock=!1!==e,this.fire(\"gimbalLock\",this._gimbalLock)}get gimbalLock(){return this._gimbalLock}set constrainPitch(e){this._constrainPitch=!!e,this.fire(\"constrainPitch\",this._constrainPitch)}get eyeLookDist(){return u.lenVec3(u.subVec3(this._look,this._eye,Ae))}get matrix(){return this._updateScheduled&&this._doUpdate(),this._state.matrix}get viewMatrix(){return this._updateScheduled&&this._doUpdate(),this._state.matrix}get normalMatrix(){return this._updateScheduled&&this._doUpdate(),this._state.normalMatrix}get viewNormalMatrix(){return this._updateScheduled&&this._doUpdate(),this._state.normalMatrix}get inverseViewMatrix(){return this._updateScheduled&&this._doUpdate(),this._state.inverseMatrix}get projMatrix(){return this[this.projection].matrix}get perspective(){return this._perspective}get ortho(){return this._ortho}get frustum(){return this._frustum}get customProjection(){return this._customProjection}set projection(e){e=e||\"perspective\",this._projectionType!==e&&(\"perspective\"===e?this._project=this._perspective:\"ortho\"===e?this._project=this._ortho:\"frustum\"===e?this._project=this._frustum:\"customProjection\"===e?this._project=this._customProjection:(this.error(\"Unsupported value for 'projection': \"+e+\" defaulting to 'perspective'\"),this._project=this._perspective,e=\"perspective\"),this._project._update(),this._projectionType=e,this.glRedraw(),this._update(),this.fire(\"dirty\"),this.fire(\"projection\",this._projectionType),this.fire(\"projMatrix\",this._project.matrix))}get projection(){return this._projectionType}get project(){return this._project}destroy(){super.destroy(),this._state.destroy()}}class je extends C{get type(){return\"Light\"}get isLight(){return!0}constructor(e,t={}){super(e,t)}}class ze extends je{get type(){return\"DirLight\"}constructor(e,t={}){super(e,t),this._shadowRenderBuf=null,this._shadowViewMatrix=null,this._shadowProjMatrix=null,this._shadowViewMatrixDirty=!0,this._shadowProjMatrixDirty=!0;const i=this.scene.camera,s=this.scene.canvas;this._onCameraViewMatrix=i.on(\"viewMatrix\",(()=>{this._shadowViewMatrixDirty=!0})),this._onCameraProjMatrix=i.on(\"projMatrix\",(()=>{this._shadowProjMatrixDirty=!0})),this._onCanvasBoundary=s.on(\"boundary\",(()=>{this._shadowProjMatrixDirty=!0})),this._state=new ye({type:\"dir\",dir:u.vec3([1,1,1]),color:u.vec3([.7,.7,.8]),intensity:1,space:t.space||\"view\",castsShadow:!1,getShadowViewMatrix:()=>{if(this._shadowViewMatrixDirty){this._shadowViewMatrix||(this._shadowViewMatrix=u.identityMat4());const e=this.scene.camera,t=this._state.dir,i=e.look,s=[i[0]-t[0],i[1]-t[1],i[2]-t[2]],r=[0,1,0];u.lookAtMat4v(s,i,r,this._shadowViewMatrix),this._shadowViewMatrixDirty=!1}return this._shadowViewMatrix},getShadowProjMatrix:()=>(this._shadowProjMatrixDirty&&(this._shadowProjMatrix||(this._shadowProjMatrix=u.identityMat4()),u.orthoMat4c(-40,40,-40,40,-40,80,this._shadowProjMatrix),this._shadowProjMatrixDirty=!1),this._shadowProjMatrix),getShadowRenderBuf:()=>(this._shadowRenderBuf||(this._shadowRenderBuf=new K(this.scene.canvas.canvas,this.scene.canvas.gl,{size:[1024,1024]})),this._shadowRenderBuf)}),this.dir=t.dir,this.color=t.color,this.intensity=t.intensity,this.castsShadow=t.castsShadow,this.scene._lightCreated(this)}set dir(e){this._state.dir.set(e||[1,1,1]),this._shadowViewMatrixDirty=!0,this.glRedraw()}get dir(){return this._state.dir}set color(e){this._state.color.set(e||[.7,.7,.8]),this.glRedraw()}get color(){return this._state.color}set intensity(e){e=void 0!==e?e:1,this._state.intensity=e,this.glRedraw()}get intensity(){return this._state.intensity}set castsShadow(e){e=!!e,this._state.castsShadow!==e&&(this._state.castsShadow=e,this._shadowViewMatrixDirty=!0,this.glRedraw())}get castsShadow(){return this._state.castsShadow}destroy(){const e=this.scene.camera,t=this.scene.canvas;e.off(this._onCameraViewMatrix),e.off(this._onCameraProjMatrix),t.off(this._onCanvasBoundary),super.destroy(),this._state.destroy(),this._shadowRenderBuf&&this._shadowRenderBuf.destroy(),this.scene._lightDestroyed(this),this.glRedraw()}}class Ue extends je{get type(){return\"AmbientLight\"}constructor(e,t={}){super(e,t),this._state={type:\"ambient\",color:u.vec3([.7,.7,.7]),intensity:1},this.color=t.color,this.intensity=t.intensity,this.scene._lightCreated(this)}set color(e){this._state.color.set(e||[.7,.7,.8]),this.glRedraw()}get color(){return this._state.color}set intensity(e){this._state.intensity=void 0!==e?e:1,this.glRedraw()}get intensity(){return this._state.intensity}destroy(){super.destroy(),this.scene._lightDestroyed(this)}}class Ge extends C{get type(){return\"Geometry\"}get isGeometry(){return!0}constructor(e,t={}){super(e,t),d.memory.meshes++}destroy(){super.destroy(),d.memory.meshes--}}var Xe=function(){const e=[],t=[],i=[],s=[],r=[];let o=0;const a=new Uint16Array(3),n=new Uint16Array(3),l=new Uint16Array(3),h=u.vec3(),c=u.vec3(),d=u.vec3(),p=u.vec3(),f=u.vec3(),_=u.vec3(),g=u.vec3();return function(m,v,b,P){!function(r,o){const a={};let n,l,h,c;const u=Math.pow(10,4);let d,p,f=0;for(d=0,p=r.length;dx)||(R=i[D.index1],F=i[D.index2],(!N&&R>65535||F>65535)&&(N=!0),y.push(R),y.push(F));return N?new Uint32Array(y):new Uint16Array(y)}}();function He(e,t,i,s){let r=e[t]/(Math.abs(e[t])+Math.abs(e[t+1])+Math.abs(e[t+2])),o=e[t+1]/(Math.abs(e[t])+Math.abs(e[t+1])+Math.abs(e[t+2]));if(e[t+2]<0){let e=(1-Math.abs(o))*(r>=0?1:-1),t=(1-Math.abs(r))*(o>=0?1:-1);r=e,o=t}return new Int8Array([Math[i](127.5*r+(r<0?-1:0)),Math[s](127.5*o+(o<0?-1:0))])}function We(e){let t=e[0],i=e[1];t/=t<0?127:128,i/=i<0?127:128;const s=1-Math.abs(t)-Math.abs(i);s<0&&(t=(1-Math.abs(i))*(t>=0?1:-1),i=(1-Math.abs(t))*(i>=0?1:-1));const r=Math.sqrt(t*t+i*i+s*s);return[t/r,i/r,s/r]}function Ye(e,t,i){return e[t]*i[0]+e[t+1]*i[1]+e[t+2]*i[2]}const qe={getPositionsBounds:function(e){const t=new Float32Array(3),i=new Float32Array(3);let s,r;for(s=0;s<3;s++)t[s]=Number.MAX_VALUE,i[s]=-Number.MAX_VALUE;for(s=0;sa&&(r=i,a=o),i=He(e,n,\"floor\",\"ceil\"),s=We(i),o=Ye(e,n,s),o>a&&(r=i,a=o),i=He(e,n,\"ceil\",\"ceil\"),s=We(i),o=Ye(e,n,s),o>a&&(r=i,a=o),t[n]=r[0],t[n+1]=r[1];return t},decompressNormals:function(e,t){for(let i=0,s=0,r=e.length;i=0?1:-1),o=(1-Math.abs(r))*(o>=0?1:-1));const n=Math.sqrt(r*r+o*o+a*a);t[s+0]=r/n,t[s+1]=o/n,t[s+2]=a/n,s+=3}return t},decompressNormal:function(e,t){let i=e[0],s=e[1];i=(2*i+1)/255,s=(2*s+1)/255;const r=1-Math.abs(i)-Math.abs(s);r<0&&(i=(1-Math.abs(s))*(i>=0?1:-1),s=(1-Math.abs(i))*(s>=0?1:-1));const o=Math.sqrt(i*i+s*s+r*r);return t[0]=i/o,t[1]=s/o,t[2]=r/o,t}},Ke=d.memory,Ze=G.SUPPORTED_EXTENSIONS.OES_element_index_uint,Qe=Ze?Uint32Array:Uint16Array,$e=u.AABB3();class Je extends Ge{get type(){return\"ReadableGeometry\"}get isReadableGeometry(){return!0}constructor(e,t={}){super(e,t),this._state=new ye({compressGeometry:!!t.compressGeometry,primitive:null,primitiveName:null,positions:null,normals:null,colors:null,uv:null,indices:null,positionsDecodeMatrix:null,uvDecodeMatrix:null,positionsBuf:null,normalsBuf:null,colorsbuf:null,uvBuf:null,indicesBuf:null,hash:\"\"}),this._numTriangles=0,this._edgeThreshold=t.edgeThreshold||10,this._edgeIndicesBuf=null,this._pickTrianglePositionsBuf=null,this._pickTriangleColorsBuf=null,this._aabbDirty=!0,this._boundingSphere=!0,this._aabb=null,this._aabbDirty=!0,this._obb=null,this._obbDirty=!0;const i=this._state,s=this.scene.canvas.gl;switch(t.primitive=t.primitive||\"triangles\",t.primitive){case\"points\":i.primitive=s.POINTS,i.primitiveName=t.primitive;break;case\"lines\":i.primitive=s.LINES,i.primitiveName=t.primitive;break;case\"line-loop\":i.primitive=s.LINE_LOOP,i.primitiveName=t.primitive;break;case\"line-strip\":i.primitive=s.LINE_STRIP,i.primitiveName=t.primitive;break;case\"triangles\":i.primitive=s.TRIANGLES,i.primitiveName=t.primitive;break;case\"triangle-strip\":i.primitive=s.TRIANGLE_STRIP,i.primitiveName=t.primitive;break;case\"triangle-fan\":i.primitive=s.TRIANGLE_FAN,i.primitiveName=t.primitive;break;default:this.error(\"Unsupported value for 'primitive': '\"+t.primitive+\"' - supported values are 'points', 'lines', 'line-loop', 'line-strip', 'triangles', 'triangle-strip' and 'triangle-fan'. Defaulting to 'triangles'.\"),i.primitive=s.TRIANGLES,i.primitiveName=t.primitive}if(t.positions)if(this._state.compressGeometry){const e=qe.getPositionsBounds(t.positions),s=qe.compressPositions(t.positions,e.min,e.max);i.positions=s.quantized,i.positionsDecodeMatrix=s.decodeMatrix}else i.positions=t.positions.constructor===Float32Array?t.positions:new Float32Array(t.positions);if(t.colors&&(i.colors=t.colors.constructor===Float32Array?t.colors:new Float32Array(t.colors)),t.uv)if(this._state.compressGeometry){const e=qe.getUVBounds(t.uv),s=qe.compressUVs(t.uv,e.min,e.max);i.uv=s.quantized,i.uvDecodeMatrix=s.decodeMatrix}else i.uv=t.uv.constructor===Float32Array?t.uv:new Float32Array(t.uv);if(t.normals&&(this._state.compressGeometry?i.normals=qe.compressNormals(t.normals):i.normals=t.normals.constructor===Float32Array?t.normals:new Float32Array(t.normals)),t.indices){if(!Ze&&t.indices.constructor===Uint32Array)return void this.error(\"This WebGL implementation does not support Uint32Array\");i.indices=t.indices.constructor===Uint32Array||t.indices.constructor===Uint16Array?t.indices:new Qe(t.indices),\"triangles\"===this._state.primitiveName&&(this._numTriangles=t.indices.length/3)}this._buildHash(),Ke.meshes++,this._buildVBOs()}_buildVBOs(){const e=this._state,t=this.scene.canvas.gl;if(e.indices&&(e.indicesBuf=new re(t,t.ELEMENT_ARRAY_BUFFER,e.indices,e.indices.length,1,t.STATIC_DRAW),Ke.indices+=e.indicesBuf.numItems),e.positions&&(e.positionsBuf=new re(t,t.ARRAY_BUFFER,e.positions,e.positions.length,3,t.STATIC_DRAW),Ke.positions+=e.positionsBuf.numItems),e.normals){let i=e.compressGeometry;e.normalsBuf=new re(t,t.ARRAY_BUFFER,e.normals,e.normals.length,3,t.STATIC_DRAW,i),Ke.normals+=e.normalsBuf.numItems}e.colors&&(e.colorsBuf=new re(t,t.ARRAY_BUFFER,e.colors,e.colors.length,4,t.STATIC_DRAW),Ke.colors+=e.colorsBuf.numItems),e.uv&&(e.uvBuf=new re(t,t.ARRAY_BUFFER,e.uv,e.uv.length,2,t.STATIC_DRAW),Ke.uvs+=e.uvBuf.numItems)}_buildHash(){const e=this._state,t=[\"/g\"];t.push(\"/\"+e.primitive+\";\"),e.positions&&t.push(\"p\"),e.colors&&t.push(\"c\"),(e.normals||e.autoVertexNormals)&&t.push(\"n\"),e.uv&&t.push(\"u\"),e.compressGeometry&&t.push(\"cp\"),t.push(\";\"),e.hash=t.join(\"\")}_getEdgeIndices(){return this._edgeIndicesBuf||this._buildEdgeIndices(),this._edgeIndicesBuf}_getPickTrianglePositions(){return this._pickTrianglePositionsBuf||this._buildPickTriangleVBOs(),this._pickTrianglePositionsBuf}_getPickTriangleColors(){return this._pickTriangleColorsBuf||this._buildPickTriangleVBOs(),this._pickTriangleColorsBuf}_buildEdgeIndices(){const e=this._state;if(!e.positions||!e.indices)return;const t=this.scene.canvas.gl,i=Xe(e.positions,e.indices,e.positionsDecodeMatrix,this._edgeThreshold);this._edgeIndicesBuf=new re(t,t.ELEMENT_ARRAY_BUFFER,i,i.length,1,t.STATIC_DRAW),Ke.indices+=this._edgeIndicesBuf.numItems}_buildPickTriangleVBOs(){const e=this._state;if(!e.positions||!e.indices)return;const t=this.scene.canvas.gl,i=u.buildPickTriangles(e.positions,e.indices,e.compressGeometry),s=i.positions,r=i.colors;this._pickTrianglePositionsBuf=new re(t,t.ARRAY_BUFFER,s,s.length,3,t.STATIC_DRAW),this._pickTriangleColorsBuf=new re(t,t.ARRAY_BUFFER,r,r.length,4,t.STATIC_DRAW,!0),Ke.positions+=this._pickTrianglePositionsBuf.numItems,Ke.colors+=this._pickTriangleColorsBuf.numItems}_buildPickVertexVBOs(){}_webglContextLost(){this._sceneVertexBufs&&this._sceneVertexBufs.webglContextLost()}_webglContextRestored(){this._sceneVertexBufs&&this._sceneVertexBufs.webglContextRestored(),this._buildVBOs(),this._edgeIndicesBuf=null,this._pickVertexPositionsBuf=null,this._pickTrianglePositionsBuf=null,this._pickTriangleColorsBuf=null,this._pickVertexPositionsBuf=null,this._pickVertexColorsBuf=null}get primitive(){return this._state.primitiveName}get compressGeometry(){return this._state.compressGeometry}get positions(){return this._state.positions?this._state.compressGeometry?(this._decompressedPositions||(this._decompressedPositions=new Float32Array(this._state.positions.length),qe.decompressPositions(this._state.positions,this._state.positionsDecodeMatrix,this._decompressedPositions)),this._decompressedPositions):this._state.positions:null}set positions(e){const t=this._state,i=t.positions;if(i)if(i.length===e.length){if(this._state.compressGeometry){const i=qe.getPositionsBounds(e),s=qe.compressPositions(e,i.min,i.max);e=s.quantized,t.positionsDecodeMatrix=s.decodeMatrix}i.set(e),t.positionsBuf&&t.positionsBuf.setData(i),this._setAABBDirty(),this.glRedraw()}else this.error(\"can't update geometry positions - new positions are wrong length\");else this.error(\"can't update geometry positions - geometry has no positions\")}get normals(){if(this._state.normals){if(!this._state.compressGeometry)return this._state.normals;if(!this._decompressedNormals){const e=this._state.normals.length,t=e+e/2;this._decompressedNormals=new Float32Array(t),qe.decompressNormals(this._state.normals,this._decompressedNormals)}return this._decompressedNormals}}set normals(e){if(this._state.compressGeometry)return void this.error(\"can't update geometry normals - quantized geometry is immutable\");const t=this._state,i=t.normals;i?i.length===e.length?(i.set(e),t.normalsBuf&&t.normalsBuf.setData(i),this.glRedraw()):this.error(\"can't update geometry normals - new normals are wrong length\"):this.error(\"can't update geometry normals - geometry has no normals\")}get uv(){return this._state.uv?this._state.compressGeometry?(this._decompressedUV||(this._decompressedUV=new Float32Array(this._state.uv.length),qe.decompressUVs(this._state.uv,this._state.uvDecodeMatrix,this._decompressedUV)),this._decompressedUV):this._state.uv:null}set uv(e){if(this._state.compressGeometry)return void this.error(\"can't update geometry UVs - quantized geometry is immutable\");const t=this._state,i=t.uv;i?i.length===e.length?(i.set(e),t.uvBuf&&t.uvBuf.setData(i),this.glRedraw()):this.error(\"can't update geometry UVs - new UVs are wrong length\"):this.error(\"can't update geometry UVs - geometry has no UVs\")}get colors(){return this._state.colors}set colors(e){if(this._state.compressGeometry)return void this.error(\"can't update geometry colors - quantized geometry is immutable\");const t=this._state,i=t.colors;i?i.length===e.length?(i.set(e),t.colorsBuf&&t.colorsBuf.setData(i),this.glRedraw()):this.error(\"can't update geometry colors - new colors are wrong length\"):this.error(\"can't update geometry colors - geometry has no colors\")}get indices(){return this._state.indices}get aabb(){return this._aabbDirty&&(this._aabb||(this._aabb=u.AABB3()),u.positions3ToAABB3(this._state.positions,this._aabb,this._state.positionsDecodeMatrix),this._aabbDirty=!1),this._aabb}get obb(){return this._obbDirty&&(this._obb||(this._obb=u.OBB3()),u.positions3ToAABB3(this._state.positions,$e,this._state.positionsDecodeMatrix),u.AABB3ToOBB3($e,this._obb),this._obbDirty=!1),this._obb}get numTriangles(){return this._numTriangles}_setAABBDirty(){this._aabbDirty||(this._aabbDirty=!0,this._aabbDirty=!0,this._obbDirty=!0)}_getState(){return this._state}destroy(){super.destroy();const e=this._state;e.indicesBuf&&e.indicesBuf.destroy(),e.positionsBuf&&e.positionsBuf.destroy(),e.normalsBuf&&e.normalsBuf.destroy(),e.uvBuf&&e.uvBuf.destroy(),e.colorsBuf&&e.colorsBuf.destroy(),this._edgeIndicesBuf&&this._edgeIndicesBuf.destroy(),this._pickTrianglePositionsBuf&&this._pickTrianglePositionsBuf.destroy(),this._pickTriangleColorsBuf&&this._pickTriangleColorsBuf.destroy(),this._pickVertexPositionsBuf&&this._pickVertexPositionsBuf.destroy(),this._pickVertexColorsBuf&&this._pickVertexColorsBuf.destroy(),e.destroy(),Ke.meshes--}}function et(e={}){let t=e.xSize||1;t<0&&(console.error(\"negative xSize not allowed - will invert\"),t*=-1);let i=e.ySize||1;i<0&&(console.error(\"negative ySize not allowed - will invert\"),i*=-1);let s=e.zSize||1;s<0&&(console.error(\"negative zSize not allowed - will invert\"),s*=-1);const r=e.center,o=r?r[0]:0,a=r?r[1]:0,n=r?r[2]:0,l=-t+o,h=-i+a,c=-s+n,u=t+o,d=i+a,p=s+n;return _.apply(e,{positions:[u,d,p,l,d,p,l,h,p,u,h,p,u,d,p,u,h,p,u,h,c,u,d,c,u,d,p,u,d,c,l,d,c,l,d,p,l,d,p,l,d,c,l,h,c,l,h,p,l,h,c,u,h,c,u,h,p,l,h,p,u,h,c,l,h,c,l,d,c,u,d,c],normals:[0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1],uv:[1,0,0,0,0,1,1,1,0,0,0,1,1,1,1,0,1,1,1,0,0,0,0,1,1,0,0,0,0,1,1,1,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]})}class tt extends C{get type(){return\"Material\"}constructor(e,t={}){super(e,t),d.memory.materials++}destroy(){super.destroy(),d.memory.materials--}}const it={opaque:0,mask:1,blend:2},st=[\"opaque\",\"mask\",\"blend\"];class rt extends tt{get type(){return\"PhongMaterial\"}constructor(e,t={}){super(e,t),this._state=new ye({type:\"PhongMaterial\",ambient:u.vec3([1,1,1]),diffuse:u.vec3([1,1,1]),specular:u.vec3([1,1,1]),emissive:u.vec3([0,0,0]),alpha:null,shininess:null,reflectivity:null,alphaMode:null,alphaCutoff:null,lineWidth:null,pointSize:null,backfaces:null,frontface:null,hash:null}),this.ambient=t.ambient,this.diffuse=t.diffuse,this.specular=t.specular,this.emissive=t.emissive,this.alpha=t.alpha,this.shininess=t.shininess,this.reflectivity=t.reflectivity,this.lineWidth=t.lineWidth,this.pointSize=t.pointSize,t.ambientMap&&(this._ambientMap=this._checkComponent(\"Texture\",t.ambientMap)),t.diffuseMap&&(this._diffuseMap=this._checkComponent(\"Texture\",t.diffuseMap)),t.specularMap&&(this._specularMap=this._checkComponent(\"Texture\",t.specularMap)),t.emissiveMap&&(this._emissiveMap=this._checkComponent(\"Texture\",t.emissiveMap)),t.alphaMap&&(this._alphaMap=this._checkComponent(\"Texture\",t.alphaMap)),t.reflectivityMap&&(this._reflectivityMap=this._checkComponent(\"Texture\",t.reflectivityMap)),t.normalMap&&(this._normalMap=this._checkComponent(\"Texture\",t.normalMap)),t.occlusionMap&&(this._occlusionMap=this._checkComponent(\"Texture\",t.occlusionMap)),t.diffuseFresnel&&(this._diffuseFresnel=this._checkComponent(\"Fresnel\",t.diffuseFresnel)),t.specularFresnel&&(this._specularFresnel=this._checkComponent(\"Fresnel\",t.specularFresnel)),t.emissiveFresnel&&(this._emissiveFresnel=this._checkComponent(\"Fresnel\",t.emissiveFresnel)),t.alphaFresnel&&(this._alphaFresnel=this._checkComponent(\"Fresnel\",t.alphaFresnel)),t.reflectivityFresnel&&(this._reflectivityFresnel=this._checkComponent(\"Fresnel\",t.reflectivityFresnel)),this.alphaMode=t.alphaMode,this.alphaCutoff=t.alphaCutoff,this.backfaces=t.backfaces,this.frontface=t.frontface,this._makeHash()}_makeHash(){const e=this._state,t=[\"/p\"];this._normalMap&&(t.push(\"/nm\"),this._normalMap.hasMatrix&&t.push(\"/mat\")),this._ambientMap&&(t.push(\"/am\"),this._ambientMap.hasMatrix&&t.push(\"/mat\"),t.push(\"/\"+this._ambientMap.encoding)),this._diffuseMap&&(t.push(\"/dm\"),this._diffuseMap.hasMatrix&&t.push(\"/mat\"),t.push(\"/\"+this._diffuseMap.encoding)),this._specularMap&&(t.push(\"/sm\"),this._specularMap.hasMatrix&&t.push(\"/mat\")),this._emissiveMap&&(t.push(\"/em\"),this._emissiveMap.hasMatrix&&t.push(\"/mat\"),t.push(\"/\"+this._emissiveMap.encoding)),this._alphaMap&&(t.push(\"/opm\"),this._alphaMap.hasMatrix&&t.push(\"/mat\")),this._reflectivityMap&&(t.push(\"/rm\"),this._reflectivityMap.hasMatrix&&t.push(\"/mat\")),this._occlusionMap&&(t.push(\"/ocm\"),this._occlusionMap.hasMatrix&&t.push(\"/mat\")),this._diffuseFresnel&&t.push(\"/df\"),this._specularFresnel&&t.push(\"/sf\"),this._emissiveFresnel&&t.push(\"/ef\"),this._alphaFresnel&&t.push(\"/of\"),this._reflectivityFresnel&&t.push(\"/rf\"),t.push(\";\"),e.hash=t.join(\"\")}set ambient(e){let t=this._state.ambient;if(t){if(e&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2])return}else t=this._state.ambient=new Float32Array(3);e?(t[0]=e[0],t[1]=e[1],t[2]=e[2]):(t[0]=.2,t[1]=.2,t[2]=.2),this.glRedraw()}get ambient(){return this._state.ambient}set diffuse(e){let t=this._state.diffuse;if(t){if(e&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2])return}else t=this._state.diffuse=new Float32Array(3);e?(t[0]=e[0],t[1]=e[1],t[2]=e[2]):(t[0]=1,t[1]=1,t[2]=1),this.glRedraw()}get diffuse(){return this._state.diffuse}set specular(e){let t=this._state.specular;if(t){if(e&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2])return}else t=this._state.specular=new Float32Array(3);e?(t[0]=e[0],t[1]=e[1],t[2]=e[2]):(t[0]=1,t[1]=1,t[2]=1),this.glRedraw()}get specular(){return this._state.specular}set emissive(e){let t=this._state.emissive;if(t){if(e&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2])return}else t=this._state.emissive=new Float32Array(3);e?(t[0]=e[0],t[1]=e[1],t[2]=e[2]):(t[0]=0,t[1]=0,t[2]=0),this.glRedraw()}get emissive(){return this._state.emissive}set alpha(e){e=null!=e?e:1,this._state.alpha!==e&&(this._state.alpha=e,this.glRedraw())}get alpha(){return this._state.alpha}set shininess(e){this._state.shininess=void 0!==e?e:80,this.glRedraw()}get shininess(){return this._state.shininess}set lineWidth(e){this._state.lineWidth=e||1,this.glRedraw()}get lineWidth(){return this._state.lineWidth}set pointSize(e){this._state.pointSize=e||1,this.glRedraw()}get pointSize(){return this._state.pointSize}set reflectivity(e){this._state.reflectivity=void 0!==e?e:1,this.glRedraw()}get reflectivity(){return this._state.reflectivity}get normalMap(){return this._normalMap}get ambientMap(){return this._ambientMap}get diffuseMap(){return this._diffuseMap}get specularMap(){return this._specularMap}get emissiveMap(){return this._emissiveMap}get alphaMap(){return this._alphaMap}get reflectivityMap(){return this._reflectivityMap}get occlusionMap(){return this._occlusionMap}get diffuseFresnel(){return this._diffuseFresnel}get specularFresnel(){return this._specularFresnel}get emissiveFresnel(){return this._emissiveFresnel}get alphaFresnel(){return this._alphaFresnel}get reflectivityFresnel(){return this._reflectivityFresnel}set alphaMode(e){let t=it[e=e||\"opaque\"];void 0===t&&(this.error(\"Unsupported value for 'alphaMode': \"+e+\" - defaulting to 'opaque'\"),t=\"opaque\"),this._state.alphaMode!==t&&(this._state.alphaMode=t,this.glRedraw())}get alphaMode(){return st[this._state.alphaMode]}set alphaCutoff(e){null==e&&(e=.5),this._state.alphaCutoff!==e&&(this._state.alphaCutoff=e)}get alphaCutoff(){return this._state.alphaCutoff}set backfaces(e){e=!!e,this._state.backfaces!==e&&(this._state.backfaces=e,this.glRedraw())}get backfaces(){return this._state.backfaces}set frontface(e){e=\"cw\"!==e,this._state.frontface!==e&&(this._state.frontface=e,this.glRedraw())}get frontface(){return this._state.frontface?\"ccw\":\"cw\"}destroy(){super.destroy(),this._state.destroy()}}const ot={default:{fill:!0,fillColor:[.4,.4,.4],fillAlpha:.2,edges:!0,edgeColor:[.2,.2,.2],edgeAlpha:.5,edgeWidth:1},defaultWhiteBG:{fill:!0,fillColor:[1,1,1],fillAlpha:.6,edgeColor:[.2,.2,.2],edgeAlpha:1,edgeWidth:1},defaultLightBG:{fill:!0,fillColor:[.4,.4,.4],fillAlpha:.2,edges:!0,edgeColor:[.2,.2,.2],edgeAlpha:.5,edgeWidth:1},defaultDarkBG:{fill:!0,fillColor:[.4,.4,.4],fillAlpha:.2,edges:!0,edgeColor:[.5,.5,.5],edgeAlpha:.5,edgeWidth:1},phosphorous:{fill:!0,fillColor:[0,0,0],fillAlpha:.4,edges:!0,edgeColor:[.9,.9,.9],edgeAlpha:.5,edgeWidth:2},sunset:{fill:!0,fillColor:[.9,.9,.6],fillAlpha:.2,edges:!0,edgeColor:[.9,.9,.9],edgeAlpha:.5,edgeWidth:1},vectorscope:{fill:!0,fillColor:[0,0,0],fillAlpha:.7,edges:!0,edgeColor:[.2,1,.2],edgeAlpha:1,edgeWidth:2},battlezone:{fill:!0,fillColor:[0,0,0],fillAlpha:1,edges:!0,edgeColor:[.2,1,.2],edgeAlpha:1,edgeWidth:3},sepia:{fill:!0,fillColor:[.970588207244873,.7965892553329468,.6660899519920349],fillAlpha:.4,edges:!0,edgeColor:[.529411792755127,.4577854573726654,.4100345969200134],edgeAlpha:1,edgeWidth:1},yellowHighlight:{fill:!0,fillColor:[1,1,0],fillAlpha:.5,edges:!0,edgeColor:[.529411792755127,.4577854573726654,.4100345969200134],edgeAlpha:1,edgeWidth:1},greenSelected:{fill:!0,fillColor:[0,1,0],fillAlpha:.5,edges:!0,edgeColor:[.4577854573726654,.529411792755127,.4100345969200134],edgeAlpha:1,edgeWidth:1},gamegrid:{fill:!0,fillColor:[.2,.2,.7],fillAlpha:.9,edges:!0,edgeColor:[.4,.4,1.6],edgeAlpha:.8,edgeWidth:3}};class at extends tt{get type(){return\"EmphasisMaterial\"}get presets(){return ot}constructor(e,t={}){super(e,t),this._state=new ye({type:\"EmphasisMaterial\",fill:null,fillColor:null,fillAlpha:null,edges:null,edgeColor:null,edgeAlpha:null,edgeWidth:null,backfaces:!0}),this._preset=\"default\",t.preset?(this.preset=t.preset,void 0!==t.fill&&(this.fill=t.fill),t.fillColor&&(this.fillColor=t.fillColor),void 0!==t.fillAlpha&&(this.fillAlpha=t.fillAlpha),void 0!==t.edges&&(this.edges=t.edges),t.edgeColor&&(this.edgeColor=t.edgeColor),void 0!==t.edgeAlpha&&(this.edgeAlpha=t.edgeAlpha),void 0!==t.edgeWidth&&(this.edgeWidth=t.edgeWidth),void 0!==t.backfaces&&(this.backfaces=t.backfaces)):(this.fill=t.fill,this.fillColor=t.fillColor,this.fillAlpha=t.fillAlpha,this.edges=t.edges,this.edgeColor=t.edgeColor,this.edgeAlpha=t.edgeAlpha,this.edgeWidth=t.edgeWidth,this.backfaces=t.backfaces)}set fill(e){e=!1!==e,this._state.fill!==e&&(this._state.fill=e,this.glRedraw())}get fill(){return this._state.fill}set fillColor(e){let t=this._state.fillColor;if(t){if(e&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2])return}else t=this._state.fillColor=new Float32Array(3);e?(t[0]=e[0],t[1]=e[1],t[2]=e[2]):(t[0]=.4,t[1]=.4,t[2]=.4),this.glRedraw()}get fillColor(){return this._state.fillColor}set fillAlpha(e){e=null!=e?e:.2,this._state.fillAlpha!==e&&(this._state.fillAlpha=e,this.glRedraw())}get fillAlpha(){return this._state.fillAlpha}set edges(e){e=!1!==e,this._state.edges!==e&&(this._state.edges=e,this.glRedraw())}get edges(){return this._state.edges}set edgeColor(e){let t=this._state.edgeColor;if(t){if(e&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2])return}else t=this._state.edgeColor=new Float32Array(3);e?(t[0]=e[0],t[1]=e[1],t[2]=e[2]):(t[0]=.2,t[1]=.2,t[2]=.2),this.glRedraw()}get edgeColor(){return this._state.edgeColor}set edgeAlpha(e){e=null!=e?e:.5,this._state.edgeAlpha!==e&&(this._state.edgeAlpha=e,this.glRedraw())}get edgeAlpha(){return this._state.edgeAlpha}set edgeWidth(e){this._state.edgeWidth=e||1,this.glRedraw()}get edgeWidth(){return this._state.edgeWidth}set backfaces(e){e=!!e,this._state.backfaces!==e&&(this._state.backfaces=e,this.glRedraw())}get backfaces(){return this._state.backfaces}set preset(e){if(e=e||\"default\",this._preset===e)return;const t=ot[e];t?(this.fill=t.fill,this.fillColor=t.fillColor,this.fillAlpha=t.fillAlpha,this.edges=t.edges,this.edgeColor=t.edgeColor,this.edgeAlpha=t.edgeAlpha,this.edgeWidth=t.edgeWidth,this._preset=e):this.error(\"unsupported preset: '\"+e+\"' - supported values are \"+Object.keys(ot).join(\", \"))}get preset(){return this._preset}destroy(){super.destroy(),this._state.destroy()}}const nt={default:{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1},defaultWhiteBG:{edgeColor:[.2,.2,.2],edgeAlpha:1,edgeWidth:1},defaultLightBG:{edgeColor:[.2,.2,.2],edgeAlpha:1,edgeWidth:1},defaultDarkBG:{edgeColor:[.5,.5,.5],edgeAlpha:1,edgeWidth:1}};class lt extends tt{get type(){return\"EdgeMaterial\"}get presets(){return nt}constructor(e,t={}){super(e,t),this._state=new ye({type:\"EdgeMaterial\",edges:null,edgeColor:null,edgeAlpha:null,edgeWidth:null}),this._preset=\"default\",t.preset?(this.preset=t.preset,t.edgeColor&&(this.edgeColor=t.edgeColor),void 0!==t.edgeAlpha&&(this.edgeAlpha=t.edgeAlpha),void 0!==t.edgeWidth&&(this.edgeWidth=t.edgeWidth)):(this.edgeColor=t.edgeColor,this.edgeAlpha=t.edgeAlpha,this.edgeWidth=t.edgeWidth),this.edges=!1!==t.edges}set edges(e){e=!1!==e,this._state.edges!==e&&(this._state.edges=e,this.glRedraw())}get edges(){return this._state.edges}set edgeColor(e){let t=this._state.edgeColor;if(t){if(e&&t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2])return}else t=this._state.edgeColor=new Float32Array(3);e?(t[0]=e[0],t[1]=e[1],t[2]=e[2]):(t[0]=.2,t[1]=.2,t[2]=.2),this.glRedraw()}get edgeColor(){return this._state.edgeColor}set edgeAlpha(e){e=null!=e?e:1,this._state.edgeAlpha!==e&&(this._state.edgeAlpha=e,this.glRedraw())}get edgeAlpha(){return this._state.edgeAlpha}set edgeWidth(e){this._state.edgeWidth=e||1,this.glRedraw()}get edgeWidth(){return this._state.edgeWidth}set preset(e){if(e=e||\"default\",this._preset===e)return;const t=nt[e];t?(this.edgeColor=t.edgeColor,this.edgeAlpha=t.edgeAlpha,this.edgeWidth=t.edgeWidth,this._preset=e):this.error(\"unsupported preset: '\"+e+\"' - supported values are \"+Object.keys(nt).join(\", \"))}get preset(){return this._preset}destroy(){super.destroy(),this._state.destroy()}}const ht={meters:{abbrev:\"m\"},metres:{abbrev:\"m\"},centimeters:{abbrev:\"cm\"},centimetres:{abbrev:\"cm\"},millimeters:{abbrev:\"mm\"},millimetres:{abbrev:\"mm\"},yards:{abbrev:\"yd\"},feet:{abbrev:\"ft\"},inches:{abbrev:\"in\"}};class ct extends C{constructor(e,t={}){super(e,t),this._units=\"meters\",this._scale=1,this._origin=u.vec3([0,0,0]),this.units=t.units,this.scale=t.scale,this.origin=t.origin}get unitsInfo(){return ht}set units(e){e||(e=\"meters\");ht[e]||(this.error(\"Unsupported value for 'units': \"+e+\" defaulting to 'meters'\"),e=\"meters\"),this._units=e,this.fire(\"units\",this._units)}get units(){return this._units}set scale(e){(e=e||1)<=0?this.error(\"scale value should be larger than zero\"):(this._scale=e,this.fire(\"scale\",this._scale))}get scale(){return this._scale}set origin(e){if(!e)return this._origin[0]=0,this._origin[1]=0,void(this._origin[2]=0);this._origin[0]=e[0],this._origin[1]=e[1],this._origin[2]=e[2],this.fire(\"origin\",this._origin)}get origin(){return this._origin}worldToRealPos(e,t=u.vec3(3)){t[0]=this._origin[0]+this._scale*e[0],t[1]=this._origin[1]+this._scale*e[1],t[2]=this._origin[2]+this._scale*e[2]}realToWorldPos(e,t=u.vec3(3)){return t[0]=(e[0]-this._origin[0])/this._scale,t[1]=(e[1]-this._origin[1])/this._scale,t[2]=(e[2]-this._origin[2])/this._scale,t}}class ut extends C{constructor(e,t={}){super(e,t);const i=navigator.userAgent.match(/(opera|chrome|safari|firefox|msie|mobile)\\/?\\s*(\\.?\\d+(\\.\\d+)*)/i),s=i&&\"safari\"===i[1].toLowerCase();this._supported=!s&&G.SUPPORTED_EXTENSIONS.OES_standard_derivatives,this.enabled=t.enabled,this.kernelRadius=t.kernelRadius,this.intensity=t.intensity,this.bias=t.bias,this.scale=t.scale,this.minResolution=t.minResolution,this.numSamples=t.numSamples,this.blur=t.blur,this.blendCutoff=t.blendCutoff,this.blendFactor=t.blendFactor}get supported(){return this._supported}set enabled(e){e=!!e,this._enabled!==e&&(this._enabled=e,this.glRedraw())}get enabled(){return this._enabled}get possible(){if(!this._supported)return!1;if(!this._enabled)return!1;const e=this.scene.camera.projection;return\"customProjection\"!==e&&\"frustum\"!==e}get active(){return this._active}set kernelRadius(e){null==e&&(e=100),this._kernelRadius!==e&&(this._kernelRadius=e,this.glRedraw())}get kernelRadius(){return this._kernelRadius}set intensity(e){null==e&&(e=.15),this._intensity!==e&&(this._intensity=e,this.glRedraw())}get intensity(){return this._intensity}set bias(e){null==e&&(e=.5),this._bias!==e&&(this._bias=e,this.glRedraw())}get bias(){return this._bias}set scale(e){null==e&&(e=1),this._scale!==e&&(this._scale=e,this.glRedraw())}get scale(){return this._scale}set minResolution(e){null==e&&(e=0),this._minResolution!==e&&(this._minResolution=e,this.glRedraw())}get minResolution(){return this._minResolution}set numSamples(e){null==e&&(e=10),this._numSamples!==e&&(this._numSamples=e,this.glRedraw())}get numSamples(){return this._numSamples}set blur(e){e=!1!==e,this._blur!==e&&(this._blur=e,this.glRedraw())}get blur(){return this._blur}set blendCutoff(e){null==e&&(e=.3),this._blendCutoff!==e&&(this._blendCutoff=e,this.glRedraw())}get blendCutoff(){return this._blendCutoff}set blendFactor(e){null==e&&(e=1),this._blendFactor!==e&&(this._blendFactor=e,this.glRedraw())}get blendFactor(){return this._blendFactor}destroy(){super.destroy()}}const dt={default:{pointSize:4,roundPoints:!0,perspectivePoints:!0},square:{pointSize:4,roundPoints:!1,perspectivePoints:!0},round:{pointSize:4,roundPoints:!0,perspectivePoints:!0}};class pt extends tt{get type(){return\"PointsMaterial\"}get presets(){return dt}constructor(e,t={}){super(e,t),this._state=new ye({type:\"PointsMaterial\",pointSize:null,roundPoints:null,perspectivePoints:null,minPerspectivePointSize:null,maxPerspectivePointSize:null,filterIntensity:null,minIntensity:null,maxIntensity:null}),t.preset?(this.preset=t.preset,void 0!==t.pointSize&&(this.pointSize=t.pointSize),void 0!==t.roundPoints&&(this.roundPoints=t.roundPoints),void 0!==t.perspectivePoints&&(this.perspectivePoints=t.perspectivePoints),void 0!==t.minPerspectivePointSize&&(this.minPerspectivePointSize=t.minPerspectivePointSize),void 0!==t.maxPerspectivePointSize&&(this.maxPerspectivePointSize=t.minPerspectivePointSize)):(this._preset=\"default\",this.pointSize=t.pointSize,this.roundPoints=t.roundPoints,this.perspectivePoints=t.perspectivePoints,this.minPerspectivePointSize=t.minPerspectivePointSize,this.maxPerspectivePointSize=t.maxPerspectivePointSize),this.filterIntensity=t.filterIntensity,this.minIntensity=t.minIntensity,this.maxIntensity=t.maxIntensity}set pointSize(e){this._state.pointSize=e||2,this.glRedraw()}get pointSize(){return this._state.pointSize}set roundPoints(e){e=!1!==e,this._state.roundPoints!==e&&(this._state.roundPoints=e,this.scene._needRecompile=!0,this.glRedraw())}get roundPoints(){return this._state.roundPoints}set perspectivePoints(e){e=!1!==e,this._state.perspectivePoints!==e&&(this._state.perspectivePoints=e,this.scene._needRecompile=!0,this.glRedraw())}get perspectivePoints(){return this._state.perspectivePoints}set minPerspectivePointSize(e){this._state.minPerspectivePointSize=e||1,this.scene._needRecompile=!0,this.glRedraw()}get minPerspectivePointSize(){return this._state.minPerspectivePointSize}set maxPerspectivePointSize(e){this._state.maxPerspectivePointSize=e||6,this.scene._needRecompile=!0,this.glRedraw()}get maxPerspectivePointSize(){return this._state.maxPerspectivePointSize}set filterIntensity(e){e=!1!==e,this._state.filterIntensity!==e&&(this._state.filterIntensity=e,this.scene._needRecompile=!0,this.glRedraw())}get filterIntensity(){return this._state.filterIntensity}set minIntensity(e){this._state.minIntensity=null!=e?e:0,this.glRedraw()}get minIntensity(){return this._state.minIntensity}set maxIntensity(e){this._state.maxIntensity=null!=e?e:1,this.glRedraw()}get maxIntensity(){return this._state.maxIntensity}set preset(e){if(e=e||\"default\",this._preset===e)return;const t=dt[e];t?(this.pointSize=t.pointSize,this.roundPoints=t.roundPoints,this.perspectivePoints=t.perspectivePoints,this.minPerspectivePointSize=t.minPerspectivePointSize,this.maxPerspectivePointSize=t.maxPerspectivePointSize,this._preset=e):this.error(\"unsupported preset: '\"+e+\"' - supported values are \"+Object.keys(dt).join(\", \"))}get preset(){return this._preset}get hash(){return[this.pointSize,this.roundPoints,this.perspectivePoints,this.minPerspectivePointSize,this.maxPerspectivePointSize,this.filterIntensity].join(\";\")}destroy(){super.destroy(),this._state.destroy()}}const ft={default:{lineWidth:1},thick:{lineWidth:2},thicker:{lineWidth:4}};class _t extends tt{get type(){return\"LinesMaterial\"}get presets(){return ft}constructor(e,t={}){super(e,t),this._state=new ye({type:\"LinesMaterial\",lineWidth:null}),t.preset?(this.preset=t.preset,void 0!==t.lineWidth&&(this.lineWidth=t.lineWidth)):(this._preset=\"default\",this.lineWidth=t.lineWidth)}set lineWidth(e){this._state.lineWidth=e||1,this.glRedraw()}get lineWidth(){return this._state.lineWidth}set preset(e){if(e=e||\"default\",this._preset===e)return;const t=ft[e];t?(this.lineWidth=t.lineWidth,this._preset=e):this.error(\"unsupported preset: '\"+e+\"' - supported values are \"+Object.keys(ft).join(\", \"))}get preset(){return this._preset}get hash(){return[\"\"+this.lineWidth].join(\";\")}destroy(){super.destroy(),this._state.destroy()}}function gt(e,t){const i={};let s,r;for(let o=0,a=t.length;o{this.glRedraw()})),this.canvas.on(\"webglContextFailed\",(()=>{alert(\"xeokit failed to find WebGL!\")})),this._renderer=new ve(this,{transparent:s,alphaDepthMask:r}),this._sectionPlanesState=new function(){this.sectionPlanes=[],this.clippingCaps=!1;let e=null;this.getHash=function(){if(e)return e;const t=this.sectionPlanes;if(0===t.length)return this.hash=\";\";const i=[];for(let e=0,s=t.length;e0&&e.push(\"/lm\"),this.reflectionMaps.length>0&&e.push(\"/rm\"),e.push(\";\"),i=e.join(\"\"),i},this.addLight=function(e){this.lights.push(e),s=null,i=null},this.removeLight=function(e){for(let t=0,r=this.lights.length;t{this._renderer.imageDirty()}))}_initDefaults(){this.geometry,this.material,this.xrayMaterial,this.edgeMaterial,this.selectedMaterial,this.highlightMaterial}_addComponent(e){if(e.id&&this.components[e.id]&&(this.error(\"Component \"+_.inQuotes(e.id)+\" already exists in Scene - ignoring ID, will randomly-generate instead\"),e.id=null),!e.id)for(void 0===window.nextID&&(window.nextID=0),e.id=\"__\"+window.nextID++;this.components[e.id];)e.id=u.createUUID();this.components[e.id]=e;const t=e.type;let i=this.types[e.type];i||(i=this.types[t]={}),i[e.id]=e,e.compile&&(this._compilables[e.id]=e),e.isDrawable&&(this._renderer.addDrawable(e.id,e),this._collidables[e.id]=e)}_removeComponent(e){var t=e.id,i=e.type;delete this.components[t];const s=this.types[i];s&&(delete s[t],_.isEmptyObject(s)&&delete this.types[i]),e.compile&&delete this._compilables[e.id],e.isDrawable&&(this._renderer.removeDrawable(e.id),delete this._collidables[e.id])}_sectionPlaneCreated(e){this.sectionPlanes[e.id]=e,this.scene._sectionPlanesState.addSectionPlane(e._state),this.scene.fire(\"sectionPlaneCreated\",e,!0),this._needRecompile=!0}_lightCreated(e){this.lights[e.id]=e,this.scene._lightsState.addLight(e._state),this._needRecompile=!0}_lightMapCreated(e){this.lightMaps[e.id]=e,this.scene._lightsState.addLightMap(e._state),this._needRecompile=!0}_reflectionMapCreated(e){this.reflectionMaps[e.id]=e,this.scene._lightsState.addReflectionMap(e._state),this._needRecompile=!0}_sectionPlaneDestroyed(e){delete this.sectionPlanes[e.id],this.scene._sectionPlanesState.removeSectionPlane(e._state),this.scene.fire(\"sectionPlaneDestroyed\",e,!0),this._needRecompile=!0}_lightDestroyed(e){delete this.lights[e.id],this.scene._lightsState.removeLight(e._state),this._needRecompile=!0}_lightMapDestroyed(e){delete this.lightMaps[e.id],this.scene._lightsState.removeLightMap(e._state),this._needRecompile=!0}_reflectionMapDestroyed(e){delete this.reflectionMaps[e.id],this.scene._lightsState.removeReflectionMap(e._state),this._needRecompile=!0}_registerModel(e){this.models[e.id]=e,this._modelIds=null}_deregisterModel(e){const t=e.id;delete this.models[t],this._modelIds=null,this.fire(\"modelUnloaded\",t)}_registerObject(e){this.objects[e.id]=e,this._numObjects++,this._objectIds=null}_deregisterObject(e){delete this.objects[e.id],this._numObjects--,this._objectIds=null}_objectVisibilityUpdated(e,t=!0){e.visible?(this.visibleObjects[e.id]=e,this._numVisibleObjects++):(delete this.visibleObjects[e.id],this._numVisibleObjects--),this._visibleObjectIds=null,t&&this.fire(\"objectVisibility\",e,!0)}_objectXRayedUpdated(e){e.xrayed?(this.xrayedObjects[e.id]=e,this._numXRayedObjects++):(delete this.xrayedObjects[e.id],this._numXRayedObjects--),this._xrayedObjectIds=null}_objectHighlightedUpdated(e){e.highlighted?(this.highlightedObjects[e.id]=e,this._numHighlightedObjects++):(delete this.highlightedObjects[e.id],this._numHighlightedObjects--),this._highlightedObjectIds=null}_objectSelectedUpdated(e){e.selected?(this.selectedObjects[e.id]=e,this._numSelectedObjects++):(delete this.selectedObjects[e.id],this._numSelectedObjects--),this._selectedObjectIds=null}_objectColorizeUpdated(e,t){t?(this.colorizedObjects[e.id]=e,this._numColorizedObjects++):(delete this.colorizedObjects[e.id],this._numColorizedObjects--),this._colorizedObjectIds=null}_objectOpacityUpdated(e,t){t?(this.opacityObjects[e.id]=e,this._numOpacityObjects++):(delete this.opacityObjects[e.id],this._numOpacityObjects--),this._opacityObjectIds=null}_objectOffsetUpdated(e,t){!t||0===t[0]&&0===t[1]&&0===t[2]?(this.offsetObjects[e.id]=e,this._numOffsetObjects++):(delete this.offsetObjects[e.id],this._numOffsetObjects--),this._offsetObjectIds=null}_webglContextLost(){this.canvas.spinner.processes++;for(const e in this.components)if(this.components.hasOwnProperty(e)){const t=this.components[e];t._webglContextLost&&t._webglContextLost()}this._renderer.webglContextLost()}_webglContextRestored(){const e=this.canvas.gl;for(const t in this.components)if(this.components.hasOwnProperty(t)){const i=this.components[t];i._webglContextRestored&&i._webglContextRestored(e)}this._renderer.webglContextRestored(e),this.canvas.spinner.processes--}get entityOffsetsEnabled(){return this._entityOffsetsEnabled}get pickSurfacePrecisionEnabled(){return this._pickSurfacePrecisionEnabled}get logarithmicDepthBufferEnabled(){return this._logarithmicDepthBufferEnabled}set pbrEnabled(e){this._pbrEnabled=!!e,this.glRedraw()}get pbrEnabled(){return this._pbrEnabled}doOcclusionTest(){this._needRecompile&&(this._recompile(),this._needRecompile=!1),this._renderer.doOcclusionTest()}render(e){e&&w.runTasks();const t={sceneId:null,pass:0};this._needRecompile&&(this._recompile(),this._renderer.imageDirty(),this._needRecompile=!1),t.sceneId=this.id;const i=this._passes,s=this._clearEachPass;let r,o;for(r=0;rr&&(r=e[3]),e[4]>o&&(o=e[4]),e[5]>a&&(a=e[5]),h=!0}h||(t=-100,i=-100,s=-100,r=100,o=100,a=100),this._aabb[0]=t,this._aabb[1]=i,this._aabb[2]=s,this._aabb[3]=r,this._aabb[4]=o,this._aabb[5]=a,this._aabbDirty=!1}return this._aabb}_setAABBDirty(){this._aabbDirty=!0,this.fire(\"boundary\")}pick(e,t){if(0===this.canvas.boundary[2]||0===this.canvas.boundary[3])return this.error(\"Picking not allowed while canvas has zero width or height\"),null;(e=e||{}).pickSurface=e.pickSurface||e.rayPick,e.canvasPos||e.matrix||e.origin&&e.direction||this.warn(\"picking without canvasPos, matrix, or ray origin and direction\");const i=e.includeEntities||e.include;i&&(e.includeEntityIds=gt(this,i));const s=e.excludeEntities||e.exclude;return s&&(e.excludeEntityIds=gt(this,s)),this._needRecompile&&(this._recompile(),this._renderer.imageDirty(),this._needRecompile=!1),(t=this._renderer.pick(e,t))?(t.entity&&t.entity.fire&&t.entity.fire(\"picked\",t),t):void 0}clear(){var e;for(const t in this.components)this.components.hasOwnProperty(t)&&((e=this.components[t])._dontClear||e.destroy())}clearLights(){const e=Object.keys(this.lights);for(let t=0,i=e.length;t{if(e.collidable){const l=e.aabb;l[0]o&&(o=l[3]),l[4]>a&&(a=l[4]),l[5]>n&&(n=l[5]),t=!0}})),t){const e=u.AABB3();return e[0]=i,e[1]=s,e[2]=r,e[3]=o,e[4]=a,e[5]=n,e}return this.aabb}setObjectsVisible(e,t){return this.withObjects(e,(e=>{const i=e.visible!==t;return e.visible=t,i}))}setObjectsCollidable(e,t){return this.withObjects(e,(e=>{const i=e.collidable!==t;return e.collidable=t,i}))}setObjectsCulled(e,t){return this.withObjects(e,this.objects,(e=>{const i=e.culled!==t;return e.culled=t,i}))}setObjectsSelected(e,t){return this.withObjects(e,(e=>{const i=e.selected!==t;return e.selected=t,i}))}setObjectsHighlighted(e,t){return this.withObjects(e,(e=>{const i=e.highlighted!==t;return e.highlighted=t,i}))}setObjectsXRayed(e,t){return this.withObjects(e,(e=>{const i=e.xrayed!==t;return e.xrayed=t,i}))}setObjectsEdges(e,t){return this.withObjects(e,(e=>{const i=e.edges!==t;return e.edges=t,i}))}setObjectsColorized(e,t){return this.withObjects(e,(e=>{e.colorize=t}))}setObjectsOpacity(e,t){return this.withObjects(e,(e=>{const i=e.opacity!==t;return e.opacity=t,i}))}setObjectsPickable(e,t){return this.withObjects(e,(e=>{const i=e.pickable!==t;return e.pickable=t,i}))}setObjectsOffset(e,t){this.withObjects(e,(e=>{e.offset=t}))}withObjects(e,t){_.isString(e)&&(e=[e]);let i=!1;for(let s=0,r=e.length;s0,l=!!r.compressGeometry,h=[];h.push(\"// Lambertian drawing vertex shader\"),t.logarithmicDepthBufferEnabled&&h.push(\"#extension GL_EXT_frag_depth : enable\");h.push(\"attribute vec3 position;\"),h.push(\"uniform mat4 modelMatrix;\"),h.push(\"uniform mat4 viewMatrix;\"),h.push(\"uniform mat4 projMatrix;\"),h.push(\"uniform vec4 colorize;\"),h.push(\"uniform vec3 offset;\"),l&&h.push(\"uniform mat4 positionsDecodeMatrix;\");t.logarithmicDepthBufferEnabled&&(h.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&h.push(\"varying float vFragDepth;\"),h.push(\"bool isPerspectiveMatrix(mat4 m) {\"),h.push(\" return (m[2][3] == - 1.0);\"),h.push(\"}\"),h.push(\"varying float isPerspective;\"));n&&h.push(\"varying vec4 vWorldPosition;\");if(h.push(\"uniform vec4 lightAmbient;\"),h.push(\"uniform vec4 materialColor;\"),h.push(\"uniform vec3 materialEmissive;\"),r.normalsBuf){h.push(\"attribute vec3 normal;\"),h.push(\"uniform mat4 modelNormalMatrix;\"),h.push(\"uniform mat4 viewNormalMatrix;\");for(let e=0,t=s.lights.length;e= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\"),h.push(\" }\"),h.push(\" return normalize(v);\"),h.push(\"}\"))}h.push(\"varying vec4 vColor;\"),\"points\"===r.primitiveName&&h.push(\"uniform float pointSize;\");\"spherical\"!==o&&\"cylindrical\"!==o||(h.push(\"void billboard(inout mat4 mat) {\"),h.push(\" mat[0][0] = 1.0;\"),h.push(\" mat[0][1] = 0.0;\"),h.push(\" mat[0][2] = 0.0;\"),\"spherical\"===o&&(h.push(\" mat[1][0] = 0.0;\"),h.push(\" mat[1][1] = 1.0;\"),h.push(\" mat[1][2] = 0.0;\")),h.push(\" mat[2][0] = 0.0;\"),h.push(\" mat[2][1] = 0.0;\"),h.push(\" mat[2][2] =1.0;\"),h.push(\"}\"));h.push(\"void main(void) {\"),h.push(\"vec4 localPosition = vec4(position, 1.0); \"),h.push(\"vec4 worldPosition;\"),l&&h.push(\"localPosition = positionsDecodeMatrix * localPosition;\");r.normalsBuf&&(l?h.push(\"vec4 localNormal = vec4(octDecode(normal.xy), 0.0); \"):h.push(\"vec4 localNormal = vec4(normal, 0.0); \"),h.push(\"mat4 modelNormalMatrix2 = modelNormalMatrix;\"),h.push(\"mat4 viewNormalMatrix2 = viewNormalMatrix;\"));h.push(\"mat4 viewMatrix2 = viewMatrix;\"),h.push(\"mat4 modelMatrix2 = modelMatrix;\"),a&&h.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\");\"spherical\"===o||\"cylindrical\"===o?(h.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\"),h.push(\"billboard(modelMatrix2);\"),h.push(\"billboard(viewMatrix2);\"),h.push(\"billboard(modelViewMatrix);\"),r.normalsBuf&&(h.push(\"mat4 modelViewNormalMatrix = viewNormalMatrix2 * modelNormalMatrix2;\"),h.push(\"billboard(modelNormalMatrix2);\"),h.push(\"billboard(viewNormalMatrix2);\"),h.push(\"billboard(modelViewNormalMatrix);\")),h.push(\"worldPosition = modelMatrix2 * localPosition;\"),h.push(\"worldPosition.xyz = worldPosition.xyz + offset;\"),h.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\")):(h.push(\"worldPosition = modelMatrix2 * localPosition;\"),h.push(\"worldPosition.xyz = worldPosition.xyz + offset;\"),h.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \"));r.normalsBuf&&h.push(\"vec3 viewNormal = normalize((viewNormalMatrix2 * modelNormalMatrix2 * localNormal).xyz);\");if(h.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\"),h.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\"),h.push(\"float lambertian = 1.0;\"),r.normalsBuf)for(let e=0,t=s.lights.length;e0,o=t.gammaOutput,a=[];a.push(\"// Lambertian drawing fragment shader\"),t.logarithmicDepthBufferEnabled&&a.push(\"#extension GL_EXT_frag_depth : enable\");a.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),a.push(\"precision highp float;\"),a.push(\"precision highp int;\"),a.push(\"#else\"),a.push(\"precision mediump float;\"),a.push(\"precision mediump int;\"),a.push(\"#endif\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(a.push(\"varying float isPerspective;\"),a.push(\"uniform float logDepthBufFC;\"),a.push(\"varying float vFragDepth;\"));if(r){a.push(\"varying vec4 vWorldPosition;\"),a.push(\"uniform bool clippable;\");for(let e=0,t=i.sectionPlanes.length;e 0.0) { discard; }\"),a.push(\"}\")}\"points\"===s.primitiveName&&(a.push(\"vec2 cxy = 2.0 * gl_PointCoord - 1.0;\"),a.push(\"float r = dot(cxy, cxy);\"),a.push(\"if (r > 1.0) {\"),a.push(\" discard;\"),a.push(\"}\"));t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");o?a.push(\"gl_FragColor = linearToGamma(vColor, gammaFactor);\"):a.push(\"gl_FragColor = vColor;\");return a.push(\"}\"),a}(e)):(this.vertex=function(e){const t=e.scene,i=e._material,s=e._state,r=t._sectionPlanesState,o=e._geometry._state,a=t._lightsState;let n;const l=s.billboard,h=s.background,c=s.stationary,u=function(e){if(!e._geometry._state.uvBuf)return!1;const t=e._material;return!!(t._ambientMap||t._occlusionMap||t._baseColorMap||t._diffuseMap||t._alphaMap||t._specularMap||t._glossinessMap||t._specularGlossinessMap||t._emissiveMap||t._metallicMap||t._roughnessMap||t._metallicRoughnessMap||t._reflectivityMap||t._normalMap)}(e),d=yt(e),p=r.sectionPlanes.length>0,f=Pt(e),_=!!o.compressGeometry,g=[];g.push(\"// Drawing vertex shader\"),d&&i._normalMap&&g.push(\"#extension GL_OES_standard_derivatives : enable\");t.logarithmicDepthBufferEnabled&&g.push(\"#extension GL_EXT_frag_depth : enable\");g.push(\"attribute vec3 position;\"),_&&g.push(\"uniform mat4 positionsDecodeMatrix;\");g.push(\"uniform mat4 modelMatrix;\"),g.push(\"uniform mat4 viewMatrix;\"),g.push(\"uniform mat4 projMatrix;\"),g.push(\"varying vec3 vViewPosition;\"),g.push(\"uniform vec3 offset;\"),p&&g.push(\"varying vec4 vWorldPosition;\");t.logarithmicDepthBufferEnabled&&(g.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&g.push(\"varying float vFragDepth;\"),g.push(\"bool isPerspectiveMatrix(mat4 m) {\"),g.push(\" return (m[2][3] == - 1.0);\"),g.push(\"}\"),g.push(\"varying float isPerspective;\"));a.lightMaps.length>0&&g.push(\"varying vec3 vWorldNormal;\");if(d){g.push(\"attribute vec3 normal;\"),g.push(\"uniform mat4 modelNormalMatrix;\"),g.push(\"uniform mat4 viewNormalMatrix;\"),g.push(\"varying vec3 vViewNormal;\");for(let e=0,t=a.lights.length;e= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\"),g.push(\" }\"),g.push(\" return normalize(v);\"),g.push(\"}\"))}u&&(g.push(\"attribute vec2 uv;\"),g.push(\"varying vec2 vUV;\"),_&&g.push(\"uniform mat3 uvDecodeMatrix;\"));o.colors&&(g.push(\"attribute vec4 color;\"),g.push(\"varying vec4 vColor;\"));\"points\"===o.primitiveName&&g.push(\"uniform float pointSize;\");\"spherical\"!==l&&\"cylindrical\"!==l||(g.push(\"void billboard(inout mat4 mat) {\"),g.push(\" mat[0][0] = 1.0;\"),g.push(\" mat[0][1] = 0.0;\"),g.push(\" mat[0][2] = 0.0;\"),\"spherical\"===l&&(g.push(\" mat[1][0] = 0.0;\"),g.push(\" mat[1][1] = 1.0;\"),g.push(\" mat[1][2] = 0.0;\")),g.push(\" mat[2][0] = 0.0;\"),g.push(\" mat[2][1] = 0.0;\"),g.push(\" mat[2][2] =1.0;\"),g.push(\"}\"));if(f){g.push(\"const mat4 texUnitConverter = mat4(0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.5, 0.5, 1.0);\");for(let e=0,t=a.lights.length;e0&&g.push(\"vWorldNormal = worldNormal;\"),g.push(\"vViewNormal = normalize((viewNormalMatrix2 * vec4(worldNormal, 1.0)).xyz);\"),g.push(\"vec3 tmpVec3;\"),g.push(\"float lightDist;\");for(let e=0,t=a.lights.length;e0,l=yt(e),h=s.uvBuf,c=\"PhongMaterial\"===a.type,u=\"MetallicMaterial\"===a.type,d=\"SpecularMaterial\"===a.type,p=Pt(e);t.gammaInput;const f=t.gammaOutput,_=[];_.push(\"// Drawing fragment shader\"),t.logarithmicDepthBufferEnabled&&_.push(\"#extension GL_EXT_frag_depth : enable\");l&&i._normalMap&&_.push(\"#extension GL_OES_standard_derivatives : enable\");_.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),_.push(\"precision highp float;\"),_.push(\"precision highp int;\"),_.push(\"#else\"),_.push(\"precision mediump float;\"),_.push(\"precision mediump int;\"),_.push(\"#endif\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(_.push(\"varying float isPerspective;\"),_.push(\"uniform float logDepthBufFC;\"),_.push(\"varying float vFragDepth;\"));p&&(_.push(\"float unpackDepth (vec4 color) {\"),_.push(\" const vec4 bitShift = vec4(1.0, 1.0/256.0, 1.0/(256.0 * 256.0), 1.0/(256.0*256.0*256.0));\"),_.push(\" return dot(color, bitShift);\"),_.push(\"}\"));_.push(\"uniform float gammaFactor;\"),_.push(\"vec4 linearToLinear( in vec4 value ) {\"),_.push(\" return value;\"),_.push(\"}\"),_.push(\"vec4 sRGBToLinear( in vec4 value ) {\"),_.push(\" return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\"),_.push(\"}\"),_.push(\"vec4 gammaToLinear( in vec4 value) {\"),_.push(\" return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\"),_.push(\"}\"),f&&(_.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\"),_.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\"),_.push(\"}\"));if(n){_.push(\"varying vec4 vWorldPosition;\"),_.push(\"uniform bool clippable;\");for(var g=0;g0&&(_.push(\"uniform samplerCube lightMap;\"),_.push(\"uniform mat4 viewNormalMatrix;\")),o.reflectionMaps.length>0&&_.push(\"uniform samplerCube reflectionMap;\"),(o.lightMaps.length>0||o.reflectionMaps.length>0)&&_.push(\"uniform mat4 viewMatrix;\"),_.push(\"#define PI 3.14159265359\"),_.push(\"#define RECIPROCAL_PI 0.31830988618\"),_.push(\"#define RECIPROCAL_PI2 0.15915494\"),_.push(\"#define EPSILON 1e-6\"),_.push(\"#define saturate(a) clamp( a, 0.0, 1.0 )\"),_.push(\"vec3 inverseTransformDirection(in vec3 dir, in mat4 matrix) {\"),_.push(\" return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\"),_.push(\"}\"),_.push(\"struct IncidentLight {\"),_.push(\" vec3 color;\"),_.push(\" vec3 direction;\"),_.push(\"};\"),_.push(\"struct ReflectedLight {\"),_.push(\" vec3 diffuse;\"),_.push(\" vec3 specular;\"),_.push(\"};\"),_.push(\"struct Geometry {\"),_.push(\" vec3 position;\"),_.push(\" vec3 viewNormal;\"),_.push(\" vec3 worldNormal;\"),_.push(\" vec3 viewEyeDir;\"),_.push(\"};\"),_.push(\"struct Material {\"),_.push(\" vec3 diffuseColor;\"),_.push(\" float specularRoughness;\"),_.push(\" vec3 specularColor;\"),_.push(\" float shine;\"),_.push(\"};\"),c&&((o.lightMaps.length>0||o.reflectionMaps.length>0)&&(_.push(\"void computePhongLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\"),o.lightMaps.length>0&&(_.push(\" vec3 irradiance = \"+bt[o.lightMaps[0].encoding]+\"(textureCube(lightMap, geometry.worldNormal)).rgb;\"),_.push(\" irradiance *= PI;\"),_.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\"),_.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\")),o.reflectionMaps.length>0&&(_.push(\" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);\"),_.push(\" vec3 radiance = textureCube(reflectionMap, reflectVec).rgb * 0.2;\"),_.push(\" radiance *= PI;\"),_.push(\" reflectedLight.specular += radiance;\")),_.push(\"}\")),_.push(\"void computePhongLighting(const in IncidentLight directLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\"),_.push(\" float dotNL = saturate(dot(geometry.viewNormal, directLight.direction));\"),_.push(\" vec3 irradiance = dotNL * directLight.color * PI;\"),_.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\"),_.push(\" reflectedLight.specular += directLight.color * material.specularColor * pow(max(dot(reflect(-directLight.direction, -geometry.viewNormal), geometry.viewEyeDir), 0.0), material.shine);\"),_.push(\"}\")),(u||d)&&(_.push(\"float GGXRoughnessToBlinnExponent(const in float ggxRoughness) {\"),_.push(\" float r = ggxRoughness + 0.0001;\"),_.push(\" return (2.0 / (r * r) - 2.0);\"),_.push(\"}\"),_.push(\"float getSpecularMIPLevel(const in float blinnShininessExponent, const in int maxMIPLevel) {\"),_.push(\" float maxMIPLevelScalar = float( maxMIPLevel );\"),_.push(\" float desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( ( blinnShininessExponent * blinnShininessExponent ) + 1.0 );\"),_.push(\" return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\"),_.push(\"}\"),o.reflectionMaps.length>0&&(_.push(\"vec3 getLightProbeIndirectRadiance(const in vec3 reflectVec, const in float blinnShininessExponent, const in int maxMIPLevel) {\"),_.push(\" float mipLevel = 0.5 * getSpecularMIPLevel(blinnShininessExponent, maxMIPLevel);\"),_.push(\" vec3 envMapColor = \"+bt[o.reflectionMaps[0].encoding]+\"(textureCube(reflectionMap, reflectVec, mipLevel)).rgb;\"),_.push(\" return envMapColor;\"),_.push(\"}\")),_.push(\"vec3 F_Schlick(const in vec3 specularColor, const in float dotLH) {\"),_.push(\" float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\"),_.push(\" return ( 1.0 - specularColor ) * fresnel + specularColor;\"),_.push(\"}\"),_.push(\"float G_GGX_Smith(const in float alpha, const in float dotNL, const in float dotNV) {\"),_.push(\" float a2 = ( alpha * alpha );\"),_.push(\" float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\"),_.push(\" float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\"),_.push(\" return 1.0 / ( gl * gv );\"),_.push(\"}\"),_.push(\"float G_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {\"),_.push(\" float a2 = ( alpha * alpha );\"),_.push(\" float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\"),_.push(\" float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\"),_.push(\" return 0.5 / max( gv + gl, EPSILON );\"),_.push(\"}\"),_.push(\"float D_GGX(const in float alpha, const in float dotNH) {\"),_.push(\" float a2 = ( alpha * alpha );\"),_.push(\" float denom = ( dotNH * dotNH) * ( a2 - 1.0 ) + 1.0;\"),_.push(\" return RECIPROCAL_PI * a2 / ( denom * denom);\"),_.push(\"}\"),_.push(\"vec3 BRDF_Specular_GGX(const in IncidentLight incidentLight, const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\"),_.push(\" float alpha = ( roughness * roughness );\"),_.push(\" vec3 halfDir = normalize( incidentLight.direction + geometry.viewEyeDir );\"),_.push(\" float dotNL = saturate( dot( geometry.viewNormal, incidentLight.direction ) );\"),_.push(\" float dotNV = saturate( dot( geometry.viewNormal, geometry.viewEyeDir ) );\"),_.push(\" float dotNH = saturate( dot( geometry.viewNormal, halfDir ) );\"),_.push(\" float dotLH = saturate( dot( incidentLight.direction, halfDir ) );\"),_.push(\" vec3 F = F_Schlick( specularColor, dotLH );\"),_.push(\" float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\"),_.push(\" float D = D_GGX( alpha, dotNH );\"),_.push(\" return F * (G * D);\"),_.push(\"}\"),_.push(\"vec3 BRDF_Specular_GGX_Environment(const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\"),_.push(\" float dotNV = saturate(dot(geometry.viewNormal, geometry.viewEyeDir));\"),_.push(\" const vec4 c0 = vec4( -1, -0.0275, -0.572, 0.022);\"),_.push(\" const vec4 c1 = vec4( 1, 0.0425, 1.04, -0.04);\"),_.push(\" vec4 r = roughness * c0 + c1;\"),_.push(\" float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;\"),_.push(\" vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;\"),_.push(\" return specularColor * AB.x + AB.y;\"),_.push(\"}\"),(o.lightMaps.length>0||o.reflectionMaps.length>0)&&(_.push(\"void computePBRLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\"),o.lightMaps.length>0&&(_.push(\" vec3 irradiance = sRGBToLinear(textureCube(lightMap, geometry.worldNormal)).rgb;\"),_.push(\" irradiance *= PI;\"),_.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\"),_.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\")),o.reflectionMaps.length>0&&(_.push(\" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);\"),_.push(\" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);\"),_.push(\" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);\"),_.push(\" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);\"),_.push(\" vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);\"),_.push(\" reflectedLight.specular += radiance * specularBRDFContrib;\")),_.push(\"}\")),_.push(\"void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\"),_.push(\" float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));\"),_.push(\" vec3 irradiance = dotNL * incidentLight.color * PI;\"),_.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\"),_.push(\" reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);\"),_.push(\"}\")));_.push(\"varying vec3 vViewPosition;\"),s.colors&&_.push(\"varying vec4 vColor;\");h&&(l&&i._normalMap||i._ambientMap||i._baseColorMap||i._diffuseMap||i._emissiveMap||i._metallicMap||i._roughnessMap||i._metallicRoughnessMap||i._specularMap||i._glossinessMap||i._specularGlossinessMap||i._occlusionMap||i._alphaMap)&&_.push(\"varying vec2 vUV;\");l&&(o.lightMaps.length>0&&_.push(\"varying vec3 vWorldNormal;\"),_.push(\"varying vec3 vViewNormal;\"));a.ambient&&_.push(\"uniform vec3 materialAmbient;\");a.baseColor&&_.push(\"uniform vec3 materialBaseColor;\");void 0!==a.alpha&&null!==a.alpha&&_.push(\"uniform vec4 materialAlphaModeCutoff;\");a.emissive&&_.push(\"uniform vec3 materialEmissive;\");a.diffuse&&_.push(\"uniform vec3 materialDiffuse;\");void 0!==a.glossiness&&null!==a.glossiness&&_.push(\"uniform float materialGlossiness;\");void 0!==a.shininess&&null!==a.shininess&&_.push(\"uniform float materialShininess;\");a.specular&&_.push(\"uniform vec3 materialSpecular;\");void 0!==a.metallic&&null!==a.metallic&&_.push(\"uniform float materialMetallic;\");void 0!==a.roughness&&null!==a.roughness&&_.push(\"uniform float materialRoughness;\");void 0!==a.specularF0&&null!==a.specularF0&&_.push(\"uniform float materialSpecularF0;\");h&&i._ambientMap&&(_.push(\"uniform sampler2D ambientMap;\"),i._ambientMap._state.matrix&&_.push(\"uniform mat4 ambientMapMatrix;\"));h&&i._baseColorMap&&(_.push(\"uniform sampler2D baseColorMap;\"),i._baseColorMap._state.matrix&&_.push(\"uniform mat4 baseColorMapMatrix;\"));h&&i._diffuseMap&&(_.push(\"uniform sampler2D diffuseMap;\"),i._diffuseMap._state.matrix&&_.push(\"uniform mat4 diffuseMapMatrix;\"));h&&i._emissiveMap&&(_.push(\"uniform sampler2D emissiveMap;\"),i._emissiveMap._state.matrix&&_.push(\"uniform mat4 emissiveMapMatrix;\"));l&&h&&i._metallicMap&&(_.push(\"uniform sampler2D metallicMap;\"),i._metallicMap._state.matrix&&_.push(\"uniform mat4 metallicMapMatrix;\"));l&&h&&i._roughnessMap&&(_.push(\"uniform sampler2D roughnessMap;\"),i._roughnessMap._state.matrix&&_.push(\"uniform mat4 roughnessMapMatrix;\"));l&&h&&i._metallicRoughnessMap&&(_.push(\"uniform sampler2D metallicRoughnessMap;\"),i._metallicRoughnessMap._state.matrix&&_.push(\"uniform mat4 metallicRoughnessMapMatrix;\"));l&&i._normalMap&&(_.push(\"uniform sampler2D normalMap;\"),i._normalMap._state.matrix&&_.push(\"uniform mat4 normalMapMatrix;\"),_.push(\"vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\"),_.push(\" vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\"),_.push(\" vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\"),_.push(\" vec2 st0 = dFdx( uv.st );\"),_.push(\" vec2 st1 = dFdy( uv.st );\"),_.push(\" vec3 S = normalize( q0 * st1.t - q1 * st0.t );\"),_.push(\" vec3 T = normalize( -q0 * st1.s + q1 * st0.s );\"),_.push(\" vec3 N = normalize( surf_norm );\"),_.push(\" vec3 mapN = texture2D( normalMap, uv ).xyz * 2.0 - 1.0;\"),_.push(\" mat3 tsn = mat3( S, T, N );\"),_.push(\" return normalize( tsn * mapN );\"),_.push(\"}\"));h&&i._occlusionMap&&(_.push(\"uniform sampler2D occlusionMap;\"),i._occlusionMap._state.matrix&&_.push(\"uniform mat4 occlusionMapMatrix;\"));h&&i._alphaMap&&(_.push(\"uniform sampler2D alphaMap;\"),i._alphaMap._state.matrix&&_.push(\"uniform mat4 alphaMapMatrix;\"));l&&h&&i._specularMap&&(_.push(\"uniform sampler2D specularMap;\"),i._specularMap._state.matrix&&_.push(\"uniform mat4 specularMapMatrix;\"));l&&h&&i._glossinessMap&&(_.push(\"uniform sampler2D glossinessMap;\"),i._glossinessMap._state.matrix&&_.push(\"uniform mat4 glossinessMapMatrix;\"));l&&h&&i._specularGlossinessMap&&(_.push(\"uniform sampler2D materialSpecularGlossinessMap;\"),i._specularGlossinessMap._state.matrix&&_.push(\"uniform mat4 materialSpecularGlossinessMapMatrix;\"));l&&(i._diffuseFresnel||i._specularFresnel||i._alphaFresnel||i._emissiveFresnel||i._reflectivityFresnel)&&(_.push(\"float fresnel(vec3 eyeDir, vec3 normal, float edgeBias, float centerBias, float power) {\"),_.push(\" float fr = abs(dot(eyeDir, normal));\"),_.push(\" float finalFr = clamp((fr - edgeBias) / (centerBias - edgeBias), 0.0, 1.0);\"),_.push(\" return pow(finalFr, power);\"),_.push(\"}\"),i._diffuseFresnel&&(_.push(\"uniform float diffuseFresnelCenterBias;\"),_.push(\"uniform float diffuseFresnelEdgeBias;\"),_.push(\"uniform float diffuseFresnelPower;\"),_.push(\"uniform vec3 diffuseFresnelCenterColor;\"),_.push(\"uniform vec3 diffuseFresnelEdgeColor;\")),i._specularFresnel&&(_.push(\"uniform float specularFresnelCenterBias;\"),_.push(\"uniform float specularFresnelEdgeBias;\"),_.push(\"uniform float specularFresnelPower;\"),_.push(\"uniform vec3 specularFresnelCenterColor;\"),_.push(\"uniform vec3 specularFresnelEdgeColor;\")),i._alphaFresnel&&(_.push(\"uniform float alphaFresnelCenterBias;\"),_.push(\"uniform float alphaFresnelEdgeBias;\"),_.push(\"uniform float alphaFresnelPower;\"),_.push(\"uniform vec3 alphaFresnelCenterColor;\"),_.push(\"uniform vec3 alphaFresnelEdgeColor;\")),i._reflectivityFresnel&&(_.push(\"uniform float materialSpecularF0FresnelCenterBias;\"),_.push(\"uniform float materialSpecularF0FresnelEdgeBias;\"),_.push(\"uniform float materialSpecularF0FresnelPower;\"),_.push(\"uniform vec3 materialSpecularF0FresnelCenterColor;\"),_.push(\"uniform vec3 materialSpecularF0FresnelEdgeColor;\")),i._emissiveFresnel&&(_.push(\"uniform float emissiveFresnelCenterBias;\"),_.push(\"uniform float emissiveFresnelEdgeBias;\"),_.push(\"uniform float emissiveFresnelPower;\"),_.push(\"uniform vec3 emissiveFresnelCenterColor;\"),_.push(\"uniform vec3 emissiveFresnelEdgeColor;\")));if(_.push(\"uniform vec4 lightAmbient;\"),l)for(let e=0,t=o.lights.length;e 0.0) { discard; }\"),_.push(\"}\")}\"points\"===s.primitiveName&&(_.push(\"vec2 cxy = 2.0 * gl_PointCoord - 1.0;\"),_.push(\"float r = dot(cxy, cxy);\"),_.push(\"if (r > 1.0) {\"),_.push(\" discard;\"),_.push(\"}\"));_.push(\"float occlusion = 1.0;\"),a.ambient?_.push(\"vec3 ambientColor = materialAmbient;\"):_.push(\"vec3 ambientColor = vec3(1.0, 1.0, 1.0);\");a.diffuse?_.push(\"vec3 diffuseColor = materialDiffuse;\"):a.baseColor?_.push(\"vec3 diffuseColor = materialBaseColor;\"):_.push(\"vec3 diffuseColor = vec3(1.0, 1.0, 1.0);\");s.colors&&_.push(\"diffuseColor *= vColor.rgb;\");a.emissive?_.push(\"vec3 emissiveColor = materialEmissive;\"):_.push(\"vec3 emissiveColor = vec3(0.0, 0.0, 0.0);\");a.specular?_.push(\"vec3 specular = materialSpecular;\"):_.push(\"vec3 specular = vec3(1.0, 1.0, 1.0);\");void 0!==a.alpha?_.push(\"float alpha = materialAlphaModeCutoff[0];\"):_.push(\"float alpha = 1.0;\");s.colors&&_.push(\"alpha *= vColor.a;\");void 0!==a.glossiness?_.push(\"float glossiness = materialGlossiness;\"):_.push(\"float glossiness = 1.0;\");void 0!==a.metallic?_.push(\"float metallic = materialMetallic;\"):_.push(\"float metallic = 1.0;\");void 0!==a.roughness?_.push(\"float roughness = materialRoughness;\"):_.push(\"float roughness = 1.0;\");void 0!==a.specularF0?_.push(\"float specularF0 = materialSpecularF0;\"):_.push(\"float specularF0 = 1.0;\");h&&(l&&i._normalMap||i._ambientMap||i._baseColorMap||i._diffuseMap||i._occlusionMap||i._emissiveMap||i._metallicMap||i._roughnessMap||i._metallicRoughnessMap||i._specularMap||i._glossinessMap||i._specularGlossinessMap||i._alphaMap)&&(_.push(\"vec4 texturePos = vec4(vUV.s, vUV.t, 1.0, 1.0);\"),_.push(\"vec2 textureCoord;\"));h&&i._ambientMap&&(i._ambientMap._state.matrix?_.push(\"textureCoord = (ambientMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"vec4 ambientTexel = texture2D(ambientMap, textureCoord).rgb;\"),_.push(\"ambientTexel = \"+bt[i._ambientMap._state.encoding]+\"(ambientTexel);\"),_.push(\"ambientColor *= ambientTexel.rgb;\"));h&&i._diffuseMap&&(i._diffuseMap._state.matrix?_.push(\"textureCoord = (diffuseMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"vec4 diffuseTexel = texture2D(diffuseMap, textureCoord);\"),_.push(\"diffuseTexel = \"+bt[i._diffuseMap._state.encoding]+\"(diffuseTexel);\"),_.push(\"diffuseColor *= diffuseTexel.rgb;\"),_.push(\"alpha *= diffuseTexel.a;\"));h&&i._baseColorMap&&(i._baseColorMap._state.matrix?_.push(\"textureCoord = (baseColorMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"vec4 baseColorTexel = texture2D(baseColorMap, textureCoord);\"),_.push(\"baseColorTexel = \"+bt[i._baseColorMap._state.encoding]+\"(baseColorTexel);\"),_.push(\"diffuseColor *= baseColorTexel.rgb;\"),_.push(\"alpha *= baseColorTexel.a;\"));h&&i._emissiveMap&&(i._emissiveMap._state.matrix?_.push(\"textureCoord = (emissiveMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"vec4 emissiveTexel = texture2D(emissiveMap, textureCoord);\"),_.push(\"emissiveTexel = \"+bt[i._emissiveMap._state.encoding]+\"(emissiveTexel);\"),_.push(\"emissiveColor = emissiveTexel.rgb;\"));h&&i._alphaMap&&(i._alphaMap._state.matrix?_.push(\"textureCoord = (alphaMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"alpha *= texture2D(alphaMap, textureCoord).r;\"));h&&i._occlusionMap&&(i._occlusionMap._state.matrix?_.push(\"textureCoord = (occlusionMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"occlusion *= texture2D(occlusionMap, textureCoord).r;\"));if(l&&(o.lights.length>0||o.lightMaps.length>0||o.reflectionMaps.length>0)){h&&i._normalMap?(i._normalMap._state.matrix?_.push(\"textureCoord = (normalMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"vec3 viewNormal = perturbNormal2Arb( vViewPosition, normalize(vViewNormal), textureCoord );\")):_.push(\"vec3 viewNormal = normalize(vViewNormal);\"),h&&i._specularMap&&(i._specularMap._state.matrix?_.push(\"textureCoord = (specularMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"specular *= texture2D(specularMap, textureCoord).rgb;\")),h&&i._glossinessMap&&(i._glossinessMap._state.matrix?_.push(\"textureCoord = (glossinessMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"glossiness *= texture2D(glossinessMap, textureCoord).r;\")),h&&i._specularGlossinessMap&&(i._specularGlossinessMap._state.matrix?_.push(\"textureCoord = (materialSpecularGlossinessMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"vec4 specGlossRGB = texture2D(materialSpecularGlossinessMap, textureCoord).rgba;\"),_.push(\"specular *= specGlossRGB.rgb;\"),_.push(\"glossiness *= specGlossRGB.a;\")),h&&i._metallicMap&&(i._metallicMap._state.matrix?_.push(\"textureCoord = (metallicMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"metallic *= texture2D(metallicMap, textureCoord).r;\")),h&&i._roughnessMap&&(i._roughnessMap._state.matrix?_.push(\"textureCoord = (roughnessMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"roughness *= texture2D(roughnessMap, textureCoord).r;\")),h&&i._metallicRoughnessMap&&(i._metallicRoughnessMap._state.matrix?_.push(\"textureCoord = (metallicRoughnessMapMatrix * texturePos).xy;\"):_.push(\"textureCoord = texturePos.xy;\"),_.push(\"vec3 metalRoughRGB = texture2D(metallicRoughnessMap, textureCoord).rgb;\"),_.push(\"metallic *= metalRoughRGB.b;\"),_.push(\"roughness *= metalRoughRGB.g;\")),_.push(\"vec3 viewEyeDir = normalize(-vViewPosition);\"),i._diffuseFresnel&&(_.push(\"float diffuseFresnel = fresnel(viewEyeDir, viewNormal, diffuseFresnelEdgeBias, diffuseFresnelCenterBias, diffuseFresnelPower);\"),_.push(\"diffuseColor *= mix(diffuseFresnelEdgeColor, diffuseFresnelCenterColor, diffuseFresnel);\")),i._specularFresnel&&(_.push(\"float specularFresnel = fresnel(viewEyeDir, viewNormal, specularFresnelEdgeBias, specularFresnelCenterBias, specularFresnelPower);\"),_.push(\"specular *= mix(specularFresnelEdgeColor, specularFresnelCenterColor, specularFresnel);\")),i._alphaFresnel&&(_.push(\"float alphaFresnel = fresnel(viewEyeDir, viewNormal, alphaFresnelEdgeBias, alphaFresnelCenterBias, alphaFresnelPower);\"),_.push(\"alpha *= mix(alphaFresnelEdgeColor.r, alphaFresnelCenterColor.r, alphaFresnel);\")),i._emissiveFresnel&&(_.push(\"float emissiveFresnel = fresnel(viewEyeDir, viewNormal, emissiveFresnelEdgeBias, emissiveFresnelCenterBias, emissiveFresnelPower);\"),_.push(\"emissiveColor *= mix(emissiveFresnelEdgeColor, emissiveFresnelCenterColor, emissiveFresnel);\")),_.push(\"if (materialAlphaModeCutoff[1] == 1.0 && alpha < materialAlphaModeCutoff[2]) {\"),_.push(\" discard;\"),_.push(\"}\"),_.push(\"IncidentLight light;\"),_.push(\"Material material;\"),_.push(\"Geometry geometry;\"),_.push(\"ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));\"),_.push(\"vec3 viewLightDir;\"),c&&(_.push(\"material.diffuseColor = diffuseColor;\"),_.push(\"material.specularColor = specular;\"),_.push(\"material.shine = materialShininess;\")),d&&(_.push(\"float oneMinusSpecularStrength = 1.0 - max(max(specular.r, specular.g ),specular.b);\"),_.push(\"material.diffuseColor = diffuseColor * oneMinusSpecularStrength;\"),_.push(\"material.specularRoughness = clamp( 1.0 - glossiness, 0.04, 1.0 );\"),_.push(\"material.specularColor = specular;\")),u&&(_.push(\"float dielectricSpecular = 0.16 * specularF0 * specularF0;\"),_.push(\"material.diffuseColor = diffuseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);\"),_.push(\"material.specularRoughness = clamp(roughness, 0.04, 1.0);\"),_.push(\"material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);\")),_.push(\"geometry.position = vViewPosition;\"),o.lightMaps.length>0&&_.push(\"geometry.worldNormal = normalize(vWorldNormal);\"),_.push(\"geometry.viewNormal = viewNormal;\"),_.push(\"geometry.viewEyeDir = viewEyeDir;\"),c&&(o.lightMaps.length>0||o.reflectionMaps.length>0)&&_.push(\"computePhongLightMapping(geometry, material, reflectedLight);\"),(d||u)&&(o.lightMaps.length>0||o.reflectionMaps.length>0)&&_.push(\"computePBRLightMapping(geometry, material, reflectedLight);\"),_.push(\"float shadow = 1.0;\"),_.push(\"float shadowAcneRemover = 0.007;\"),_.push(\"vec3 fragmentDepth;\"),_.push(\"float texelSize = 1.0 / 1024.0;\"),_.push(\"float amountInLight = 0.0;\"),_.push(\"vec3 shadowCoord;\"),_.push(\"vec4 rgbaDepth;\"),_.push(\"float depth;\");for(let e=0,t=o.lights.length;e0){const i=s._sectionPlanesState.sectionPlanes,r=t.renderFlags;for(let t=0;t0&&(this._uLightMap=\"lightMap\"),r.reflectionMaps.length>0&&(this._uReflectionMap=\"reflectionMap\"),this._uSectionPlanes=[];for(c=0,u=o.sectionPlanes.length;c0&&r.lightMaps[0].texture&&this._uLightMap&&(n.bindTexture(this._uLightMap,r.lightMaps[0].texture,e.textureUnit),e.textureUnit=(e.textureUnit+1)%t,e.bindTexture++),r.reflectionMaps.length>0&&r.reflectionMaps[0].texture&&this._uReflectionMap&&(n.bindTexture(this._uReflectionMap,r.reflectionMaps[0].texture,e.textureUnit),e.textureUnit=(e.textureUnit+1)%t,e.bindTexture++),this._uGammaFactor&&s.uniform1f(this._uGammaFactor,i.gammaFactor),this._baseTextureUnit=e.textureUnit};class Ct{constructor(e){this.vertex=function(e){const t=e.scene,i=t._lightsState,s=function(e){const t=e._geometry._state.primitiveName;if((e._geometry._state.autoVertexNormals||e._geometry._state.normalsBuf)&&(\"triangles\"===t||\"triangle-strip\"===t||\"triangle-fan\"===t))return!0;return!1}(e),r=t._sectionPlanesState.sectionPlanes.length>0,o=!!e._geometry._state.compressGeometry,a=e._state.billboard,n=e._state.stationary,l=[];l.push(\"// EmphasisFillShaderSource vertex shader\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&l.push(\"#extension GL_EXT_frag_depth : enable\");l.push(\"attribute vec3 position;\"),l.push(\"uniform mat4 modelMatrix;\"),l.push(\"uniform mat4 viewMatrix;\"),l.push(\"uniform mat4 projMatrix;\"),l.push(\"uniform vec4 colorize;\"),l.push(\"uniform vec3 offset;\"),o&&l.push(\"uniform mat4 positionsDecodeMatrix;\");t.logarithmicDepthBufferEnabled&&(l.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&l.push(\"varying float vFragDepth;\"),l.push(\"bool isPerspectiveMatrix(mat4 m) {\"),l.push(\" return (m[2][3] == - 1.0);\"),l.push(\"}\"),l.push(\"varying float isPerspective;\"));r&&l.push(\"varying vec4 vWorldPosition;\");if(l.push(\"uniform vec4 lightAmbient;\"),l.push(\"uniform vec4 fillColor;\"),s){l.push(\"attribute vec3 normal;\"),l.push(\"uniform mat4 modelNormalMatrix;\"),l.push(\"uniform mat4 viewNormalMatrix;\");for(let e=0,t=i.lights.length;e= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\"),l.push(\" }\"),l.push(\" return normalize(v);\"),l.push(\"}\"))}l.push(\"varying vec4 vColor;\"),(\"spherical\"===a||\"cylindrical\"===a)&&(l.push(\"void billboard(inout mat4 mat) {\"),l.push(\" mat[0][0] = 1.0;\"),l.push(\" mat[0][1] = 0.0;\"),l.push(\" mat[0][2] = 0.0;\"),\"spherical\"===a&&(l.push(\" mat[1][0] = 0.0;\"),l.push(\" mat[1][1] = 1.0;\"),l.push(\" mat[1][2] = 0.0;\")),l.push(\" mat[2][0] = 0.0;\"),l.push(\" mat[2][1] = 0.0;\"),l.push(\" mat[2][2] =1.0;\"),l.push(\"}\"));l.push(\"void main(void) {\"),l.push(\"vec4 localPosition = vec4(position, 1.0); \"),l.push(\"vec4 worldPosition;\"),o&&l.push(\"localPosition = positionsDecodeMatrix * localPosition;\");s&&(o?l.push(\"vec4 localNormal = vec4(octDecode(normal.xy), 0.0); \"):l.push(\"vec4 localNormal = vec4(normal, 0.0); \"),l.push(\"mat4 modelNormalMatrix2 = modelNormalMatrix;\"),l.push(\"mat4 viewNormalMatrix2 = viewNormalMatrix;\"));l.push(\"mat4 viewMatrix2 = viewMatrix;\"),l.push(\"mat4 modelMatrix2 = modelMatrix;\"),n&&l.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\");\"spherical\"===a||\"cylindrical\"===a?(l.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\"),l.push(\"billboard(modelMatrix2);\"),l.push(\"billboard(viewMatrix2);\"),l.push(\"billboard(modelViewMatrix);\"),s&&(l.push(\"mat4 modelViewNormalMatrix = viewNormalMatrix2 * modelNormalMatrix2;\"),l.push(\"billboard(modelNormalMatrix2);\"),l.push(\"billboard(viewNormalMatrix2);\"),l.push(\"billboard(modelViewNormalMatrix);\")),l.push(\"worldPosition = modelMatrix2 * localPosition;\"),l.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\")):(l.push(\"worldPosition = modelMatrix2 * localPosition;\"),l.push(\"worldPosition.xyz = worldPosition.xyz + offset;\"),l.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \"));s&&l.push(\"vec3 viewNormal = normalize((viewNormalMatrix2 * modelNormalMatrix2 * localNormal).xyz);\");if(l.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\"),l.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\"),l.push(\"float lambertian = 1.0;\"),s)for(let e=0,t=i.lights.length;e0,o=[];o.push(\"// Lambertian drawing fragment shader\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"#extension GL_EXT_frag_depth : enable\");o.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),o.push(\"precision highp float;\"),o.push(\"precision highp int;\"),o.push(\"#else\"),o.push(\"precision mediump float;\"),o.push(\"precision mediump int;\"),o.push(\"#endif\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(o.push(\"varying float isPerspective;\"),o.push(\"uniform float logDepthBufFC;\"),o.push(\"varying float vFragDepth;\"));s&&(o.push(\"uniform float gammaFactor;\"),o.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\"),o.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\"),o.push(\"}\"));if(r){o.push(\"varying vec4 vWorldPosition;\"),o.push(\"uniform bool clippable;\");for(let e=0,t=i.sectionPlanes.length;e 0.0) { discard; }\"),o.push(\"}\")}\"points\"===e._geometry._state.primitiveName&&(o.push(\"vec2 cxy = 2.0 * gl_PointCoord - 1.0;\"),o.push(\"float r = dot(cxy, cxy);\"),o.push(\"if (r > 1.0) {\"),o.push(\" discard;\"),o.push(\"}\"));t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");s?o.push(\"gl_FragColor = linearToGamma(vColor, gammaFactor);\"):o.push(\"gl_FragColor = vColor;\");return o.push(\"}\"),o}(e)}}const At=new e({}),St=u.vec3(),Dt=function(e,t){this.id=At.addItem({}),this._hash=e,this._scene=t.scene,this._useCount=0,this._shaderSource=new Ct(t),this._allocate(t)},Lt={};Dt.get=function(e){const t=[e.scene.id,e.scene.gammaOutput?\"go\":\"\",e.scene._sectionPlanesState.getHash(),e._geometry._state.normalsBuf?\"n\":\"\",e._geometry._state.compressGeometry?\"cp\":\"\",e._state.hash].join(\";\");let i=Lt[t];return i||(i=new Dt(t,e),Lt[t]=i,d.memory.programs++),i._useCount++,i},Dt.prototype.put=function(){0==--this._useCount&&(At.removeItem(this.id),this._program&&this._program.destroy(),delete Lt[this._hash],d.memory.programs--)},Dt.prototype.webglContextRestored=function(){this._program=null},Dt.prototype.drawMesh=function(e,t,i){this._program||this._allocate(t);const s=this._scene,r=s.camera,o=s.canvas.gl,a=0===i?t._xrayMaterial._state:1===i?t._highlightMaterial._state:t._selectedMaterial._state,n=t._state,l=t._geometry._state,h=t.rtcCenter;if(e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),o.uniformMatrix4fv(this._uViewMatrix,!1,h?e.getRTCViewMatrix(n.rtcCenterHash,h):r.viewMatrix),o.uniformMatrix4fv(this._uViewNormalMatrix,!1,r.viewNormalMatrix),n.clippable){const e=s._sectionPlanesState.sectionPlanes.length;if(e>0){const i=s._sectionPlanesState.sectionPlanes,r=t.renderFlags;for(let t=0;t0,s=!!e._geometry._state.compressGeometry,r=e._state.billboard,o=e._state.stationary,a=[];a.push(\"// Edges drawing vertex shader\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\"#extension GL_EXT_frag_depth : enable\");a.push(\"attribute vec3 position;\"),a.push(\"uniform mat4 modelMatrix;\"),a.push(\"uniform mat4 viewMatrix;\"),a.push(\"uniform mat4 projMatrix;\"),a.push(\"uniform vec4 edgeColor;\"),a.push(\"uniform vec3 offset;\"),s&&a.push(\"uniform mat4 positionsDecodeMatrix;\");t.logarithmicDepthBufferEnabled&&(a.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\"varying float vFragDepth;\"),a.push(\"bool isPerspectiveMatrix(mat4 m) {\"),a.push(\" return (m[2][3] == - 1.0);\"),a.push(\"}\"),a.push(\"varying float isPerspective;\"));i&&a.push(\"varying vec4 vWorldPosition;\");a.push(\"varying vec4 vColor;\"),(\"spherical\"===r||\"cylindrical\"===r)&&(a.push(\"void billboard(inout mat4 mat) {\"),a.push(\" mat[0][0] = 1.0;\"),a.push(\" mat[0][1] = 0.0;\"),a.push(\" mat[0][2] = 0.0;\"),\"spherical\"===r&&(a.push(\" mat[1][0] = 0.0;\"),a.push(\" mat[1][1] = 1.0;\"),a.push(\" mat[1][2] = 0.0;\")),a.push(\" mat[2][0] = 0.0;\"),a.push(\" mat[2][1] = 0.0;\"),a.push(\" mat[2][2] =1.0;\"),a.push(\"}\"));a.push(\"void main(void) {\"),a.push(\"vec4 localPosition = vec4(position, 1.0); \"),a.push(\"vec4 worldPosition;\"),s&&a.push(\"localPosition = positionsDecodeMatrix * localPosition;\");a.push(\"mat4 viewMatrix2 = viewMatrix;\"),a.push(\"mat4 modelMatrix2 = modelMatrix;\"),o&&a.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\");\"spherical\"===r||\"cylindrical\"===r?(a.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\"),a.push(\"billboard(modelMatrix2);\"),a.push(\"billboard(viewMatrix2);\"),a.push(\"billboard(modelViewMatrix);\"),a.push(\"worldPosition = modelMatrix2 * localPosition;\"),a.push(\"worldPosition.xyz = worldPosition.xyz + offset;\"),a.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\")):(a.push(\"worldPosition = modelMatrix2 * localPosition;\"),a.push(\"worldPosition.xyz = worldPosition.xyz + offset;\"),a.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \"));a.push(\"vColor = edgeColor;\"),i&&a.push(\"vWorldPosition = worldPosition;\");a.push(\"vec4 clipPos = projMatrix * viewPosition;\"),t.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?a.push(\"vFragDepth = 1.0 + clipPos.w;\"):(a.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),a.push(\"clipPos.z *= clipPos.w;\")),a.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\"));return a.push(\"gl_Position = clipPos;\"),a.push(\"}\"),a}(e),this.fragment=function(e){const t=e.scene,i=e.scene._sectionPlanesState,s=e.scene.gammaOutput,r=i.sectionPlanes.length>0,o=[];o.push(\"// Edges drawing fragment shader\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"#extension GL_EXT_frag_depth : enable\");o.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),o.push(\"precision highp float;\"),o.push(\"precision highp int;\"),o.push(\"#else\"),o.push(\"precision mediump float;\"),o.push(\"precision mediump int;\"),o.push(\"#endif\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(o.push(\"varying float isPerspective;\"),o.push(\"uniform float logDepthBufFC;\"),o.push(\"varying float vFragDepth;\"));s&&(o.push(\"uniform float gammaFactor;\"),o.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\"),o.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\"),o.push(\"}\"));if(r){o.push(\"varying vec4 vWorldPosition;\"),o.push(\"uniform bool clippable;\");for(let e=0,t=i.sectionPlanes.length;e 0.0) { discard; }\"),o.push(\"}\")}t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");s?o.push(\"gl_FragColor = linearToGamma(vColor, gammaFactor);\"):o.push(\"gl_FragColor = vColor;\");return o.push(\"}\"),o}(e)}}const Tt=new e({}),Rt=u.vec3(),Ft=function(e,t){this.id=Tt.addItem({}),this._hash=e,this._scene=t.scene,this._useCount=0,this._shaderSource=new Bt(t),this._allocate(t)},Nt={};Ft.get=function(e){const t=[e.scene.id,e.scene.gammaOutput?\"go\":\"\",e.scene._sectionPlanesState.getHash(),e._geometry._state.compressGeometry?\"cp\":\"\",e._state.hash].join(\";\");let i=Nt[t];return i||(i=new Ft(t,e),Nt[t]=i,d.memory.programs++),i._useCount++,i},Ft.prototype.put=function(){0==--this._useCount&&(Tt.removeItem(this.id),this._program&&this._program.destroy(),delete Nt[this._hash],d.memory.programs--)},Ft.prototype.webglContextRestored=function(){this._program=null},Ft.prototype.drawMesh=function(e,t,i){this._program||this._allocate(t);const s=this._scene,r=s.camera,o=s.canvas.gl;let a;const n=t._state,l=t._geometry,h=l._state,c=t.rtcCenter;if(e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),o.uniformMatrix4fv(this._uViewMatrix,!1,c?e.getRTCViewMatrix(n.rtcCenterHash,c):r.viewMatrix),n.clippable){const e=s._sectionPlanesState.sectionPlanes.length;if(e>0){const i=s._sectionPlanesState.sectionPlanes,r=t.renderFlags;for(let t=0;t0,s=!!e._geometry._state.compressGeometry,r=e._state.billboard,o=e._state.stationary,a=[];a.push(\"// Mesh picking vertex shader\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\"#extension GL_EXT_frag_depth : enable\");a.push(\"attribute vec3 position;\"),a.push(\"uniform mat4 modelMatrix;\"),a.push(\"uniform mat4 viewMatrix;\"),a.push(\"uniform mat4 projMatrix;\"),a.push(\"varying vec4 vViewPosition;\"),a.push(\"uniform vec3 offset;\"),s&&a.push(\"uniform mat4 positionsDecodeMatrix;\");i&&a.push(\"varying vec4 vWorldPosition;\");t.logarithmicDepthBufferEnabled&&(a.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\"varying float vFragDepth;\"),a.push(\"bool isPerspectiveMatrix(mat4 m) {\"),a.push(\" return (m[2][3] == - 1.0);\"),a.push(\"}\"),a.push(\"varying float isPerspective;\"));\"spherical\"!==r&&\"cylindrical\"!==r||(a.push(\"void billboard(inout mat4 mat) {\"),a.push(\" mat[0][0] = 1.0;\"),a.push(\" mat[0][1] = 0.0;\"),a.push(\" mat[0][2] = 0.0;\"),\"spherical\"===r&&(a.push(\" mat[1][0] = 0.0;\"),a.push(\" mat[1][1] = 1.0;\"),a.push(\" mat[1][2] = 0.0;\")),a.push(\" mat[2][0] = 0.0;\"),a.push(\" mat[2][1] = 0.0;\"),a.push(\" mat[2][2] =1.0;\"),a.push(\"}\"));a.push(\"void main(void) {\"),a.push(\"vec4 localPosition = vec4(position, 1.0); \"),s&&a.push(\"localPosition = positionsDecodeMatrix * localPosition;\");a.push(\"mat4 viewMatrix2 = viewMatrix;\"),a.push(\"mat4 modelMatrix2 = modelMatrix;\"),o&&a.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\");\"spherical\"!==r&&\"cylindrical\"!==r||(a.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\"),a.push(\"billboard(modelMatrix2);\"),a.push(\"billboard(viewMatrix2);\"));a.push(\" vec4 worldPosition = modelMatrix2 * localPosition;\"),a.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),a.push(\" vec4 viewPosition = viewMatrix2 * worldPosition;\"),i&&a.push(\" vWorldPosition = worldPosition;\");a.push(\"vec4 clipPos = projMatrix * viewPosition;\"),t.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?a.push(\"vFragDepth = 1.0 + clipPos.w;\"):(a.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),a.push(\"clipPos.z *= clipPos.w;\")),a.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\"));return a.push(\"gl_Position = clipPos;\"),a.push(\"}\"),a}(e),this.fragment=function(e){const t=e.scene,i=t._sectionPlanesState,s=i.sectionPlanes.length>0,r=[];r.push(\"// Mesh picking fragment shader\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&r.push(\"#extension GL_EXT_frag_depth : enable\");r.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),r.push(\"precision highp float;\"),r.push(\"precision highp int;\"),r.push(\"#else\"),r.push(\"precision mediump float;\"),r.push(\"precision mediump int;\"),r.push(\"#endif\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(r.push(\"varying float isPerspective;\"),r.push(\"uniform float logDepthBufFC;\"),r.push(\"varying float vFragDepth;\"));if(r.push(\"uniform vec4 pickColor;\"),s){r.push(\"uniform bool clippable;\"),r.push(\"varying vec4 vWorldPosition;\");for(var o=0;o 0.0) { discard; }\"),r.push(\"}\")}t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&r.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");return r.push(\" gl_FragColor = pickColor; \"),r.push(\"}\"),r}(e)}}const Ot=u.vec3(),kt=function(e,t){this._hash=e,this._shaderSource=new It(t),this._scene=t.scene,this._useCount=0,this._allocate(t)},Vt={};kt.get=function(e){const t=[e.scene.canvas.canvas.id,e.scene._sectionPlanesState.getHash(),e._geometry._state.hash,e._state.hash].join(\";\");let i=Vt[t];if(!i){if(i=new kt(t,e),i.errors)return console.log(i.errors.join(\"\\n\")),null;Vt[t]=i,d.memory.programs++}return i._useCount++,i},kt.prototype.put=function(){0==--this._useCount&&(this._program&&this._program.destroy(),delete Vt[this._hash],d.memory.programs--)},kt.prototype.webglContextRestored=function(){this._program=null},kt.prototype.drawMesh=function(e,t){this._program||this._allocate(t);const i=this._scene,s=i.canvas.gl,r=t._state,o=t._material._state,a=t._geometry._state,n=t.rtcCenter;if(e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),s.uniformMatrix4fv(this._uViewMatrix,!1,n?e.getRTCPickViewMatrix(r.rtcCenterHash,n):e.pickViewMatrix),r.clippable){const e=i._sectionPlanesState.sectionPlanes.length;if(e>0){const r=i._sectionPlanesState.sectionPlanes,o=t.renderFlags;for(let t=0;t>24&255,c=l>>16&255,u=l>>8&255,d=255&l;s.uniform4f(this._uPickColor,d/255,u/255,c/255,h/255),a.indicesBuf?(s.drawElements(a.primitive,a.indicesBuf.numItems,a.indicesBuf.itemType,0),e.drawElements++):a.positions&&s.drawArrays(s.TRIANGLES,0,a.positions.numItems)},kt.prototype._allocate=function(e){const t=e.scene,i=t.canvas.gl;if(this._program=new se(i,this._shaderSource),this._program.errors)return void(this.errors=this._program.errors);const s=this._program;this._uPositionsDecodeMatrix=s.getLocation(\"positionsDecodeMatrix\"),this._uModelMatrix=s.getLocation(\"modelMatrix\"),this._uViewMatrix=s.getLocation(\"viewMatrix\"),this._uProjMatrix=s.getLocation(\"projMatrix\"),this._uSectionPlanes=[];for(let e=0,i=t._sectionPlanesState.sectionPlanes.length;e0,s=!!e._geometry._state.compressGeometry;e._state.billboard,e._state.stationary;const r=[];r.push(\"// Surface picking vertex shader\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&r.push(\"#extension GL_EXT_frag_depth : enable\");r.push(\"attribute vec3 position;\"),r.push(\"attribute vec4 color;\"),r.push(\"uniform mat4 modelMatrix;\"),r.push(\"uniform mat4 viewMatrix;\"),r.push(\"uniform mat4 projMatrix;\"),r.push(\"uniform vec3 offset;\"),i&&(r.push(\"uniform bool clippable;\"),r.push(\"varying vec4 vWorldPosition;\"));t.logarithmicDepthBufferEnabled&&(r.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&r.push(\"varying float vFragDepth;\"),r.push(\"bool isPerspectiveMatrix(mat4 m) {\"),r.push(\" return (m[2][3] == - 1.0);\"),r.push(\"}\"),r.push(\"varying float isPerspective;\"));r.push(\"varying vec4 vColor;\"),s&&r.push(\"uniform mat4 positionsDecodeMatrix;\");r.push(\"void main(void) {\"),r.push(\"vec4 localPosition = vec4(position, 1.0); \"),s&&r.push(\"localPosition = positionsDecodeMatrix * localPosition;\");r.push(\" vec4 worldPosition = modelMatrix * localPosition; \"),r.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),r.push(\" vec4 viewPosition = viewMatrix * worldPosition;\"),i&&r.push(\" vWorldPosition = worldPosition;\");r.push(\" vColor = color;\"),r.push(\"vec4 clipPos = projMatrix * viewPosition;\"),t.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?r.push(\"vFragDepth = 1.0 + clipPos.w;\"):(r.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),r.push(\"clipPos.z *= clipPos.w;\")),r.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\"));return r.push(\"gl_Position = clipPos;\"),r.push(\"}\"),r}(e),this.fragment=function(e){const t=e.scene,i=t._sectionPlanesState,s=i.sectionPlanes.length>0,r=[];r.push(\"// Surface picking fragment shader\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&r.push(\"#extension GL_EXT_frag_depth : enable\");r.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),r.push(\"precision highp float;\"),r.push(\"precision highp int;\"),r.push(\"#else\"),r.push(\"precision mediump float;\"),r.push(\"precision mediump int;\"),r.push(\"#endif\"),r.push(\"varying vec4 vColor;\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(r.push(\"varying float isPerspective;\"),r.push(\"uniform float logDepthBufFC;\"),r.push(\"varying float vFragDepth;\"));if(s){r.push(\"uniform bool clippable;\"),r.push(\"varying vec4 vWorldPosition;\");for(let e=0;e 0.0) { discard; }\"),r.push(\"}\")}t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&r.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");return r.push(\" gl_FragColor = vColor;\"),r.push(\"}\"),r}(e)}}const zt=u.vec3(),Ut=function(e,t){this._hash=e,this._scene=t.scene,this._useCount=0,this._shaderSource=new jt(t),this._allocate(t)},Gt={};Ut.get=function(e){const t=[e.scene.canvas.canvas.id,e.scene._sectionPlanesState.getHash(),e._geometry._state.compressGeometry?\"cp\":\"\",e._state.hash].join(\";\");let i=Gt[t];if(!i){if(i=new Ut(t,e),i.errors)return console.log(i.errors.join(\"\\n\")),null;Gt[t]=i,d.memory.programs++}return i._useCount++,i},Ut.prototype.put=function(){0==--this._useCount&&(this._program&&this._program.destroy(),delete Gt[this._hash],d.memory.programs--)},Ut.prototype.webglContextRestored=function(){this._program=null},Ut.prototype.drawMesh=function(e,t){this._program||this._allocate(t);const i=this._scene,s=i.canvas.gl,r=t._state,o=t._material._state,a=t._geometry,n=t._geometry._state,l=t.rtcCenter,h=o.backfaces,c=o.frontface,u=i.camera.project,d=a._getPickTrianglePositions(),p=a._getPickTriangleColors();if(this._program.bind(),e.useProgram++,i.logarithmicDepthBufferEnabled){const e=2/(Math.log(u.far+1)/Math.LN2);s.uniform1f(this._uLogDepthBufFC,e)}if(s.uniformMatrix4fv(this._uViewMatrix,!1,l?e.getRTCPickViewMatrix(r.rtcCenterHash,l):e.pickViewMatrix),r.clippable){const e=i._sectionPlanesState.sectionPlanes.length;if(e>0){const r=i._sectionPlanesState.sectionPlanes,o=t.renderFlags;for(let t=0;t0,s=!!e._geometry._state.compressGeometry,r=e._state.billboard,o=e._state.stationary,a=[];a.push(\"// Mesh occlusion vertex shader\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\"#extension GL_EXT_frag_depth : enable\");a.push(\"attribute vec3 position;\"),a.push(\"uniform mat4 modelMatrix;\"),a.push(\"uniform mat4 viewMatrix;\"),a.push(\"uniform mat4 projMatrix;\"),a.push(\"uniform vec3 offset;\"),s&&a.push(\"uniform mat4 positionsDecodeMatrix;\");i&&a.push(\"varying vec4 vWorldPosition;\");t.logarithmicDepthBufferEnabled&&(a.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\"varying float vFragDepth;\"),a.push(\"bool isPerspectiveMatrix(mat4 m) {\"),a.push(\" return (m[2][3] == - 1.0);\"),a.push(\"}\"),a.push(\"varying float isPerspective;\"));\"spherical\"!==r&&\"cylindrical\"!==r||(a.push(\"void billboard(inout mat4 mat) {\"),a.push(\" mat[0][0] = 1.0;\"),a.push(\" mat[0][1] = 0.0;\"),a.push(\" mat[0][2] = 0.0;\"),\"spherical\"===r&&(a.push(\" mat[1][0] = 0.0;\"),a.push(\" mat[1][1] = 1.0;\"),a.push(\" mat[1][2] = 0.0;\")),a.push(\" mat[2][0] = 0.0;\"),a.push(\" mat[2][1] = 0.0;\"),a.push(\" mat[2][2] =1.0;\"),a.push(\"}\"));a.push(\"void main(void) {\"),a.push(\"vec4 localPosition = vec4(position, 1.0); \"),s&&a.push(\"localPosition = positionsDecodeMatrix * localPosition;\");a.push(\"mat4 viewMatrix2 = viewMatrix;\"),a.push(\"mat4 modelMatrix2 = modelMatrix;\"),o&&a.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\");\"spherical\"!==r&&\"cylindrical\"!==r||(a.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\"),a.push(\"billboard(modelMatrix2);\"),a.push(\"billboard(viewMatrix2);\"));a.push(\" vec4 worldPosition = modelMatrix2 * localPosition;\"),a.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),a.push(\" vec4 viewPosition = viewMatrix2 * worldPosition;\"),i&&a.push(\" vWorldPosition = worldPosition;\");a.push(\"vec4 clipPos = projMatrix * viewPosition;\"),t.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?a.push(\"vFragDepth = 1.0 + clipPos.w;\"):(a.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),a.push(\"clipPos.z *= clipPos.w;\")),a.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\"));return a.push(\"gl_Position = clipPos;\"),a.push(\"}\"),a}(e),this.fragment=function(e){const t=e.scene,i=t._sectionPlanesState,s=i.sectionPlanes.length>0,r=[];r.push(\"// Mesh occlusion fragment shader\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&r.push(\"#extension GL_EXT_frag_depth : enable\");r.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),r.push(\"precision highp float;\"),r.push(\"precision highp int;\"),r.push(\"#else\"),r.push(\"precision mediump float;\"),r.push(\"precision mediump int;\"),r.push(\"#endif\"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(r.push(\"varying float isPerspective;\"),r.push(\"uniform float logDepthBufFC;\"),r.push(\"varying float vFragDepth;\"));if(s){r.push(\"uniform bool clippable;\"),r.push(\"varying vec4 vWorldPosition;\");for(var o=0;o 0.0) { discard; }\"),r.push(\"}\")}r.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \"),t.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&r.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");return r.push(\"}\"),r}(e)}}const Ht=u.vec3(),Wt=function(e,t){this._hash=e,this._shaderSource=new Xt(t),this._scene=t.scene,this._useCount=0,this._allocate(t)},Yt={};Wt.get=function(e){const t=[e.scene.canvas.canvas.id,e.scene._sectionPlanesState.getHash(),e._geometry._state.hash,e._state.hash].join(\";\");let i=Yt[t];if(!i){if(i=new Wt(t,e),i.errors)return console.log(i.errors.join(\"\\n\")),null;Yt[t]=i,d.memory.programs++}return i._useCount++,i},Wt.prototype.put=function(){0==--this._useCount&&(this._program&&this._program.destroy(),delete Yt[this._hash],d.memory.programs--)},Wt.prototype.webglContextRestored=function(){this._program=null},Wt.prototype.drawMesh=function(e,t){this._program||this._allocate(t);const i=this._scene,s=i.canvas.gl,r=t._material._state,o=t._state,a=t._geometry._state,n=t.rtcCenter;if(e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),r.id!==this._lastMaterialId){const t=r.backfaces;e.backfaces!==t&&(t?s.disable(s.CULL_FACE):s.enable(s.CULL_FACE),e.backfaces=t);const i=r.frontface;e.frontface!==i&&(i?s.frontFace(s.CCW):s.frontFace(s.CW),e.frontface=i),this._lastMaterialId=r.id}const l=i.camera;if(s.uniformMatrix4fv(this._uViewMatrix,!1,n?e.getRTCViewMatrix(o.rtcCenterHash,n):l.viewMatrix),o.clippable){const e=i._sectionPlanesState.sectionPlanes.length;if(e>0){const r=i._sectionPlanesState.sectionPlanes,o=t.renderFlags;for(let t=0;t0,i=!!e._geometry._state.compressGeometry,s=[];s.push(\"// Mesh shadow vertex shader\"),s.push(\"attribute vec3 position;\"),s.push(\"uniform mat4 modelMatrix;\"),s.push(\"uniform mat4 shadowViewMatrix;\"),s.push(\"uniform mat4 shadowProjMatrix;\"),s.push(\"uniform vec3 offset;\"),i&&s.push(\"uniform mat4 positionsDecodeMatrix;\");t&&s.push(\"varying vec4 vWorldPosition;\");s.push(\"void main(void) {\"),s.push(\"vec4 localPosition = vec4(position, 1.0); \"),s.push(\"vec4 worldPosition;\"),i&&s.push(\"localPosition = positionsDecodeMatrix * localPosition;\");s.push(\"worldPosition = modelMatrix * localPosition;\"),s.push(\"worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\"vec4 viewPosition = shadowViewMatrix * worldPosition; \"),t&&s.push(\"vWorldPosition = worldPosition;\");return s.push(\" gl_Position = shadowProjMatrix * viewPosition;\"),s.push(\"}\"),s}(e),this.fragment=function(e){const t=e.scene;t.canvas.gl;const i=t._sectionPlanesState,s=i.sectionPlanes.length>0,r=[];if(r.push(\"// Mesh shadow fragment shader\"),r.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),r.push(\"precision highp float;\"),r.push(\"precision highp int;\"),r.push(\"#else\"),r.push(\"precision mediump float;\"),r.push(\"precision mediump int;\"),r.push(\"#endif\"),s){r.push(\"uniform bool clippable;\"),r.push(\"varying vec4 vWorldPosition;\");for(var o=0;o 0.0) { discard; }\"),r.push(\"}\")}return r.push(\"gl_FragColor = encodeFloat(gl_FragCoord.z);\"),r.push(\"}\"),r}(e)}}const Kt=function(e,t){this._hash=e,this._shaderSource=new qt(t),this._scene=t.scene,this._useCount=0,this._allocate(t)},Zt={};Kt.get=function(e){const t=e.scene,i=[t.canvas.canvas.id,t._sectionPlanesState.getHash(),e._geometry._state.hash,e._state.hash].join(\";\");let s=Zt[i];if(!s){if(s=new Kt(i,e),s.errors)return console.log(s.errors.join(\"\\n\")),null;Zt[i]=s,d.memory.programs++}return s._useCount++,s},Kt.prototype.put=function(){0==--this._useCount&&(this._program&&this._program.destroy(),delete Zt[this._hash],d.memory.programs--)},Kt.prototype.webglContextRestored=function(){this._program=null},Kt.prototype.drawMesh=function(e,t){this._program||this._allocate(t);const i=this._scene.canvas.gl,s=t._material._state,r=t._geometry._state;if(e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),s.id!==this._lastMaterialId){const t=s.backfaces;e.backfaces!==t&&(t?i.disable(i.CULL_FACE):i.enable(i.CULL_FACE),e.backfaces=t);const r=s.frontface;e.frontface!==r&&(r?i.frontFace(i.CCW):i.frontFace(i.CW),e.frontface=r),e.lineWidth!==s.lineWidth&&(i.lineWidth(s.lineWidth),e.lineWidth=s.lineWidth),this._uPointSize&&i.uniform1i(this._uPointSize,s.pointSize),this._lastMaterialId=s.id}if(i.uniformMatrix4fv(this._uModelMatrix,i.FALSE,t.worldMatrix),r.combineGeometry){const s=t.vertexBufs;s.id!==this._lastVertexBufsId&&(s.positionsBuf&&this._aPosition&&(this._aPosition.bindArrayBuffer(s.positionsBuf,s.compressGeometry?i.UNSIGNED_SHORT:i.FLOAT),e.bindArray++),this._lastVertexBufsId=s.id)}this._uClippable&&i.uniform1i(this._uClippable,t._state.clippable),i.uniform3fv(this._uOffset,t._state.offset),r.id!==this._lastGeometryId&&(this._uPositionsDecodeMatrix&&i.uniformMatrix4fv(this._uPositionsDecodeMatrix,!1,r.positionsDecodeMatrix),r.combineGeometry?r.indicesBufCombined&&(r.indicesBufCombined.bind(),e.bindArray++):(this._aPosition&&(this._aPosition.bindArrayBuffer(r.positionsBuf,r.compressGeometry?i.UNSIGNED_SHORT:i.FLOAT),e.bindArray++),r.indicesBuf&&(r.indicesBuf.bind(),e.bindArray++)),this._lastGeometryId=r.id),r.combineGeometry?r.indicesBufCombined&&(i.drawElements(r.primitive,r.indicesBufCombined.numItems,r.indicesBufCombined.itemType,0),e.drawElements++):r.indicesBuf?(i.drawElements(r.primitive,r.indicesBuf.numItems,r.indicesBuf.itemType,0),e.drawElements++):r.positions&&(i.drawArrays(i.TRIANGLES,0,r.positions.numItems),e.drawArrays++)},Kt.prototype._allocate=function(e){const t=e.scene,i=t.canvas.gl;if(this._program=new se(i,this._shaderSource),this._scene=t,this._useCount=0,this._program.errors)return void(this.errors=this._program.errors);const s=this._program;this._uPositionsDecodeMatrix=s.getLocation(\"positionsDecodeMatrix\"),this._uModelMatrix=s.getLocation(\"modelMatrix\"),this._uShadowViewMatrix=s.getLocation(\"shadowViewMatrix\"),this._uShadowProjMatrix=s.getLocation(\"shadowProjMatrix\"),this._uSectionPlanes={};for(let e=0,i=t._sectionPlanesState.sectionPlanes.length;e0){let e,t,r,o,a;for(let n=0,l=this._uSectionPlanes.length;n0)for(let i=0;i-1){const V=B.geometry._state,j=B.scene,z=j.camera,U=j.canvas;if(\"triangles\"===V.primitiveName){F.primitive=\"triangle\";const j=N,G=V.indices,X=V.positions;let H,W,Y,q;if(G){var I=G[j+0],O=G[j+1],k=G[j+2];o[0]=I,o[1]=O,o[2]=k,F.indices=o,H=3*I,W=3*O,Y=3*k}else H=3*j,W=H+3,Y=W+3;if(i[0]=X[H+0],i[1]=X[H+1],i[2]=X[H+2],s[0]=X[W+0],s[1]=X[W+1],s[2]=X[W+2],r[0]=X[Y+0],r[1]=X[Y+1],r[2]=X[Y+2],V.compressGeometry){const e=V.positionsDecodeMatrix;e&&(qe.decompressPosition(i,e,i),qe.decompressPosition(s,e,s),qe.decompressPosition(r,e,r))}F.canvasPos?(q=F.canvasPos,u.canvasPosToLocalRay(U.canvas,T,R,B.worldMatrix,q,e,t)):F.origin&&F.direction&&u.worldRayToLocalRay(B.worldMatrix,F.origin,F.direction,e,t),u.normalizeVec3(t),u.rayPlaneIntersect(e,t,i,s,r,a),F.localPos=a,F.position=a,m[0]=a[0],m[1]=a[1],m[2]=a[2],m[3]=1,u.transformVec4(B.worldMatrix,m,v),n[0]=v[0],n[1]=v[1],n[2]=v[2],F.worldPos=n,u.transformVec4(z.matrix,v,b),l[0]=b[0],l[1]=b[1],l[2]=b[2],F.viewPos=l,u.cartesianToBarycentric(a,i,s,r,h),F.bary=h;const K=V.normals;if(K){if(V.compressGeometry){const e=3*I,t=3*O,i=3*k;qe.decompressNormal(K.subarray(e,e+2),c),qe.decompressNormal(K.subarray(t,t+2),d),qe.decompressNormal(K.subarray(i,i+2),p)}else c[0]=K[H],c[1]=K[H+1],c[2]=K[H+2],d[0]=K[W],d[1]=K[W+1],d[2]=K[W+2],p[0]=K[Y],p[1]=K[Y+1],p[2]=K[Y+2];const e=u.addVec3(u.addVec3(u.mulVec3Scalar(c,h[0],P),u.mulVec3Scalar(d,h[1],y),x),u.mulVec3Scalar(p,h[2],M),w);F.worldNormal=u.normalizeVec3(u.transformVec3(B.worldNormalMatrix,e,E))}const Z=V.uv;if(Z){if(f[0]=Z[2*I],f[1]=Z[2*I+1],_[0]=Z[2*O],_[1]=Z[2*O+1],g[0]=Z[2*k],g[1]=Z[2*k+1],V.compressGeometry){const e=V.uvDecodeMatrix;e&&(qe.decompressUV(f,e,f),qe.decompressUV(_,e,_),qe.decompressUV(g,e,g))}F.uv=u.addVec3(u.addVec3(u.mulVec2Scalar(f,h[0],C),u.mulVec2Scalar(_,h[1],A),S),u.mulVec2Scalar(g,h[2],D),L)}}}}}();function ci(e={}){let t=e.radiusTop||1;t<0&&(console.error(\"negative radiusTop not allowed - will invert\"),t*=-1);let i=e.radiusBottom||1;i<0&&(console.error(\"negative radiusBottom not allowed - will invert\"),i*=-1);let s=e.height||1;s<0&&(console.error(\"negative height not allowed - will invert\"),s*=-1);let r=e.radialSegments||32;r<0&&(console.error(\"negative radialSegments not allowed - will invert\"),r*=-1),r<3&&(r=3);let o=e.heightSegments||1;o<0&&(console.error(\"negative heightSegments not allowed - will invert\"),o*=-1),o<1&&(o=1);const a=!!e.openEnded;let n=e.center;const l=n?n[0]:0,h=n?n[1]:0,c=n?n[2]:0,u=s/2,d=s/o,p=2*Math.PI/r,f=1/r,g=(t-i)/o,m=[],v=[],b=[],P=[];let y,x,M,w,E,C,A,S,D,L,B;const T=(90-180*Math.atan(s/(i-t))/Math.PI)/90;for(y=0;y<=o;y++)for(E=t-y*g,C=u-y*d,x=0;x<=r;x++)M=Math.sin(x*p),w=Math.cos(x*p),v.push(E*M),v.push(T),v.push(E*w),b.push(x*f),b.push(1*y/o),m.push(E*M+l),m.push(C+h),m.push(E*w+c);for(y=0;y0){for(D=m.length/3,v.push(0),v.push(1),v.push(0),b.push(.5),b.push(.5),m.push(0+l),m.push(u+h),m.push(0+c),x=0;x<=r;x++)M=Math.sin(x*p),w=Math.cos(x*p),L=.5*Math.sin(x*p)+.5,B=.5*Math.cos(x*p)+.5,v.push(t*M),v.push(1),v.push(t*w),b.push(L),b.push(B),m.push(t*M+l),m.push(u+h),m.push(t*w+c);for(x=0;x0){for(D=m.length/3,v.push(0),v.push(-1),v.push(0),b.push(.5),b.push(.5),m.push(0+l),m.push(0-u+h),m.push(0+c),x=0;x<=r;x++)M=Math.sin(x*p),w=Math.cos(x*p),L=.5*Math.sin(x*p)+.5,B=.5*Math.cos(x*p)+.5,v.push(i*M),v.push(-1),v.push(i*w),b.push(L),b.push(B),m.push(i*M+l),m.push(0-u+h),m.push(i*w+c);for(x=0;xd.has(e.id)||f.has(e.id)||p.has(e.id))).reduce(((e,i)=>{let s,r=function(e){let t=\"\";return t+=Math.round(255*e[0]).toString(16).padStart(2,\"0\"),t+=Math.round(255*e[1]).toString(16).padStart(2,\"0\"),t+=Math.round(255*e[2]).toString(16).padStart(2,\"0\"),t}(i.colorize);i.xrayed?(s=0===t.xrayMaterial.fillAlpha&&0!==t.xrayMaterial.edgeAlpha?.1:t.xrayMaterial.fillAlpha,s=Math.round(255*s).toString(16).padStart(2,\"0\"),r=s+r):d.has(i.id)&&(s=Math.round(255*i.opacity).toString(16).padStart(2,\"0\"),r=s+r),e[r]||(e[r]=[]);const o=i.id,a=i.originalSystemId,n={ifc_guid:a,originating_system:this.originatingSystem};return a!==o&&(n.authoring_tool_id=o),e[r].push(n),e}),{}),g=Object.entries(_).map((([e,t])=>({color:e,components:t})));o.components.coloring=g;const m=t.objectIds,v=t.visibleObjects,b=t.visibleObjectIds,P=m.filter((e=>!v[e])),y=t.selectedObjectIds;return e.defaultInvisible||b.lengththis._withBCFComponent(t,e,(e=>e.visible=!1))))):(s.setObjectsVisible(s.objectIds,!1),e.components.visibility.exceptions&&e.components.visibility.exceptions.forEach((e=>this._withBCFComponent(t,e,(e=>e.visible=!0)))));const r=e.components.visibility.view_setup_hints;r&&(!1===r.spaces_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType(\"IfcSpace\"),!1),!1===r.openings_visible&&s.setObjectsVisible(i.metaScene.getObjectIDsByType(\"IfcOpening\"),!1),r.space_boundaries_visible)}e.components.selection&&(s.setObjectsSelected(s.selectedObjectIds,!1),e.components.selection.forEach((e=>this._withBCFComponent(t,e,(e=>e.selected=!0))))),e.components.coloring&&e.components.coloring.forEach((e=>{let i=e.color,s=0,r=!1;8===i.length&&(s=parseInt(i.substring(0,2),16)/256,s<=1&&s>=.95&&(s=1),i=i.substring(2),r=!0);const o=[parseInt(i.substring(0,2),16)/256,parseInt(i.substring(2,4),16)/256,parseInt(i.substring(4,6),16)/256];e.components.map((e=>this._withBCFComponent(t,e,(e=>{e.colorize=o,r&&(e.opacity=s)}))))}))}if(e.perspective_camera||e.orthogonal_camera){let n,h,c,d;if(e.perspective_camera?(n=gi(e.perspective_camera.camera_view_point,pi),h=gi(e.perspective_camera.camera_direction,pi),c=gi(e.perspective_camera.camera_up_vector,pi),r.perspective.fov=e.perspective_camera.field_of_view,d=\"perspective\"):(n=gi(e.orthogonal_camera.camera_view_point,pi),h=gi(e.orthogonal_camera.camera_direction,pi),c=gi(e.orthogonal_camera.camera_up_vector,pi),r.ortho.scale=e.orthogonal_camera.view_to_world_scale,d=\"ortho\"),u.subVec3(n,l),r.yUp&&(n=vi(n),h=vi(h),c=vi(c)),o){const e=s.pick({pickSurface:!0,origin:n,direction:h});h=e?e.worldPos:u.addVec3(n,h,pi)}else h=u.addVec3(n,h,pi);a?(r.eye=n,r.look=h,r.up=c,r.projection=d):i.cameraFlight.flyTo({eye:n,look:h,up:c,duration:t.duration,projection:d})}}_withBCFComponent(e,t,i){const s=this.viewer,r=s.scene;if(t.authoring_tool_id&&t.originating_system===this.originatingSystem){const o=t.authoring_tool_id,a=r.objects[o];if(a)return void i(a);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}}if(t.ifc_guid){const o=t.ifc_guid,a=r.objects[o];if(a)return void i(a);if(e.updateCompositeObjects){if(s.metaScene.metaObjects[o])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(o),i)}Object.keys(r.models).forEach((t=>{const a=u.globalizeObjectId(t,o),n=r.objects[a];if(n)i(n);else if(e.updateCompositeObjects){if(s.metaScene.metaObjects[a])return void r.withObjects(s.metaScene.getObjectIDsInSubtree(a),i)}}))}}destroy(){super.destroy()}}function _i(e){return{x:e[0],y:e[1],z:e[2]}}function gi(e,t){return(t=new Float64Array(3))[0]=e.x,t[1]=e.y,t[2]=e.z,t}function mi(e){return new Float64Array([e[0],-e[2],e[1]])}function vi(e){return new Float64Array([e[0],e[2],-e[1]])}u.vec3();class bi extends a{constructor(e,t={}){super(\"FastNav\",e),this._pbrEnabled=void 0!==t.pbrEnabled&&null!==t.pbrEnabled?t.pbrEnabled:e.scene.pbrEnabled,this._saoEnabled=void 0!==t.saoEnabled&&null!==t.saoEnabled?t.saoEnabled:e.scene.sao.enabled,this._edgesEnabled=void 0!==t.edgesEnabled&&null!==t.edgesEnabled?t.edgesEnabled:e.scene.edgeMaterial.edges,this._pInterval=null,this._fadeMillisecs=500;let i=600,s=i,r=!1;this._onCanvasBoundary=e.scene.canvas.on(\"boundary\",(()=>{s=i,r||(this._cancelFade(),e.scene.pbrEnabled=!1,e.scene.sao.enabled=!1,e.scene.edgeMaterial.edges=!1,r=!0)})),this._onCameraMatrix=e.scene.camera.on(\"matrix\",(()=>{s=i,r||(this._cancelFade(),e.scene.pbrEnabled=!1,e.scene.sao.enabled=!1,e.scene.edgeMaterial.edges=!1,r=!0)})),this._onSceneTick=e.scene.on(\"tick\",(t=>{r&&(s-=t.deltaTime,s<=0&&r&&(this._startFade(),this._pInterval2=setTimeout((()=>{e.scene.pbrEnabled=this._pbrEnabled,e.scene.sao.enabled=this._saoEnabled,e.scene.edgeMaterial.edges=this._edgesEnabled}),100),r=!1))}));let o=!1;this._onSceneMouseDown=e.scene.input.on(\"mousedown\",(()=>{o=!0})),this._onSceneMouseUp=e.scene.input.on(\"mouseup\",(()=>{o=!1})),this._onSceneMouseMove=e.scene.input.on(\"mousemove\",(()=>{o&&(s=i,r||(this._cancelFade(),e.scene.pbrEnabled=!1,e.scene.sao.enabled=!1,e.scene.edgeMaterial.edges=!1,r=!0))}))}_startFade(){this._img||this._initFade();const e=1/(this._fadeMillisecs/50);this._pInterval&&(clearInterval(this._pInterval),this._pInterval=null);const t=this.viewer,i=t.scene.canvas.canvas,s=Pi(i),r=(parseInt(i.style[\"z-index\"])||0)+1;this._img.style.position=\"fixed\",this._img.style.margin=\"0px\",this._img.style[\"z-index\"]=r,this._img.style.background=i.style.background,this._img.style.left=s.left+\"px\",this._img.style.top=s.top+\"px\",this._img.style.width=i.width+\"px\",this._img.style.height=i.height+\"px\",this._img.width=i.width,this._img.height=i.height,this._img.src=\"\",this._img.src=t.getSnapshot({format:\"png\",includeGizmos:!0}),this._img.style.visibility=\"visible\",this._img.style.opacity=1;let o=1;this._pInterval=setInterval((()=>{if(o-=e,o>0){this._img.style.opacity=o;const e=Pi(i);this._img.style.left=e.left+\"px\",this._img.style.top=e.top+\"px\",this._img.style.width=i.width+\"px\",this._img.style.height=i.height+\"px\",this._img.style.opacity=o,this._img.width=i.width,this._img.height=i.height}else this._img.style.opacity=0,this._img.style.visibility=\"hidden\",clearInterval(this._pInterval),this._pInterval=null}),50)}_initFade(){this._img=document.createElement(\"img\");const e=this.viewer.scene.canvas.canvas,t=Pi(e);parseInt(e.style[\"z-index\"]),this._img.style.position=\"absolute\",this._img.style.visibility=\"hidden\",this._img.style[\"pointer-events\"]=\"none\",this._img.style[\"z-index\"]=5,this._img.style.left=t.left+\"px\",this._img.style.top=t.top+\"px\",this._img.style.width=e.width+\"px\",this._img.style.height=e.height+\"px\",this._img.style.opacity=1,this._img.width=e.width,this._img.height=e.height,this._img.left=t.left,this._img.top=t.top,e.parentNode.insertBefore(this._img,e.nextSibling)}_cancelFade(){this._img&&(this._pInterval&&(clearInterval(this._pInterval),this._pInterval=null),this._pInterval2&&(clearInterval(this._pInterval2),this._pInterval2=null),this._img.style.opacity=0,this._img.style.visibility=\"hidden\")}set pbrEnabled(e){this._pbrEnabled=e}get pbrEnabled(){return this._pbrEnabled}set saoEnabled(e){this._saoEnabled=e}get saoEnabled(){return this._saoEnabled}set edgesEnabled(e){this._edgesEnabled=e}get edgesEnabled(){return this._edgesEnabled}send(e,t){switch(e){case\"clear\":this._cancelFade()}}destroy(){this._cancelFade(),this.viewer.scene.camera.off(this._onCameraMatrix),this.viewer.scene.canvas.off(this._onCanvasBoundary),this.viewer.scene.input.off(this._onSceneMouseDown),this.viewer.scene.input.off(this._onSceneMouseUp),this.viewer.scene.input.off(this._onSceneMouseMove),this.viewer.scene.off(this._onSceneTick),super.destroy(),this._img&&(this._img.parentNode.removeChild(this._img),this._img=null)}}function Pi(e){let t=0,i=0;do{t+=e.offsetTop||0,i+=e.offsetLeft||0,e=e.offsetParent}while(e);return{top:t,left:i}}class yi{constructor(e,t,i,s,r=null,o=0){this.model=e,this.object=null,this.parent=null,this.id=t,this.pickId=this.model.scene._renderer.getPickID(this),this.aabb=u.AABB3(),this._layer=r,this._portionId=o,this._color=[i[0],i[1],i[2],s],this._colorize=[i[0],i[1],i[2],s],this._colorizing=!1,this._transparent=s<255,this.numTriangles=0,this.rtcCenter=null}_finalize(e){this._layer.initFlags(this._portionId,e,this._transparent)}_setVisible(e){this._layer.setVisible(this._portionId,e,this._transparent)}_setColor(e){this._color[0]=e[0],this._color[1]=e[1],this._color[2]=e[2],this._colorizing||this._layer.setColor(this._portionId,this._color,!1)}_setColorize(e){e?(this._colorize[0]=e[0],this._colorize[1]=e[1],this._colorize[2]=e[2],this._layer.setColor(this._portionId,this._colorize,false),this._colorizing=!0):(this._layer.setColor(this._portionId,this._color,false),this._colorizing=!1)}_setOpacity(e,t){const i=e<255,s=this._transparent!==i;this._color[3]=e,this._colorize[3]=e,this._transparent=i,this._colorizing?this._layer.setColor(this._portionId,this._colorize):this._layer.setColor(this._portionId,this._color),s&&this._layer.setTransparent(this._portionId,t,i)}_setOffset(e){this._layer.setOffset(this._portionId,e)}_setHighlighted(e){this._layer.setHighlighted(this._portionId,e,this._transparent)}_setXRayed(e){this._layer.setXRayed(this._portionId,e,this._transparent)}_setSelected(e){this._layer.setSelected(this._portionId,e,this._transparent)}_setEdges(e){this._layer.setEdges(this._portionId,e,this._transparent)}_setClippable(e){this._layer.setClippable(this._portionId,e,this._transparent)}_setCollidable(e){this._layer.setCollidable(this._portionId,e)}_setPickable(e){this._layer.setPickable(this._portionId,e,this._transparent)}_setCulled(e){this._layer.setCulled(this._portionId,e,this._transparent)}canPickTriangle(){return!1}drawPickTriangles(e,t){}pickTriangleSurface(e){}precisionRayPickSurface(e,t,i,s){return!!this._layer.precisionRayPickSurface&&this._layer.precisionRayPickSurface(this._portionId,e,t,i,s)}canPickWorldPos(){return!0}drawPickDepths(e){this.model.drawPickDepths(e)}drawPickNormals(e){this.model.drawPickNormals(e)}delegatePickedEntity(){return this.parent}_destroy(){this.model.scene._renderer.putPickID(this.pickId)}}const xi=new class{constructor(){this._uint8Arrays={},this._float32Arrays={}}_clear(){this._uint8Arrays={},this._float32Arrays={}}getUInt8Array(e){let t=this._uint8Arrays[e];return t||(t=new Uint8Array(e),this._uint8Arrays[e]=t),t}getFloat32Array(e){let t=this._float32Arrays[e];return t||(t=new Float32Array(e),this._float32Arrays[e]=t),t}};let Mi=0;const wi=0,Ei=1,Ci=2,Ai=3,Si=4,Di=5,Li=6,Bi=7,Ti=8,Ri=9,Fi=10,Ni=11,Ii=u.vec4(),Oi=u.vec3();class ki{constructor(e,t){this._scene=e,this._withSAO=t,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){const e=this._scene;return[e._lightsState.getHash(),e._sectionPlanesState.getHash(),this._withSAO?\"sao\":\"nosao\"].join(\";\")}drawLayer(e,t,i){const s=this._scene,r=s.camera,o=t.model,a=s.canvas.gl,n=t._state,l=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,l?j(r.viewMatrix,l):r.viewMatrix),a.uniformMatrix4fv(this._uViewNormalMatrix,!1,r.viewNormalMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,o.worldMatrix),a.uniformMatrix4fv(this._uWorldNormalMatrix,!1,o.worldNormalMatrix);const h=s._sectionPlanesState.sectionPlanes.length;if(h>0){const e=s._sectionPlanesState.sectionPlanes,i=t.layerIndex*h,r=o.renderFlags;for(let t=0;t0;let r;const o=[];o.push(\"// Triangles batching draw vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"#extension GL_EXT_frag_depth : enable\"),o.push(\"uniform int renderPass;\"),o.push(\"attribute vec3 position;\"),o.push(\"attribute vec3 normal;\"),o.push(\"attribute vec4 color;\"),o.push(\"attribute vec4 flags;\"),o.push(\"attribute vec4 flags2;\"),e.entityOffsetsEnabled&&o.push(\"attribute vec3 offset;\"),o.push(\"uniform mat4 worldMatrix;\"),o.push(\"uniform mat4 worldNormalMatrix;\"),o.push(\"uniform mat4 viewMatrix;\"),o.push(\"uniform mat4 projMatrix;\"),o.push(\"uniform mat4 viewNormalMatrix;\"),o.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(o.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"varying float vFragDepth;\"),o.push(\"bool isPerspectiveMatrix(mat4 m) {\"),o.push(\" return (m[2][3] == - 1.0);\"),o.push(\"}\"),o.push(\"varying float isPerspective;\")),o.push(\"uniform vec4 lightAmbient;\");for(let e=0,t=i.lights.length;e= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\"),o.push(\" }\"),o.push(\" return normalize(v);\"),o.push(\"}\"),s&&(o.push(\"varying vec4 vWorldPosition;\"),o.push(\"varying vec4 vFlags2;\")),o.push(\"varying vec4 vColor;\"),o.push(\"void main(void) {\"),o.push(\"if (int(flags.x) != renderPass) {\"),o.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),o.push(\"} else {\"),o.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&o.push(\"worldPosition.xyz = worldPosition.xyz + offset;\"),o.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),o.push(\"vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \"),o.push(\"vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\"),o.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\"),o.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\"),o.push(\"float lambertian = 1.0;\");for(let e=0,t=i.lights.length;e0,s=[];if(s.push(\"// Triangles batching draw fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),this._withSAO&&(s.push(\"uniform sampler2D uOcclusionTexture;\"),s.push(\"uniform vec4 uSAOParams;\"),s.push(\"const float packUpscale = 256. / 255.;\"),s.push(\"const float unpackDownScale = 255. / 256.;\"),s.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\"),s.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\"),s.push(\"float unpackRGBToFloat( const in vec4 v ) {\"),s.push(\" return dot( v, unPackFactors );\"),s.push(\"}\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { \"),s.push(\" discard;\"),s.push(\" }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),this._withSAO?(s.push(\" float viewportWidth = uSAOParams[0];\"),s.push(\" float viewportHeight = uSAOParams[1];\"),s.push(\" float blendCutoff = uSAOParams[2];\"),s.push(\" float blendFactor = uSAOParams[3];\"),s.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\"),s.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture2D(uOcclusionTexture, uv))) * blendFactor;\"),s.push(\" gl_FragColor = vec4(vColor.rgb * ambient, 1.0);\")):s.push(\" gl_FragColor = vColor;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const Vi=u.vec4(),ji=u.vec3();class zi{constructor(e,t){this._scene=e,this._withSAO=t,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){const e=this._scene;return[e._lightsState.getHash(),e._sectionPlanesState.getHash(),this._withSAO?\"sao\":\"nosao\"].join(\";\")}drawLayer(e,t,i){const s=this._scene,r=s.camera,o=t.model,a=s.canvas.gl,n=t._state,l=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,l?j(r.viewMatrix,l):r.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,o.worldMatrix);const h=s._sectionPlanesState.sectionPlanes.length;if(h>0){const e=s._sectionPlanesState.sectionPlanes,i=t.layerIndex*h,r=o.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Triangles batching flat-shading draw vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),i.push(\"attribute vec4 color;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vViewPosition;\"),i.push(\"varying vec4 vColor;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.x) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\"worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\"vViewPosition = viewPosition;\"),i.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\"),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._lightsState,i=e._sectionPlanesState,s=i.sectionPlanes.length>0,r=[];if(r.push(\"// Triangles batching flat-shading draw fragment shader\"),r.push(\"#extension GL_OES_standard_derivatives : enable\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&r.push(\"#extension GL_EXT_frag_depth : enable\"),r.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),r.push(\"precision highp float;\"),r.push(\"precision highp int;\"),r.push(\"#else\"),r.push(\"precision mediump float;\"),r.push(\"precision mediump int;\"),r.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(r.push(\"varying float isPerspective;\"),r.push(\"uniform float logDepthBufFC;\"),r.push(\"varying float vFragDepth;\")),this._withSAO&&(r.push(\"uniform sampler2D uOcclusionTexture;\"),r.push(\"uniform vec4 uSAOParams;\"),r.push(\"const float packUpscale = 256. / 255.;\"),r.push(\"const float unpackDownScale = 255. / 256.;\"),r.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\"),r.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\"),r.push(\"float unpackRGBToFloat( const in vec4 v ) {\"),r.push(\" return dot( v, unPackFactors );\"),r.push(\"}\")),s){r.push(\"varying vec4 vWorldPosition;\"),r.push(\"varying vec4 vFlags2;\");for(let e=0,t=i.sectionPlanes.length;e 0.0);\"),r.push(\" if (clippable) {\"),r.push(\" float dist = 0.0;\");for(let e=0,t=i.sectionPlanes.length;e 0.0) { \"),r.push(\" discard;\"),r.push(\" }\"),r.push(\"}\")}r.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\"),r.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\"),r.push(\"float lambertian = 1.0;\"),r.push(\"vec3 xTangent = dFdx( vViewPosition.xyz );\"),r.push(\"vec3 yTangent = dFdy( vViewPosition.xyz );\"),r.push(\"vec3 viewNormal = normalize( cross( xTangent, yTangent ) );\");for(let e=0,i=t.lights.length;e0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Triangles batching silhouette vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),i.push(\"uniform vec4 color;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"void main(void) {\"),i.push(\"if (int(flags.y) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState;let i,s;const r=t.sectionPlanes.length>0,o=[];if(o.push(\"// Triangles batching silhouette fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"#extension GL_EXT_frag_depth : enable\"),o.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),o.push(\"precision highp float;\"),o.push(\"precision highp int;\"),o.push(\"#else\"),o.push(\"precision mediump float;\"),o.push(\"precision mediump int;\"),o.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(o.push(\"varying float isPerspective;\"),o.push(\"uniform float logDepthBufFC;\"),o.push(\"varying float vFragDepth;\")),r)for(o.push(\"varying vec4 vWorldPosition;\"),o.push(\"varying vec4 vFlags2;\"),i=0,s=t.sectionPlanes.length;i 0.0);\"),o.push(\" if (clippable) {\"),o.push(\" float dist = 0.0;\"),i=0,s=t.sectionPlanes.length;i 0.0) { discard; }\"),o.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),o.push(\"gl_FragColor = color;\"),o.push(\"}\"),o}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const Hi=u.vec3(),Wi=new Float32Array([0,0,0,1]);class Yi{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=t._state.rtcCenter;if(!this._program&&(this._allocate(t),this.errors))return;if(e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),i===Fi){const e=r.xrayMaterial._state,t=e.edgeColor,i=e.edgeAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Ti){const e=r.highlightMaterial._state,t=e.edgeColor,i=e.edgeAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Ri){const e=r.selectedMaterial._state,t=e.edgeColor,i=e.edgeAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else a.uniform4fv(this._uColor,Wi);a.uniformMatrix4fv(this._uViewMatrix,!1,l?j(o.viewMatrix,l):o.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const h=r._sectionPlanesState.sectionPlanes.length;if(h>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*h,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Batched geometry edges drawing vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"uniform vec4 color;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vColor;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.z) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"vColor = vec4(color.r, color.g, color.b, color.a);\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Batched geometry edges drawing fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"gl_FragColor = vColor;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const qi=u.vec3();class Ki{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=t._state.rtcCenter;if(!this._program&&(this._allocate(t),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,l?j(o.viewMatrix,l):o.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const h=r._sectionPlanesState.sectionPlanes.length;if(h>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*h,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Batched geometry edges drawing vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),i.push(\"attribute vec4 color;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vColor;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.z) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"vColor = vec4(float(color.r*0.5) / 255.0, float(color.g*0.5) / 255.0, float(color.b*0.5) / 255.0, float(color.a) / 255.0);\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Batched geometry edges drawing fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"gl_FragColor = vColor;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const Zi=u.vec3();class Qi{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=t._state.rtcCenter;this._program||this._allocate(t),e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const h=e.pickViewMatrix||o.viewMatrix,c=l?j(h,l):h;if(a.uniformMatrix4fv(this._uProjMatrix,!1,e.pickProjMatrix),a.uniformMatrix4fv(this._uViewMatrix,!1,c),r.logarithmicDepthBufferEnabled){const e=2/(Math.log(o.project.far+1)/Math.LN2);a.uniform1f(this._uLogDepthBufFC,e)}const u=r._sectionPlanesState.sectionPlanes.length;if(u>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*u,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Batched geometry picking vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 pickColor;\"),i.push(\"uniform bool pickInvisible;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vPickColor;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.w) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\" } else {\"),i.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\"),t&&(i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\" }\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Batched geometry picking fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(var r=0;r 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(r=0;r 0.0) { discard; }\"),s.push(\" }\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" gl_FragColor = vPickColor; \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const $i=u.vec3();class Ji{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=t._state.rtcCenter;this._program||this._allocate(),e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniform1i(this._uPickInvisible,e.pickInvisible);const h=e.pickViewMatrix||o.viewMatrix,c=l?j(h,l):h;if(a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uViewMatrix,!1,c),a.uniformMatrix4fv(this._uProjMatrix,!1,e.pickProjMatrix),a.uniform1f(this._uPickZNear,e.pickZNear),a.uniform1f(this._uPickZFar,e.pickZFar),r.logarithmicDepthBufferEnabled){const t=2/(Math.log(e.pickZFar+1)/Math.LN2);a.uniform1f(this._uLogDepthBufFC,t)}const u=r._sectionPlanesState.sectionPlanes.length;if(u>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*u,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Triangles batching pick depth vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"uniform bool pickInvisible;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vViewPosition;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.w) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\" } else {\"),i.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vFlags2 = flags2;\")),i.push(\"vViewPosition = viewPosition;\"),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\" }\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Triangles batching pick depth fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),s.push(\"uniform float pickZNear;\"),s.push(\"uniform float pickZFar;\"),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(var r=0;r 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(r=0;r 0.0) { discard; }\"),s.push(\" }\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\"),s.push(\" gl_FragColor = packDepth(zNormalizedDepth); \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const es=u.vec3();class ts{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=t._state.rtcCenter;this._program||this._allocate(t),e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniform1i(this._uPickInvisible,e.pickInvisible),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const h=e.pickViewMatrix||o.viewMatrix,c=l?j(h,l):h;if(a.uniformMatrix4fv(this._uViewMatrix,!1,c),a.uniformMatrix4fv(this._uProjMatrix,!1,e.pickProjMatrix),r.logarithmicDepthBufferEnabled){const e=2/(Math.log(o.project.far+1)/Math.LN2);a.uniform1f(this._uLogDepthBufFC,e)}const u=r._sectionPlanesState.sectionPlanes.length;if(u>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*u,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Triangles batching pick normals vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec3 normal;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"uniform bool pickInvisible;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),i.push(\"vec3 octDecode(vec2 oct) {\"),i.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\"),i.push(\" if (v.z < 0.0) {\"),i.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\"),i.push(\" }\"),i.push(\" return normalize(v);\"),i.push(\"}\"),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec3 vWorldNormal;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.w) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\" } else {\"),i.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\" vec3 worldNormal = octDecode(normal.xy); \"),i.push(\" vWorldNormal = worldNormal;\"),t&&(i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\" }\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Triangles batching pick normals fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(var r=0;r 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(r=0;r 0.0) { discard; }\"),s.push(\" }\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" gl_FragColor = vec4((vWorldNormal * 0.5) + 0.5, 1.0);\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const is=u.vec3();class ss{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.canvas.gl,a=t._state,n=r.camera,l=t._state.rtcCenter;if(!this._program&&(this._allocate(t),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),o.uniform1i(this._uRenderPass,i),o.uniformMatrix4fv(this._uViewMatrix,!1,l?j(n.viewMatrix,l):n.viewMatrix),o.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const h=r._sectionPlanesState.sectionPlanes.length;if(h>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*h,a=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Triangles batching occlusion vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 color;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"void main(void) {\"),i.push(\"if (int(flags.x) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\" } else {\"),i.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\" }\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Triangles batching occlusion fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0;e 0.0) { discard; }\"),s.push(\" }\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const rs=u.vec3();class os{constructor(e){this._scene=e,this._allocate(),this._hash=this._getHash()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uViewMatrix,!1,l?j(o.viewMatrix,l):o.viewMatrix);const h=r._sectionPlanesState.sectionPlanes.length;if(h>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*h,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Triangles batching depth vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec2 vHighPrecisionZW;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.x) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\" } else {\"),i.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"vHighPrecisionZW = gl_Position.zw;\"),i.push(\" }\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Triangles batching depth fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(var r=0;r 0.0) { discard; }\"),s.push(\" }\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\"),G.SUPPORTED_EXTENSIONS.WEBGL_depth_texture?s.push(\" gl_FragColor = vec4(vec3(1.0 - fragCoordZ), 1.0); \"):s.push(\" gl_FragColor = packDepthToRGBA(fragCoordZ); \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null,d.memory.programs--}}const as=u.vec3();class ns{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=t._state.rtcCenter;if(!this._program&&(this._allocate(t),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(t)),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,l?j(o.viewMatrix,l):o.viewMatrix),a.uniformMatrix4fv(this._uViewNormalMatrix,!1,o.viewNormalMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uWorldNormalMatrix,!1,s.worldNormalMatrix);const h=r._sectionPlanesState.sectionPlanes.length;if(h>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*h,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Batched geometry normals vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec3 normal;\"),i.push(\"attribute vec4 color;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 worldNormalMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 viewNormalMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),i.push(\"vec3 octDecode(vec2 oct) {\"),i.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\"),i.push(\" if (v.z < 0.0) {\"),i.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\"),i.push(\" }\"),i.push(\" return normalize(v);\"),i.push(\"}\"),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec3 vViewNormal;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.x) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\" } else {\"),i.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\" vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \"),i.push(\" vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\"),t&&(i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vFlags2 = flags2;\")),i.push(\" vViewNormal = viewNormal;\"),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\" }\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Batched geometry normals fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(var r=0;r 0.0) { discard; }\"),s.push(\" }\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" gl_FragColor = vec4(packNormalToRGB(vViewNormal), 1.0); \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const ls=u.vec3();class hs{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t){const i=this._scene,s=i.canvas.gl,r=t._state;this._program||this._allocate(),e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),s.uniformMatrix4fv(this._uPositionsDecodeMatrix,!1,t._state.positionsDecodeMatrix),i.logarithmicDepthBufferEnabled&&s.uniform1f(this._uZFar,i.camera.project.far),this._aPosition.bindArrayBuffer(r.positionsBuf),this._aColor&&this._aColor.bindArrayBuffer(r.colorsBuf),this._aFlags&&this._aFlags.bindArrayBuffer(r.flagsBuf),this._aFlags2&&this._aFlags2.bindArrayBuffer(r.flags2Buf),this._aOffset&&this._aOffset.bindArrayBuffer(r.offsetsBuf),r.indicesBuf.bind();const o=i._sectionPlanesState.sectionPlanes.length;if(o>0){const e=i._sectionPlanesState.sectionPlanes,r=t.layerIndex*o,a=model.renderFlags,n=t._state.rtcCenter;for(let t=0;t0,i=[];return i.push(\"// Batched geometry shadow vertex shader\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 color;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"uniform mat4 shadowViewMatrix;\"),i.push(\"uniform mat4 shadowProjMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vViewPosition;\"),i.push(\"void main(void) {\"),i.push(\" bool visible = (float(flags.x) > 0.0);\"),i.push(\" bool transparent = ((float(color.a) / 255.0) < 1.0);\"),i.push(\" if (!visible || transparent) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\" } else {\"),i.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = shadowViewMatrix * worldPosition; \"),t&&(i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vFlags2 = flags2;\")),i.push(\" vViewPosition = viewPosition;\"),i.push(\" gl_Position = shadowProjMatrix * viewPosition;\"),i.push(\" }\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene._sectionPlanesState,t=e.sectionPlanes.length>0,i=[];if(i.push(\"// Batched geometry shadow fragment shader\"),i.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),i.push(\"precision highp float;\"),i.push(\"precision highp int;\"),i.push(\"#else\"),i.push(\"precision mediump float;\"),i.push(\"precision mediump int;\"),i.push(\"#endif\"),t){i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\");for(let t=0;t 0.0);\"),i.push(\" if (clippable) {\"),i.push(\" float dist = 0.0;\");for(var s=0;s 0.0) { discard; }\"),i.push(\" }\")}return i.push(\" gl_FragColor = encodeFloat( gl_FragCoord.z); \"),i.push(\"}\"),i}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const cs=u.vec4(),us=u.vec3(),ds={linear:\"linearToLinear\",sRGB:\"sRGBToLinear\",gamma:\"gammaToLinear\"};class ps{constructor(e,t){this._scene=e,this._withSAO=t,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){const e=this._scene;return[e.gammaOutput,e._lightsState.getHash(),e._sectionPlanesState.getHash(),this._withSAO?\"sao\":\"nosao\"].join(\";\")}drawLayer(e,t,i){const s=this._scene,r=s.camera,o=t.model,a=s.canvas.gl,n=t._state,l=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,l?j(r.viewMatrix,l):r.viewMatrix),a.uniformMatrix4fv(this._uViewNormalMatrix,!1,r.viewNormalMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,o.worldMatrix),a.uniformMatrix4fv(this._uWorldNormalMatrix,!1,o.worldNormalMatrix);const h=s._sectionPlanesState.sectionPlanes.length;if(h>0){const e=s._sectionPlanesState.sectionPlanes,i=t.layerIndex*h,r=o.renderFlags;for(let t=0;t0&&(this._uReflectionMap=\"reflectionMap\"),i.lightMaps.length>0&&(this._uLightMap=\"lightMap\"),this._uSectionPlanes=[];for(let t=0,i=e._sectionPlanesState.sectionPlanes.length;t0&&o.reflectionMaps[0].texture&&this._uReflectionMap&&(r.bindTexture(this._uReflectionMap,o.reflectionMaps[0].texture,e.textureUnit),e.textureUnit=(e.textureUnit+1)%t,e.bindTexture++),o.lightMaps.length>0&&o.lightMaps[0].texture&&this._uLightMap&&(r.bindTexture(this._uLightMap,o.lightMaps[0].texture,e.textureUnit),e.textureUnit=(e.textureUnit+1)%t,e.bindTexture++),this._withSAO){const r=i.sao;if(r.possible){const i=s.drawingBufferWidth,o=s.drawingBufferHeight;cs[0]=i,cs[1]=o,cs[2]=r.blendCutoff,cs[3]=r.blendFactor,s.uniform4fv(this._uSAOParams,cs),this._program.bindTexture(this._uOcclusionTexture,e.occlusionTexture,e.textureUnit),e.textureUnit=(e.textureUnit+1)%t,e.bindTexture++}}if(i.logarithmicDepthBufferEnabled){const e=2/(Math.log(n.far+1)/Math.LN2);s.uniform1f(this._uLogDepthBufFC,e)}this._uGammaFactor&&s.uniform1f(this._uGammaFactor,i.gammaFactor)}_buildShader(){return{vertex:this._buildVertexShader(),fragment:this._buildFragmentShader()}}_buildVertexShader(){const e=this._scene,t=e._sectionPlanesState,i=e._lightsState,s=t.sectionPlanes.length>0,r=t.clippingCaps,o=[];return o.push(\"// Triangles batching quality draw vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"#extension GL_EXT_frag_depth : enable\"),o.push(\"uniform int renderPass;\"),o.push(\"attribute vec3 position;\"),o.push(\"attribute vec3 normal;\"),o.push(\"attribute vec4 color;\"),o.push(\"attribute vec2 metallicRoughness;\"),o.push(\"attribute vec4 flags;\"),o.push(\"attribute vec4 flags2;\"),e.entityOffsetsEnabled&&o.push(\"attribute vec3 offset;\"),o.push(\"uniform mat4 worldMatrix;\"),o.push(\"uniform mat4 worldNormalMatrix;\"),o.push(\"uniform mat4 viewMatrix;\"),o.push(\"uniform mat4 projMatrix;\"),o.push(\"uniform mat4 viewNormalMatrix;\"),o.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(o.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"varying float vFragDepth;\"),o.push(\"bool isPerspectiveMatrix(mat4 m) {\"),o.push(\" return (m[2][3] == - 1.0);\"),o.push(\"}\"),o.push(\"varying float isPerspective;\")),o.push(\"vec3 octDecode(vec2 oct) {\"),o.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\"),o.push(\" if (v.z < 0.0) {\"),o.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\"),o.push(\" }\"),o.push(\" return normalize(v);\"),o.push(\"}\"),o.push(\"varying vec4 vViewPosition;\"),o.push(\"varying vec3 vViewNormal;\"),o.push(\"varying vec4 vColor;\"),o.push(\"varying vec2 vMetallicRoughness;\"),i.lightMaps.length>0&&o.push(\"varying vec3 vWorldNormal;\"),s&&(o.push(\"varying vec4 vWorldPosition;\"),o.push(\"varying vec4 vFlags2;\"),r&&o.push(\"varying vec4 vClipPosition;\")),o.push(\"void main(void) {\"),o.push(\"if (int(flags.x) != renderPass) {\"),o.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),o.push(\"} else {\"),o.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&o.push(\"worldPosition.xyz = worldPosition.xyz + offset;\"),o.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),o.push(\"vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \"),o.push(\"vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\"),o.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(o.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth?o.push(\"vFragDepth = 1.0 + clipPos.w;\"):(o.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),o.push(\"clipPos.z *= clipPos.w;\"))),s&&(o.push(\"vWorldPosition = worldPosition;\"),o.push(\"vFlags2 = flags2;\"),r&&o.push(\"vClipPosition = clipPos;\")),o.push(\"vViewPosition = viewPosition;\"),o.push(\"vViewNormal = viewNormal;\"),o.push(\"vColor = color;\"),o.push(\"vMetallicRoughness = metallicRoughness;\"),i.lightMaps.length>0&&o.push(\"vWorldNormal = worldNormal.xyz;\"),o.push(\"gl_Position = clipPos;\"),o.push(\"}\"),o.push(\"}\"),o}_buildFragmentShader(){const e=this._scene,t=e.gammaOutput,i=e._sectionPlanesState,s=e._lightsState,r=i.sectionPlanes.length>0,o=i.clippingCaps,a=[];a.push(\"// Triangles batching quality draw fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\"#extension GL_EXT_frag_depth : enable\"),a.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),a.push(\"precision highp float;\"),a.push(\"precision highp int;\"),a.push(\"#else\"),a.push(\"precision mediump float;\"),a.push(\"precision mediump int;\"),a.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(a.push(\"varying float isPerspective;\"),a.push(\"uniform float logDepthBufFC;\"),a.push(\"varying float vFragDepth;\")),a.push(\"varying vec4 vViewPosition;\"),a.push(\"varying vec3 vViewNormal;\"),a.push(\"varying vec4 vColor;\"),a.push(\"varying vec2 vMetallicRoughness;\"),s.lightMaps.length>0&&a.push(\"varying vec3 vWorldNormal;\"),a.push(\"uniform mat4 viewMatrix;\"),s.reflectionMaps.length>0&&a.push(\"uniform samplerCube reflectionMap;\"),s.lightMaps.length>0&&a.push(\"uniform samplerCube lightMap;\"),a.push(\"uniform vec4 lightAmbient;\");for(let e=0,t=s.lights.length;e0&&(a.push(\"vec3 getLightProbeIndirectRadiance(const in vec3 reflectVec, const in float blinnShininessExponent, const in int maxMIPLevel) {\"),a.push(\" float mipLevel = 0.5 * getSpecularMIPLevel(blinnShininessExponent, maxMIPLevel);\"),a.push(\" vec3 envMapColor = \"+ds[s.reflectionMaps[0].encoding]+\"(textureCube(reflectionMap, reflectVec, mipLevel)).rgb;\"),a.push(\" return envMapColor;\"),a.push(\"}\")),a.push(\"vec3 F_Schlick(const in vec3 specularColor, const in float dotLH) {\"),a.push(\" float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\"),a.push(\" return ( 1.0 - specularColor ) * fresnel + specularColor;\"),a.push(\"}\"),a.push(\"float G_GGX_Smith(const in float alpha, const in float dotNL, const in float dotNV) {\"),a.push(\" float a2 = ( alpha * alpha );\"),a.push(\" float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\"),a.push(\" float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\"),a.push(\" return 1.0 / ( gl * gv );\"),a.push(\"}\"),a.push(\"float G_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {\"),a.push(\" float a2 = ( alpha * alpha );\"),a.push(\" float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\"),a.push(\" float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\"),a.push(\" return 0.5 / max( gv + gl, EPSILON );\"),a.push(\"}\"),a.push(\"float D_GGX(const in float alpha, const in float dotNH) {\"),a.push(\" float a2 = ( alpha * alpha );\"),a.push(\" float denom = ( dotNH * dotNH) * ( a2 - 1.0 ) + 1.0;\"),a.push(\" return RECIPROCAL_PI * a2 / ( denom * denom);\"),a.push(\"}\"),a.push(\"vec3 BRDF_Specular_GGX(const in IncidentLight incidentLight, const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\"),a.push(\" float alpha = ( roughness * roughness );\"),a.push(\" vec3 halfDir = normalize( incidentLight.direction + geometry.viewEyeDir );\"),a.push(\" float dotNL = saturate( dot( geometry.viewNormal, incidentLight.direction ) );\"),a.push(\" float dotNV = saturate( dot( geometry.viewNormal, geometry.viewEyeDir ) );\"),a.push(\" float dotNH = saturate( dot( geometry.viewNormal, halfDir ) );\"),a.push(\" float dotLH = saturate( dot( incidentLight.direction, halfDir ) );\"),a.push(\" vec3 F = F_Schlick( specularColor, dotLH );\"),a.push(\" float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\"),a.push(\" float D = D_GGX( alpha, dotNH );\"),a.push(\" return F * (G * D);\"),a.push(\"}\"),a.push(\"vec3 BRDF_Specular_GGX_Environment(const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\"),a.push(\" float dotNV = saturate(dot(geometry.viewNormal, geometry.viewEyeDir));\"),a.push(\" const vec4 c0 = vec4( -1, -0.0275, -0.572, 0.022);\"),a.push(\" const vec4 c1 = vec4( 1, 0.0425, 1.04, -0.04);\"),a.push(\" vec4 r = roughness * c0 + c1;\"),a.push(\" float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;\"),a.push(\" vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;\"),a.push(\" return specularColor * AB.x + AB.y;\"),a.push(\"}\"),(s.lightMaps.length>0||s.reflectionMaps.length>0)&&(a.push(\"void computePBRLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\"),s.lightMaps.length>0&&(a.push(\" vec3 irradiance = \"+ds[s.lightMaps[0].encoding]+\"(textureCube(lightMap, geometry.worldNormal)).rgb;\"),a.push(\" irradiance *= PI;\"),a.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\"),a.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\")),s.reflectionMaps.length>0&&(a.push(\" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);\"),a.push(\" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);\"),a.push(\" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);\"),a.push(\" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);\"),a.push(\" vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);\"),a.push(\" reflectedLight.specular += radiance * specularBRDFContrib;\")),a.push(\"}\")),a.push(\"void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\"),a.push(\" float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));\"),a.push(\" vec3 irradiance = dotNL * incidentLight.color * PI;\"),a.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\"),a.push(\" reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);\"),a.push(\"}\"),a.push(\"void main(void) {\"),r){a.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),a.push(\" if (clippable) {\"),a.push(\" float dist = 0.0;\");for(let e=0,t=i.sectionPlanes.length;e (0.002 * vClipPosition.w)) {\"),a.push(\" discard;\"),a.push(\" }\"),a.push(\" if (dist > 0.0) { \"),a.push(\" gl_FragColor=vec4(1.0, 0.0, 0.0, 1.0);\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\" gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),a.push(\" return;\"),a.push(\"}\")):(a.push(\" if (dist > 0.0) { \"),a.push(\" discard;\"),a.push(\" }\")),a.push(\"}\")}a.push(\"IncidentLight light;\"),a.push(\"Material material;\"),a.push(\"Geometry geometry;\"),a.push(\"ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));\"),a.push(\"vec3 rgb = (vec3(float(vColor.r) / 255.0, float(vColor.g) / 255.0, float(vColor.b) / 255.0));\"),a.push(\"float alpha = float(vColor.a) / 255.0;\"),a.push(\"vec3 diffuseColor = rgb;\"),a.push(\"float specularF0 = 1.0;\"),a.push(\"float metallic = float(vMetallicRoughness.r) / 255.0;\"),a.push(\"float roughness = float(vMetallicRoughness.g) / 255.0;\"),a.push(\"float dielectricSpecular = 0.16 * specularF0 * specularF0;\"),a.push(\"material.diffuseColor = diffuseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);\"),a.push(\"material.specularRoughness = clamp(roughness, 0.04, 1.0);\"),a.push(\"material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);\"),a.push(\"geometry.position = vViewPosition.xyz;\"),a.push(\"geometry.viewNormal = -normalize(vViewNormal);\"),a.push(\"geometry.viewEyeDir = normalize(vViewPosition.xyz);\"),s.lightMaps.length>0&&a.push(\"geometry.worldNormal = normalize(vWorldNormal);\"),(s.lightMaps.length>0||s.reflectionMaps.length>0)&&a.push(\"computePBRLightMapping(geometry, material, reflectedLight);\");for(let e=0,t=s.lights.length;e0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*u,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Triangles batching pick flat normals vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"uniform bool pickInvisible;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),i.push(\"varying vec4 vWorldPosition;\"),t&&i.push(\"varying vec4 vFlags2;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.w) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\" } else {\"),i.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\" vWorldPosition = worldPosition;\"),t&&i.push(\" vFlags2 = flags2;\"),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\" }\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Triangles batching pick flat normals fragment shader\"),s.push(\"#extension GL_OES_standard_derivatives : enable\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),s.push(\"varying vec4 vWorldPosition;\"),i){s.push(\"varying vec4 vFlags2;\");for(var r=0;r 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(r=0;r 0.0) { discard; }\"),s.push(\" }\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" vec3 xTangent = dFdx( vWorldPosition.xyz );\"),s.push(\" vec3 yTangent = dFdy( vWorldPosition.xyz );\"),s.push(\" vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\"),s.push(\" gl_FragColor = vec4((worldNormal * 0.5) + 0.5, 1.0);\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}class gs{constructor(e){this._scene=e}_compile(){this._colorRenderer&&!this._colorRenderer.getValid()&&(this._colorRenderer.destroy(),this._colorRenderer=null),this._colorRendererWithSAO&&!this._colorRendererWithSAO.getValid()&&(this._colorRendererWithSAO.destroy(),this._colorRendererWithSAO=null),this._flatColorRenderer&&!this._flatColorRenderer.getValid()&&(this._flatColorRenderer.destroy(),this._flatColorRenderer=null),this._flatColorRendererWithSAO&&!this._flatColorRendererWithSAO.getValid()&&(this._flatColorRendererWithSAO.destroy(),this._flatColorRendererWithSAO=null),this._colorQualityRenderer&&!this._colorQualityRenderer.getValid()&&(this._colorQualityRenderer.destroy(),this._colorQualityRenderer=null),this._colorQualityRendererWithSAO&&!this._colorQualityRendererWithSAO.getValid()&&(this._colorQualityRendererWithSAO.destroy(),this._colorQualityRendererWithSAO=null),this._depthRenderer&&!this._depthRenderer.getValid()&&(this._depthRenderer.destroy(),this._depthRenderer=null),this._normalsRenderer&&!this._normalsRenderer.getValid()&&(this._normalsRenderer.destroy(),this._normalsRenderer=null),this._silhouetteRenderer&&!this._silhouetteRenderer.getValid()&&(this._silhouetteRenderer.destroy(),this._silhouetteRenderer=null),this._edgesRenderer&&!this._edgesRenderer.getValid()&&(this._edgesRenderer.destroy(),this._edgesRenderer=null),this._edgesColorRenderer&&!this._edgesColorRenderer.getValid()&&(this._edgesColorRenderer.destroy(),this._edgesColorRenderer=null),this._pickMeshRenderer&&!this._pickMeshRenderer.getValid()&&(this._pickMeshRenderer.destroy(),this._pickMeshRenderer=null),this._pickDepthRenderer&&!this._pickDepthRenderer.getValid()&&(this._pickDepthRenderer.destroy(),this._pickDepthRenderer=null),this._pickNormalsRenderer&&!1===this._pickNormalsRenderer.getValid()&&(this._pickNormalsRenderer.destroy(),this._pickNormalsRenderer=null),this._pickNormalsFlatRenderer&&!1===this._pickNormalsFlatRenderer.getValid()&&(this._pickNormalsFlatRenderer.destroy(),this._pickNormalsFlatRenderer=null),this._occlusionRenderer&&!1===this._occlusionRenderer.getValid()&&(this._occlusionRenderer.destroy(),this._occlusionRenderer=null),this._shadowRenderer&&!this._shadowRenderer.getValid()&&(this._shadowRenderer.destroy(),this._shadowRenderer=null)}get colorRenderer(){return this._colorRenderer||(this._colorRenderer=new ki(this._scene,!1)),this._colorRenderer}get colorRendererWithSAO(){return this._colorRendererWithSAO||(this._colorRendererWithSAO=new ki(this._scene,!0)),this._colorRendererWithSAO}get flatColorRenderer(){return this._flatColorRenderer||(this._flatColorRenderer=new zi(this._scene,!1)),this._flatColorRenderer}get flatColorRendererWithSAO(){return this._flatColorRendererWithSAO||(this._flatColorRendererWithSAO=new zi(this._scene,!0)),this._flatColorRendererWithSAO}get colorQualityRenderer(){return this._colorQualityRenderer||(this._colorQualityRenderer=new ps(this._scene,!1)),this._colorQualityRenderer}get colorQualityRendererWithSAO(){return this._colorQualityRendererWithSAO||(this._colorQualityRendererWithSAO=new ps(this._scene,!0)),this._colorQualityRendererWithSAO}get silhouetteRenderer(){return this._silhouetteRenderer||(this._silhouetteRenderer=new Xi(this._scene)),this._silhouetteRenderer}get depthRenderer(){return this._depthRenderer||(this._depthRenderer=new os(this._scene)),this._depthRenderer}get normalsRenderer(){return this._normalsRenderer||(this._normalsRenderer=new ns(this._scene)),this._normalsRenderer}get edgesRenderer(){return this._edgesRenderer||(this._edgesRenderer=new Yi(this._scene)),this._edgesRenderer}get edgesColorRenderer(){return this._edgesColorRenderer||(this._edgesColorRenderer=new Ki(this._scene)),this._edgesColorRenderer}get pickMeshRenderer(){return this._pickMeshRenderer||(this._pickMeshRenderer=new Qi(this._scene)),this._pickMeshRenderer}get pickNormalsRenderer(){return this._pickNormalsRenderer||(this._pickNormalsRenderer=new ts(this._scene)),this._pickNormalsRenderer}get pickNormalsFlatRenderer(){return this._pickNormalsFlatRenderer||(this._pickNormalsFlatRenderer=new _s(this._scene)),this._pickNormalsFlatRenderer}get pickDepthRenderer(){return this._pickDepthRenderer||(this._pickDepthRenderer=new Ji(this._scene)),this._pickDepthRenderer}get occlusionRenderer(){return this._occlusionRenderer||(this._occlusionRenderer=new ss(this._scene)),this._occlusionRenderer}get shadowRenderer(){return this._shadowRenderer||(this._shadowRenderer=new hs(this._scene)),this._shadowRenderer}_destroy(){this._colorRenderer&&this._colorRenderer.destroy(),this._colorRendererWithSAO&&this._colorRendererWithSAO.destroy(),this._flatColorRenderer&&this._flatColorRenderer.destroy(),this._flatColorRendererWithSAO&&this._flatColorRendererWithSAO.destroy(),this._colorQualityRenderer&&this._colorQualityRenderer.destroy(),this._colorQualityRendererWithSAO&&this._colorQualityRendererWithSAO.destroy(),this._depthRenderer&&this._depthRenderer.destroy(),this._normalsRenderer&&this._normalsRenderer.destroy(),this._silhouetteRenderer&&this._silhouetteRenderer.destroy(),this._edgesRenderer&&this._edgesRenderer.destroy(),this._edgesColorRenderer&&this._edgesColorRenderer.destroy(),this._pickMeshRenderer&&this._pickMeshRenderer.destroy(),this._pickDepthRenderer&&this._pickDepthRenderer.destroy(),this._pickNormalsRenderer&&this._pickNormalsRenderer.destroy(),this._pickNormalsFlatRenderer&&this._pickNormalsFlatRenderer.destroy(),this._occlusionRenderer&&this._occlusionRenderer.destroy(),this._shadowRenderer&&this._shadowRenderer.destroy()}}const ms={};const vs=G.SUPPORTED_EXTENSIONS.OES_element_index_uint;class bs{constructor(e=5e6){vs?e>5e6&&(e=5e6):e>65530&&(e=65530),this.maxVerts=e,this.maxIndices=3*e,this.positions=[],this.colors=[],this.metallicRoughness=[],this.normals=[],this.pickColors=[],this.flags=[],this.flags2=[],this.offsets=[],this.indices=[],this.edgeIndices=[]}}const Ps=u.mat4(),ys=u.mat4();function xs(e,t,i){const s=e.length,r=new Uint16Array(s),o=t[0],a=t[1],n=t[2],l=t[3]-o,h=t[4]-a,c=t[5]-n,d=65525,p=d/l,f=d/h,_=d/c,g=e=>e>=0?e:0;for(let t=0;t=0?1:-1),t=(1-Math.abs(s))*(r>=0?1:-1),s=e,r=t}return new Int8Array([Math[t](127.5*s+(s<0?-1:0)),Math[i](127.5*r+(r<0?-1:0))])}function ws(e,t,i,s){let r=e[t]/(Math.abs(e[t])+Math.abs(e[t+1])+Math.abs(e[t+2])),o=e[t+1]/(Math.abs(e[t])+Math.abs(e[t+1])+Math.abs(e[t+2]));if(e[t+2]<0){let e=(1-Math.abs(o))*(r>=0?1:-1),t=(1-Math.abs(r))*(o>=0?1:-1);r=e,o=t}return new Int8Array([Math[i](127.5*r+(r<0?-1:0)),Math[s](127.5*o+(o<0?-1:0))])}function Es(e){let t=e[0],i=e[1];t/=t<0?127:128,i/=i<0?127:128;const s=1-Math.abs(t)-Math.abs(i);s<0&&(t=(1-Math.abs(i))*(t>=0?1:-1),i=(1-Math.abs(t))*(i>=0?1:-1));const r=Math.sqrt(t*t+i*i+s*s);return[t/r,i/r,s/r]}function Cs(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}const As=u.mat4(),Ss=u.mat4(),Ds=u.vec4([0,0,0,1]),Ls=u.vec4([0,0,0,1]),Bs=u.vec4([0,0,0,1]),Ts=u.OBB3(),Rs=u.vec3(),Fs=u.vec3(),Ns=u.vec3(),Is=u.vec3(),Os=u.vec3(),ks=u.vec3(),Vs=u.vec3();class js{constructor(e,t){this.sortId=\"TrianglesBatchingLayer\"+(t.solid?\"-solid\":\"-surface\")+(t.autoNormals?\"-autonormals\":\"-normals\"),this.layerIndex=t.layerIndex,this._batchingRenderers=function(e){const t=e.id;let i=ms[t];return i||(i=new gs(e),ms[t]=i,i._compile(),e.on(\"compile\",(()=>{i._compile()})),e.on(\"destroyed\",(()=>{delete ms[t],i._destroy()}))),i}(e.scene),this.model=e,this._buffer=new bs(t.maxGeometryBatchSize),this._scratchMemory=t.scratchMemory,this._state=new ye({positionsBuf:null,offsetsBuf:null,normalsBuf:null,colorsBuf:null,metallicRoughnessBuf:null,flagsBuf:null,flags2Buf:null,indicesBuf:null,edgeIndicesBuf:null,positionsDecodeMatrix:u.mat4()}),this._numPortions=0,this._numVisibleLayerPortions=0,this._numTransparentLayerPortions=0,this._numXRayedLayerPortions=0,this._numSelectedLayerPortions=0,this._numHighlightedLayerPortions=0,this._numClippableLayerPortions=0,this._numEdgesLayerPortions=0,this._numPickableLayerPortions=0,this._numCulledLayerPortions=0,this._modelAABB=u.collapseAABB3(),this._portions=[],this._finalized=!1,t.positionsDecodeMatrix?(this._state.positionsDecodeMatrix.set(t.positionsDecodeMatrix),this._preCompressed=!0):this._preCompressed=!1,t.rtcCenter&&(this._state.rtcCenter=u.vec3(t.rtcCenter)),this.aabb=u.collapseAABB3(),this.solid=!!t.solid}canCreatePortion(e,t){if(this._finalized)throw\"Already finalized\";return this._buffer.positions.length+e<3*this._buffer.maxVerts&&this._buffer.indices.length+t0)if(this._preCompressed)for(let e=0,t=i.length;eh&&(n=o,h=l),o=Ms(p,\"floor\",\"ceil\"),a=Es(o),l=Cs(p,a),l>h&&(n=o,h=l),o=Ms(p,\"ceil\",\"ceil\"),a=Es(o),l=Cs(p,a),l>h&&(n=o,h=l),s[r+c+0]=n[0],s[r+c+1]=n[1],s[r+c+2]=0}(e,i,i.length,g.normals,g.normals.length)}if(l)for(let e=0,t=l.length;e0){const s=this._preCompressed?new Uint16Array(i.positions):xs(i.positions,this._modelAABB,e.positionsDecodeMatrix);if(e.positionsBuf=new re(t,t.ARRAY_BUFFER,s,s.length,3,t.STATIC_DRAW),this.model.scene.pickSurfacePrecisionEnabled)for(let e=0,t=this._portions.length;e0){const s=new Int8Array(i.normals);let r=!0;e.normalsBuf=new re(t,t.ARRAY_BUFFER,s,i.normals.length,3,t.STATIC_DRAW,r)}if(i.colors.length>0){const s=new Uint8Array(i.colors);let r=!1;e.colorsBuf=new re(t,t.ARRAY_BUFFER,s,i.colors.length,4,t.DYNAMIC_DRAW,r)}if(i.metallicRoughness.length>0){const s=new Uint8Array(i.metallicRoughness);let r=!1;e.metallicRoughnessBuf=new re(t,t.ARRAY_BUFFER,s,i.metallicRoughness.length,2,t.STATIC_DRAW,r)}if(i.positions.length>0){const s=i.positions.length/3*4,r=new Uint8Array(s),o=new Uint8Array(s);let a=!1,n=!0;e.flagsBuf=new re(t,t.ARRAY_BUFFER,r,r.length,4,t.DYNAMIC_DRAW,a),e.flags2Buf=new re(t,t.ARRAY_BUFFER,o,o.length,4,t.DYNAMIC_DRAW,n)}if(i.pickColors.length>0){const s=new Uint8Array(i.pickColors);let r=!1;e.pickColorsBuf=new re(t,t.ARRAY_BUFFER,s,i.pickColors.length,4,t.STATIC_DRAW,r)}if(this.model.scene.entityOffsetsEnabled&&i.offsets.length>0){const s=new Float32Array(i.offsets);e.offsetsBuf=new re(t,t.ARRAY_BUFFER,s,i.offsets.length,3,t.DYNAMIC_DRAW)}const s=G.SUPPORTED_EXTENSIONS.OES_element_index_uint;if(i.indices.length>0){const r=s?new Uint32Array(i.indices):new Uint16Array(i.indices);e.indicesBuf=new re(t,t.ELEMENT_ARRAY_BUFFER,r,i.indices.length,1,t.STATIC_DRAW)}if(i.edgeIndices.length>0){const r=s?new Uint32Array(i.edgeIndices):new Uint16Array(i.edgeIndices);e.edgeIndicesBuf=new re(t,t.ELEMENT_ARRAY_BUFFER,r,i.edgeIndices.length,1,t.STATIC_DRAW)}this._buffer=null,this._finalized=!0}isEmpty(){return!this._state.indicesBuf}initFlags(e,t,i){t&A&&(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++),t&R&&(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++),t&T&&(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++),t&F&&(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++),t&L&&(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++),t&N&&(this._numEdgesLayerPortions++,this.model.numEdgesLayerPortions++),t&D&&(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++),t&S&&(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++),i&&(this._numTransparentLayerPortions++,this.model.numTransparentLayerPortions++),this._setFlags(e,t,i),this._setFlags2(e,t)}setVisible(e,t,i){if(!this._finalized)throw\"Not finalized\";t&A?(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++):(this._numVisibleLayerPortions--,this.model.numVisibleLayerPortions--),this._setFlags(e,t,i)}setHighlighted(e,t,i){if(!this._finalized)throw\"Not finalized\";t&R?(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++):(this._numHighlightedLayerPortions--,this.model.numHighlightedLayerPortions--),this._setFlags(e,t,i)}setXRayed(e,t,i){if(!this._finalized)throw\"Not finalized\";t&T?(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++):(this._numXRayedLayerPortions--,this.model.numXRayedLayerPortions--),this._setFlags(e,t,i)}setSelected(e,t,i){if(!this._finalized)throw\"Not finalized\";t&F?(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++):(this._numSelectedLayerPortions--,this.model.numSelectedLayerPortions--),this._setFlags(e,t,i)}setEdges(e,t,i){if(!this._finalized)throw\"Not finalized\";t&N?(this._numEdgesLayerPortions++,this.model.numEdgesLayerPortions++):(this._numEdgesLayerPortions--,this.model.numEdgesLayerPortions--),this._setFlags(e,t,i)}setClippable(e,t){if(!this._finalized)throw\"Not finalized\";t&L?(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++):(this._numClippableLayerPortions--,this.model.numClippableLayerPortions--),this._setFlags2(e,t)}setCulled(e,t,i){if(!this._finalized)throw\"Not finalized\";t&S?(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++):(this._numCulledLayerPortions--,this.model.numCulledLayerPortions--),this._setFlags(e,t,i)}setCollidable(e,t){if(!this._finalized)throw\"Not finalized\"}setPickable(e,t,i){if(!this._finalized)throw\"Not finalized\";t&D?(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++):(this._numPickableLayerPortions--,this.model.numPickableLayerPortions--),this._setFlags(e,t,i)}setColor(e,t){if(!this._finalized)throw\"Not finalized\";const i=e,s=this._portions[i],r=4*s.vertsBase,o=4*s.numVerts,a=this._scratchMemory.getUInt8Array(o),n=t[0],l=t[1],h=t[2],c=t[3];for(let e=0;ev)&&(v=e,s.set(b),r&&u.triangleNormal(f,_,g,r),m=!0)}}return m&&r&&(u.transformVec3(this.model.worldNormalMatrix,r,r),u.normalizeVec3(r)),m}destroy(){const e=this._state;e.positionsBuf&&(e.positionsBuf.destroy(),e.positionsBuf=null),e.offsetsBuf&&(e.offsetsBuf.destroy(),e.offsetsBuf=null),e.normalsBuf&&(e.normalsBuf.destroy(),e.normalsBuf=null),e.colorsBuf&&(e.colorsBuf.destroy(),e.colorsBuf=null),e.metallicRoughnessBuf&&(e.metallicRoughnessBuf.destroy(),e.metallicRoughnessBuf=null),e.flagsBuf&&(e.flagsBuf.destroy(),e.flagsBuf=null),e.flags2Buf&&(e.flags2Buf.destroy(),e.flags2Buf=null),e.pickColorsBuf&&(e.pickColorsBuf.destroy(),e.pickColorsBuf=null),e.indicesBuf&&(e.indicesBuf.destroy(),e.indicessBuf=null),e.edgeIndicesBuf&&(e.edgeIndicesBuf.destroy(),e.edgeIndicessBuf=null),e.destroy()}}const zs=u.vec4(),Us=u.vec3();class Gs{constructor(e,t){this._scene=e,this._withSAO=t,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){const e=this._scene;return[e._lightsState.getHash(),e._sectionPlanesState.getHash(),this._withSAO?\"sao\":\"nosao\"].join(\";\")}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix),a.uniformMatrix4fv(this._uViewNormalMatrix,!1,o.viewNormalMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uWorldNormalMatrix,!1,s.worldNormalMatrix);const c=r._sectionPlanesState.sectionPlanes.length;if(c>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0;let r,o,a;const n=[];for(n.push(\"// Instancing geometry drawing vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&n.push(\"#extension GL_EXT_frag_depth : enable\"),n.push(\"uniform int renderPass;\"),n.push(\"attribute vec3 position;\"),n.push(\"attribute vec2 normal;\"),n.push(\"attribute vec4 color;\"),n.push(\"attribute vec4 flags;\"),n.push(\"attribute vec4 flags2;\"),e.entityOffsetsEnabled&&n.push(\"attribute vec3 offset;\"),n.push(\"attribute vec4 modelMatrixCol0;\"),n.push(\"attribute vec4 modelMatrixCol1;\"),n.push(\"attribute vec4 modelMatrixCol2;\"),n.push(\"attribute vec4 modelNormalMatrixCol0;\"),n.push(\"attribute vec4 modelNormalMatrixCol1;\"),n.push(\"attribute vec4 modelNormalMatrixCol2;\"),n.push(\"uniform mat4 worldMatrix;\"),n.push(\"uniform mat4 worldNormalMatrix;\"),n.push(\"uniform mat4 viewMatrix;\"),n.push(\"uniform mat4 viewNormalMatrix;\"),n.push(\"uniform mat4 projMatrix;\"),n.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(n.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&n.push(\"varying float vFragDepth;\"),n.push(\"bool isPerspectiveMatrix(mat4 m) {\"),n.push(\" return (m[2][3] == - 1.0);\"),n.push(\"}\"),n.push(\"varying float isPerspective;\")),n.push(\"uniform vec4 lightAmbient;\"),r=0,o=i.lights.length;r= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\"),n.push(\" }\"),n.push(\" return normalize(v);\"),n.push(\"}\"),s&&(n.push(\"varying vec4 vWorldPosition;\"),n.push(\"varying vec4 vFlags2;\")),n.push(\"varying vec4 vColor;\"),n.push(\"void main(void) {\"),n.push(\"if (int(flags.x) != renderPass) {\"),n.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),n.push(\"} else {\"),n.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),n.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&n.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),n.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),n.push(\"vec4 modelNormal = vec4(octDecode(normal.xy), 0.0); \"),n.push(\"vec4 worldNormal = worldNormalMatrix * vec4(dot(modelNormal, modelNormalMatrixCol0), dot(modelNormal, modelNormalMatrixCol1), dot(modelNormal, modelNormalMatrixCol2), 0.0);\"),n.push(\"vec3 viewNormal = normalize(vec4(viewNormalMatrix * worldNormal).xyz);\"),n.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\"),n.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\"),n.push(\"float lambertian = 1.0;\"),r=0,o=i.lights.length;r0,s=[];if(s.push(\"// Instancing geometry drawing fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),this._withSAO&&(s.push(\"uniform sampler2D uOcclusionTexture;\"),s.push(\"uniform vec4 uSAOParams;\"),s.push(\"const float packUpscale = 256. / 255.;\"),s.push(\"const float unpackDownScale = 255. / 256.;\"),s.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\"),s.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\"),s.push(\"float unpackRGBToFloat( const in vec4 v ) {\"),s.push(\" return dot( v, unPackFactors );\"),s.push(\"}\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { \"),s.push(\" discard;\"),s.push(\" }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),this._withSAO?(s.push(\" float viewportWidth = uSAOParams[0];\"),s.push(\" float viewportHeight = uSAOParams[1];\"),s.push(\" float blendCutoff = uSAOParams[2];\"),s.push(\" float blendFactor = uSAOParams[3];\"),s.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\"),s.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture2D(uOcclusionTexture, uv))) * blendFactor;\"),s.push(\" gl_FragColor = vec4(vColor.rgb * ambient, 1.0);\")):s.push(\" gl_FragColor = vColor;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const Xs=u.vec4(),Hs=u.vec3();class Ws{constructor(e,t){this._scene=e,this._withSAO=t,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){const e=this._scene;return[e._lightsState.getHash(),e._sectionPlanesState.getHash(),this._withSAO?\"sao\":\"nosao\"].join(\";\")}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const c=r._sectionPlanesState.sectionPlanes.length;if(c>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Instancing geometry flat-shading drawing vertex shader\"),i.push(\"#extension GL_OES_standard_derivatives : enable\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),i.push(\"attribute vec4 color;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vViewPosition;\"),i.push(\"varying vec4 vColor;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.x) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\"vViewPosition = viewPosition;\"),i.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\"),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=e._lightsState;let s,r;const o=t.sectionPlanes.length>0,a=[];if(a.push(\"// Instancing geometry flat-shading drawing fragment shader\"),a.push(\"#extension GL_OES_standard_derivatives : enable\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\"#extension GL_EXT_frag_depth : enable\"),a.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),a.push(\"precision highp float;\"),a.push(\"precision highp int;\"),a.push(\"#else\"),a.push(\"precision mediump float;\"),a.push(\"precision mediump int;\"),a.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(a.push(\"varying float isPerspective;\"),a.push(\"uniform float logDepthBufFC;\"),a.push(\"varying float vFragDepth;\")),this._withSAO&&(a.push(\"uniform sampler2D uOcclusionTexture;\"),a.push(\"uniform vec4 uSAOParams;\"),a.push(\"const float packUpscale = 256. / 255.;\"),a.push(\"const float unpackDownScale = 255. / 256.;\"),a.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\"),a.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\"),a.push(\"float unpackRGBToFloat( const in vec4 v ) {\"),a.push(\" return dot( v, unPackFactors );\"),a.push(\"}\")),o){a.push(\"varying vec4 vWorldPosition;\"),a.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),a.push(\" if (clippable) {\"),a.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { \"),a.push(\" discard;\"),a.push(\" }\"),a.push(\"}\")}for(a.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\"),a.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\"),a.push(\"float lambertian = 1.0;\"),a.push(\"vec3 xTangent = dFdx( vViewPosition.xyz );\"),a.push(\"vec3 yTangent = dFdy( vViewPosition.xyz );\"),a.push(\"vec3 viewNormal = normalize( cross( xTangent, yTangent ) );\"),s=0,r=i.lights.length;s0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Instancing fill vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),i.push(\"uniform vec4 color;\"),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"void main(void) {\"),i.push(\"if (int(flags.y) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Instancing fill fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"gl_FragColor = color;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const Ks=u.vec3(),Zs=new Float32Array([0,0,0,1]);class Qs{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter;if(!this._program&&(this._allocate(t),this.errors))return;if(e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),i===Fi){const e=r.xrayMaterial._state,t=e.edgeColor,i=e.edgeAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Ti){const e=r.highlightMaterial._state,t=e.edgeColor,i=e.edgeAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Ri){const e=r.selectedMaterial._state,t=e.edgeColor,i=e.edgeAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else a.uniform4fv(this._uColor,Zs);a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const c=r._sectionPlanesState.sectionPlanes.length;if(c>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Triangles instancing edges vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"uniform vec4 color;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vColor;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.z) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"vColor = vec4(color.r, color.g, color.b, color.a);\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Batched geometry edges drawing fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"gl_FragColor = vColor;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const $s=u.vec3();class Js{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter;if(!this._program&&(this._allocate(t),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const c=r._sectionPlanesState.sectionPlanes.length;if(c>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Triangles instancing edges vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),i.push(\"attribute vec4 color;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vColor;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.z) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"vColor = vec4(float(color.r*0.5) / 255.0, float(color.g*0.5) / 255.0, float(color.b*0.5) / 255.0, float(color.a) / 255.0);\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Batched geometry edges drawing fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"gl_FragColor = vColor;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const er=u.vec3();class tr{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),a.uniform1i(this._uRenderPass,i);const c=e.pickViewMatrix||o.viewMatrix,u=h?j(c,h):c;if(a.uniformMatrix4fv(this._uViewMatrix,!1,u),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uProjMatrix,!1,e.pickProjMatrix),r.logarithmicDepthBufferEnabled){const e=2/(Math.log(o.project.far+1)/Math.LN2);a.uniform1f(this._uLogDepthBufFC,e)}a.uniformMatrix4fv(this._uPositionsDecodeMatrix,!1,t._state.positionsDecodeMatrix),this._aModelMatrixCol0.bindArrayBuffer(n.modelMatrixCol0Buf),this._aModelMatrixCol1.bindArrayBuffer(n.modelMatrixCol1Buf),this._aModelMatrixCol2.bindArrayBuffer(n.modelMatrixCol2Buf),l.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location,1),l.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location,1),l.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location,1),this._aPickColor.bindArrayBuffer(n.pickColorsBuf),l.vertexAttribDivisorANGLE(this._aPickColor.location,1),this._aPosition.bindArrayBuffer(n.positionsBuf),this._aFlags.bindArrayBuffer(n.flagsBuf),l.vertexAttribDivisorANGLE(this._aFlags.location,1),this._aFlags2&&(this._aFlags2.bindArrayBuffer(n.flags2Buf),l.vertexAttribDivisorANGLE(this._aFlags2.location,1)),this._aOffset&&(this._aOffset.bindArrayBuffer(n.offsetsBuf),l.vertexAttribDivisorANGLE(this._aOffset.location,1)),n.indicesBuf.bind();const d=r._sectionPlanesState.sectionPlanes.length;if(d>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*d,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Instancing geometry picking vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 pickColor;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform bool pickInvisible;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vPickColor;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.w) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\"),t&&(i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Batched geometry picking fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"gl_FragColor = vPickColor; \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const ir=u.vec3();class sr{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.canvas.gl,a=t._state,n=this._instanceExt,l=t._state.rtcCenter;if(!this._program&&(this._allocate(t),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram());const h=r.camera;o.uniform1i(this._uRenderPass,i),o.uniform1i(this._uPickInvisible,e.pickInvisible);const c=e.pickViewMatrix||h.viewMatrix,u=l?j(c,l):c;if(o.uniformMatrix4fv(this._uViewMatrix,!1,u),o.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),o.uniformMatrix4fv(this._uProjMatrix,!1,e.pickProjMatrix),o.uniform1f(this._uPickZNear,e.pickZNear),o.uniform1f(this._uPickZFar,e.pickZFar),r.logarithmicDepthBufferEnabled){const t=2/(Math.log(e.pickZFar+1)/Math.LN2);o.uniform1f(this._uLogDepthBufFC,t)}const d=r._sectionPlanesState.sectionPlanes.length;if(d>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*d,a=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Instancing geometry depth vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform bool pickInvisible;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vViewPosition;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.w) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\" vWorldPosition = worldPosition;\"),i.push(\" vFlags2 = flags2;\")),i.push(\" vViewPosition = viewPosition;\"),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Batched geometry depth fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),s.push(\"uniform float pickZNear;\"),s.push(\"uniform float pickZFar;\"),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\"),s.push(\" gl_FragColor = packDepth(zNormalizedDepth); \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const rr=u.vec3();class or{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter;if(!this._program&&(this._allocate(t),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniform1i(this._uPickInvisible,e.pickInvisible);const c=e.pickViewMatrix||o.viewMatrix,u=h?j(c,h):c;if(a.uniformMatrix4fv(this._uViewMatrix,!1,u),a.uniformMatrix4fv(this._uProjMatrix,!1,e.pickProjMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uWorldNormalMatrix,!1,s.worldNormalMatrix),r.logarithmicDepthBufferEnabled){const e=2/(Math.log(o.project.far+1)/Math.LN2);a.uniform1f(this._uLogDepthBufFC,e)}const d=r._sectionPlanesState.sectionPlanes.length;if(d>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*d,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Instancing geometry normals vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec2 normal;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"attribute vec4 modelNormalMatrixCol0;\"),i.push(\"attribute vec4 modelNormalMatrixCol1;\"),i.push(\"attribute vec4 modelNormalMatrixCol2;\"),i.push(\"uniform bool pickInvisible;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),i.push(\"vec3 octDecode(vec2 oct) {\"),i.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\"),i.push(\" if (v.z < 0.0) {\"),i.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\"),i.push(\" }\"),i.push(\" return normalize(v);\"),i.push(\"}\"),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec3 vWorldNormal;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.w) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\" vec4 modelNormal = vec4(octDecode(normal.xy), 0.0); \"),i.push(\" vec3 worldNormal = vec3(dot(modelNormal, modelNormalMatrixCol0), dot(modelNormal, modelNormalMatrixCol1), dot(modelNormal, modelNormalMatrixCol2));\"),i.push(\" vWorldNormal = worldNormal;\"),t&&i.push(\" vWorldPosition = worldPosition;\"),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Batched geometry normals fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(var r=0;r 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" gl_FragColor = vec4((vWorldNormal * 0.5) + 0.5, 1.0);\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const ar=u.vec3();class nr{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const c=r._sectionPlanesState.sectionPlanes.length;if(c>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Instancing occlusion vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 color;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"void main(void) {\"),i.push(\"if (int(flags.x) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&i.push(\" vWorldPosition = worldPosition;\"),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Instancing occlusion fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0;e 0.0) { discard; }\"),s.push(\"}\")}return s.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const lr=u.vec3();class hr{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix);const c=r._sectionPlanesState.sectionPlanes.length;if(c>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Instancing geometry depth drawing vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec2 vHighPrecisionZW;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.x) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"vHighPrecisionZW = gl_Position.zw;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState;let i,s;const r=t.sectionPlanes.length>0,o=[];if(o.push(\"// Instancing geometry depth drawing fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"#extension GL_EXT_frag_depth : enable\"),o.push(\"precision highp float;\"),o.push(\"precision highp int;\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(o.push(\"varying float isPerspective;\"),o.push(\"uniform float logDepthBufFC;\"),o.push(\"varying float vFragDepth;\")),r)for(o.push(\"varying vec4 vWorldPosition;\"),o.push(\"varying vec4 vFlags2;\"),i=0,s=t.sectionPlanes.length;i 0.0);\"),o.push(\" if (clippable) {\"),o.push(\" float dist = 0.0;\"),i=0,s=t.sectionPlanes.length;i 0.0) { discard; }\"),o.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),o.push(\"float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\"),G.SUPPORTED_EXTENSIONS.WEBGL_depth_texture?o.push(\" gl_FragColor = vec4(vec3(1.0 - fragCoordZ), 1.0); \"):o.push(\" gl_FragColor = packDepthToRGBA(fragCoordZ); \"),o.push(\"}\"),o}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const cr=u.vec3();class ur{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter;if(!this._program&&(this._allocate(t),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix),a.uniformMatrix4fv(this._uViewNormalMatrix,!1,o.viewNormalMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uWorldNormalMatrix,!1,s.worldNormalMatrix);const c=r._sectionPlanesState.sectionPlanes.length;if(c>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Instancing geometry normals drawing vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec3 normal;\"),i.push(\"attribute vec4 color;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 worldNormalMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 viewNormalMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),i.push(\"vec3 octDecode(vec2 oct) {\"),i.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\"),i.push(\" if (v.z < 0.0) {\"),i.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\"),i.push(\" }\"),i.push(\" return normalize(v);\"),i.push(\"}\"),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec3 vViewNormal;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.x) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\" vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \"),i.push(\" vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\" vViewNormal = viewNormal;\"),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Instancing geometry depth drawing fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" gl_FragColor = vec4(packNormalToRGB(vViewNormal), 1.0); \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const dr=u.vec3();class pr{constructor(e){this._scene=e,this._hash=this._getHash(),this._lastLightId=null,this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t){const i=t.model,s=i.scene,r=s.canvas.gl,o=t._state,a=this._instanceExt;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e,t)),r.uniformMatrix4fv(this._uPositionsDecodeMatrix,!1,t._state.positionsDecodeMatrix),this._aModelMatrixCol0.bindArrayBuffer(o.modelMatrixCol0Buf),this._aModelMatrixCol1.bindArrayBuffer(o.modelMatrixCol1Buf),this._aModelMatrixCol2.bindArrayBuffer(o.modelMatrixCol2Buf),a.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location,1),a.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location,1),a.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location,1),this._aPosition.bindArrayBuffer(o.positionsBuf),this._aOffset&&(this._aOffset.bindArrayBuffer(o.offsetsBuf),a.vertexAttribDivisorANGLE(this._aOffset.location,1)),this._aColor.bindArrayBuffer(o.colorsBuf),a.vertexAttribDivisorANGLE(this._aColor.location,1),this._aFlags.bindArrayBuffer(o.flagsBuf),a.vertexAttribDivisorANGLE(this._aFlags.location,1),this._aFlags2&&(this._aFlags2.bindArrayBuffer(o.flags2Buf),a.vertexAttribDivisorANGLE(this._aFlags2.location,1));const n=s._sectionPlanesState.sectionPlanes.length;if(n>0){const e=s._sectionPlanesState.sectionPlanes,o=t.layerIndex*n,a=i.renderFlags,l=t._state.rtcCenter;for(let t=0;t0,i=[];return i.push(\"// Instancing geometry shadow drawing vertex shader\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 color;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform mat4 shadowViewMatrix;\"),i.push(\"uniform mat4 shadowProjMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"void main(void) {\"),i.push(\"bool visible = (float(flags.x) > 0.0);\"),i.push(\"bool transparent = ((float(color.a) / 255.0) < 1.0);\"),i.push(\"if (!visible || transparent) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\" worldPosition = vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = shadowViewMatrix * worldPosition; \"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\" gl_Position = shadowProjMatrix * viewPosition;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Instancing geometry depth drawing fragment shader\"),e.logarithmicDepthBufferEnabled&&WEBGL_INFO.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&WEBGL_INFO.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&WEBGL_INFO.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" gl_FragColor = vec4(packNormalToRGB(vViewNormal), 1.0); \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const fr=u.vec4(),_r=u.vec3(),gr={linear:\"linearToLinear\",sRGB:\"sRGBToLinear\",gamma:\"gammaToLinear\"};class mr{constructor(e,t){this._scene=e,this._withSAO=t,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){const e=this._scene;return[e.gammaOutput,e._lightsState.getHash(),e._sectionPlanesState.getHash(),this._withSAO?\"sao\":\"nosao\"].join(\";\")}drawLayer(e,t,i){const s=t.model,r=this._scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix),a.uniformMatrix4fv(this._uViewNormalMatrix,!1,o.viewNormalMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uWorldNormalMatrix,!1,s.worldNormalMatrix);const c=r._sectionPlanesState.sectionPlanes.length;if(c>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0&&(this._uReflectionMap=\"reflectionMap\"),i.lightMaps.length>0&&(this._uLightMap=\"lightMap\"),this._uSectionPlanes=[];for(let t=0,i=e._sectionPlanesState.sectionPlanes.length;t0&&r.reflectionMaps[0].texture&&this._uReflectionMap&&(this._program.bindTexture(this._uReflectionMap,r.reflectionMaps[0].texture,e.textureUnit),e.textureUnit=(e.textureUnit+1)%t,e.bindTexture++),r.lightMaps.length>0&&r.lightMaps[0].texture&&this._uLightMap&&(this._program.bindTexture(this._uLightMap,r.lightMaps[0].texture,e.textureUnit),e.textureUnit=(e.textureUnit+1)%t,e.bindTexture++),this._withSAO){const r=i.sao;if(r.possible){const i=s.drawingBufferWidth,o=s.drawingBufferHeight;fr[0]=i,fr[1]=o,fr[2]=r.blendCutoff,fr[3]=r.blendFactor,s.uniform4fv(this._uSAOParams,fr),this._program.bindTexture(this._uOcclusionTexture,e.occlusionTexture,e.textureUnit),e.textureUnit=(e.textureUnit+1)%t,e.bindTexture++}}if(i.logarithmicDepthBufferEnabled){const e=2/(Math.log(a.far+1)/Math.LN2);s.uniform1f(this._uLogDepthBufFC,e)}this._uGammaFactor&&s.uniform1f(this._uGammaFactor,i.gammaFactor)}_buildShader(){return{vertex:this._buildVertexShader(),fragment:this._buildFragmentShader()}}_buildVertexShader(){const e=this._scene,t=e._sectionPlanesState,i=e._lightsState,s=t.sectionPlanes.length>0,r=t.clippingCaps,o=[];return o.push(\"// Instancing geometry quality drawing vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"#extension GL_EXT_frag_depth : enable\"),o.push(\"uniform int renderPass;\"),o.push(\"attribute vec3 position;\"),o.push(\"attribute vec2 normal;\"),o.push(\"attribute vec4 color;\"),o.push(\"attribute vec2 metallicRoughness;\"),o.push(\"attribute vec4 flags;\"),o.push(\"attribute vec4 flags2;\"),e.entityOffsetsEnabled&&o.push(\"attribute vec3 offset;\"),o.push(\"attribute vec4 modelMatrixCol0;\"),o.push(\"attribute vec4 modelMatrixCol1;\"),o.push(\"attribute vec4 modelMatrixCol2;\"),o.push(\"attribute vec4 modelNormalMatrixCol0;\"),o.push(\"attribute vec4 modelNormalMatrixCol1;\"),o.push(\"attribute vec4 modelNormalMatrixCol2;\"),o.push(\"uniform mat4 worldMatrix;\"),o.push(\"uniform mat4 worldNormalMatrix;\"),o.push(\"uniform mat4 viewMatrix;\"),o.push(\"uniform mat4 viewNormalMatrix;\"),o.push(\"uniform mat4 projMatrix;\"),o.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(o.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"varying float vFragDepth;\"),o.push(\"bool isPerspectiveMatrix(mat4 m) {\"),o.push(\" return (m[2][3] == - 1.0);\"),o.push(\"}\"),o.push(\"varying float isPerspective;\")),o.push(\"vec3 octDecode(vec2 oct) {\"),o.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\"),o.push(\" if (v.z < 0.0) {\"),o.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\"),o.push(\" }\"),o.push(\" return normalize(v);\"),o.push(\"}\"),o.push(\"varying vec4 vViewPosition;\"),o.push(\"varying vec3 vViewNormal;\"),o.push(\"varying vec4 vColor;\"),o.push(\"varying vec2 vMetallicRoughness;\"),i.lightMaps.length>0&&o.push(\"varying vec3 vWorldNormal;\"),s&&(o.push(\"varying vec4 vWorldPosition;\"),o.push(\"varying vec4 vFlags2;\"),r&&o.push(\"varying vec4 vClipPosition;\")),o.push(\"void main(void) {\"),o.push(\"if (int(flags.x) != renderPass) {\"),o.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),o.push(\"} else {\"),o.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),o.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&o.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),o.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),o.push(\"vec4 modelNormal = vec4(octDecode(normal.xy), 0.0); \"),o.push(\"vec4 worldNormal = worldNormalMatrix * vec4(dot(modelNormal, modelNormalMatrixCol0), dot(modelNormal, modelNormalMatrixCol1), dot(modelNormal, modelNormalMatrixCol2), 0.0);\"),o.push(\"vec3 viewNormal = vec4(viewNormalMatrix * worldNormal).xyz;\"),o.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?o.push(\"vFragDepth = 1.0 + clipPos.w;\"):(o.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),o.push(\"clipPos.z *= clipPos.w;\")),o.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),s&&(o.push(\"vWorldPosition = worldPosition;\"),o.push(\"vFlags2 = flags2;\"),r&&o.push(\"vClipPosition = clipPos;\")),o.push(\"vViewPosition = viewPosition;\"),o.push(\"vViewNormal = viewNormal;\"),o.push(\"vColor = color;\"),o.push(\"vMetallicRoughness = metallicRoughness;\"),i.lightMaps.length>0&&o.push(\"vWorldNormal = worldNormal.xyz;\"),o.push(\"gl_Position = clipPos;\"),o.push(\"}\"),o.push(\"}\"),o}_buildFragmentShader(){const e=this._scene,t=e.gammaOutput,i=e._sectionPlanesState,s=e._lightsState,r=i.sectionPlanes.length>0,o=i.clippingCaps,a=[];a.push(\"// Instancing geometry quality drawing fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\"#extension GL_EXT_frag_depth : enable\"),a.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),a.push(\"precision highp float;\"),a.push(\"precision highp int;\"),a.push(\"#else\"),a.push(\"precision mediump float;\"),a.push(\"precision mediump int;\"),a.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&(a.push(\"varying float isPerspective;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(a.push(\"uniform float logDepthBufFC;\"),a.push(\"varying float vFragDepth;\"))),this._withSAO&&(a.push(\"uniform sampler2D uOcclusionTexture;\"),a.push(\"uniform vec4 uSAOParams;\"),a.push(\"const float packUpscale = 256. / 255.;\"),a.push(\"const float unpackDownScale = 255. / 256.;\"),a.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\"),a.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\"),a.push(\"float unpackRGBAToDepth( const in vec4 v ) {\"),a.push(\" return dot( v, unPackFactors );\"),a.push(\"}\")),s.reflectionMaps.length>0&&a.push(\"uniform samplerCube reflectionMap;\"),s.lightMaps.length>0&&a.push(\"uniform samplerCube lightMap;\"),a.push(\"uniform vec4 lightAmbient;\");for(let e=0,t=s.lights.length;e0&&a.push(\"varying vec3 vWorldNormal;\"),a.push(\"uniform mat4 viewMatrix;\"),a.push(\"#define PI 3.14159265359\"),a.push(\"#define RECIPROCAL_PI 0.31830988618\"),a.push(\"#define RECIPROCAL_PI2 0.15915494\"),a.push(\"#define EPSILON 1e-6\"),a.push(\"#define saturate(a) clamp( a, 0.0, 1.0 )\"),a.push(\"vec3 inverseTransformDirection(in vec3 dir, in mat4 matrix) {\"),a.push(\" return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\"),a.push(\"}\"),a.push(\"struct IncidentLight {\"),a.push(\" vec3 color;\"),a.push(\" vec3 direction;\"),a.push(\"};\"),a.push(\"struct ReflectedLight {\"),a.push(\" vec3 diffuse;\"),a.push(\" vec3 specular;\"),a.push(\"};\"),a.push(\"struct Geometry {\"),a.push(\" vec3 position;\"),a.push(\" vec3 viewNormal;\"),a.push(\" vec3 worldNormal;\"),a.push(\" vec3 viewEyeDir;\"),a.push(\"};\"),a.push(\"struct Material {\"),a.push(\" vec3 diffuseColor;\"),a.push(\" float specularRoughness;\"),a.push(\" vec3 specularColor;\"),a.push(\" float shine;\"),a.push(\"};\"),a.push(\"float GGXRoughnessToBlinnExponent(const in float ggxRoughness) {\"),a.push(\" float r = ggxRoughness + 0.0001;\"),a.push(\" return (2.0 / (r * r) - 2.0);\"),a.push(\"}\"),a.push(\"float getSpecularMIPLevel(const in float blinnShininessExponent, const in int maxMIPLevel) {\"),a.push(\" float maxMIPLevelScalar = float( maxMIPLevel );\"),a.push(\" float desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( ( blinnShininessExponent * blinnShininessExponent ) + 1.0 );\"),a.push(\" return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\"),a.push(\"}\"),s.reflectionMaps.length>0&&(a.push(\"vec3 getLightProbeIndirectRadiance(const in vec3 reflectVec, const in float blinnShininessExponent, const in int maxMIPLevel) {\"),a.push(\" float mipLevel = 0.5 * getSpecularMIPLevel(blinnShininessExponent, maxMIPLevel);\"),a.push(\" vec3 envMapColor = \"+gr[s.reflectionMaps[0].encoding]+\"(textureCube(reflectionMap, reflectVec, mipLevel)).rgb;\"),a.push(\" return envMapColor;\"),a.push(\"}\")),a.push(\"vec3 F_Schlick(const in vec3 specularColor, const in float dotLH) {\"),a.push(\" float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\"),a.push(\" return ( 1.0 - specularColor ) * fresnel + specularColor;\"),a.push(\"}\"),a.push(\"float G_GGX_Smith(const in float alpha, const in float dotNL, const in float dotNV) {\"),a.push(\" float a2 = ( alpha * alpha );\"),a.push(\" float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\"),a.push(\" float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\"),a.push(\" return 1.0 / ( gl * gv );\"),a.push(\"}\"),a.push(\"float G_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {\"),a.push(\" float a2 = ( alpha * alpha );\"),a.push(\" float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\"),a.push(\" float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\"),a.push(\" return 0.5 / max( gv + gl, EPSILON );\"),a.push(\"}\"),a.push(\"float D_GGX(const in float alpha, const in float dotNH) {\"),a.push(\" float a2 = ( alpha * alpha );\"),a.push(\" float denom = ( dotNH * dotNH) * ( a2 - 1.0 ) + 1.0;\"),a.push(\" return RECIPROCAL_PI * a2 / ( denom * denom);\"),a.push(\"}\"),a.push(\"vec3 BRDF_Specular_GGX(const in IncidentLight incidentLight, const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\"),a.push(\" float alpha = ( roughness * roughness );\"),a.push(\" vec3 halfDir = normalize( incidentLight.direction + geometry.viewEyeDir );\"),a.push(\" float dotNL = saturate( dot( geometry.viewNormal, incidentLight.direction ) );\"),a.push(\" float dotNV = saturate( dot( geometry.viewNormal, geometry.viewEyeDir ) );\"),a.push(\" float dotNH = saturate( dot( geometry.viewNormal, halfDir ) );\"),a.push(\" float dotLH = saturate( dot( incidentLight.direction, halfDir ) );\"),a.push(\" vec3 F = F_Schlick( specularColor, dotLH );\"),a.push(\" float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\"),a.push(\" float D = D_GGX( alpha, dotNH );\"),a.push(\" return F * (G * D);\"),a.push(\"}\"),a.push(\"vec3 BRDF_Specular_GGX_Environment(const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\"),a.push(\" float dotNV = saturate(dot(geometry.viewNormal, geometry.viewEyeDir));\"),a.push(\" const vec4 c0 = vec4( -1, -0.0275, -0.572, 0.022);\"),a.push(\" const vec4 c1 = vec4( 1, 0.0425, 1.04, -0.04);\"),a.push(\" vec4 r = roughness * c0 + c1;\"),a.push(\" float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;\"),a.push(\" vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;\"),a.push(\" return specularColor * AB.x + AB.y;\"),a.push(\"}\"),(s.lightMaps.length>0||s.reflectionMaps.length>0)&&(a.push(\"void computePBRLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\"),s.lightMaps.length>0&&(a.push(\" vec3 irradiance = \"+gr[s.lightMaps[0].encoding]+\"(textureCube(lightMap, geometry.worldNormal)).rgb;\"),a.push(\" irradiance *= PI;\"),a.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\"),a.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\")),s.reflectionMaps.length>0&&(a.push(\" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);\"),a.push(\" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);\"),a.push(\" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);\"),a.push(\" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);\"),a.push(\" vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);\"),a.push(\" reflectedLight.specular += radiance * specularBRDFContrib;\")),a.push(\"}\")),a.push(\"void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\"),a.push(\" float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));\"),a.push(\" vec3 irradiance = dotNL * incidentLight.color * PI;\"),a.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\"),a.push(\" reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);\"),a.push(\"}\"),a.push(\"void main(void) {\"),r){a.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),a.push(\" if (clippable) {\"),a.push(\" float dist = 0.0;\");for(let e=0,t=i.sectionPlanes.length;e (0.002 * vClipPosition.w)) {\"),a.push(\" discard;\"),a.push(\" }\"),a.push(\" if (dist > 0.0) { \"),a.push(\" gl_FragColor=vec4(1.0, 0.0, 0.0, 1.0);\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&a.push(\" gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),a.push(\" return;\"),a.push(\"}\")):(a.push(\" if (dist > 0.0) { \"),a.push(\" discard;\"),a.push(\" }\")),a.push(\"}\")}a.push(\"IncidentLight light;\"),a.push(\"Material material;\"),a.push(\"Geometry geometry;\"),a.push(\"ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));\"),a.push(\"vec3 rgb = (vec3(float(vColor.r) / 255.0, float(vColor.g) / 255.0, float(vColor.b) / 255.0));\"),a.push(\"float alpha = float(vColor.a) / 255.0;\"),a.push(\"vec3 diffuseColor = rgb;\"),a.push(\"float specularF0 = 1.0;\"),a.push(\"float metallic = float(vMetallicRoughness.r) / 255.0;\"),a.push(\"float roughness = float(vMetallicRoughness.g) / 255.0;\"),a.push(\"float dielectricSpecular = 0.16 * specularF0 * specularF0;\"),a.push(\"material.diffuseColor = diffuseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);\"),a.push(\"material.specularRoughness = clamp(roughness, 0.04, 1.0);\"),a.push(\"material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);\"),a.push(\"geometry.position = vViewPosition.xyz;\"),a.push(\"geometry.viewNormal = -normalize(vViewNormal);\"),a.push(\"geometry.viewEyeDir = normalize(vViewPosition.xyz);\"),s.lightMaps.length>0&&a.push(\"geometry.worldNormal = normalize(vWorldNormal);\"),(s.lightMaps.length>0||s.reflectionMaps.length>0)&&a.push(\"computePBRLightMapping(geometry, material, reflectedLight);\");for(let e=0,t=s.lights.length;e0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*d,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Instancing geometry normals vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform bool pickInvisible;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\"),i.push(\"bool isPerspectiveMatrix(mat4 m) {\"),i.push(\" return (m[2][3] == - 1.0);\"),i.push(\"}\"),i.push(\"varying float isPerspective;\")),t&&i.push(\"varying vec4 vFlags2;\"),i.push(\"varying vec4 vWorldPosition;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.w) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\" vWorldPosition = worldPosition;\"),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\")),i.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\")),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Batched geometry normals fragment shader\"),s.push(\"#extension GL_OES_standard_derivatives : enable\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"varying float isPerspective;\"),s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),s.push(\"varying vec4 vWorldPosition;\"),i){s.push(\"varying vec4 vFlags2;\");for(let e=0;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(var r=0;r 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" vec3 xTangent = dFdx( vWorldPosition.xyz );\"),s.push(\" vec3 yTangent = dFdy( vWorldPosition.xyz );\"),s.push(\" vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\"),s.push(\" gl_FragColor = vec4((worldNormal * 0.5) + 0.5, 1.0);\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}class Pr{constructor(e){this._scene=e}_compile(){this._colorRenderer&&!this._colorRenderer.getValid()&&(this._colorRenderer.destroy(),this._colorRenderer=null),this._colorRendererWithSAO&&!this._colorRendererWithSAO.getValid()&&(this._colorRendererWithSAO.destroy(),this._colorRendererWithSAO=null),this._flatColorRenderer&&!this._flatColorRenderer.getValid()&&(this._flatColorRenderer.destroy(),this._flatColorRenderer=null),this._flatColorRendererWithSAO&&!this._flatColorRendererWithSAO.getValid()&&(this._flatColorRendererWithSAO.destroy(),this._flatColorRendererWithSAO=null),this._colorQualityRenderer&&!this._colorQualityRenderer.getValid()&&(this._colorQualityRenderer.destroy(),this._colorQualityRenderer=null),this._colorQualityRendererWithSAO&&!this._colorQualityRendererWithSAO.getValid()&&(this._colorQualityRendererWithSAO.destroy(),this._colorQualityRendererWithSAO=null),this._depthRenderer&&!this._depthRenderer.getValid()&&(this._depthRenderer.destroy(),this._depthRenderer=null),this._normalsRenderer&&!this._normalsRenderer.getValid()&&(this._normalsRenderer.destroy(),this._normalsRenderer=null),this._silhouetteRenderer&&!this._silhouetteRenderer.getValid()&&(this._silhouetteRenderer.destroy(),this._silhouetteRenderer=null),this._edgesRenderer&&!this._edgesRenderer.getValid()&&(this._edgesRenderer.destroy(),this._edgesRenderer=null),this._edgesColorRenderer&&!this._edgesColorRenderer.getValid()&&(this._edgesColorRenderer.destroy(),this._edgesColorRenderer=null),this._pickMeshRenderer&&!this._pickMeshRenderer.getValid()&&(this._pickMeshRenderer.destroy(),this._pickMeshRenderer=null),this._pickDepthRenderer&&!this._pickDepthRenderer.getValid()&&(this._pickDepthRenderer.destroy(),this._pickDepthRenderer=null),this._pickNormalsRenderer&&!1===this._pickNormalsRenderer.getValid()&&(this._pickNormalsRenderer.destroy(),this._pickNormalsRenderer=null),this._pickNormalsFlatRenderer&&!this._pickNormalsFlatRenderer.getValid()&&(this._pickNormalsFlatRenderer.destroy(),this._pickNormalsFlatRenderer=null),this._occlusionRenderer&&!1===this._occlusionRenderer.getValid()&&(this._occlusionRenderer.destroy(),this._occlusionRenderer=null),this._shadowRenderer&&!this._shadowRenderer.getValid()&&(this._shadowRenderer.destroy(),this._shadowRenderer=null)}get colorRenderer(){return this._colorRenderer||(this._colorRenderer=new Gs(this._scene,!1)),this._colorRenderer}get colorRendererWithSAO(){return this._colorRendererWithSAO||(this._colorRendererWithSAO=new Gs(this._scene,!0)),this._colorRendererWithSAO}get flatColorRenderer(){return this._flatColorRenderer||(this._flatColorRenderer=new Ws(this._scene,!1)),this._flatColorRenderer}get flatColorRendererWithSAO(){return this._flatColorRendererWithSAO||(this._flatColorRendererWithSAO=new Ws(this._scene,!0)),this._flatColorRendererWithSAO}get colorQualityRenderer(){return this._colorQualityRenderer||(this._colorQualityRenderer=new mr(this._scene,!1)),this._colorQualityRenderer}get colorQualityRendererWithSAO(){return this._colorQualityRendererWithSAO||(this._colorQualityRendererWithSAO=new mr(this._scene,!0)),this._colorQualityRendererWithSAO}get silhouetteRenderer(){return this._silhouetteRenderer||(this._silhouetteRenderer=new qs(this._scene)),this._silhouetteRenderer}get depthRenderer(){return this._depthRenderer||(this._depthRenderer=new hr(this._scene)),this._depthRenderer}get normalsRenderer(){return this._normalsRenderer||(this._normalsRenderer=new ur(this._scene)),this._normalsRenderer}get edgesRenderer(){return this._edgesRenderer||(this._edgesRenderer=new Qs(this._scene)),this._edgesRenderer}get edgesColorRenderer(){return this._edgesColorRenderer||(this._edgesColorRenderer=new Js(this._scene)),this._edgesColorRenderer}get pickMeshRenderer(){return this._pickMeshRenderer||(this._pickMeshRenderer=new tr(this._scene)),this._pickMeshRenderer}get pickNormalsRenderer(){return this._pickNormalsRenderer||(this._pickNormalsRenderer=new or(this._scene)),this._pickNormalsRenderer}get pickNormalsFlatRenderer(){return this._pickNormalsFlatRenderer||(this._pickNormalsFlatRenderer=new br(this._scene)),this._pickNormalsFlatRenderer}get pickDepthRenderer(){return this._pickDepthRenderer||(this._pickDepthRenderer=new sr(this._scene)),this._pickDepthRenderer}get occlusionRenderer(){return this._occlusionRenderer||(this._occlusionRenderer=new nr(this._scene)),this._occlusionRenderer}get shadowRenderer(){return this._shadowRenderer||(this._shadowRenderer=new pr(this._scene)),this._shadowRenderer}_destroy(){this._colorRenderer&&this._colorRenderer.destroy(),this._colorRendererWithSAO&&this._colorRendererWithSAO.destroy(),this._flatColorRenderer&&this._flatColorRenderer.destroy(),this._flatColorRendererWithSAO&&this._flatColorRendererWithSAO.destroy(),this._colorQualityRenderer&&this._colorQualityRenderer.destroy(),this._colorQualityRendererWithSAO&&this._colorQualityRendererWithSAO.destroy(),this._depthRenderer&&this._depthRenderer.destroy(),this._normalsRenderer&&this._normalsRenderer.destroy(),this._silhouetteRenderer&&this._silhouetteRenderer.destroy(),this._edgesRenderer&&this._edgesRenderer.destroy(),this._edgesColorRenderer&&this._edgesColorRenderer.destroy(),this._pickMeshRenderer&&this._pickMeshRenderer.destroy(),this._pickDepthRenderer&&this._pickDepthRenderer.destroy(),this._pickNormalsRenderer&&this._pickNormalsRenderer.destroy(),this._pickNormalsFlatRenderer&&this._pickNormalsFlatRenderer.destroy(),this._occlusionRenderer&&this._occlusionRenderer.destroy(),this._shadowRenderer&&this._shadowRenderer.destroy()}}const yr={};const xr=G.SUPPORTED_EXTENSIONS.OES_element_index_uint,Mr=new Uint8Array(4),wr=u.vec4([0,0,0,1]),Er=u.vec4([0,0,0,1]),Cr=u.vec4([0,0,0,1]),Ar=new Float32Array(3),Sr=u.vec3(),Dr=u.vec3(),Lr=u.vec3(),Br=u.vec3(),Tr=u.vec3(),Rr=u.vec3(),Fr=u.vec3();class Nr{constructor(e,t){this.sortId=\"TrianglesInstancingLayer\"+(t.solid?\"-solid\":\"-surface\")+(t.normals?\"-normals\":\"-autoNormals\"),this.layerIndex=t.layerIndex,this._instancingRenderers=function(e){const t=e.id;let i=yr[t];return i||(i=new Pr(e),yr[t]=i,i._compile(),e.on(\"compile\",(()=>{i._compile()})),e.on(\"destroyed\",(()=>{delete yr[t],i._destroy()}))),i}(e.scene),this.model=e,this._aabb=u.collapseAABB3();const i={positionsDecodeMatrix:u.mat4(),numInstances:0,obb:u.OBB3(),rtcCenter:null},s=!!t.positionsDecodeMatrix,r=this.model.scene.pickSurfacePrecisionEnabled,o=this.model.scene.canvas.gl;if(t.positions)if(s){const e=!1;i.positionsBuf=new re(o,o.ARRAY_BUFFER,t.positions,t.positions.length,3,o.STATIC_DRAW,e),i.positionsDecodeMatrix.set(t.positionsDecodeMatrix);const s=u.collapseAABB3();u.expandAABB3Points3(s,t.positions),qe.decompressAABB(s,i.positionsDecodeMatrix),u.AABB3ToOBB3(s,i.obb),r&&(i.quantizedPositions=t.positions)}else{const e=t.positions.length,s=u.collapseAABB3();u.expandAABB3Points3(s,t.positions),u.AABB3ToOBB3(s,i.obb);const a=xs(t.positions,s,i.positionsDecodeMatrix);let n=!1;i.positionsBuf=new re(o,o.ARRAY_BUFFER,a,e,3,o.STATIC_DRAW,n),r&&(i.quantizedPositions=a)}if(t.normals&&t.normals.length>0)if(s){const e=!0;i.normalsBuf=new re(o,o.ARRAY_BUFFER,t.normals,t.normals.length,3,o.STATIC_DRAW,e)}else{const e=function(e){const t=e.length,i=new Int8Array(t);let s,r,o,a;for(let n=0;na&&(r=s,a=o),s=ws(e,n,\"floor\",\"ceil\"),Es(s),o=Cs(e,n),o>a&&(r=s,a=o),s=ws(e,n,\"ceil\",\"ceil\"),Es(s),o=Cs(e,n),o>a&&(r=s,a=o),i[n+0]=r[0],i[n+1]=r[1],i[n+2]=0;return new Int8Array(i)}(t.normals),s=!0;i.normalsBuf=new re(o,o.ARRAY_BUFFER,e,e.length,3,o.STATIC_DRAW,s)}t.indices&&(i.indicesBuf=new re(o,o.ELEMENT_ARRAY_BUFFER,xr?new Uint32Array(t.indices):new Uint16Array(t.indices),t.indices.length,1,o.STATIC_DRAW),r&&(i.indices=t.indices));let a=t.edgeIndices;a||(a=Xe(t.positions,t.indices,null,t.edgeThreshold||10)),i.edgeIndicesBuf=new re(o,o.ELEMENT_ARRAY_BUFFER,xr?new Uint32Array(a):new Uint16Array(a),a.length,1,o.STATIC_DRAW),this._state=new ye(i),this._numPortions=0,this._numVisibleLayerPortions=0,this._numTransparentLayerPortions=0,this._numXRayedLayerPortions=0,this._numHighlightedLayerPortions=0,this._numSelectedLayerPortions=0,this._numClippableLayerPortions=0,this._numEdgesLayerPortions=0,this._numPickableLayerPortions=0,this._numCulledLayerPortions=0,this.numIndices=t.indices?t.indices.length/3:0,this._colors=[],this._metallicRoughness=[],this._pickColors=[],this._offsets=[],this._modelMatrixCol0=[],this._modelMatrixCol1=[],this._modelMatrixCol2=[],this._modelNormalMatrixCol0=[],this._modelNormalMatrixCol1=[],this._modelNormalMatrixCol2=[],this._portions=[],t.rtcCenter&&(this._state.rtcCenter=u.vec3(t.rtcCenter)),this._finalized=!1,this.aabb=u.collapseAABB3(),this.solid=!!t.solid}createPortion(e){const t=e.color,i=e.metallic,s=e.roughness,r=e.opacity,o=e.meshMatrix,a=e.worldMatrix,n=e.aabb,l=e.pickColor;if(this._finalized)throw\"Already finalized\";const h=t[0],c=t[1],d=t[2];if(t[3],this._colors.push(h),this._colors.push(c),this._colors.push(d),this._colors.push(r),this._metallicRoughness.push(null!=i?i:0),this._metallicRoughness.push(null!=s?s:255),this.model.scene.entityOffsetsEnabled&&(this._offsets.push(0),this._offsets.push(0),this._offsets.push(0)),this._modelMatrixCol0.push(o[0]),this._modelMatrixCol0.push(o[4]),this._modelMatrixCol0.push(o[8]),this._modelMatrixCol0.push(o[12]),this._modelMatrixCol1.push(o[1]),this._modelMatrixCol1.push(o[5]),this._modelMatrixCol1.push(o[9]),this._modelMatrixCol1.push(o[13]),this._modelMatrixCol2.push(o[2]),this._modelMatrixCol2.push(o[6]),this._modelMatrixCol2.push(o[10]),this._modelMatrixCol2.push(o[14]),this._state.normalsBuf){let e=u.transposeMat4(o,u.mat4()),t=u.inverseMat4(e);this._modelNormalMatrixCol0.push(t[0]),this._modelNormalMatrixCol0.push(t[4]),this._modelNormalMatrixCol0.push(t[8]),this._modelNormalMatrixCol0.push(t[12]),this._modelNormalMatrixCol1.push(t[1]),this._modelNormalMatrixCol1.push(t[5]),this._modelNormalMatrixCol1.push(t[9]),this._modelNormalMatrixCol1.push(t[13]),this._modelNormalMatrixCol2.push(t[2]),this._modelNormalMatrixCol2.push(t[6]),this._modelNormalMatrixCol2.push(t[10]),this._modelNormalMatrixCol2.push(t[14])}this._pickColors.push(l[0]),this._pickColors.push(l[1]),this._pickColors.push(l[2]),this._pickColors.push(l[3]),u.collapseAABB3(n);const p=this._state.obb,f=p.length;for(let e=0;e0){let t=!1;this._state.colorsBuf=new re(e,e.ARRAY_BUFFER,new Uint8Array(this._colors),this._colors.length,4,e.DYNAMIC_DRAW,t),this._colors=[]}if(this._metallicRoughness.length>0){const t=new Uint8Array(this._metallicRoughness);let i=!1;this._state.metallicRoughnessBuf=new re(e,e.ARRAY_BUFFER,t,this._metallicRoughness.length,2,e.STATIC_DRAW,i)}if(i>0){let t=!1,s=!0;this._state.flagsBuf=new re(e,e.ARRAY_BUFFER,new Uint8Array(i),i,4,e.DYNAMIC_DRAW,t),this._state.flags2Buf=new re(e,e.ARRAY_BUFFER,new Uint8Array(i),i,4,e.DYNAMIC_DRAW,s)}if(this.model.scene.entityOffsetsEnabled&&this._offsets.length>0){const t=!1;this._state.offsetsBuf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._offsets),this._offsets.length,3,e.DYNAMIC_DRAW,t),this._offsets=[]}if(this._modelMatrixCol0.length>0){const t=!1;this._state.modelMatrixCol0Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelMatrixCol0),this._modelMatrixCol0.length,4,e.STATIC_DRAW,t),this._state.modelMatrixCol1Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelMatrixCol1),this._modelMatrixCol1.length,4,e.STATIC_DRAW,t),this._state.modelMatrixCol2Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelMatrixCol2),this._modelMatrixCol2.length,4,e.STATIC_DRAW,t),this._modelMatrixCol0=[],this._modelMatrixCol1=[],this._modelMatrixCol2=[],this._state.normalsBuf&&(this._state.modelNormalMatrixCol0Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelNormalMatrixCol0),this._modelNormalMatrixCol0.length,4,e.STATIC_DRAW,t),this._state.modelNormalMatrixCol1Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelNormalMatrixCol1),this._modelNormalMatrixCol1.length,4,e.STATIC_DRAW,t),this._state.modelNormalMatrixCol2Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelNormalMatrixCol2),this._modelNormalMatrixCol2.length,4,e.STATIC_DRAW,t),this._modelNormalMatrixCol0=[],this._modelNormalMatrixCol1=[],this._modelNormalMatrixCol2=[])}if(this._pickColors.length>0){const t=!1;this._state.pickColorsBuf=new re(e,e.ARRAY_BUFFER,new Uint8Array(this._pickColors),this._pickColors.length,4,e.STATIC_DRAW,t),this._pickColors=[]}this._finalized=!0}initFlags(e,t,i){t&A&&(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++),t&R&&(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++),t&T&&(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++),t&F&&(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++),t&L&&(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++),t&N&&(this._numEdgesLayerPortions++,this.model.numEdgesLayerPortions++),t&D&&(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++),t&S&&(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++),i&&(this._numTransparentLayerPortions++,this.model.numTransparentLayerPortions++),this._setFlags(e,t,i),this._setFlags2(e,t)}setVisible(e,t,i){if(!this._finalized)throw\"Not finalized\";t&A?(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++):(this._numVisibleLayerPortions--,this.model.numVisibleLayerPortions--),this._setFlags(e,t,i)}setHighlighted(e,t,i){if(!this._finalized)throw\"Not finalized\";t&R?(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++):(this._numHighlightedLayerPortions--,this.model.numHighlightedLayerPortions--),this._setFlags(e,t,i)}setXRayed(e,t,i){if(!this._finalized)throw\"Not finalized\";t&T?(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++):(this._numXRayedLayerPortions--,this.model.numXRayedLayerPortions--),this._setFlags(e,t,i)}setSelected(e,t,i){if(!this._finalized)throw\"Not finalized\";t&F?(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++):(this._numSelectedLayerPortions--,this.model.numSelectedLayerPortions--),this._setFlags(e,t,i)}setEdges(e,t,i){if(!this._finalized)throw\"Not finalized\";t&N?(this._numEdgesLayerPortions++,this.model.numEdgesLayerPortions++):(this._numEdgesLayerPortions--,this.model.numEdgesLayerPortions--),this._setFlags(e,t,i)}setClippable(e,t){if(!this._finalized)throw\"Not finalized\";t&L?(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++):(this._numClippableLayerPortions--,this.model.numClippableLayerPortions--),this._setFlags2(e,t)}setCollidable(e,t){if(!this._finalized)throw\"Not finalized\"}setPickable(e,t,i){if(!this._finalized)throw\"Not finalized\";t&D?(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++):(this._numPickableLayerPortions--,this.model.numPickableLayerPortions--),this._setFlags2(e,t,i)}setCulled(e,t,i){if(!this._finalized)throw\"Not finalized\";t&S?(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++):(this._numCulledLayerPortions--,this.model.numCulledLayerPortions--),this._setFlags(e,t,i)}setColor(e,t){if(!this._finalized)throw\"Not finalized\";Mr[0]=t[0],Mr[1]=t[1],Mr[2]=t[2],Mr[3]=t[3],this._state.colorsBuf&&this._state.colorsBuf.setData(Mr,4*e,4)}setTransparent(e,t,i){i?(this._numTransparentLayerPortions++,this.model.numTransparentLayerPortions++):(this._numTransparentLayerPortions--,this.model.numTransparentLayerPortions--),this._setFlags(e,t,i)}_setFlags(e,t,i){if(!this._finalized)throw\"Not finalized\";const s=!!(t&A),r=!!(t&T),o=!!(t&R),a=!!(t&F),n=!!(t&S);let l,h;l=!s||n||r?wi:i?Ci:Ei,h=!s||n?wi:a?Si:o?Ai:r?Di:wi;let c=0;c=!s||n?wi:a?Ri:o?Ti:r?Fi:!!(t&N)?i?Bi:Li:wi;let u=s&&!n&&!!(t&D)?Ni:wi;Mr[0]=l,Mr[1]=h,Mr[2]=c,Mr[3]=u,this._state.flagsBuf&&this._state.flagsBuf.setData(Mr,4*e,4)}_setFlags2(e,t){if(!this._finalized)throw\"Not finalized\";const i=t&L?255:0;Mr[0]=i,this._state.flags2Buf&&this._state.flags2Buf.setData(Mr,4*e,4)}setOffset(e,t){if(!this._finalized)throw\"Not finalized\";this.model.scene.entityOffsetsEnabled?(Ar[0]=t[0],Ar[1]=t[1],Ar[2]=t[2],this._state.offsetsBuf&&this._state.offsetsBuf.setData(Ar,3*e,3)):this.model.error(\"Entity#offset not enabled for this Viewer\")}drawColorOpaque(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&this._numTransparentLayerPortions!==this._numPortions&&this._numXRayedLayerPortions!==this._numPortions&&(this._updateBackfaceCull(e,t),t.withSAO&&this.model.saoEnabled?t.pbrEnabled&&this.model.pbrEnabled&&this._state.normalsBuf?this._instancingRenderers.colorQualityRendererWithSAO&&this._instancingRenderers.colorQualityRendererWithSAO.drawLayer(t,this,Ei):this._state.normalsBuf?this._instancingRenderers.colorRendererWithSAO&&this._instancingRenderers.colorRendererWithSAO.drawLayer(t,this,Ei):this._instancingRenderers.flatColorRendererWithSAO&&this._instancingRenderers.flatColorRendererWithSAO.drawLayer(t,this,Ei):t.pbrEnabled&&this.model.pbrEnabled&&this._state.normalsBuf?this._instancingRenderers.colorQualityRenderer&&this._instancingRenderers.colorQualityRenderer.drawLayer(t,this,Ei):this._state.normalsBuf?this._instancingRenderers.colorRenderer&&this._instancingRenderers.colorRenderer.drawLayer(t,this,Ei):this._instancingRenderers.flatColorRenderer&&this._instancingRenderers.flatColorRenderer.drawLayer(t,this,Ei))}_updateBackfaceCull(e,t){const i=this.model.backfaces||!this.solid||e.sectioned;if(t.backfaces!==i){const e=t.gl;i?e.disable(e.CULL_FACE):e.enable(e.CULL_FACE),t.backfaces=i}}drawColorTransparent(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numTransparentLayerPortions&&this._numXRayedLayerPortions!==this._numPortions&&(this._updateBackfaceCull(e,t),t.pbrEnabled&&this.model.pbrEnabled&&this._state.normalsBuf?this._instancingRenderers.colorQualityRenderer&&this._instancingRenderers.colorQualityRenderer.drawLayer(t,this,Ci):this._state.normalsBuf?this._instancingRenderers.colorRenderer&&this._instancingRenderers.colorRenderer.drawLayer(t,this,Ci):this._instancingRenderers.flatColorRenderer&&this._instancingRenderers.flatColorRenderer.drawLayer(t,this,Ci))}drawDepth(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&this._numTransparentLayerPortions!==this._numPortions&&this._numXRayedLayerPortions!==this._numPortions&&(this._updateBackfaceCull(e,t),this._instancingRenderers.depthRenderer&&this._instancingRenderers.depthRenderer.drawLayer(t,this,Ei))}drawNormals(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&this._numTransparentLayerPortions!==this._numPortions&&this._numXRayedLayerPortions!==this._numPortions&&(this._updateBackfaceCull(e,t),this._instancingRenderers.normalsRenderer&&this._instancingRenderers.normalsRenderer.drawLayer(t,this,Ei))}drawSilhouetteXRayed(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numXRayedLayerPortions&&(this._updateBackfaceCull(e,t),this._instancingRenderers.silhouetteRenderer&&this._instancingRenderers.silhouetteRenderer.drawLayer(t,this,Di))}drawSilhouetteHighlighted(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numHighlightedLayerPortions&&(this._updateBackfaceCull(e,t),this._instancingRenderers.silhouetteRenderer&&this._instancingRenderers.silhouetteRenderer.drawLayer(t,this,Ai))}drawSilhouetteSelected(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numSelectedLayerPortions&&(this._updateBackfaceCull(e,t),this._instancingRenderers.silhouetteRenderer&&this._instancingRenderers.silhouetteRenderer.drawLayer(t,this,Si))}drawEdgesColorOpaque(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numEdgesLayerPortions&&this._instancingRenderers.edgesColorRenderer&&this._instancingRenderers.edgesColorRenderer.drawLayer(t,this,Li)}drawEdgesColorTransparent(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numEdgesLayerPortions&&this._instancingRenderers.edgesColorRenderer&&this._instancingRenderers.edgesColorRenderer.drawLayer(t,this,Bi)}drawEdgesXRayed(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numXRayedLayerPortions&&this._instancingRenderers.edgesRenderer&&this._instancingRenderers.edgesRenderer.drawLayer(t,this,Fi)}drawEdgesHighlighted(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numHighlightedLayerPortions&&this._instancingRenderers.edgesRenderer&&this._instancingRenderers.edgesRenderer.drawLayer(t,this,Ti)}drawEdgesSelected(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numSelectedLayerPortions&&this._instancingRenderers.edgesRenderer&&this._instancingRenderers.edgesRenderer.drawLayer(t,this,Ri)}drawOcclusion(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&(this._updateBackfaceCull(e,t),this._instancingRenderers.occlusionRenderer&&this._instancingRenderers.occlusionRenderer.drawLayer(t,this,Ei))}drawShadow(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&(this._updateBackfaceCull(e,t),this._instancingRenderers.shadowRenderer&&this._instancingRenderers.shadowRenderer.drawLayer(t,this,Ei))}drawPickMesh(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&(this._updateBackfaceCull(e,t),this._instancingRenderers.pickMeshRenderer&&this._instancingRenderers.pickMeshRenderer.drawLayer(t,this,Ni))}drawPickDepths(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&(this._updateBackfaceCull(e,t),this._instancingRenderers.pickDepthRenderer&&this._instancingRenderers.pickDepthRenderer.drawLayer(t,this,Ni))}drawPickNormals(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&(this._updateBackfaceCull(e,t),this._instancingRenderers.pickNormalsRenderer&&this._instancingRenderers.pickNormalsRenderer.drawLayer(t,this,Ni))}precisionRayPickSurface(e,t,i,s,r){if(!this.model.scene.pickSurfacePrecisionEnabled)return!1;const o=this._state,a=this._portions[e];if(!a)return this.model.error(\"portion not found: \"+e),!1;a.inverseMatrix||(a.inverseMatrix=u.inverseMat4(a.matrix,u.mat4())),r&&!a.normalMatrix&&(a.normalMatrix=u.transposeMat4(a.inverseMatrix,u.mat4()));const n=o.quantizedPositions,l=o.indices,h=o.rtcCenter,c=a.offset,d=Sr,p=Dr;d.set(h?u.subVec3(t,h,Lr):t),p.set(i),c&&u.subVec3(d,c),u.transformRay(this.model.worldNormalMatrix,d,p,d,p),u.transformRay(a.inverseMatrix,d,p,d,p);const f=Br,_=Tr,g=Rr;let m=!1,v=0;const b=Fr;for(let e=0,i=l.length;ev)&&(v=e,s.set(b),r&&u.triangleNormal(f,_,g,r),m=!0)}}return m&&r&&(u.transformVec3(a.normalMatrix,r,r),u.transformVec3(this.model.worldNormalMatrix,r,r),u.normalizeVec3(r)),m}destroy(){const e=this._state;e.positionsBuf&&(e.positionsBuf.destroy(),e.positionsBuf=null),e.normalsBuf&&(e.normalsBuf.destroy(),e.normalsBuf=null),e.colorsBuf&&(e.colorsBuf.destroy(),e.colorsBuf=null),e.metallicRoughnessBuf&&(e.metallicRoughnessBuf.destroy(),e.metallicRoughnessBuf=null),e.flagsBuf&&(e.flagsBuf.destroy(),e.flagsBuf=null),e.flags2Buf&&(e.flags2Buf.destroy(),e.flags2Buf=null),e.offsetsBuf&&(e.offsetsBuf.destroy(),e.offsetsBuf=null),e.modelMatrixCol0Buf&&(e.modelMatrixCol0Buf.destroy(),e.modelMatrixCol0Buf=null),e.modelMatrixCol1Buf&&(e.modelMatrixCol1Buf.destroy(),e.modelMatrixCol1Buf=null),e.modelMatrixCol2Buf&&(e.modelMatrixCol2Buf.destroy(),e.modelMatrixCol2Buf=null),e.modelNormalMatrixCol0Buf&&(e.modelNormalMatrixCol0Buf.destroy(),e.modelNormalMatrixCol0Buf=null),e.modelNormalMatrixCol1Buf&&(e.modelNormalMatrixCol1Buf.destroy(),e.modelNormalMatrixCol1Buf=null),e.modelNormalMatrixCol2Buf&&(e.modelNormalMatrixCol2Buf.destroy(),e.modelNormalMatrixCol2Buf=null),e.indicesBuf&&(e.indicesBuf.destroy(),e.indicessBuf=null),e.edgeIndicesBuf&&(e.edgeIndicesBuf.destroy(),e.edgeIndicessBuf=null),e.pickColorsBuf&&(e.pickColorsBuf.destroy(),e.pickColorsBuf=null),e.destroy()}}const Ir=u.vec3();class Or{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=this._scene,r=s.camera,o=t.model,a=s.canvas.gl,n=t._state,l=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,l?j(r.viewMatrix,l):r.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,o.worldMatrix),a.lineWidth(s.linesMaterial.lineWidth);const h=s._sectionPlanesState.sectionPlanes.length;if(h>0){const e=s._sectionPlanesState.sectionPlanes,i=t.layerIndex*h,r=o.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Lines batching color vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),i.push(\"attribute vec4 color;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vColor;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.x) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\"worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\"))),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Lines batching color fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return s.push(\" gl_FragColor = vColor;\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const kr=new Float32Array([1,1,1]),Vr=u.vec3();class jr{constructor(e,t){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=t._state.rtcCenter;if(!this._program&&(this._allocate(),this.errors))return;if(e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),i===Di){const e=r.xrayMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Ai){const e=r.highlightMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Si){const e=r.selectedMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else a.uniform4fv(this._uColor,kr);const h=l?j(o.viewMatrix,l):o.viewMatrix;a.uniformMatrix4fv(this._uViewMatrix,!1,h),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.lineWidth(r.linesMaterial.lineWidth);const c=r._sectionPlanesState.sectionPlanes.length;if(c>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Lines batching silhouette vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),i.push(\"uniform vec4 color;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\")),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"void main(void) {\"),i.push(\"if (int(flags.y) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\"))),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Lines batching silhouette fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"gl_FragColor = color;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}class zr{constructor(e){this._scene=e}_compile(){this._colorRenderer&&!this._colorRenderer.getValid()&&(this._colorRenderer.destroy(),this._colorRenderer=null),this._silhouetteRenderer&&!this._silhouetteRenderer.getValid()&&(this._silhouetteRenderer.destroy(),this._silhouetteRenderer=null)}get colorRenderer(){return this._colorRenderer||(this._colorRenderer=new Or(this._scene,!1)),this._colorRenderer}get silhouetteRenderer(){return this._silhouetteRenderer||(this._silhouetteRenderer=new jr(this._scene)),this._silhouetteRenderer}_destroy(){this._colorRenderer&&this._colorRenderer.destroy(),this._silhouetteRenderer&&this._silhouetteRenderer.destroy()}}const Ur={};const Gr=G.SUPPORTED_EXTENSIONS.OES_element_index_uint;class Xr{constructor(e=5e6){Gr?e>5e6&&(e=5e6):e>65530&&(e=65530),this.maxVerts=e,this.maxIndices=3*e,this.positions=[],this.colors=[],this.flags=[],this.flags2=[],this.offsets=[],this.indices=[]}}const Hr=u.vec4([0,0,0,1]),Wr=u.vec4([0,0,0,1]),Yr=u.vec4([0,0,0,1]),qr=u.OBB3();class Kr{constructor(e,t){this.layerIndex=t.layerIndex,this._batchingRenderers=function(e){const t=e.id;let i=Ur[t];return i||(i=new zr(e),Ur[t]=i,i._compile(),e.on(\"compile\",(()=>{i._compile()})),e.on(\"destroyed\",(()=>{delete Ur[t],i._destroy()}))),i}(e.scene),this.model=e,this._buffer=new Xr(t.maxGeometryBatchSize),this._scratchMemory=t.scratchMemory,this._state=new ye({positionsBuf:null,offsetsBuf:null,colorsBuf:null,flagsBuf:null,flags2Buf:null,indicesBuf:null,positionsDecodeMatrix:u.mat4(),rtcCenter:null}),this._numPortions=0,this._numVisibleLayerPortions=0,this._numTransparentLayerPortions=0,this._numXRayedLayerPortions=0,this._numSelectedLayerPortions=0,this._numHighlightedLayerPortions=0,this._numClippableLayerPortions=0,this._numEdgesLayerPortions=0,this._numPickableLayerPortions=0,this._numCulledLayerPortions=0,this._modelAABB=u.collapseAABB3(),this._portions=[],this._finalized=!1,this._positionsDecodeMatrix=t.positionsDecodeMatrix,this._preCompressed=!!this._positionsDecodeMatrix,t.rtcCenter&&(this._state.rtcCenter=u.vec3(t.rtcCenter)),this.aabb=u.collapseAABB3()}canCreatePortion(e,t){if(this._finalized)throw\"Already finalized\";return this._buffer.positions.length+e<3*this._buffer.maxVerts&&this._buffer.indices.length+t0)if(this._preCompressed){e.positionsDecodeMatrix=this._positionsDecodeMatrix;const s=new Uint16Array(i.positions);e.positionsBuf=new re(t,t.ARRAY_BUFFER,s,i.positions.length,3,t.STATIC_DRAW)}else{const s=xs(new Float32Array(i.positions),this._modelAABB,e.positionsDecodeMatrix);e.positionsBuf=new re(t,t.ARRAY_BUFFER,s,i.positions.length,3,t.STATIC_DRAW)}if(i.colors.length>0){const s=new Uint8Array(i.colors);let r=!1;e.colorsBuf=new re(t,t.ARRAY_BUFFER,s,i.colors.length,4,t.DYNAMIC_DRAW,r)}if(i.colors.length>0){const s=i.colors.length,r=new Uint8Array(s),o=new Uint8Array(s);let a=!1,n=!0;e.flagsBuf=new re(t,t.ARRAY_BUFFER,r,r.length,4,t.DYNAMIC_DRAW,a),e.flags2Buf=new re(t,t.ARRAY_BUFFER,o,o.length,4,t.DYNAMIC_DRAW,n)}if(this.model.scene.entityOffsetsEnabled&&i.offsets.length>0){const s=new Float32Array(i.offsets);e.offsetsBuf=new re(t,t.ARRAY_BUFFER,s,i.offsets.length,3,t.DYNAMIC_DRAW)}const s=G.SUPPORTED_EXTENSIONS.OES_element_index_uint;if(i.indices.length>0){const r=s?new Uint32Array(i.indices):new Uint16Array(i.indices);e.indicesBuf=new re(t,t.ELEMENT_ARRAY_BUFFER,r,i.indices.length,1,t.STATIC_DRAW)}this._buffer=null,this._finalized=!0}initFlags(e,t,i){t&A&&(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++),t&R&&(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++),t&T&&(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++),t&F&&(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++),t&L&&(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++),t&N&&(this._numEdgesLayerPortions++,this.model.numEdgesLayerPortions++),t&D&&(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++),t&S&&(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++),i&&(this._numTransparentLayerPortions++,this.model.numTransparentLayerPortions++),this._setFlags(e,t,i),this._setFlags2(e,t)}setVisible(e,t,i){if(!this._finalized)throw\"Not finalized\";t&A?(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++):(this._numVisibleLayerPortions--,this.model.numVisibleLayerPortions--),this._setFlags(e,t,i)}setHighlighted(e,t,i){if(!this._finalized)throw\"Not finalized\";t&R?(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++):(this._numHighlightedLayerPortions--,this.model.numHighlightedLayerPortions--),this._setFlags(e,t,i)}setXRayed(e,t,i){if(!this._finalized)throw\"Not finalized\";t&T?(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++):(this._numXRayedLayerPortions--,this.model.numXRayedLayerPortions--),this._setFlags(e,t,i)}setSelected(e,t,i){if(!this._finalized)throw\"Not finalized\";t&F?(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++):(this._numSelectedLayerPortions--,this.model.numSelectedLayerPortions--),this._setFlags(e,t,i)}setEdges(e,t,i){if(!this._finalized)throw\"Not finalized\";t&N?(this._numEdgesLayerPortions++,this.model.numEdgesLayerPortions++):(this._numEdgesLayerPortions--,this.model.numEdgesLayerPortions--),this._setFlags(e,t,i)}setClippable(e,t){if(!this._finalized)throw\"Not finalized\";t&L?(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++):(this._numClippableLayerPortions--,this.model.numClippableLayerPortions--),this._setFlags2(e,t)}setCulled(e,t,i){if(!this._finalized)throw\"Not finalized\";t&S?(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++):(this._numCulledLayerPortions--,this.model.numCulledLayerPortions--),this._setFlags(e,t,i)}setCollidable(e,t){if(!this._finalized)throw\"Not finalized\"}setPickable(e,t,i){if(!this._finalized)throw\"Not finalized\";t&D?(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++):(this._numPickableLayerPortions--,this.model.numPickableLayerPortions--),this._setFlags(e,t,i)}setColor(e,t){if(!this._finalized)throw\"Not finalized\";const i=2*e,s=4*this._portions[i],r=4*this._portions[i+1],o=this._scratchMemory.getUInt8Array(r),a=t[0],n=t[1],l=t[2],h=t[3];for(let e=0;e0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Lines instancing color vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),i.push(\"attribute vec4 color;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\")),i.push(\"uniform vec4 lightAmbient;\"),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"varying vec4 vColor;\"),i.push(\"void main(void) {\"),i.push(\"if (int(flags.x) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),i.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\"))),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState;let i,s;const r=t.sectionPlanes.length>0,o=[];if(o.push(\"// Lines instancing color fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"#extension GL_EXT_frag_depth : enable\"),o.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),o.push(\"precision highp float;\"),o.push(\"precision highp int;\"),o.push(\"#else\"),o.push(\"precision mediump float;\"),o.push(\"precision mediump int;\"),o.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(o.push(\"uniform float logDepthBufFC;\"),o.push(\"varying float vFragDepth;\")),r)for(o.push(\"varying vec4 vWorldPosition;\"),o.push(\"varying vec4 vFlags2;\"),i=0,s=t.sectionPlanes.length;i 0.0);\"),o.push(\" if (clippable) {\"),o.push(\" float dist = 0.0;\"),i=0,s=t.sectionPlanes.length;i 0.0) { discard; }\"),o.push(\"}\")}return this._withSAO?(o.push(\" float viewportWidth = uSAOParams[0];\"),o.push(\" float viewportHeight = uSAOParams[1];\"),o.push(\" float blendCutoff = uSAOParams[2];\"),o.push(\" float blendFactor = uSAOParams[3];\"),o.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\"),o.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBAToDepth(texture2D(uOcclusionTexture, uv))) * blendFactor;\"),o.push(\" gl_FragColor = vec4(vColor.rgb * ambient, vColor.a);\")):o.push(\" gl_FragColor = vColor;\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),o.push(\"}\"),o}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const $r=u.vec3();class Jr{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter;if(!this._program&&(this._allocate(t.model.scene),this.errors))return;if(e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),i===Di){const e=r.xrayMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Ai){const e=r.highlightMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Si){const e=r.selectedMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else a.uniform4fv(this._uColor,u.vec3([1,1,1]));a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.lineWidth(r.linesMaterial.lineWidth);const c=r._sectionPlanesState.sectionPlanes.length;if(c>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,o=s.renderFlags;for(let t=0;t0,i=[];return i.push(\"// Lines instancing silhouette vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"#extension GL_EXT_frag_depth : enable\"),i.push(\"uniform int renderPass;\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform mat4 worldMatrix;\"),i.push(\"uniform mat4 viewMatrix;\"),i.push(\"uniform mat4 projMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),e.logarithmicDepthBufferEnabled&&(i.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&i.push(\"varying float vFragDepth;\")),i.push(\"uniform vec4 color;\"),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"void main(void) {\"),i.push(\"if (int(flags.y) != renderPass) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?i.push(\"vFragDepth = 1.0 + clipPos.w;\"):(i.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),i.push(\"clipPos.z *= clipPos.w;\"))),i.push(\"gl_Position = clipPos;\"),i.push(\"}\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Lines instancing silhouette fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"gl_FragColor = color;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}class eo{constructor(e){this._scene=e}_compile(){this._colorRenderer&&!this._colorRenderer.getValid()&&(this._colorRenderer.destroy(),this._colorRenderer=null),this._silhouetteRenderer&&!this._silhouetteRenderer.getValid()&&(this._silhouetteRenderer.destroy(),this._silhouetteRenderer=null)}get colorRenderer(){return this._colorRenderer||(this._colorRenderer=new Qr(this._scene)),this._colorRenderer}get silhouetteRenderer(){return this._silhouetteRenderer||(this._silhouetteRenderer=new Jr(this._scene)),this._silhouetteRenderer}_destroy(){this._colorRenderer&&this._colorRenderer.destroy(),this._silhouetteRenderer&&this._silhouetteRenderer.destroy()}}const to={};const io=G.SUPPORTED_EXTENSIONS.OES_element_index_uint,so=new Uint8Array(4),ro=u.vec4([0,0,0,1]),oo=u.vec4([0,0,0,1]),ao=u.vec4([0,0,0,1]),no=new Float32Array(3);class lo{constructor(e,t){this.sortId=\"LinesInstancingLayer\",this.layerIndex=t.layerIndex,this._linesInstancingRenderers=function(e){const t=e.id;let i=to[t];return i||(i=new eo(e),to[t]=i,i._compile(),e.on(\"compile\",(()=>{i._compile()})),e.on(\"destroyed\",(()=>{delete to[t],i._destroy()}))),i}(e.scene),this.model=e,this._aabb=u.collapseAABB3();const i=e.scene.canvas.gl,s={positionsDecodeMatrix:u.mat4(),numInstances:0,obb:u.OBB3(),rtcCenter:null},r=!!t.positionsDecodeMatrix;if(t.positions)if(r){let e=!1;s.positionsBuf=new re(i,i.ARRAY_BUFFER,t.positions,t.positions.length,3,i.STATIC_DRAW,e),s.positionsDecodeMatrix.set(t.positionsDecodeMatrix);let r=u.collapseAABB3();u.expandAABB3Points3(r,t.positions),qe.decompressAABB(r,s.positionsDecodeMatrix),u.AABB3ToOBB3(r,s.obb)}else{let e=t.positions.length,r=u.collapseAABB3();u.expandAABB3Points3(r,t.positions),u.AABB3ToOBB3(r,s.obb);const o=xs(t.positions,r,s.positionsDecodeMatrix);let a=!1;s.positionsBuf=new re(i,i.ARRAY_BUFFER,o,e,3,i.STATIC_DRAW,a)}t.indices&&(s.indicesBuf=new re(i,i.ELEMENT_ARRAY_BUFFER,io?new Uint32Array(t.indices):new Uint16Array(t.indices),t.indices.length,1,i.STATIC_DRAW)),this._state=new ye(s),this._numPortions=0,this._numVisibleLayerPortions=0,this._numTransparentLayerPortions=0,this._numXRayedLayerPortions=0,this._numHighlightedLayerPortions=0,this._numSelectedLayerPortions=0,this._numClippableLayerPortions=0,this._numEdgesLayerPortions=0,this._numPickableLayerPortions=0,this._numCulledLayerPortions=0,this.numIndices=t.indices?t.indices.length/3:0,this._colors=[],this._offsets=[],this._modelMatrixCol0=[],this._modelMatrixCol1=[],this._modelMatrixCol2=[],this._portions=[],t.rtcCenter&&(this._state.rtcCenter=u.vec3(t.rtcCenter)),this._finalized=!1,this.aabb=u.collapseAABB3()}createPortion(e){const t=e.color,i=e.opacity,s=e.meshMatrix,r=e.worldMatrix,o=e.aabb;if(this._finalized)throw\"Already finalized\";const a=t[0],n=t[1],l=t[2];t[3],this._colors.push(a),this._colors.push(n),this._colors.push(l),this._colors.push(i),this.model.scene.entityOffsetsEnabled&&(this._offsets.push(0),this._offsets.push(0),this._offsets.push(0)),this._modelMatrixCol0.push(s[0]),this._modelMatrixCol0.push(s[4]),this._modelMatrixCol0.push(s[8]),this._modelMatrixCol0.push(s[12]),this._modelMatrixCol1.push(s[1]),this._modelMatrixCol1.push(s[5]),this._modelMatrixCol1.push(s[9]),this._modelMatrixCol1.push(s[13]),this._modelMatrixCol2.push(s[2]),this._modelMatrixCol2.push(s[6]),this._modelMatrixCol2.push(s[10]),this._modelMatrixCol2.push(s[14]),u.collapseAABB3(o);const h=this._state.obb,c=h.length;for(let e=0;e0){let t=!1;this._state.colorsBuf=new re(e,e.ARRAY_BUFFER,new Uint8Array(this._colors),this._colors.length,4,e.DYNAMIC_DRAW,t),this._colors=[]}if(i>0){let t=!1,s=!0;this._state.flagsBuf=new re(e,e.ARRAY_BUFFER,new Uint8Array(i),i,4,e.DYNAMIC_DRAW,t),this._state.flags2Buf=new re(e,e.ARRAY_BUFFER,new Uint8Array(i),i,4,e.DYNAMIC_DRAW,s)}if(this.model.scene.entityOffsetsEnabled&&this._offsets.length>0){const t=!1;this._state.offsetsBuf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._offsets),this._offsets.length,3,e.DYNAMIC_DRAW,t),this._offsets=[]}if(this._modelMatrixCol0.length>0){const t=!1;this._state.modelMatrixCol0Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelMatrixCol0),this._modelMatrixCol0.length,4,e.STATIC_DRAW,t),this._state.modelMatrixCol1Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelMatrixCol1),this._modelMatrixCol1.length,4,e.STATIC_DRAW,t),this._state.modelMatrixCol2Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelMatrixCol2),this._modelMatrixCol2.length,4,e.STATIC_DRAW,t),this._modelMatrixCol0=[],this._modelMatrixCol1=[],this._modelMatrixCol2=[]}this._finalized=!0}initFlags(e,t,i){t&A&&(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++),t&R&&(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++),t&T&&(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++),t&F&&(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++),t&L&&(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++),t&N&&(this._numEdgesLayerPortions++,this.model.numEdgesLayerPortions++),t&D&&(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++),t&S&&(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++),i&&(this._numTransparentLayerPortions++,this.model.numTransparentLayerPortions++),this._setFlags(e,t,i),this._setFlags2(e,t)}setVisible(e,t,i){if(!this._finalized)throw\"Not finalized\";t&A?(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++):(this._numVisibleLayerPortions--,this.model.numVisibleLayerPortions--),this._setFlags(e,t,i)}setHighlighted(e,t,i){if(!this._finalized)throw\"Not finalized\";t&R?(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++):(this._numHighlightedLayerPortions--,this.model.numHighlightedLayerPortions--),this._setFlags(e,t,i)}setXRayed(e,t,i){if(!this._finalized)throw\"Not finalized\";t&T?(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++):(this._numXRayedLayerPortions--,this.model.numXRayedLayerPortions--),this._setFlags(e,t,i)}setSelected(e,t,i){if(!this._finalized)throw\"Not finalized\";t&F?(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++):(this._numSelectedLayerPortions--,this.model.numSelectedLayerPortions--),this._setFlags(e,t,i)}setEdges(e,t,i){if(!this._finalized)throw\"Not finalized\";t&N?(this._numEdgesLayerPortions++,this.model.numEdgesLayerPortions++):(this._numEdgesLayerPortions--,this.model.numEdgesLayerPortions--),this._setFlags(e,t,i)}setClippable(e,t){if(!this._finalized)throw\"Not finalized\";t&L?(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++):(this._numClippableLayerPortions--,this.model.numClippableLayerPortions--),this._setFlags2(e,t)}setCollidable(e,t){if(!this._finalized)throw\"Not finalized\"}setPickable(e,t,i){if(!this._finalized)throw\"Not finalized\";t&D?(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++):(this._numPickableLayerPortions--,this.model.numPickableLayerPortions--),this._setFlags2(e,t,i)}setCulled(e,t,i){if(!this._finalized)throw\"Not finalized\";t&S?(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++):(this._numCulledLayerPortions--,this.model.numCulledLayerPortions--),this._setFlags(e,t,i)}setColor(e,t){if(!this._finalized)throw\"Not finalized\";so[0]=t[0],so[1]=t[1],so[2]=t[2],so[3]=t[3],this._state.colorsBuf.setData(so,4*e,4)}setTransparent(e,t,i){i?(this._numTransparentLayerPortions++,this.model.numTransparentLayerPortions++):(this._numTransparentLayerPortions--,this.model.numTransparentLayerPortions--),this._setFlags(e,t,i)}_setFlags(e,t,i){if(!this._finalized)throw\"Not finalized\";const s=!!(t&A),r=!!(t&T),o=!!(t&R),a=!!(t&F),n=!!(t&S);let l,h;l=!s||n||r?wi:i?Ci:Ei,h=!s||n?wi:a?Si:o?Ai:r?Di:wi;let c=0;c=!s||n?wi:a?Ri:o?Ti:r?Fi:!!(t&N)?i?Bi:Li:wi;let u=s&&!n&&!!(t&D)?Ni:wi;so[0]=l,so[1]=h,so[2]=c,so[3]=u,this._state.flagsBuf.setData(so,4*e,4)}_setFlags2(e,t){if(!this._finalized)throw\"Not finalized\";const i=t&L?255:0;so[0]=i,this._state.flags2Buf.setData(so,4*e,4)}setOffset(e,t){if(!this._finalized)throw\"Not finalized\";this.model.scene.entityOffsetsEnabled?(no[0]=t[0],no[1]=t[1],no[2]=t[2],this._state.offsetsBuf.setData(no,3*e,3)):this.model.error(\"Entity#offset not enabled for this Viewer\")}drawColorOpaque(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&this._numTransparentLayerPortions!==this._numPortions&&this._numXRayedLayerPortions!==this._numPortions&&this._linesInstancingRenderers.colorRenderer&&this._linesInstancingRenderers.colorRenderer.drawLayer(t,this,Ei)}drawColorTransparent(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numTransparentLayerPortions&&this._numXRayedLayerPortions!==this._numPortions&&this._linesInstancingRenderers.colorRenderer&&this._linesInstancingRenderers.colorRenderer.drawLayer(t,this,Ci)}drawDepth(e,t){}drawNormals(e,t){}drawSilhouetteXRayed(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numXRayedLayerPortions&&this._linesInstancingRenderers.silhouetteRenderer&&this._linesInstancingRenderers.silhouetteRenderer.drawLayer(t,this,Di)}drawSilhouetteHighlighted(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numHighlightedLayerPortions&&this._linesInstancingRenderers.silhouetteRenderer&&this._linesInstancingRenderers.silhouetteRenderer.drawLayer(t,this,Ai)}drawSilhouetteSelected(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numSelectedLayerPortions&&this._linesInstancingRenderers.silhouetteRenderer&&this._linesInstancingRenderers.silhouetteRenderer.drawLayer(t,this,Si)}drawEdgesColorOpaque(e,t){}drawEdgesColorTransparent(e,t){}drawEdgesXRayed(e,t){}drawEdgesHighlighted(e,t){}drawEdgesSelected(e,t){}drawOcclusion(e,t){}drawShadow(e,t){}drawPickMesh(e,t){}drawPickDepths(e,t){}drawPickNormals(e,t){}destroy(){const e=this._state;e.positionsBuf&&(e.positionsBuf.destroy(),e.positionsBuf=null),e.colorsBuf&&(e.colorsBuf.destroy(),e.colorsBuf=null),e.flagsBuf&&(e.flagsBuf.destroy(),e.flagsBuf=null),e.flags2Buf&&(e.flags2Buf.destroy(),e.flags2Buf=null),e.offsetsBuf&&(e.offsetsBuf.destroy(),e.offsetsBuf=null),e.modelMatrixCol0Buf&&(e.modelMatrixCol0Buf.destroy(),e.modelMatrixCol0Buf=null),e.modelMatrixCol1Buf&&(e.modelMatrixCol1Buf.destroy(),e.modelMatrixCol1Buf=null),e.modelMatrixCol2Buf&&(e.modelMatrixCol2Buf.destroy(),e.modelMatrixCol2Buf=null),e.indicesBuf&&(e.indicesBuf.destroy(),e.indicessBuf=null),e.destroy()}}const ho=u.vec3();class co{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()+this._scene.pointsMaterial.hash}drawLayer(e,t,i){const s=this._scene,r=s.camera,o=t.model,a=s.canvas.gl,n=t._state,l=t._state.rtcCenter,h=s.pointsMaterial;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,l?j(r.viewMatrix,l):r.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,o.worldMatrix);const c=s._sectionPlanesState.sectionPlanes.length;if(c>0){const e=s._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,r=o.renderFlags;for(let t=0;t0,i=e.pointsMaterial,s=[];return s.push(\"// Points batching color vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"uniform int renderPass;\"),s.push(\"attribute vec3 position;\"),s.push(\"attribute vec4 color;\"),s.push(\"attribute vec4 flags;\"),s.push(\"attribute vec4 flags2;\"),e.entityOffsetsEnabled&&s.push(\"attribute vec3 offset;\"),s.push(\"uniform mat4 worldMatrix;\"),s.push(\"uniform mat4 viewMatrix;\"),s.push(\"uniform mat4 projMatrix;\"),s.push(\"uniform mat4 positionsDecodeMatrix;\"),s.push(\"uniform float pointSize;\"),i.perspectivePoints&&s.push(\"uniform float nearPlaneHeight;\"),i.filterIntensity&&s.push(\"uniform vec2 intensityRange;\"),e.logarithmicDepthBufferEnabled&&(s.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"varying float vFragDepth;\")),t&&(s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\")),s.push(\"varying vec4 vColor;\"),s.push(\"void main(void) {\"),s.push(\"if (int(flags.x) != renderPass) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\"} else {\"),i.filterIntensity&&(s.push(\"float intensity = float(color.a) / 255.0;\"),s.push(\"if (intensity < intensityRange[0] || intensity > intensityRange[1]) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\"} else {\")),s.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&s.push(\"worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),s.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, 1.0);\"),t&&(s.push(\"vWorldPosition = worldPosition;\"),s.push(\"vFlags2 = flags2;\")),s.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?s.push(\"vFragDepth = 1.0 + clipPos.w;\"):(s.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),s.push(\"clipPos.z *= clipPos.w;\"))),s.push(\"gl_Position = clipPos;\"),i.perspectivePoints?(s.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\"),s.push(\"gl_PointSize = max(gl_PointSize, \"+Math.floor(i.minPerspectivePointSize)+\".0);\"),s.push(\"gl_PointSize = min(gl_PointSize, \"+Math.floor(i.maxPerspectivePointSize)+\".0);\")):s.push(\"gl_PointSize = pointSize;\"),s.push(\"}\"),i.filterIntensity&&s.push(\"}\"),s.push(\"}\"),s}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Points batching color fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 1.0) {\"),s.push(\" discard;\"),s.push(\" }\")),i){s.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return s.push(\" gl_FragColor = vColor;\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const uo=new Float32Array([1,1,1]),po=u.vec3();class fo{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()+this._scene.pointsMaterial.hash}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=t._state.rtcCenter,h=r.pointsMaterial._state;if(!this._program&&(this._allocate(),this.errors))return;if(e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),i===Di){const e=r.xrayMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Ai){const e=r.highlightMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Si){const e=r.selectedMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else a.uniform4fv(this._uColor,uo);const c=l?j(o.viewMatrix,l):o.viewMatrix;a.uniformMatrix4fv(this._uViewMatrix,!1,c),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const u=r._sectionPlanesState.sectionPlanes.length;if(u>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*u,o=s.renderFlags;for(let t=0;t0,i=e.pointsMaterial._state,s=[];return s.push(\"// Points batching silhouette vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"uniform int renderPass;\"),s.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&s.push(\"attribute vec3 offset;\"),s.push(\"attribute vec4 flags;\"),s.push(\"attribute vec4 flags2;\"),s.push(\"uniform mat4 worldMatrix;\"),s.push(\"uniform mat4 viewMatrix;\"),s.push(\"uniform mat4 projMatrix;\"),s.push(\"uniform mat4 positionsDecodeMatrix;\"),s.push(\"uniform vec4 color;\"),s.push(\"uniform float pointSize;\"),i.perspectivePoints&&s.push(\"uniform float nearPlaneHeight;\"),e.logarithmicDepthBufferEnabled&&(s.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"varying float vFragDepth;\")),t&&(s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\")),s.push(\"void main(void) {\"),s.push(\"if (int(flags.y) != renderPass) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\"} else {\"),s.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&s.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(s.push(\"vWorldPosition = worldPosition;\"),s.push(\"vFlags2 = flags2;\")),s.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?s.push(\"vFragDepth = 1.0 + clipPos.w;\"):(s.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),s.push(\"clipPos.z *= clipPos.w;\"))),s.push(\"gl_Position = clipPos;\"),i.perspectivePoints?(s.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\"),s.push(\"gl_PointSize = max(gl_PointSize, \"+Math.floor(i.minPerspectivePointSize)+\".0);\"),s.push(\"gl_PointSize = min(gl_PointSize, \"+Math.floor(i.maxPerspectivePointSize)+\".0);\")):s.push(\"gl_PointSize = pointSize;\"),s.push(\"}\"),s.push(\"}\"),s}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState;let i,s;const r=t.sectionPlanes.length>0,o=[];if(o.push(\"// Points batching silhouette vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"#extension GL_EXT_frag_depth : enable\"),o.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),o.push(\"precision highp float;\"),o.push(\"precision highp int;\"),o.push(\"#else\"),o.push(\"precision mediump float;\"),o.push(\"precision mediump int;\"),o.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(o.push(\"uniform float logDepthBufFC;\"),o.push(\"varying float vFragDepth;\")),r)for(o.push(\"varying vec4 vWorldPosition;\"),o.push(\"varying vec4 vFlags2;\"),i=0,s=t.sectionPlanes.length;i 1.0) {\"),o.push(\" discard;\"),o.push(\" }\")),r){for(o.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),o.push(\" if (clippable) {\"),o.push(\" float dist = 0.0;\"),i=0,s=t.sectionPlanes.length;i 0.0) { discard; }\"),o.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),o.push(\"gl_FragColor = color;\"),o.push(\"}\"),o}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const _o=u.vec3();class go{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()+this._scene.pointsMaterial.hash}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=t._state.rtcCenter,h=r.pointsMaterial._state;this._program||this._allocate(t),e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const c=e.pickViewMatrix||o.viewMatrix,u=l?j(c,l):c;if(a.uniformMatrix4fv(this._uProjMatrix,!1,e.pickProjMatrix),a.uniformMatrix4fv(this._uViewMatrix,!1,u),r.logarithmicDepthBufferEnabled){const e=2/(Math.log(o.project.far+1)/Math.LN2);a.uniform1f(this._uLogDepthBufFC,e)}const d=r._sectionPlanesState.sectionPlanes.length;if(d>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*d,o=s.renderFlags;for(let t=0;t0,i=e.pointsMaterial._state,s=[];return s.push(\"// Points batching pick mesh vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"uniform int renderPass;\"),s.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&s.push(\"attribute vec3 offset;\"),s.push(\"attribute vec4 flags;\"),s.push(\"attribute vec4 flags2;\"),s.push(\"attribute vec4 pickColor;\"),s.push(\"uniform bool pickInvisible;\"),s.push(\"uniform mat4 worldMatrix;\"),s.push(\"uniform mat4 viewMatrix;\"),s.push(\"uniform mat4 projMatrix;\"),s.push(\"uniform mat4 positionsDecodeMatrix;\"),s.push(\"uniform float pointSize;\"),i.perspectivePoints&&s.push(\"uniform float nearPlaneHeight;\"),e.logarithmicDepthBufferEnabled&&(s.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"varying float vFragDepth;\")),t&&(s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\")),s.push(\"varying vec4 vPickColor;\"),s.push(\"void main(void) {\"),s.push(\"if (int(flags.w) != renderPass) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\" } else {\"),s.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&s.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),s.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\"),t&&(s.push(\" vWorldPosition = worldPosition;\"),s.push(\" vFlags2 = flags2;\")),s.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?s.push(\"vFragDepth = 1.0 + clipPos.w;\"):(s.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),s.push(\"clipPos.z *= clipPos.w;\"))),s.push(\"gl_Position = clipPos;\"),i.perspectivePoints?(s.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\"),s.push(\"gl_PointSize = max(gl_PointSize, \"+Math.floor(i.minPerspectivePointSize)+\".0);\"),s.push(\"gl_PointSize = min(gl_PointSize, \"+Math.floor(i.maxPerspectivePointSize)+\".0);\")):s.push(\"gl_PointSize = pointSize;\"),s.push(\"gl_PointSize += 10.0;\"),s.push(\" }\"),s.push(\"}\"),s}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Points batching pick mesh vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(var r=0;r 1.0) {\"),s.push(\" discard;\"),s.push(\" }\")),i){s.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(r=0;r 0.0) { discard; }\"),s.push(\" }\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" gl_FragColor = vPickColor; \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const mo=u.vec3();class vo{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()+this._scene.pointsMaterial.hash}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=t._state.rtcCenter,h=r.pointsMaterial._state;this._program||this._allocate(),e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniform1i(this._uPickInvisible,e.pickInvisible);const c=e.pickViewMatrix||o.viewMatrix,u=l?j(c,l):c;if(a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uViewMatrix,!1,u),a.uniformMatrix4fv(this._uProjMatrix,!1,e.pickProjMatrix),a.uniform1f(this._uPickZNear,e.pickZNear),a.uniform1f(this._uPickZFar,e.pickZFar),r.logarithmicDepthBufferEnabled){const t=2/(Math.log(e.pickZFar+1)/Math.LN2);a.uniform1f(this._uLogDepthBufFC,t)}const d=r._sectionPlanesState.sectionPlanes.length;if(d>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*d,o=s.renderFlags;for(let t=0;t0,i=e.pointsMaterial._state,s=[];return s.push(\"// Points batched pick depth vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"uniform int renderPass;\"),s.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&s.push(\"attribute vec3 offset;\"),s.push(\"attribute vec4 flags;\"),s.push(\"attribute vec4 flags2;\"),s.push(\"uniform bool pickInvisible;\"),s.push(\"uniform mat4 worldMatrix;\"),s.push(\"uniform mat4 viewMatrix;\"),s.push(\"uniform mat4 projMatrix;\"),s.push(\"uniform mat4 positionsDecodeMatrix;\"),s.push(\"uniform float pointSize;\"),i.perspectivePoints&&s.push(\"uniform float nearPlaneHeight;\"),e.logarithmicDepthBufferEnabled&&(s.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"varying float vFragDepth;\")),t&&(s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\")),s.push(\"varying vec4 vViewPosition;\"),s.push(\"void main(void) {\"),s.push(\"if (int(flags.w) != renderPass) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\" } else {\"),s.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&s.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(s.push(\" vWorldPosition = worldPosition;\"),s.push(\" vFlags2 = flags2;\")),s.push(\"vViewPosition = viewPosition;\"),s.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?s.push(\"vFragDepth = 1.0 + clipPos.w;\"):(s.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),s.push(\"clipPos.z *= clipPos.w;\"))),s.push(\"gl_Position = clipPos;\"),i.perspectivePoints?(s.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\"),s.push(\"gl_PointSize = max(gl_PointSize, \"+Math.floor(i.minPerspectivePointSize)+\".0);\"),s.push(\"gl_PointSize = min(gl_PointSize, \"+Math.floor(i.maxPerspectivePointSize)+\".0);\")):s.push(\"gl_PointSize = pointSize;\"),s.push(\"gl_PointSize += 10.0;\"),s.push(\" }\"),s.push(\"}\"),s}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Points batched pick depth fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),s.push(\"uniform float pickZNear;\"),s.push(\"uniform float pickZFar;\"),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 1.0) {\"),s.push(\" discard;\"),s.push(\" }\")),i){s.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(var r=0;r 0.0) { discard; }\"),s.push(\" }\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\"),s.push(\" gl_FragColor = packDepth(zNormalizedDepth); \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const bo=u.vec3();class Po{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()+this._scene.pointsMaterial.hash}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.canvas.gl,a=t._state,n=r.camera,l=t._state.rtcCenter,h=r.pointsMaterial._state;if(!this._program&&(this._allocate(t),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),o.uniform1i(this._uRenderPass,i),o.uniformMatrix4fv(this._uViewMatrix,!1,l?j(n.viewMatrix,l):n.viewMatrix),o.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const c=r._sectionPlanesState.sectionPlanes.length;if(c>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*c,a=s.renderFlags;for(let t=0;t0,i=e.pointsMaterial._state,s=[];return s.push(\"// Points batching occlusion vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"uniform int renderPass;\"),s.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&s.push(\"attribute vec3 offset;\"),s.push(\"attribute vec4 flags;\"),s.push(\"attribute vec4 flags2;\"),s.push(\"uniform mat4 worldMatrix;\"),s.push(\"uniform mat4 viewMatrix;\"),s.push(\"uniform mat4 projMatrix;\"),s.push(\"uniform mat4 positionsDecodeMatrix;\"),s.push(\"uniform float pointSize;\"),i.perspectivePoints&&s.push(\"uniform float nearPlaneHeight;\"),e.logarithmicDepthBufferEnabled&&(s.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"varying float vFragDepth;\")),t&&(s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\")),s.push(\"void main(void) {\"),s.push(\"if (int(flags.x) != renderPass) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\" } else {\"),s.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \"),e.entityOffsetsEnabled&&s.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(s.push(\" vWorldPosition = worldPosition;\"),s.push(\" vFlags2 = flags2;\")),s.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?s.push(\"vFragDepth = 1.0 + clipPos.w;\"):(s.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),s.push(\"clipPos.z *= clipPos.w;\"))),s.push(\" gl_Position = clipPos;\"),i.perspectivePoints?(s.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\"),s.push(\"gl_PointSize = max(gl_PointSize, \"+Math.floor(i.minPerspectivePointSize)+\".0);\"),s.push(\"gl_PointSize = min(gl_PointSize, \"+Math.floor(i.maxPerspectivePointSize)+\".0);\")):s.push(\"gl_PointSize = pointSize;\"),s.push(\" }\"),s.push(\"}\"),s}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Points batching occlusion fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 1.0) {\"),s.push(\" discard;\"),s.push(\" }\")),i){s.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0;e 0.0) { discard; }\"),s.push(\" }\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}class yo{constructor(e){this._scene=e}_compile(){this._colorRenderer&&!this._colorRenderer.getValid()&&(this._colorRenderer.destroy(),this._colorRenderer=null),this._silhouetteRenderer&&!this._silhouetteRenderer.getValid()&&(this._silhouetteRenderer.destroy(),this._silhouetteRenderer=null),this._pickMeshRenderer&&!this._pickMeshRenderer.getValid()&&(this._pickMeshRenderer.destroy(),this._pickMeshRenderer=null),this._pickDepthRenderer&&!this._pickDepthRenderer.getValid()&&(this._pickDepthRenderer.destroy(),this._pickDepthRenderer=null),this._occlusionRenderer&&!1===this._occlusionRenderer.getValid()&&(this._occlusionRenderer.destroy(),this._occlusionRenderer=null)}get colorRenderer(){return this._colorRenderer||(this._colorRenderer=new co(this._scene)),this._colorRenderer}get silhouetteRenderer(){return this._silhouetteRenderer||(this._silhouetteRenderer=new fo(this._scene)),this._silhouetteRenderer}get pickMeshRenderer(){return this._pickMeshRenderer||(this._pickMeshRenderer=new go(this._scene)),this._pickMeshRenderer}get pickDepthRenderer(){return this._pickDepthRenderer||(this._pickDepthRenderer=new vo(this._scene)),this._pickDepthRenderer}get occlusionRenderer(){return this._occlusionRenderer||(this._occlusionRenderer=new Po(this._scene)),this._occlusionRenderer}_destroy(){this._colorRenderer&&this._colorRenderer.destroy(),this._silhouetteRenderer&&this._silhouetteRenderer.destroy(),this._pickMeshRenderer&&this._pickMeshRenderer.destroy(),this._pickDepthRenderer&&this._pickDepthRenderer.destroy(),this._occlusionRenderer&&this._occlusionRenderer.destroy()}}const xo={};const Mo=G.SUPPORTED_EXTENSIONS.OES_element_index_uint;class wo{constructor(e=5e6){Mo?e>5e6&&(e=5e6):e>65530&&(e=65530),this.maxVerts=e,this.maxIndices=3*e,this.positions=[],this.colors=[],this.intensities=[],this.pickColors=[],this.flags=[],this.flags2=[],this.offsets=[]}}const Eo=u.vec4(),Co=u.vec4(),Ao=u.vec4([0,0,0,1]),So=u.vec4([0,0,0,1]),Do=u.vec4([0,0,0,1]),Lo=u.OBB3();class Bo{constructor(e,t){this.sortId=\"PointsBatchingLayer\",this.layerIndex=t.layerIndex,this._pointsBatchingRenderers=function(e){const t=e.id;let i=xo[t];return i||(i=new yo(e),xo[t]=i,i._compile(),e.on(\"compile\",(()=>{i._compile()})),e.on(\"destroyed\",(()=>{delete xo[t],i._destroy()}))),i}(e.scene),this.model=e,this._buffer=new wo(t.maxGeometryBatchSize),this._scratchMemory=t.scratchMemory,this._state=new ye({positionsBuf:null,offsetsBuf:null,colorsBuf:null,flagsBuf:null,flags2Buf:null,positionsDecodeMatrix:u.mat4(),rtcCenter:null}),this._numPortions=0,this._numVisibleLayerPortions=0,this._numTransparentLayerPortions=0,this._numXRayedLayerPortions=0,this._numSelectedLayerPortions=0,this._numHighlightedLayerPortions=0,this._numClippableLayerPortions=0,this._numPickableLayerPortions=0,this._numCulledLayerPortions=0,this._modelAABB=u.collapseAABB3(),this._portions=[],this._finalized=!1,this._positionsDecodeMatrix=t.positionsDecodeMatrix,this._preCompressed=!!this._positionsDecodeMatrix,t.rtcCenter&&(this._state.rtcCenter=u.vec3(t.rtcCenter)),this.aabb=u.collapseAABB3()}canCreatePortion(e){if(this._finalized)throw\"Already finalized\";return this._buffer.positions.length+e<3*this._buffer.maxVerts}createPortion(e){if(this._finalized)throw\"Already finalized\";const t=e.positions,i=e.color,s=e.colorsCompressed,r=e.colors,o=e.meshMatrix,a=e.worldMatrix,n=e.worldAABB,l=e.pickColor,h=this._buffer,c=h.positions.length/3,d=t.length/3,p=t.length;if(this._preCompressed){for(let e=0,i=t.length;e0)if(this._preCompressed){e.positionsDecodeMatrix=this._positionsDecodeMatrix;const s=new Uint16Array(i.positions);e.positionsBuf=new re(t,t.ARRAY_BUFFER,s,i.positions.length,3,t.STATIC_DRAW)}else{const s=xs(new Float32Array(i.positions),this._modelAABB,e.positionsDecodeMatrix);e.positionsBuf=new re(t,t.ARRAY_BUFFER,s,i.positions.length,3,t.STATIC_DRAW)}if(i.colors.length>0){const s=new Uint8Array(i.colors);let r=!1;e.colorsBuf=new re(t,t.ARRAY_BUFFER,s,i.colors.length,4,t.STATIC_DRAW,r)}if(i.positions.length>0){const s=i.positions.length/3*4,r=new Uint8Array(s),o=new Uint8Array(s);let a=!1,n=!0;e.flagsBuf=new re(t,t.ARRAY_BUFFER,r,r.length,4,t.DYNAMIC_DRAW,a),e.flags2Buf=new re(t,t.ARRAY_BUFFER,o,o.length,4,t.DYNAMIC_DRAW,n)}if(i.pickColors.length>0){const s=new Uint8Array(i.pickColors);let r=!1;e.pickColorsBuf=new re(t,t.ARRAY_BUFFER,s,i.pickColors.length,4,t.STATIC_DRAW,r)}if(this.model.scene.entityOffsetsEnabled&&i.offsets.length>0){const s=new Float32Array(i.offsets);e.offsetsBuf=new re(t,t.ARRAY_BUFFER,s,i.offsets.length,3,t.DYNAMIC_DRAW)}this._buffer=null,this._finalized=!0}initFlags(e,t,i){t&A&&(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++),t&R&&(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++),t&T&&(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++),t&F&&(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++),t&L&&(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++),t&D&&(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++),t&S&&(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++),i&&(this._numTransparentLayerPortions++,this.model.numTransparentLayerPortions++),this._setFlags(e,t,i),this._setFlags2(e,t)}setVisible(e,t,i){if(!this._finalized)throw\"Not finalized\";t&A?(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++):(this._numVisibleLayerPortions--,this.model.numVisibleLayerPortions--),this._setFlags(e,t,i)}setHighlighted(e,t,i){if(!this._finalized)throw\"Not finalized\";t&R?(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++):(this._numHighlightedLayerPortions--,this.model.numHighlightedLayerPortions--),this._setFlags(e,t,i)}setXRayed(e,t,i){if(!this._finalized)throw\"Not finalized\";t&T?(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++):(this._numXRayedLayerPortions--,this.model.numXRayedLayerPortions--),this._setFlags(e,t,i)}setSelected(e,t,i){if(!this._finalized)throw\"Not finalized\";t&F?(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++):(this._numSelectedLayerPortions--,this.model.numSelectedLayerPortions--),this._setFlags(e,t,i)}setEdges(e,t,i){if(!this._finalized)throw\"Not finalized\"}setClippable(e,t){if(!this._finalized)throw\"Not finalized\";t&L?(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++):(this._numClippableLayerPortions--,this.model.numClippableLayerPortions--),this._setFlags2(e,t)}setCulled(e,t,i){if(!this._finalized)throw\"Not finalized\";t&S?(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++):(this._numCulledLayerPortions--,this.model.numCulledLayerPortions--),this._setFlags(e,t,i)}setCollidable(e,t){if(!this._finalized)throw\"Not finalized\"}setPickable(e,t,i){if(!this._finalized)throw\"Not finalized\";t&D?(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++):(this._numPickableLayerPortions--,this.model.numPickableLayerPortions--),this._setFlags(e,t,i)}setColor(e,t){if(!this._finalized)throw\"Not finalized\";const i=2*e,s=4*this._portions[i],r=4*this._portions[i+1],o=this._scratchMemory.getUInt8Array(r),a=t[0],n=t[1],l=t[2];for(let e=0;e0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*u,o=s.renderFlags;for(let t=0;t0,i=e.pointsMaterial._state,s=[];return s.push(\"// Points instancing color vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"uniform int renderPass;\"),s.push(\"attribute vec3 position;\"),s.push(\"attribute vec4 color;\"),s.push(\"attribute vec4 flags;\"),s.push(\"attribute vec4 flags2;\"),e.entityOffsetsEnabled&&s.push(\"attribute vec3 offset;\"),s.push(\"attribute vec4 modelMatrixCol0;\"),s.push(\"attribute vec4 modelMatrixCol1;\"),s.push(\"attribute vec4 modelMatrixCol2;\"),s.push(\"uniform mat4 worldMatrix;\"),s.push(\"uniform mat4 viewMatrix;\"),s.push(\"uniform mat4 projMatrix;\"),s.push(\"uniform mat4 positionsDecodeMatrix;\"),s.push(\"uniform float pointSize;\"),i.perspectivePoints&&s.push(\"uniform float nearPlaneHeight;\"),i.filterIntensity&&s.push(\"uniform vec2 intensityRange;\"),e.logarithmicDepthBufferEnabled&&(s.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"varying float vFragDepth;\")),t&&(s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\")),s.push(\"varying vec4 vColor;\"),s.push(\"void main(void) {\"),s.push(\"if (int(flags.x) != renderPass) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\"} else {\"),i.filterIntensity&&(s.push(\"float intensity = float(color.a) / 255.0;\"),s.push(\"if (intensity < intensityRange[0] || intensity > intensityRange[1]) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\"} else {\")),s.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),s.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&s.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),s.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, 1.0);\"),t&&(s.push(\"vWorldPosition = worldPosition;\"),s.push(\"vFlags2 = flags2;\")),s.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?s.push(\"vFragDepth = 1.0 + clipPos.w;\"):(s.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),s.push(\"clipPos.z *= clipPos.w;\"))),s.push(\"gl_Position = clipPos;\"),i.perspectivePoints?(s.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\"),s.push(\"gl_PointSize = max(gl_PointSize, \"+Math.floor(i.minPerspectivePointSize)+\".0);\"),s.push(\"gl_PointSize = min(gl_PointSize, \"+Math.floor(i.maxPerspectivePointSize)+\".0);\")):s.push(\"gl_PointSize = pointSize;\"),s.push(\"}\"),i.filterIntensity&&s.push(\"}\"),s.push(\"}\"),s}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Points instancing color fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 1.0) {\"),s.push(\" discard;\"),s.push(\" }\")),i){s.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return s.push(\" gl_FragColor = vColor;\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const Fo=u.vec3();class No{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()+this._scene.pointsMaterial.hash}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter,c=r.pointsMaterial._state;if(!this._program&&(this._allocate(t.model.scene),this.errors))return;if(e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),i===Di){const e=r.xrayMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Ai){const e=r.highlightMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else if(i===Si){const e=r.selectedMaterial._state,t=e.fillColor,i=e.fillAlpha;a.uniform4f(this._uColor,t[0],t[1],t[2],i)}else a.uniform4fv(this._uColor,u.vec3([1,1,1]));a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const d=r._sectionPlanesState.sectionPlanes.length;if(d>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*d,o=s.renderFlags;for(let t=0;t0,i=e.pointsMaterial._state,s=[];return s.push(\"// Points instancing silhouette vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"uniform int renderPass;\"),s.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&s.push(\"attribute vec3 offset;\"),s.push(\"attribute vec4 flags;\"),s.push(\"attribute vec4 flags2;\"),s.push(\"attribute vec4 modelMatrixCol0;\"),s.push(\"attribute vec4 modelMatrixCol1;\"),s.push(\"attribute vec4 modelMatrixCol2;\"),s.push(\"uniform mat4 worldMatrix;\"),s.push(\"uniform mat4 viewMatrix;\"),s.push(\"uniform mat4 projMatrix;\"),s.push(\"uniform mat4 positionsDecodeMatrix;\"),s.push(\"uniform float pointSize;\"),i.perspectivePoints&&s.push(\"uniform float nearPlaneHeight;\"),e.logarithmicDepthBufferEnabled&&(s.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"varying float vFragDepth;\")),s.push(\"uniform vec4 color;\"),t&&(s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\")),s.push(\"void main(void) {\"),s.push(\"if (int(flags.y) != renderPass) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\"} else {\"),s.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),s.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&s.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\"vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(s.push(\"vWorldPosition = worldPosition;\"),s.push(\"vFlags2 = flags2;\")),s.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?s.push(\"vFragDepth = 1.0 + clipPos.w;\"):(s.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),s.push(\"clipPos.z *= clipPos.w;\"))),s.push(\"gl_Position = clipPos;\"),i.perspectivePoints?(s.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\"),s.push(\"gl_PointSize = max(gl_PointSize, \"+Math.floor(i.minPerspectivePointSize)+\".0);\"),s.push(\"gl_PointSize = min(gl_PointSize, \"+Math.floor(i.maxPerspectivePointSize)+\".0);\")):s.push(\"gl_PointSize = pointSize;\"),s.push(\"}\"),s.push(\"}\"),s}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Points instancing silhouette fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 1.0) {\"),s.push(\" discard;\"),s.push(\" }\")),i){s.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"gl_FragColor = color;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const Io=u.vec3();class Oo{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()+this._scene.pointsMaterial.hash}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter,c=r.pointsMaterial._state;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e)),a.uniform1i(this._uRenderPass,i);const u=e.pickViewMatrix||o.viewMatrix,d=h?j(u,h):u;if(a.uniformMatrix4fv(this._uViewMatrix,!1,d),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uProjMatrix,!1,e.pickProjMatrix),r.logarithmicDepthBufferEnabled){const e=2/(Math.log(o.project.far+1)/Math.LN2);a.uniform1f(this._uLogDepthBufFC,e)}a.uniformMatrix4fv(this._uPositionsDecodeMatrix,!1,t._state.positionsDecodeMatrix),this._aModelMatrixCol0.bindArrayBuffer(n.modelMatrixCol0Buf),this._aModelMatrixCol1.bindArrayBuffer(n.modelMatrixCol1Buf),this._aModelMatrixCol2.bindArrayBuffer(n.modelMatrixCol2Buf),l.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location,1),l.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location,1),l.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location,1),this._aPickColor.bindArrayBuffer(n.pickColorsBuf),l.vertexAttribDivisorANGLE(this._aPickColor.location,1),this._aPosition.bindArrayBuffer(n.positionsBuf),this._aFlags.bindArrayBuffer(n.flagsBuf),l.vertexAttribDivisorANGLE(this._aFlags.location,1),this._aFlags2&&(this._aFlags2.bindArrayBuffer(n.flags2Buf),l.vertexAttribDivisorANGLE(this._aFlags2.location,1)),this._aOffset&&(this._aOffset.bindArrayBuffer(n.offsetsBuf),l.vertexAttribDivisorANGLE(this._aOffset.location,1)),a.uniform1f(this._uPointSize,c.pointSize);const p=\"ortho\"===r.camera.projection?1:a.drawingBufferHeight/(2*Math.tan(.5*r.camera.perspective.fov*Math.PI/180));a.uniform1f(this._uNearPlaneHeight,p);const f=r._sectionPlanesState.sectionPlanes.length;if(f>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*f,o=s.renderFlags;for(let t=0;t0,i=e.pointsMaterial._state,s=[];return s.push(\"// Points instancing pick mesh vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"uniform int renderPass;\"),s.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&s.push(\"attribute vec3 offset;\"),s.push(\"attribute vec4 flags;\"),s.push(\"attribute vec4 flags2;\"),s.push(\"attribute vec4 pickColor;\"),s.push(\"attribute vec4 modelMatrixCol0;\"),s.push(\"attribute vec4 modelMatrixCol1;\"),s.push(\"attribute vec4 modelMatrixCol2;\"),s.push(\"uniform bool pickInvisible;\"),s.push(\"uniform mat4 worldMatrix;\"),s.push(\"uniform mat4 viewMatrix;\"),s.push(\"uniform mat4 projMatrix;\"),s.push(\"uniform mat4 positionsDecodeMatrix;\"),s.push(\"uniform float pointSize;\"),i.perspectivePoints&&s.push(\"uniform float nearPlaneHeight;\"),e.logarithmicDepthBufferEnabled&&(s.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"varying float vFragDepth;\")),t&&(s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\")),s.push(\"varying vec4 vPickColor;\"),s.push(\"void main(void) {\"),s.push(\"if (int(flags.w) != renderPass) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\"} else {\"),s.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),s.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&s.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),s.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\"),t&&(s.push(\" vWorldPosition = worldPosition;\"),s.push(\" vFlags2 = flags2;\")),s.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?s.push(\"vFragDepth = 1.0 + clipPos.w;\"):(s.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),s.push(\"clipPos.z *= clipPos.w;\"))),i.perspectivePoints?(s.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\"),s.push(\"gl_PointSize = max(gl_PointSize, \"+Math.floor(i.minPerspectivePointSize)+\".0);\"),s.push(\"gl_PointSize = min(gl_PointSize, \"+Math.floor(i.maxPerspectivePointSize)+\".0);\")):s.push(\"gl_PointSize = pointSize;\"),s.push(\"}\"),s.push(\"}\"),s}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Points instancing pick mesh fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 1.0) {\"),s.push(\" discard;\"),s.push(\" }\")),i){s.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"gl_FragColor = vPickColor; \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const ko=u.vec3();class Vo{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()+this._scene.pointsMaterial.hash}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.canvas.gl,a=t._state,n=this._instanceExt,l=t._state.rtcCenter,h=r.pointsMaterial._state;if(!this._program&&(this._allocate(t),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram());const c=r.camera;o.uniform1i(this._uRenderPass,i),o.uniform1i(this._uPickInvisible,e.pickInvisible);const u=e.pickViewMatrix||c.viewMatrix,d=l?j(u,l):u;if(o.uniformMatrix4fv(this._uViewMatrix,!1,d),o.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),o.uniformMatrix4fv(this._uProjMatrix,!1,e.pickProjMatrix),o.uniform1f(this._uPickZNear,e.pickZNear),o.uniform1f(this._uPickZFar,e.pickZFar),r.logarithmicDepthBufferEnabled){const t=2/(Math.log(e.pickZFar+1)/Math.LN2);o.uniform1f(this._uLogDepthBufFC,t)}const p=r._sectionPlanesState.sectionPlanes.length;if(p>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*p,a=s.renderFlags;for(let t=0;t0,i=e.pointsMaterial._state,s=[];return s.push(\"// Points instancing pick depth vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"uniform int renderPass;\"),s.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&s.push(\"attribute vec3 offset;\"),s.push(\"attribute vec4 flags;\"),s.push(\"attribute vec4 flags2;\"),s.push(\"attribute vec4 modelMatrixCol0;\"),s.push(\"attribute vec4 modelMatrixCol1;\"),s.push(\"attribute vec4 modelMatrixCol2;\"),s.push(\"uniform bool pickInvisible;\"),s.push(\"uniform mat4 worldMatrix;\"),s.push(\"uniform mat4 viewMatrix;\"),s.push(\"uniform mat4 projMatrix;\"),s.push(\"uniform mat4 positionsDecodeMatrix;\"),s.push(\"uniform float pointSize;\"),i.perspectivePoints&&s.push(\"uniform float nearPlaneHeight;\"),e.logarithmicDepthBufferEnabled&&(s.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"varying float vFragDepth;\")),t&&(s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\")),s.push(\"varying vec4 vViewPosition;\"),s.push(\"void main(void) {\"),s.push(\"if (int(flags.w) != renderPass) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\"} else {\"),s.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),s.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&s.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(s.push(\" vWorldPosition = worldPosition;\"),s.push(\" vFlags2 = flags2;\")),s.push(\" vViewPosition = viewPosition;\"),s.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?s.push(\"vFragDepth = 1.0 + clipPos.w;\"):(s.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),s.push(\"clipPos.z *= clipPos.w;\"))),s.push(\"gl_Position = clipPos;\"),i.perspectivePoints?(s.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\"),s.push(\"gl_PointSize = max(gl_PointSize, \"+Math.floor(i.minPerspectivePointSize)+\".0);\"),s.push(\"gl_PointSize = min(gl_PointSize, \"+Math.floor(i.maxPerspectivePointSize)+\".0);\")):s.push(\"gl_PointSize = pointSize;\"),s.push(\"}\"),s.push(\"}\"),s}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Points instancing pick depth fragment shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),s.push(\"uniform float pickZNear;\"),s.push(\"uniform float pickZFar;\"),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 1.0) {\"),s.push(\" discard;\"),s.push(\" }\")),i){s.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\"),s.push(\" gl_FragColor = packDepth(zNormalizedDepth); \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const jo=u.vec3();class zo{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()+this._scene.pointsMaterial.hash}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter,c=r.pointsMaterial._state;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix);const u=r._sectionPlanesState.sectionPlanes.length;if(u>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*u,o=s.renderFlags;for(let t=0;t0,i=e.pointsMaterial._state,s=[];return s.push(\"// Points instancing occlusion vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"uniform int renderPass;\"),s.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&s.push(\"attribute vec3 offset;\"),s.push(\"attribute vec4 color;\"),s.push(\"attribute vec4 flags;\"),s.push(\"attribute vec4 flags2;\"),s.push(\"attribute vec4 modelMatrixCol0;\"),s.push(\"attribute vec4 modelMatrixCol1;\"),s.push(\"attribute vec4 modelMatrixCol2;\"),s.push(\"uniform mat4 worldMatrix;\"),s.push(\"uniform mat4 viewMatrix;\"),s.push(\"uniform mat4 projMatrix;\"),s.push(\"uniform mat4 positionsDecodeMatrix;\"),s.push(\"uniform float pointSize;\"),i.perspectivePoints&&s.push(\"uniform float nearPlaneHeight;\"),e.logarithmicDepthBufferEnabled&&(s.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"varying float vFragDepth;\")),t&&(s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\")),s.push(\"void main(void) {\"),s.push(\"if (int(flags.x) != renderPass) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\"} else {\"),s.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),s.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&s.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&s.push(\" vWorldPosition = worldPosition;\"),s.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?s.push(\"vFragDepth = 1.0 + clipPos.w;\"):(s.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),s.push(\"clipPos.z *= clipPos.w;\"))),s.push(\"gl_Position = clipPos;\"),i.perspectivePoints?(s.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\"),s.push(\"gl_PointSize = max(gl_PointSize, \"+Math.floor(i.minPerspectivePointSize)+\".0);\"),s.push(\"gl_PointSize = min(gl_PointSize, \"+Math.floor(i.maxPerspectivePointSize)+\".0);\")):s.push(\"gl_PointSize = pointSize;\"),s.push(\"}\"),s.push(\"}\"),s}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Points instancing occlusion vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0;e 1.0) {\"),s.push(\" discard;\"),s.push(\" }\")),i){s.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0;e 0.0) { discard; }\"),s.push(\"}\")}return s.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const Uo=u.vec3();class Go{constructor(e){this._scene=e,this._hash=this._getHash(),this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()+this._scene.pointsMaterial.hash}drawLayer(e,t,i){const s=t.model,r=s.scene,o=r.camera,a=r.canvas.gl,n=t._state,l=this._instanceExt,h=t._state.rtcCenter,c=r.pointsMaterial._state;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram()),a.uniform1i(this._uRenderPass,i),a.uniformMatrix4fv(this._uWorldMatrix,!1,s.worldMatrix),a.uniformMatrix4fv(this._uViewMatrix,!1,h?j(o.viewMatrix,h):o.viewMatrix);const u=r._sectionPlanesState.sectionPlanes.length;if(u>0){const e=r._sectionPlanesState.sectionPlanes,i=t.layerIndex*u,o=s.renderFlags;for(let t=0;t0,i=e.pointsMaterial._state,s=[];return s.push(\"// Points instancing depth vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"uniform int renderPass;\"),s.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&s.push(\"attribute vec3 offset;\"),s.push(\"attribute vec4 flags;\"),s.push(\"attribute vec4 flags2;\"),s.push(\"attribute vec4 modelMatrixCol0;\"),s.push(\"attribute vec4 modelMatrixCol1;\"),s.push(\"attribute vec4 modelMatrixCol2;\"),s.push(\"uniform mat4 worldMatrix;\"),s.push(\"uniform mat4 viewMatrix;\"),s.push(\"uniform mat4 projMatrix;\"),s.push(\"uniform mat4 positionsDecodeMatrix;\"),s.push(\"uniform float pointSize;\"),i.perspectivePoints&&s.push(\"uniform float nearPlaneHeight;\"),e.logarithmicDepthBufferEnabled&&(s.push(\"uniform float logDepthBufFC;\"),G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"varying float vFragDepth;\")),t&&(s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\")),s.push(\"void main(void) {\"),s.push(\"if (int(flags.x) != renderPass) {\"),s.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),s.push(\"} else {\"),s.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),s.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&s.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),s.push(\" vec4 viewPosition = viewMatrix * worldPosition; \"),t&&(s.push(\"vWorldPosition = worldPosition;\"),s.push(\"vFlags2 = flags2;\")),s.push(\"vec4 clipPos = projMatrix * viewPosition;\"),e.logarithmicDepthBufferEnabled&&(G.SUPPORTED_EXTENSIONS.EXT_frag_depth?s.push(\"vFragDepth = 1.0 + clipPos.w;\"):(s.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\"),s.push(\"clipPos.z *= clipPos.w;\"))),s.push(\"gl_Position = clipPos;\"),i.perspectivePoints?(s.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\"),s.push(\"gl_PointSize = max(gl_PointSize, \"+Math.floor(i.minPerspectivePointSize)+\".0);\"),s.push(\"gl_PointSize = min(gl_PointSize, \"+Math.floor(i.maxPerspectivePointSize)+\".0);\")):s.push(\"gl_PointSize = pointSize;\"),s.push(\"}\"),s.push(\"}\"),s}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState;let i,s;const r=t.sectionPlanes.length>0,o=[];if(o.push(\"// Points instancing depth vertex shader\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"#extension GL_EXT_frag_depth : enable\"),o.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),o.push(\"precision highp float;\"),o.push(\"precision highp int;\"),o.push(\"#else\"),o.push(\"precision mediump float;\"),o.push(\"precision mediump int;\"),o.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(o.push(\"uniform float logDepthBufFC;\"),o.push(\"varying float vFragDepth;\")),r)for(o.push(\"varying vec4 vWorldPosition;\"),o.push(\"varying vec4 vFlags2;\"),i=0,s=t.sectionPlanes.length;i 1.0) {\"),o.push(\" discard;\"),o.push(\" }\")),r){for(o.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),o.push(\" if (clippable) {\"),o.push(\" float dist = 0.0;\"),i=0,s=t.sectionPlanes.length;i 0.0) { discard; }\"),o.push(\"}\")}return o.push(\" gl_FragColor = packDepthToRGBA( gl_FragCoord.z); \"),e.logarithmicDepthBufferEnabled&&G.SUPPORTED_EXTENSIONS.EXT_frag_depth&&o.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),o.push(\"}\"),o}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}const Xo=u.vec3();class Ho{constructor(e){this._scene=e,this._hash=this._getHash(),this._lastLightId=null,this._allocate()}getValid(){return this._hash===this._getHash()}_getHash(){return this._scene._sectionPlanesState.getHash()}drawLayer(e,t){const i=t.model,s=i.scene,r=s.canvas.gl,o=t._state,a=this._instanceExt;if(!this._program&&(this._allocate(),this.errors))return;e.lastProgramId!==this._program.id&&(e.lastProgramId=this._program.id,this._bindProgram(e,t)),r.uniformMatrix4fv(this._uPositionsDecodeMatrix,!1,t._state.positionsDecodeMatrix),this._aModelMatrixCol0.bindArrayBuffer(o.modelMatrixCol0Buf),this._aModelMatrixCol1.bindArrayBuffer(o.modelMatrixCol1Buf),this._aModelMatrixCol2.bindArrayBuffer(o.modelMatrixCol2Buf),a.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location,1),a.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location,1),a.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location,1),this._aPosition.bindArrayBuffer(o.positionsBuf),this._aOffset&&(this._aOffset.bindArrayBuffer(o.offsetsBuf),a.vertexAttribDivisorANGLE(this._aOffset.location,1)),this._aColor.bindArrayBuffer(o.colorsBuf),a.vertexAttribDivisorANGLE(this._aColor.location,1),this._aFlags.bindArrayBuffer(o.flagsBuf),a.vertexAttribDivisorANGLE(this._aFlags.location,1),this._aFlags2&&(this._aFlags2.bindArrayBuffer(o.flags2Buf),a.vertexAttribDivisorANGLE(this._aFlags2.location,1));const n=s._sectionPlanesState.sectionPlanes.length;if(n>0){const e=s._sectionPlanesState.sectionPlanes,o=t.layerIndex*n,a=i.renderFlags,l=t._state.rtcCenter;for(let t=0;t0,i=[];return i.push(\"// Instancing geometry shadow drawing vertex shader\"),i.push(\"attribute vec3 position;\"),e.entityOffsetsEnabled&&i.push(\"attribute vec3 offset;\"),i.push(\"attribute vec4 color;\"),i.push(\"attribute vec4 flags;\"),i.push(\"attribute vec4 flags2;\"),i.push(\"attribute vec4 modelMatrixCol0;\"),i.push(\"attribute vec4 modelMatrixCol1;\"),i.push(\"attribute vec4 modelMatrixCol2;\"),i.push(\"uniform mat4 shadowViewMatrix;\"),i.push(\"uniform mat4 shadowProjMatrix;\"),i.push(\"uniform mat4 positionsDecodeMatrix;\"),i.push(\"uniform float pointSize;\"),t&&(i.push(\"varying vec4 vWorldPosition;\"),i.push(\"varying vec4 vFlags2;\")),i.push(\"void main(void) {\"),i.push(\"bool visible = (float(flags.x) > 0.0);\"),i.push(\"bool transparent = ((float(color.a) / 255.0) < 1.0);\"),i.push(\"if (!visible || transparent) {\"),i.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"),i.push(\"} else {\"),i.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \"),i.push(\" worldPosition = vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\"),e.entityOffsetsEnabled&&i.push(\" worldPosition.xyz = worldPosition.xyz + offset;\"),i.push(\" vec4 viewPosition = shadowViewMatrix * worldPosition; \"),t&&(i.push(\"vWorldPosition = worldPosition;\"),i.push(\"vFlags2 = flags2;\")),i.push(\" gl_Position = shadowProjMatrix * viewPosition;\"),i.push(\"}\"),i.push(\"gl_PointSize = pointSize;\"),i.push(\"}\"),i}_buildFragmentShader(){const e=this._scene,t=e._sectionPlanesState,i=t.sectionPlanes.length>0,s=[];if(s.push(\"// Instancing geometry depth drawing fragment shader\"),e.logarithmicDepthBufferEnabled&&WEBGL_INFO.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"#extension GL_EXT_frag_depth : enable\"),s.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\"),s.push(\"precision highp float;\"),s.push(\"precision highp int;\"),s.push(\"#else\"),s.push(\"precision mediump float;\"),s.push(\"precision mediump int;\"),s.push(\"#endif\"),e.logarithmicDepthBufferEnabled&&WEBGL_INFO.SUPPORTED_EXTENSIONS.EXT_frag_depth&&(s.push(\"uniform float logDepthBufFC;\"),s.push(\"varying float vFragDepth;\")),i){s.push(\"varying vec4 vWorldPosition;\"),s.push(\"varying vec4 vFlags2;\");for(let e=0,i=t.sectionPlanes.length;e 1.0) {\"),s.push(\" discard;\"),s.push(\" }\"),i){s.push(\" bool clippable = (float(vFlags2.x) > 0.0);\"),s.push(\" if (clippable) {\"),s.push(\" float dist = 0.0;\");for(let e=0,i=t.sectionPlanes.length;e 0.0) { discard; }\"),s.push(\"}\")}return e.logarithmicDepthBufferEnabled&&WEBGL_INFO.SUPPORTED_EXTENSIONS.EXT_frag_depth&&s.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\"),s.push(\" gl_FragColor = vec4(packNormalToRGB(vViewNormal), 1.0); \"),s.push(\"}\"),s}webglContextRestored(){this._program=null}destroy(){this._program&&this._program.destroy(),this._program=null}}class Wo{constructor(e){this._scene=e}_compile(){this._colorRenderer&&!this._colorRenderer.getValid()&&(this._colorRenderer.destroy(),this._colorRenderer=null),this._depthRenderer&&!this._depthRenderer.getValid()&&(this._depthRenderer.destroy(),this._depthRenderer=null),this._silhouetteRenderer&&!this._silhouetteRenderer.getValid()&&(this._silhouetteRenderer.destroy(),this._silhouetteRenderer=null),this._pickMeshRenderer&&!this._pickMeshRenderer.getValid()&&(this._pickMeshRenderer.destroy(),this._pickMeshRenderer=null),this._pickDepthRenderer&&!this._pickDepthRenderer.getValid()&&(this._pickDepthRenderer.destroy(),this._pickDepthRenderer=null),this._occlusionRenderer&&!1===this._occlusionRenderer.getValid()&&(this._occlusionRenderer.destroy(),this._occlusionRenderer=null),this._shadowRenderer&&!this._shadowRenderer.getValid()&&(this._shadowRenderer.destroy(),this._shadowRenderer=null)}get colorRenderer(){return this._colorRenderer||(this._colorRenderer=new Ro(this._scene,!1)),this._colorRenderer}get silhouetteRenderer(){return this._silhouetteRenderer||(this._silhouetteRenderer=new No(this._scene)),this._silhouetteRenderer}get depthRenderer(){return this._depthRenderer||(this._depthRenderer=new Go(this._scene)),this._depthRenderer}get pickMeshRenderer(){return this._pickMeshRenderer||(this._pickMeshRenderer=new Oo(this._scene)),this._pickMeshRenderer}get pickDepthRenderer(){return this._pickDepthRenderer||(this._pickDepthRenderer=new Vo(this._scene)),this._pickDepthRenderer}get occlusionRenderer(){return this._occlusionRenderer||(this._occlusionRenderer=new zo(this._scene)),this._occlusionRenderer}get shadowRenderer(){return this._shadowRenderer||(this._shadowRenderer=new Ho(this._scene)),this._shadowRenderer}_destroy(){this._colorRenderer&&this._colorRenderer.destroy(),this._depthRenderer&&this._depthRenderer.destroy(),this._silhouetteRenderer&&this._silhouetteRenderer.destroy(),this._pickMeshRenderer&&this._pickMeshRenderer.destroy(),this._pickDepthRenderer&&this._pickDepthRenderer.destroy(),this._occlusionRenderer&&this._occlusionRenderer.destroy(),this._shadowRenderer&&this._shadowRenderer.destroy()}}const Yo={};const qo=new Uint8Array(4),Ko=u.vec4([0,0,0,1]),Zo=u.vec4([0,0,0,1]),Qo=u.vec4([0,0,0,1]),$o=new Float32Array(3);class Jo{constructor(e,t){this.sortId=\"PointsInstancingLayer\",this.layerIndex=t.layerIndex,this._pointsInstancingRenderers=function(e){const t=e.id;let i=Yo[t];return i||(i=new Wo(e),Yo[t]=i,i._compile(),e.on(\"compile\",(()=>{i._compile()})),e.on(\"destroyed\",(()=>{delete Yo[t],i._destroy()}))),i}(e.scene),this.model=e,this._aabb=u.collapseAABB3();const i=e.scene.canvas.gl,s={positionsDecodeMatrix:u.mat4(),numInstances:0,obb:u.OBB3(),rtcCenter:null},r=!!t.positionsDecodeMatrix;if(!t.positions)throw\"positions expected\";const o=t.positions.length/3;if(r){let e=!1;s.positionsBuf=new re(i,i.ARRAY_BUFFER,t.positions,t.positions.length,3,i.STATIC_DRAW,e),s.positionsDecodeMatrix.set(t.positionsDecodeMatrix);let r=u.collapseAABB3();u.expandAABB3Points3(r,t.positions),qe.decompressAABB(r,s.positionsDecodeMatrix),u.AABB3ToOBB3(r,s.obb)}else{let e=t.positions.length,r=u.collapseAABB3();u.expandAABB3Points3(r,t.positions),u.AABB3ToOBB3(r,s.obb);const o=xs(t.positions,r,s.positionsDecodeMatrix);let a=!1;s.positionsBuf=new re(i,i.ARRAY_BUFFER,o,e,3,i.STATIC_DRAW,a)}if(t.colorsCompressed){const e=new Uint8Array(t.colorsCompressed);let r=!1;s.colorsBuf=new re(i,i.ARRAY_BUFFER,e,e.length,4,i.STATIC_DRAW,r)}else if(t.colors){const e=t.colors,r=new Uint8Array(e.length);for(let t=0,i=e.length;t0){let i=!1,s=!0;this._state.flagsBuf=new re(e,e.ARRAY_BUFFER,new Uint8Array(t),t,4,e.DYNAMIC_DRAW,i),this._state.flags2Buf=new re(e,e.ARRAY_BUFFER,new Uint8Array(t),t,4,e.DYNAMIC_DRAW,s)}if(this.model.scene.entityOffsetsEnabled&&this._offsets.length>0){const t=!1;this._state.offsetsBuf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._offsets),this._offsets.length,3,e.DYNAMIC_DRAW,t),this._offsets=[]}if(this._modelMatrixCol0.length>0){const t=!1;this._state.modelMatrixCol0Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelMatrixCol0),this._modelMatrixCol0.length,4,e.STATIC_DRAW,t),this._state.modelMatrixCol1Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelMatrixCol1),this._modelMatrixCol1.length,4,e.STATIC_DRAW,t),this._state.modelMatrixCol2Buf=new re(e,e.ARRAY_BUFFER,new Float32Array(this._modelMatrixCol2),this._modelMatrixCol2.length,4,e.STATIC_DRAW,t),this._modelMatrixCol0=[],this._modelMatrixCol1=[],this._modelMatrixCol2=[]}if(this._pickColors.length>0){const t=!1;this._state.pickColorsBuf=new re(e,e.ARRAY_BUFFER,new Uint8Array(this._pickColors),this._pickColors.length,4,e.STATIC_DRAW,t),this._pickColors=[]}this._finalized=!0}initFlags(e,t,i){t&A&&(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++),t&R&&(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++),t&T&&(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++),t&F&&(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++),t&L&&(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++),t&N&&(this._numEdgesLayerPortions++,this.model.numEdgesLayerPortions++),t&D&&(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++),t&S&&(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++),i&&(this._numTransparentLayerPortions++,this.model.numTransparentLayerPortions++),this._setFlags(e,t,i),this._setFlags2(e,t)}setVisible(e,t,i){if(!this._finalized)throw\"Not finalized\";t&A?(this._numVisibleLayerPortions++,this.model.numVisibleLayerPortions++):(this._numVisibleLayerPortions--,this.model.numVisibleLayerPortions--),this._setFlags(e,t,i)}setHighlighted(e,t,i){if(!this._finalized)throw\"Not finalized\";t&R?(this._numHighlightedLayerPortions++,this.model.numHighlightedLayerPortions++):(this._numHighlightedLayerPortions--,this.model.numHighlightedLayerPortions--),this._setFlags(e,t,i)}setXRayed(e,t,i){if(!this._finalized)throw\"Not finalized\";t&T?(this._numXRayedLayerPortions++,this.model.numXRayedLayerPortions++):(this._numXRayedLayerPortions--,this.model.numXRayedLayerPortions--),this._setFlags(e,t,i)}setSelected(e,t,i){if(!this._finalized)throw\"Not finalized\";t&F?(this._numSelectedLayerPortions++,this.model.numSelectedLayerPortions++):(this._numSelectedLayerPortions--,this.model.numSelectedLayerPortions--),this._setFlags(e,t,i)}setEdges(e,t,i){if(!this._finalized)throw\"Not finalized\";t&N?(this._numEdgesLayerPortions++,this.model.numEdgesLayerPortions++):(this._numEdgesLayerPortions--,this.model.numEdgesLayerPortions--),this._setFlags(e,t,i)}setClippable(e,t){if(!this._finalized)throw\"Not finalized\";t&L?(this._numClippableLayerPortions++,this.model.numClippableLayerPortions++):(this._numClippableLayerPortions--,this.model.numClippableLayerPortions--),this._setFlags2(e,t)}setCollidable(e,t){if(!this._finalized)throw\"Not finalized\"}setPickable(e,t,i){if(!this._finalized)throw\"Not finalized\";t&D?(this._numPickableLayerPortions++,this.model.numPickableLayerPortions++):(this._numPickableLayerPortions--,this.model.numPickableLayerPortions--),this._setFlags2(e,t,i)}setCulled(e,t,i){if(!this._finalized)throw\"Not finalized\";t&S?(this._numCulledLayerPortions++,this.model.numCulledLayerPortions++):(this._numCulledLayerPortions--,this.model.numCulledLayerPortions--),this._setFlags(e,t,i)}setColor(e,t){if(!this._finalized)throw\"Not finalized\";qo[0]=t[0],qo[1]=t[1],qo[2]=t[2],this._state.colorsBuf.setData(qo,3*e,3)}setTransparent(e,t,i){i?(this._numTransparentLayerPortions++,this.model.numTransparentLayerPortions++):(this._numTransparentLayerPortions--,this.model.numTransparentLayerPortions--),this._setFlags(e,t,i)}_setFlags(e,t,i){if(!this._finalized)throw\"Not finalized\";const s=!!(t&A),r=!!(t&T),o=!!(t&R),a=!!(t&F),n=!!(t&S);let l,h;l=!s||n||r?wi:i?Ci:Ei,h=!s||n?wi:a?Si:o?Ai:r?Di:wi;let c=0;c=!s||n?wi:a?Ri:o?Ti:r?Fi:!!(t&N)?i?Bi:Li:wi;let u=s&&!n&&!!(t&D)?Ni:wi;qo[0]=l,qo[1]=h,qo[2]=c,qo[3]=u,this._state.flagsBuf.setData(qo,4*e,4)}_setFlags2(e,t){if(!this._finalized)throw\"Not finalized\";const i=t&L?255:0;qo[0]=i,this._state.flags2Buf.setData(qo,4*e,4)}setOffset(e,t){if(!this._finalized)throw\"Not finalized\";this.model.scene.entityOffsetsEnabled?($o[0]=t[0],$o[1]=t[1],$o[2]=t[2],this._state.offsetsBuf.setData($o,3*e,3)):this.model.error(\"Entity#offset not enabled for this Viewer\")}drawColorOpaque(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&this._numTransparentLayerPortions!==this._numPortions&&this._numXRayedLayerPortions!==this._numPortions&&this._pointsInstancingRenderers.colorRenderer&&this._pointsInstancingRenderers.colorRenderer.drawLayer(t,this,Ei)}drawColorTransparent(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numTransparentLayerPortions&&this._numXRayedLayerPortions!==this._numPortions&&this._pointsInstancingRenderers.colorRenderer&&this._pointsInstancingRenderers.colorRenderer.drawLayer(t,this,Ci)}drawDepth(e,t){}drawNormals(e,t){}drawSilhouetteXRayed(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numXRayedLayerPortions&&this._pointsInstancingRenderers.silhouetteRenderer&&this._pointsInstancingRenderers.silhouetteRenderer.drawLayer(t,this,Di)}drawSilhouetteHighlighted(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numHighlightedLayerPortions&&this._pointsInstancingRenderers.silhouetteRenderer&&this._pointsInstancingRenderers.silhouetteRenderer.drawLayer(t,this,Ai)}drawSilhouetteSelected(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&0!==this._numSelectedLayerPortions&&this._pointsInstancingRenderers.silhouetteRenderer&&this._pointsInstancingRenderers.silhouetteRenderer.drawLayer(t,this,Si)}drawEdgesColorOpaque(e,t){}drawEdgesColorTransparent(e,t){}drawEdgesHighlighted(e,t){}drawEdgesSelected(e,t){}drawEdgesXRayed(e,t){}drawOcclusion(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&this._pointsInstancingRenderers.occlusionRenderer&&this._pointsInstancingRenderers.occlusionRenderer.drawLayer(t,this,Ei)}drawShadow(e,t){}drawPickMesh(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&this._pointsInstancingRenderers.pickMeshRenderer&&this._pointsInstancingRenderers.pickMeshRenderer.drawLayer(t,this,Ni)}drawPickDepths(e,t){this._numCulledLayerPortions!==this._numPortions&&0!==this._numVisibleLayerPortions&&this._pointsInstancingRenderers.pickDepthRenderer&&this._pointsInstancingRenderers.pickDepthRenderer.drawLayer(t,this,Ni)}drawPickNormals(e,t){}destroy(){const e=this._state;e.positionsBuf&&(e.positionsBuf.destroy(),e.positionsBuf=null),e.colorsBuf&&(e.colorsBuf.destroy(),e.colorsBuf=null),e.flagsBuf&&(e.flagsBuf.destroy(),e.flagsBuf=null),e.flags2Buf&&(e.flags2Buf.destroy(),e.flags2Buf=null),e.offsetsBuf&&(e.offsetsBuf.destroy(),e.offsetsBuf=null),e.modelMatrixCol0Buf&&(e.modelMatrixCol0Buf.destroy(),e.modelMatrixCol0Buf=null),e.modelMatrixCol1Buf&&(e.modelMatrixCol1Buf.destroy(),e.modelMatrixCol1Buf=null),e.modelMatrixCol2Buf&&(e.modelMatrixCol2Buf.destroy(),e.modelMatrixCol2Buf=null),e.pickColorsBuf&&(e.pickColorsBuf.destroy(),e.pickColorsBuf=null),e.destroy()}}const ea=G.SUPPORTED_EXTENSIONS.ANGLE_instanced_arrays,ta=u.mat4(),ia=u.vec3([1,1,1]),sa=u.vec3([0,0,0]),ra=u.vec3([0,0,0]),oa=u.identityQuaternion();class aa extends C{constructor(e,t={}){super(e,t),this._maxGeometryBatchSize=t.maxGeometryBatchSize,this._aabb=u.collapseAABB3(),this._aabbDirty=!1,this._layerList=[],this._nodeList=[],this._lastRTCCenter=null,this._lastDecodeMatrix=null,this._lastNormals=null,this._instancingLayers={},this._currentBatchingLayers={},this._scratchMemory=(Mi++,xi),this._meshes={},this._nodes={},this.renderFlags=new Qt,this.numGeometries=0,this.numPortions=0,this.numVisibleLayerPortions=0,this.numTransparentLayerPortions=0,this.numXRayedLayerPortions=0,this.numHighlightedLayerPortions=0,this.numSelectedLayerPortions=0,this.numEdgesLayerPortions=0,this.numPickableLayerPortions=0,this.numClippableLayerPortions=0,this.numCulledLayerPortions=0,this.numEntities=0,this._numTriangles=0,this._numLines=0,this._numPoints=0,this._edgeThreshold=t.edgeThreshold||10,this.visible=t.visible,this.culled=t.culled,this.pickable=t.pickable,this.clippable=t.clippable,this.collidable=t.collidable,this.castsShadow=t.castsShadow,this.receivesShadow=t.receivesShadow,this.xrayed=t.xrayed,this.highlighted=t.highlighted,this.selected=t.selected,this.edges=t.edges,this.colorize=t.colorize,this.opacity=t.opacity,this.backfaces=t.backfaces,this._position=new Float32Array(t.position||[0,0,0]),this._rotation=new Float32Array(t.rotation||[0,0,0]),this._quaternion=new Float32Array(t.quaternion||[0,0,0,1]),t.rotation&&u.eulerToQuaternion(this._rotation,\"XYZ\",this._quaternion),this._scale=new Float32Array(t.scale||[1,1,1]),this._worldMatrix=u.mat4(),u.composeMat4(this._position,this._quaternion,this._scale,this._worldMatrix),this._worldNormalMatrix=u.mat4(),u.inverseMat4(this._worldMatrix,this._worldNormalMatrix),u.transposeMat4(this._worldNormalMatrix),(t.matrix||t.position||t.rotation||t.scale||t.quaternion)&&(this._viewMatrix=u.mat4(),this._viewNormalMatrix=u.mat4(),this._viewMatrixDirty=!0,this._worldMatrixNonIdentity=!0),this._opacity=1,this._colorize=[1,1,1],this._saoEnabled=!1!==t.saoEnabled,this._pbrEnabled=!!t.pbrEnabled,this._isModel=t.isModel,this._isModel&&this.scene._registerModel(this),this._onCameraViewMatrix=this.scene.camera.on(\"matrix\",(()=>{this._viewMatrixDirty=!0}))}get isPerformanceModel(){return!0}get position(){return this._position}get rotation(){return this._rotation}get quaternion(){return this._quaternion}get scale(){return this._scale}get matrix(){return this._worldMatrix}get worldMatrix(){return this._worldMatrix}get worldNormalMatrix(){return this._worldNormalMatrix}get viewMatrix(){return this._viewMatrix?(this._viewMatrixDirty&&(u.mulMat4(this.scene.camera.viewMatrix,this._worldMatrix,this._viewMatrix),u.inverseMat4(this._viewMatrix,this._viewNormalMatrix),u.transposeMat4(this._viewNormalMatrix),this._viewMatrixDirty=!1),this._viewMatrix):this.scene.camera.viewMatrix}getPickViewMatrix(e){return this._viewMatrix?this._viewMatrix:e}get viewNormalMatrix(){return this._viewNormalMatrix?(this._viewMatrixDirty&&(u.mulMat4(this.scene.camera.viewMatrix,this._worldMatrix,this._viewMatrix),u.inverseMat4(this._viewMatrix,this._viewNormalMatrix),u.transposeMat4(this._viewNormalMatrix),this._viewMatrixDirty=!1),this._viewNormalMatrix):this.scene.camera.viewNormalMatrix}createGeometry(e){if(!ea)return void this.error(\"WebGL instanced arrays not supported\");const t=e.id;if(null==t)return void this.error(\"Config missing: id\");if(this._instancingLayers[t])return void this.error(\"Geometry already created: \"+t);let i;const s=e.primitive;if(null!=s){switch(s){case\"triangles\":case\"solid\":i=new Nr(this,_.apply({layerIndex:0,solid:!0},e)),this._numTriangles+=e.indices?Math.round(e.indices.length/3):0;break;case\"surface\":i=new Nr(this,_.apply({layerIndex:0,solid:!1},e)),this._numTriangles+=e.indices?Math.round(e.indices.length/3):0;break;case\"lines\":i=new lo(this,_.apply({layerIndex:0},e)),this._numLines+=e.indices?Math.round(e.indices.length/2):0;break;case\"points\":i=new Jo(this,_.apply({layerIndex:0},e)),this._numPoints+=e.positions?Math.round(e.positions.length/3):0}this._instancingLayers[t]=i,this._layerList.push(i),this.numGeometries++}else this.error(\"Config missing: primitive\")}createMesh(e){let t=e.id;if(null==t)return void this.error(\"Config missing: id\");if(this._meshes[t])return void this.error(\"PerformanceModel already has a Mesh with this ID: \"+t);const i=e.geometryId,s=void 0!==i;if(s){if(!ea)return void this.error(\"WebGL instanced arrays not supported\");if(!this._instancingLayers[i])return void this.error(\"Geometry not found: \"+i+\" - ensure that you create it first with createGeometry()\")}let r,o;const a=e.color?new Uint8Array([Math.floor(255*e.color[0]),Math.floor(255*e.color[1]),Math.floor(255*e.color[2])]):[255,255,255],n=void 0!==e.opacity&&null!==e.opacity?Math.floor(255*e.opacity):255,l=void 0!==e.metallic&&null!==e.metallic?Math.floor(255*e.metallic):0,h=void 0!==e.roughness&&null!==e.roughness?Math.floor(255*e.roughness):255,c=new yi(this,t,a,n),d=c.pickId,p=new Uint8Array([255&d,d>>8&255,d>>16&255,d>>24&255]),f=u.collapseAABB3();if(s){let t,s=this._worldMatrixNonIdentity?this._worldMatrix:null;if(e.matrix)t=e.matrix;else{const i=e.scale||ia,s=e.position||sa,r=e.rotation||ra;u.eulerToQuaternion(r,\"XYZ\",oa),t=u.composeMat4(s,oa,i,ta)}const d=this._instancingLayers[i];r=d,o=d.createPortion({color:a,metallic:l,roughness:h,opacity:n,meshMatrix:t,worldMatrix:s,aabb:f,pickColor:p}),u.expandAABB3(this._aabb,f);const _=Math.round(d.numIndices/3);this._numTriangles+=_,c.numTriangles=_,c.rtcCenter=d.rtcCenter}else{let t=e.primitive||\"triangles\";\"points\"!==t&&\"lines\"!==t&&\"triangles\"!==t&&\"solid\"!==t&&\"surface\"!==t&&(this.error(`Unsupported value for 'primitive': '${t}' - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.`),t=\"triangles\");let i=e.positions;if(!i)return this.error(\"Config missing: positions (no meshIds provided, so expecting geometry arrays instead)\"),null;let s=e.indices,d=e.edgeIndices;if(!e.indices&&\"triangles\"===t)return this.error(\"Config missing for triangles primitive: indices (no meshIds provided, so expecting geometry arrays instead)\"),null;let _=!1;if(e.rtcCenter&&(this._lastRTCCenter?u.compareVec3(this._lastRTCCenter,e.rtcCenter)||(_=!0,this._lastRTCCenter.set(e.rtcCenter)):(_=!0,this._lastRTCCenter=u.vec3(e.rtcCenter))),e.positionsDecodeMatrix&&(this._lastDecodeMatrix?u.compareMat4(this._lastDecodeMatrix,e.positionsDecodeMatrix)||(_=!0,this._lastDecodeMatrix.set(e.positionsDecodeMatrix)):(_=!0,this._lastDecodeMatrix=u.mat4(e.positionsDecodeMatrix))),_){for(let e in this._currentBatchingLayers)this._currentBatchingLayers.hasOwnProperty(e)&&this._currentBatchingLayers[e].finalize();this._currentBatchingLayers={}}const g=!!e.normals&&e.normals.length>0;\"triangles\"!==t&&\"solid\"!==t&&\"surface\"!==t||(null!==this._lastNormals&&g!==this._lastNormals&&[\"triangles\",\"solid\",\"surface\"].map((e=>{this._currentBatchingLayers[e]&&(this._currentBatchingLayers[e].finalize(),delete this._currentBatchingLayers[e])})),this._lastNormals=g);const m=this._worldMatrixNonIdentity?this._worldMatrix:null;let v;if(!e.positionsDecodeMatrix)if(e.matrix)v=e.matrix;else{const t=e.scale||ia,i=e.position||sa,s=e.rotation||ra;u.eulerToQuaternion(s,\"XYZ\",oa),v=u.composeMat4(i,oa,t,ta)}switch(r=this._currentBatchingLayers[t],t){case\"triangles\":case\"solid\":case\"surface\":r&&(r.canCreatePortion(i.length,s.length)||(r.finalize(),delete this._currentBatchingLayers[t],r=null)),r||(r=new js(this,{layerIndex:0,scratchMemory:this._scratchMemory,positionsDecodeMatrix:e.positionsDecodeMatrix,rtcCenter:e.rtcCenter,maxGeometryBatchSize:this._maxGeometryBatchSize,solid:\"solid\"===t,autoNormals:!g}),this._layerList.push(r),this._currentBatchingLayers[t]=r),d||(d=Xe(i,s,null,this._edgeThreshold)),o=r.createPortion({positions:i,normals:e.normals,indices:s,edgeIndices:d,color:a,metallic:l,roughness:h,colors:e.colors,colorsCompressed:e.colorsCompressed,opacity:n,meshMatrix:v,worldMatrix:m,worldAABB:f,pickColor:p});const u=Math.round(s.length/3);this._numTriangles+=u,c.numTriangles=u;break;case\"lines\":r&&(r.canCreatePortion(i.length,s.length)||(r.finalize(),delete this._currentBatchingLayers[t],r=null)),r||(r=new Kr(this,{layerIndex:0,scratchMemory:this._scratchMemory,positionsDecodeMatrix:e.positionsDecodeMatrix,rtcCenter:e.rtcCenter,maxGeometryBatchSize:this._maxGeometryBatchSize}),this._layerList.push(r),this._currentBatchingLayers[t]=r),o=r.createPortion({positions:i,indices:s,color:a,colors:e.colors,colorsCompressed:e.colorsCompressed,opacity:n,meshMatrix:v,worldMatrix:m,worldAABB:f,pickColor:p}),this._numLines+=Math.round(s.length/2);break;case\"points\":r&&(r.canCreatePortion(i.length)||(r.finalize(),delete this._currentBatchingLayers[t],r=null)),r||(r=new Bo(this,{layerIndex:0,scratchMemory:this._scratchMemory,positionsDecodeMatrix:e.positionsDecodeMatrix,rtcCenter:e.rtcCenter,maxGeometryBatchSize:this._maxGeometryBatchSize}),this._layerList.push(r),this._currentBatchingLayers[t]=r),o=r.createPortion({positions:i,color:a,colors:e.colors,colorsCompressed:e.colorsCompressed,opacity:n,meshMatrix:v,worldMatrix:m,worldAABB:f,pickColor:p}),this._numPoints+=Math.round(i.length/3)}u.expandAABB3(this._aabb,f),this.numGeometries++,c.rtcCenter=e.rtcCenter}c.parent=null,c._layer=r,c._portionId=o,c.aabb=f,this._meshes[t]=c}createEntity(e){let t=e.id;void 0===t?t=u.createUUID():this.scene.components[t]&&(this.error(\"Scene already has a Component with this ID: \"+t+\" - will assign random ID\"),t=u.createUUID());const i=e.meshIds;if(void 0===i)return void this.error(\"Config missing: meshIds\");let s=[];for(let e=0,t=i.length;ee.sortIdt.sortId?1:0));for(let e=0,t=this._layerList.length;e0}set xrayed(e){e=!!e,this._xrayed=e;for(let t=0,i=this._nodeList.length;t0}set highlighted(e){e=!!e,this._highlighted=e;for(let t=0,i=this._nodeList.length;t0}set selected(e){e=!!e,this._selected=e;for(let t=0,i=this._nodeList.length;t0}set edges(e){e=!!e,this._edges=e;for(let t=0,i=this._nodeList.length;t0}set culled(e){e=!!e,this._culled=e;for(let t=0,i=this._nodeList.length;t0}set colorize(e){this._colorize=e;for(let t=0,i=this._nodeList.length;t0&&0===this.renderFlags.numVisibleLayers?this.renderFlags.culled=!0:this._updateRenderFlags()}_updateRenderFlagsVisibleLayers(){const e=this.renderFlags;e.numLayers=this._layerList.length,e.numVisibleLayers=0;for(let t=0,i=this._layerList.length;t0)for(let e=0;e0&&(e.colorTransparent=!0),this.numXRayedLayerPortions>0){const t=this.scene.xrayMaterial._state;t.fill&&(t.fillAlpha<1?e.xrayedSilhouetteTransparent=!0:e.xrayedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.xrayedEdgesTransparent=!0:e.xrayedEdgesOpaque=!0)}if(this.numEdgesLayerPortions>0){this.scene.edgeMaterial._state.edges&&(e.edgesOpaque=this.numTransparentLayerPortions0&&(e.edgesTransparent=!0))}if(this.numSelectedLayerPortions>0){const t=this.scene.selectedMaterial._state;t.fill&&(t.fillAlpha<1?e.selectedSilhouetteTransparent=!0:e.selectedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.selectedEdgesTransparent=!0:e.selectedEdgesOpaque=!0)}if(this.numHighlightedLayerPortions>0){const t=this.scene.highlightMaterial._state;t.fill&&(t.fillAlpha<1?e.highlightedSilhouetteTransparent=!0:e.highlightedSilhouetteOpaque=!0),t.edges&&(t.edgeAlpha<1?e.highlightedEdgesTransparent=!0:e.highlightedEdgesOpaque=!0)}}get xrayMaterial(){return this.scene.xrayMaterial}get highlightMaterial(){return this.scene.highlightMaterial}get selectedMaterial(){return this.scene.selectedMaterial}get edgeMaterial(){return this.scene.edgeMaterial}drawColorOpaque(e){const t=this.renderFlags;for(let i=0,s=t.visibleLayers.length;i>t;return e+1}class wa extends C{get type(){return\"Texture\"}constructor(e,t={}){super(e,t),this._state=new ye({texture:new Pa(this.scene.canvas.gl),matrix:u.identityMat4(),hasMatrix:t.translate&&(0!==t.translate[0]||0!==t.translate[1])||!!t.rotate||t.scale&&(0!==t.scale[0]||0!==t.scale[1]),minFilter:this._checkMinFilter(t.minFilter),magFilter:this._checkMagFilter(t.magFilter),wrapS:this._checkWrapS(t.wrapS),wrapT:this._checkWrapT(t.wrapT),flipY:this._checkFlipY(t.flipY),encoding:this._checkEncoding(t.encoding)}),this._src=null,this._image=null,this._translate=u.vec2([0,0]),this._scale=u.vec2([1,1]),this._rotate=u.vec2([0,0]),this._matrixDirty=!1,this.translate=t.translate,this.scale=t.scale,this.rotate=t.rotate,t.src?this.src=t.src:t.image&&(this.image=t.image),d.memory.textures++}_checkMinFilter(e){return\"linear\"!==(e=e||\"linearMipmapLinear\")&&\"linearMipmapNearest\"!==e&&\"linearMipmapLinear\"!==e&&\"nearestMipmapLinear\"!==e&&\"nearestMipmapNearest\"!==e&&(this.error(\"Unsupported value for 'minFilter': '\"+e+\"' - supported values are 'linear', 'linearMipmapNearest', 'nearestMipmapNearest', 'nearestMipmapLinear' and 'linearMipmapLinear'. Defaulting to 'linearMipmapLinear'.\"),e=\"linearMipmapLinear\"),e}_checkMagFilter(e){return\"linear\"!==(e=e||\"linear\")&&\"nearest\"!==e&&(this.error(\"Unsupported value for 'magFilter': '\"+e+\"' - supported values are 'linear' and 'nearest'. Defaulting to 'linear'.\"),e=\"linear\"),e}_checkFilter(e){return\"linear\"!==(e=e||\"linear\")&&\"nearest\"!==e&&(this.error(\"Unsupported value for 'magFilter': '\"+e+\"' - supported values are 'linear' and 'nearest'. Defaulting to 'linear'.\"),e=\"linear\"),e}_checkWrapS(e){return\"clampToEdge\"!==(e=e||\"repeat\")&&\"mirroredRepeat\"!==e&&\"repeat\"!==e&&(this.error(\"Unsupported value for 'wrapS': '\"+e+\"' - supported values are 'clampToEdge', 'mirroredRepeat' and 'repeat'. Defaulting to 'repeat'.\"),e=\"repeat\"),e}_checkWrapT(e){return\"clampToEdge\"!==(e=e||\"repeat\")&&\"mirroredRepeat\"!==e&&\"repeat\"!==e&&(this.error(\"Unsupported value for 'wrapT': '\"+e+\"' - supported values are 'clampToEdge', 'mirroredRepeat' and 'repeat'. Defaulting to 'repeat'.\"),e=\"repeat\"),e}_checkFlipY(e){return!!e}_checkEncoding(e){return\"linear\"!==(e=e||\"linear\")&&\"sRGB\"!==e&&\"gamma\"!==e&&(this.error(\"Unsupported value for 'encoding': '\"+e+\"' - supported values are 'linear', 'sRGB', 'gamma'. Defaulting to 'linear'.\"),e=\"linear\"),e}_webglContextRestored(){this._state.texture=new Pa(this.scene.canvas.gl),this._image?this.image=this._image:this._src&&(this.src=this._src)}_update(){const e=this._state;if(this._matrixDirty){let t,i;0===this._translate[0]&&0===this._translate[1]||(t=u.translationMat4v([this._translate[0],this._translate[1],0],this._state.matrix)),1===this._scale[0]&&1===this._scale[1]||(i=u.scalingMat4v([this._scale[0],this._scale[1],1]),t=t?u.mulMat4(t,i):i),0!==this._rotate&&(i=u.rotationMat4v(.0174532925*this._rotate,[0,0,1]),t=t?u.mulMat4(t,i):i),t&&(e.matrix=t),this._matrixDirty=!1}this.glRedraw()}set image(e){this._image=ya(e),this._image.crossOrigin=\"Anonymous\",this._state.texture.setImage(this._image,this._state),this._state.texture.setProps(this._state),this._src=null,this.glRedraw()}get image(){return this._image}set src(e){this.scene.loading++,this.scene.canvas.spinner.processes++;const t=this;let i=new Image;i.onload=function(){i=ya(i),t._state.texture.setImage(i,t._state),t._state.texture.setProps(t._state),t.scene.loading--,t.glRedraw(),t.scene.canvas.spinner.processes--},i.src=e,this._src=e,this._image=null}get src(){return this._src}set translate(e){this._translate.set(e||[0,0]),this._matrixDirty=!0,this._needUpdate()}get translate(){return this._translate}set scale(e){this._scale.set(e||[1,1]),this._matrixDirty=!0,this._needUpdate()}get scale(){return this._scale}set rotate(e){e=e||0,this._rotate!==e&&(this._rotate=e,this._matrixDirty=!0,this._needUpdate())}get rotate(){return this._rotate}get minFilter(){return this._state.minFilter}get magFilter(){return this._state.magFilter}get wrapS(){return this._state.wrapS}get wrapT(){return this._state.wrapT}get flipY(){return this._state.flipY}get encoding(){return this._state.encoding}destroy(){super.destroy(),this._state.texture&&this._state.texture.destroy(),this._state.destroy(),d.memory.textures--}}const Ea={IfcOpeningElement:{pickable:!1,visible:!1},IfcSpace:{colorize:[.137255,.403922,.870588],pickable:!1,visible:!1,opacity:.4},IfcWindow:{colorize:[.137255,.403922,.870588],opacity:.3},IfcPlate:{colorize:[.8470588235,.427450980392,0,.5],opacity:.3},DEFAULT:{}};function Ca(e,t={}){const i=\"lightgrey\",s=t.hoverColor||\"rgba(0,0,0,0.4)\",r=500,o=r+r/3,a=o/24,n=[{boundary:[6,6,6,6],color:t.frontColor||t.color||\"#55FF55\"},{boundary:[18,6,6,6],color:t.backColor||t.color||\"#55FF55\"},{boundary:[12,6,6,6],color:t.leftColor||t.color||\"#FF5555\"},{boundary:[0,6,6,6],color:t.rightColor||t.color||\"#FF5555\"},{boundary:[6,0,6,6],color:t.topColor||t.color||\"#7777FF\"},{boundary:[6,12,6,6],color:t.bottomColor||t.color||\"#7777FF\"}],l=[{label:\"NavCube.front\",boundaries:[[7,7,4,4]],dir:[0,1,0],up:[0,0,1]},{label:\"NavCube.back\",boundaries:[[19,7,4,4]],dir:[0,-1,0],up:[0,0,1]},{label:\"NavCube.right\",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,0,1]},{label:\"NavCube.left\",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,0,1]},{label:\"NavCube.top\",boundaries:[[7,1,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:\"NavCube.bottom\",boundaries:[[7,13,4,4]],dir:[0,0,1],up:[0,-1,0]},{boundaries:[[7,5,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,0,-1],up:[1,0,1]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-1,-1],up:[0,-1,1]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,0,-1],up:[-1,0,1]},{boundaries:[[7,11,4,2]],dir:[0,1,1],up:[0,-1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,0,1],up:[-1,0,1]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,-1,1],up:[0,1,1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,0,1],up:[1,0,1]},{boundaries:[[5,7,2,4]],dir:[1,1,0],up:[0,0,1]},{boundaries:[[11,7,2,4]],dir:[-1,1,0],up:[0,0,1]},{boundaries:[[17,7,2,4]],dir:[-1,-1,0],up:[0,0,1]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,-1,0],up:[0,0,1]},{boundaries:[[5,11,2,2]],dir:[1,1,1],up:[-1,-1,1]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[1,-1,1],up:[-1,1,1]},{boundaries:[[5,5,2,2]],dir:[1,1,-1],up:[1,1,1]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-1,-1,1],up:[1,1,1]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-1,-1,-1],up:[-1,-1,1]},{boundaries:[[11,11,2,2]],dir:[-1,1,1],up:[1,-1,1]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[1,-1,-1],up:[1,-1,1]},{boundaries:[[11,5,2,2]],dir:[-1,1,-1],up:[-1,1,1]}];t.frontColor||t.color,t.backColor||t.color,t.leftColor||t.color,t.rightColor||t.color,t.topColor||t.color,t.bottomColor||t.color;const h=[{yUp:\"\",label:\"NavCube.front\",boundaries:[[7,7,4,4]],dir:[0,0,-1],up:[0,1,0]},{label:\"NavCube.back\",boundaries:[[19,7,4,4]],dir:[0,0,1],up:[0,1,0]},{label:\"NavCube.right\",boundaries:[[13,7,4,4]],dir:[-1,0,0],up:[0,1,0]},{label:\"NavCube.left\",boundaries:[[1,7,4,4]],dir:[1,0,0],up:[0,1,0]},{label:\"NavCube.top\",boundaries:[[7,1,4,4]],dir:[0,-1,0],up:[0,0,-1]},{label:\"NavCube.bottom\",boundaries:[[7,13,4,4]],dir:[0,1,0],up:[0,0,1]},{boundaries:[[7,5,4,2]],dir:[0,-.7071,-.7071],up:[0,.7071,-.7071]},{boundaries:[[1,6,4,1],[6,1,1,4]],dir:[1,-1,0],up:[1,1,0]},{boundaries:[[7,0,4,1],[19,6,4,1]],dir:[0,-.7071,.7071],up:[0,.7071,.7071]},{boundaries:[[13,6,4,1],[11,1,1,4]],dir:[-1,-1,0],up:[-1,1,0]},{boundaries:[[7,11,4,2]],dir:[0,1,-1],up:[0,1,1]},{boundaries:[[1,11,4,1],[6,13,1,4]],dir:[1,1,0],up:[-1,1,0]},{boundaries:[[7,17,4,1],[19,11,4,1]],dir:[0,1,1],up:[0,1,-1]},{boundaries:[[13,11,4,1],[11,13,1,4]],dir:[-1,1,0],up:[1,1,0]},{boundaries:[[5,7,2,4]],dir:[1,0,-1],up:[0,1,0]},{boundaries:[[11,7,2,4]],dir:[-1,0,-1],up:[0,1,0]},{boundaries:[[17,7,2,4]],dir:[-1,0,1],up:[0,1,0]},{boundaries:[[0,7,1,4],[23,7,1,4]],dir:[1,0,1],up:[0,1,0]},{boundaries:[[5,11,2,2]],dir:[.5,.7071,-.5],up:[-.5,.7071,.5]},{boundaries:[[23,11,1,1],[6,17,1,1],[0,11,1,1]],dir:[.5,.7071,.5],up:[-.5,.7071,-.5]},{boundaries:[[5,5,2,2]],dir:[.5,-.7071,-.5],up:[.5,.7071,-.5]},{boundaries:[[11,17,1,1],[17,11,2,1]],dir:[-.5,.7071,.5],up:[.5,.7071,-.5]},{boundaries:[[17,6,2,1],[11,0,1,1]],dir:[-.5,-.7071,.5],up:[-.5,.7071,.5]},{boundaries:[[11,11,2,2]],dir:[-.5,.7071,-.5],up:[.5,.7071,.5]},{boundaries:[[0,6,1,1],[6,0,1,1],[23,6,1,1]],dir:[.5,-.7071,.5],up:[.5,.7071,.5]},{boundaries:[[11,5,2,2]],dir:[-.5,-.7071,-.5],up:[-.5,.7071,-.5]}];for(let e=0,t=l.length;e=r[0]*a&&t<=(r[0]+r[2])*a&&i>=r[1]*a&&i<=(r[1]+r[3])*a)return s}}return-1},this.setAreaHighlighted=function(e,t){var i=c[e];if(!i)throw\"Area not found: \"+e;i.highlighted=!!t,f()},this.getAreaDir=function(e){var t=c[e];if(!t)throw\"Unknown area: \"+e;return t.dir},this.getAreaUp=function(e){var t=c[e];if(!t)throw\"Unknown area: \"+e;return t.up},this.getImage=function(){return this._textureCanvas},this.destroy=function(){this._textureCanvas&&(this._textureCanvas.parentNode.removeChild(this._textureCanvas),this._textureCanvas=null)}}class Aa extends a{constructor(e,t={}){super(\"NavCube\",e,t),e.navCube=this;try{this._navCubeScene=new mt(e,{canvasId:t.canvasId,canvasElement:t.canvasElement,transparent:!0}),this._navCubeCanvas=this._navCubeScene.canvas.canvas,this._navCubeScene.input.keyboardEnabled=!1}catch(e){return void this.error(e)}const i=this._navCubeScene;i.clearLights(),new ze(i,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:\"view\"}),new ze(i,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:\"view\"}),new ze(i,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:\"view\"}),this._navCubeCamera=i.camera,this._navCubeCamera.ortho.scale=7,this._navCubeCamera.ortho.near=.1,this._navCubeCamera.ortho.far=2e3,i.edgeMaterial.edgeColor=[.2,.2,.2],i.edgeMaterial.edgeAlpha=.6,this._zUp=Boolean(e.camera.zUp);var s=this;this._synchCamera=function(){var t=u.rotationMat4c(-90*u.DEGTORAD,1,0,0),i=u.vec3(),r=u.vec3(),o=u.vec3();return function(){var a=e.camera.eye,n=e.camera.look,l=e.camera.up;i=u.mulVec3Scalar(u.normalizeVec3(u.subVec3(a,n,i)),5),s._zUp?(u.transformVec3(t,i,r),u.transformVec3(t,l,o),s._navCubeCamera.look=[0,0,0],s._navCubeCamera.eye=u.transformVec3(t,i,r),s._navCubeCamera.up=u.transformPoint3(t,l,o)):(s._navCubeCamera.look=[0,0,0],s._navCubeCamera.eye=i,s._navCubeCamera.up=l)}}(),this._cubeTextureCanvas=new Ca(e,t),this._cubeSampler=new wa(i,{image:this._cubeTextureCanvas.getImage(),flipY:!0,wrapS:\"clampToEdge\",wrapT:\"clampToEdge\"}),this._cubeMesh=new li(i,{geometry:new Je(i,{primitive:\"triangles\",normals:[0,0,1,0,0,1,0,0,1,0,0,1,1,0,0,1,0,0,1,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,-1,0,0,-1,0,0,-1,0,0,-1],positions:[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,1,1,-1,-1,1,-1,-1,1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1],uv:[.5,.6666,.25,.6666,.25,.3333,.5,.3333,.5,.6666,.5,.3333,.75,.3333,.75,.6666,.5,.6666,.5,1,.25,1,.25,.6666,.25,.6666,0,.6666,0,.3333,.25,.3333,.25,0,.5,0,.5,.3333,.25,.3333,.75,.3333,1,.3333,1,.6666,.75,.6666],indices:[0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23]}),material:new rt(i,{diffuse:[.4,.4,.4],specular:[.4,.4,.4],emissive:[.6,.6,.6],diffuseMap:this._cubeSampler,emissiveMap:this._cubeSampler}),visible:!0,edges:!0}),this._shadow=!1===t.shadowVisible?null:new li(i,{geometry:new Je(i,ci({center:[0,0,0],radiusTop:.001,radiusBottom:1.4,height:.01,radialSegments:20,heightSegments:1,openEnded:!0})),material:new rt(i,{diffuse:[0,0,0],specular:[0,0,0],emissive:[0,0,0],alpha:.5}),position:[0,-1.5,0],visible:!0,pickable:!1,backfaces:!1}),this._onCameraMatrix=e.camera.on(\"matrix\",this._synchCamera),this._onCameraWorldAxis=e.camera.on(\"worldAxis\",(()=>{e.camera.zUp?(this._zUp=!0,this._cubeTextureCanvas.setZUp(),this._repaint(),this._synchCamera()):e.camera.yUp&&(this._zUp=!1,this._cubeTextureCanvas.setYUp(),this._repaint(),this._synchCamera())})),this._onCameraFOV=e.camera.perspective.on(\"fov\",(e=>{this._synchProjection&&(this._navCubeCamera.perspective.fov=e)})),this._onCameraProjection=e.camera.on(\"projection\",(e=>{this._synchProjection&&(this._navCubeCamera.projection=\"ortho\"===e||\"perspective\"===e?e:\"perspective\")}));var r=-1;function o(e){var t=[0,0];if(e){for(var i=e.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t}var a,n,l=null,h=null,c=!1,d=!1,p=.5;s._navCubeCanvas.addEventListener(\"mouseenter\",s._onMouseEnter=function(e){d=!0}),s._navCubeCanvas.addEventListener(\"mouseleave\",s._onMouseLeave=function(e){d=!1}),s._navCubeCanvas.addEventListener(\"mousedown\",s._onMouseDown=function(e){if(1===e.which){l=e.x,h=e.y,a=e.clientX,n=e.clientY;var t=o(e),s=i.pick({canvasPos:t});c=!!s}}),document.addEventListener(\"mouseup\",s._onMouseUp=function(e){if(1===e.which&&(c=!1,null!==l)){var t=o(e),a=i.pick({canvasPos:t,pickSurface:!0});if(a&&a.uv){var n=s._cubeTextureCanvas.getArea(a.uv);if(n>=0&&(document.body.style.cursor=\"pointer\",r>=0&&(s._cubeTextureCanvas.setAreaHighlighted(r,!1),s._repaint(),r=-1),n>=0)){if(s._cubeTextureCanvas.setAreaHighlighted(n,!0),r=n,s._repaint(),e.xl+3||e.yh+3)return;var u=s._cubeTextureCanvas.getAreaDir(n);if(u){var d=s._cubeTextureCanvas.getAreaUp(n);f(u,d,(function(){r>=0&&(s._cubeTextureCanvas.setAreaHighlighted(r,!1),s._repaint(),r=-1),document.body.style.cursor=\"pointer\",r>=0&&(s._cubeTextureCanvas.setAreaHighlighted(r,!1),s._repaint(),r=-1),n>=0&&(s._cubeTextureCanvas.setAreaHighlighted(n,!1),r=-1,s._repaint())}))}}}}}),document.addEventListener(\"mousemove\",s._onMouseMove=function(t){if(r>=0&&(s._cubeTextureCanvas.setAreaHighlighted(r,!1),s._repaint(),r=-1),1!==t.buttons||c){if(c){var l=t.clientX,h=t.clientY;return document.body.style.cursor=\"move\",void function(t,i){var s=(t-a)*-p,r=(i-n)*-p;e.camera.orbitYaw(s),e.camera.orbitPitch(-r),a=t,n=i}(l,h)}if(d){var u=o(t),f=i.pick({canvasPos:u,pickSurface:!0});if(f){if(f.uv){document.body.style.cursor=\"pointer\";var _=s._cubeTextureCanvas.getArea(f.uv);if(_===r)return;r>=0&&s._cubeTextureCanvas.setAreaHighlighted(r,!1),_>=0&&(s._cubeTextureCanvas.setAreaHighlighted(_,!0),s._repaint(),r=_)}}else document.body.style.cursor=\"default\",r>=0&&(s._cubeTextureCanvas.setAreaHighlighted(r,!1),s._repaint(),r=-1)}}});var f=function(){var t=u.vec3();return function(i,r,o){var a=s._fitVisible?e.scene.getAABB(e.scene.visibleObjectIds):e.scene.aabb,n=u.getAABB3Diag(a);u.getAABB3Center(a,t);var l=Math.abs(n/Math.tan(s._cameraFitFOV*u.DEGTORAD));e.cameraControl.pivotPos=t,s._cameraFly?e.cameraFlight.flyTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:r||[0,1,0],orthoScale:1.1*n,fitFOV:s._cameraFitFOV,duration:s._cameraFlyDuration},o):e.cameraFlight.jumpTo({look:t,eye:[t[0]-l*i[0],t[1]-l*i[1],t[2]-l*i[2]],up:r||[0,1,0],orthoScale:1.1*n,fitFOV:s._cameraFitFOV},o)}}();this._onUpdated=e.localeService.on(\"updated\",(()=>{this._cubeTextureCanvas.clear(),this._repaint()})),this.setVisible(t.visible),this.setCameraFitFOV(t.cameraFitFOV),this.setCameraFly(t.cameraFly),this.setCameraFlyDuration(t.cameraFlyDuration),this.setFitVisible(t.fitVisible),this.setSynchProjection(t.synchProjection)}send(e,t){switch(e){case\"language\":this._cubeTextureCanvas.clear(),this._repaint()}}_repaint(){const e=this._cubeTextureCanvas.getImage();this._cubeMesh.material.diffuseMap.image=e,this._cubeMesh.material.emissiveMap.image=e}setVisible(e=!0){this._navCubeCanvas&&(this._cubeMesh.visible=e,this._shadow&&(this._shadow.visible=e),this._navCubeCanvas.style.visibility=e?\"visible\":\"hidden\")}getVisible(){return!!this._navCubeCanvas&&this._cubeMesh.visible}setFitVisible(e=!1){this._fitVisible=e}getFitVisible(){return this._fitVisible}setCameraFly(e=!0){this._cameraFly=e}getCameraFly(){return this._cameraFly}setCameraFitFOV(e=45){this._cameraFitFOV=e}getCameraFitFOV(){return this._cameraFitFOV}setCameraFlyDuration(e=.5){this._cameraFlyDuration=e}getCameraFlyDuration(){return this._cameraFlyDuration}setSynchProjection(e=!1){this._synchProjection=e}getSynchProjection(){return this._synchProjection}destroy(){this._navCubeCanvas&&(this.viewer.localeService.off(this._onUpdated),this.viewer.camera.off(this._onCameraMatrix),this.viewer.camera.off(this._onCameraWorldAxis),this.viewer.camera.perspective.off(this._onCameraFOV),this.viewer.camera.off(this._onCameraProjection),this._navCubeCanvas.removeEventListener(\"mouseenter\",this._onMouseEnter),this._navCubeCanvas.removeEventListener(\"mouseleave\",this._onMouseLeave),this._navCubeCanvas.removeEventListener(\"mousedown\",this._onMouseDown),document.removeEventListener(\"mousemove\",this._onMouseMove),document.removeEventListener(\"mouseup\",this._onMouseUp),this._navCubeCanvas=null,this._cubeTextureCanvas.destroy(),this._cubeTextureCanvas=null,this._onMouseEnter=null,this._onMouseLeave=null,this._onMouseDown=null,this._onMouseMove=null,this._onMouseUp=null),this._navCubeScene.destroy(),this._navCubeScene=null,this._cubeMesh=null,this._shadow=null,super.destroy()}}u.vec3();function Sa(e={}){let t=e.radius||1;t<0&&(console.error(\"negative radius not allowed - will invert\"),t*=-1),t*=.5;let i=e.tube||.3;i<0&&(console.error(\"negative tube not allowed - will invert\"),i*=-1);let s=e.radialSegments||32;s<0&&(console.error(\"negative radialSegments not allowed - will invert\"),s*=-1),s<4&&(s=4);let r=e.tubeSegments||24;r<0&&(console.error(\"negative tubeSegments not allowed - will invert\"),r*=-1),r<4&&(r=4);let o=e.arc||2*Math.PI;o<0&&(console.warn(\"negative arc not allowed - will invert\"),o*=-1),o>360&&(o=360);const a=e.center;let n=a?a[0]:0,l=a?a[1]:0;const h=a?a[2]:0,c=[],d=[],p=[],f=[];let g,m,v,b,P,y,x,M,w,E,C,A;for(M=0;M<=r;M++)for(x=0;x<=s;x++)g=x/s*o,m=.785398+M/r*Math.PI*2,n=t*Math.cos(g),l=t*Math.sin(g),v=(t+i*Math.cos(m))*Math.cos(g),b=(t+i*Math.cos(m))*Math.sin(g),P=i*Math.sin(m),c.push(v+n),c.push(b+l),c.push(P+h),p.push(1-x/s),p.push(M/r),y=u.normalizeVec3(u.subVec3([v,b,P],[n,l,h],[]),[]),d.push(y[0]),d.push(y[1]),d.push(y[2]);for(M=1;M<=r;M++)for(x=1;x<=s;x++)w=(s+1)*M+x-1,E=(s+1)*(M-1)+x-1,C=(s+1)*(M-1)+x,A=(s+1)*M+x,f.push(w),f.push(E),f.push(C),f.push(C),f.push(A),f.push(w);return _.apply(e,{positions:c,normals:d,uv:p,indices:f})}const Da=new Float64Array([0,0,1]),La=new Float64Array(4);class Ba{constructor(e){this.id=null,this._viewer=e.viewer,this._visible=!1,this._pos=u.vec3(),this._rtcCenter=u.vec3(),this._rtcPos=u.vec3(),this._baseDir=u.vec3(),this._rootNode=null,this._displayMeshes=null,this._affordanceMeshes=null,this._ignoreNextSectionPlaneDirUpdate=!1,this._createNodes(),this._bindEvents()}_setSectionPlane(e){this._sectionPlane&&(this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._onSectionPlanePos=null,this._onSectionPlaneDir=null,this._sectionPlane=null),e&&(this.id=e.id,this._setPos(e.pos),this._setDir(e.dir),this._sectionPlane=e,this._onSectionPlanePos=e.on(\"pos\",(()=>{this._setPos(this._sectionPlane.pos)})),this._onSectionPlaneDir=e.on(\"dir\",(()=>{this._ignoreNextSectionPlaneDirUpdate?this._ignoreNextSectionPlaneDirUpdate=!1:this._setDir(this._sectionPlane.dir)})))}get sectionPlane(){return this._sectionPlane}_setPos(e){this._pos.set(e),function(e,t,i){const s=Float32Array.from([e[0]])[0],r=e[0]-s,o=Float32Array.from([e[1]])[0],a=e[1]-o,n=Float32Array.from([e[2]])[0],l=e[2]-n;t[0]=s,t[1]=o,t[2]=n,i[0]=r,i[1]=a,i[2]=l}(this._pos,this._rtcCenter,this._rtcPos),this._rootNode.rtcCenter=this._rtcCenter,this._rootNode.position=this._rtcPos}_setDir(e){this._baseDir.set(e),this._rootNode.quaternion=u.vec3PairToQuaternion(Da,e,La)}_setSectionPlaneDir(e){this._sectionPlane&&(this._ignoreNextSectionPlaneDirUpdate=!0,this._sectionPlane.dir=e)}setVisible(e=!0){if(this._visible!==e){var t;for(t in this._visible=e,this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].visible=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].visible=e)}}getVisible(){return this._visible}setCulled(e){var t;for(t in this._displayMeshes)this._displayMeshes.hasOwnProperty(t)&&(this._displayMeshes[t].culled=e);if(!e)for(t in this._affordanceMeshes)this._affordanceMeshes.hasOwnProperty(t)&&(this._affordanceMeshes[t].culled=e)}_createNodes(){const e=!1,t=this._viewer.scene,i=.01;this._rootNode=new ga(t,{position:[0,0,0],scale:[5,5,5]});const s=this._rootNode,r={arrowHead:new Je(s,ci({radiusTop:.001,radiusBottom:.07,radialSegments:32,heightSegments:1,height:.2,openEnded:!1})),arrowHeadBig:new Je(s,ci({radiusTop:.001,radiusBottom:.09,radialSegments:32,heightSegments:1,height:.25,openEnded:!1})),arrowHeadHandle:new Je(s,ci({radiusTop:.09,radiusBottom:.09,radialSegments:8,heightSegments:1,height:.37,openEnded:!1})),curve:new Je(s,Sa({radius:.8,tube:i,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),curveHandle:new Je(s,Sa({radius:.8,tube:.06,radialSegments:64,tubeSegments:14,arc:2*Math.PI/4})),hoop:new Je(s,Sa({radius:.8,tube:i,radialSegments:64,tubeSegments:8,arc:2*Math.PI})),axis:new Je(s,ci({radiusTop:i,radiusBottom:i,radialSegments:20,heightSegments:1,height:1,openEnded:!1})),axisHandle:new Je(s,ci({radiusTop:.08,radiusBottom:.08,radialSegments:20,heightSegments:1,height:1,openEnded:!1}))},o={pickable:new rt(s,{diffuse:[1,1,0],alpha:0,alphaMode:\"blend\"}),red:new rt(s,{diffuse:[1,0,0],emissive:[1,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightRed:new at(s,{edges:!1,fill:!0,fillColor:[1,0,0],fillAlpha:.6}),green:new rt(s,{diffuse:[0,1,0],emissive:[0,1,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightGreen:new at(s,{edges:!1,fill:!0,fillColor:[0,1,0],fillAlpha:.6}),blue:new rt(s,{diffuse:[0,0,1],emissive:[0,0,1],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80,lineWidth:2}),highlightBlue:new at(s,{edges:!1,fill:!0,fillColor:[0,0,1],fillAlpha:.2}),center:new rt(s,{diffuse:[0,0,0],emissive:[0,0,0],ambient:[0,0,0],specular:[.6,.6,.3],shininess:80}),highlightBall:new at(s,{edges:!1,fill:!0,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1}),highlightPlane:new at(s,{edges:!0,edgeWidth:3,fill:!1,fillColor:[.5,.5,.5],fillAlpha:.5,vertices:!1})};this._displayMeshes={plane:s.addChild(new li(s,{geometry:new Je(s,{primitive:\"triangles\",positions:[.5,.5,0,.5,-.5,0,-.5,-.5,0,-.5,.5,0,.5,.5,-0,.5,-.5,-0,-.5,-.5,-0,-.5,.5,-0],indices:[0,1,2,2,3,0]}),material:new rt(s,{emissive:[0,0,0],diffuse:[0,0,0],backfaces:!0}),opacity:.6,ghosted:!0,ghostMaterial:new at(s,{edges:!1,filled:!0,fillColor:[1,1,0],edgeColor:[0,0,0],fillAlpha:.1,backfaces:!0}),pickable:!1,collidable:!0,clippable:!1,visible:!1,scale:[2.4,2.4,1]}),e),planeFrame:s.addChild(new li(s,{geometry:new Je(s,Sa({center:[0,0,0],radius:1.7,tube:.02,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new rt(s,{emissive:[0,0,0],diffuse:[0,0,0],specular:[0,0,0],shininess:0}),highlightMaterial:new at(s,{edges:!1,edgeColor:[0,0,0],filled:!0,fillColor:[.8,.8,.8],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,.1],rotation:[0,0,45]}),e),xCurve:s.addChild(new li(s,{geometry:r.curve,material:o.red,matrix:function(){const e=u.rotationMat4v(90*u.DEGTORAD,[0,1,0],u.identityMat4()),t=u.rotationMat4v(270*u.DEGTORAD,[1,0,0],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1}),e),xCurveHandle:s.addChild(new li(s,{geometry:r.curveHandle,material:o.pickable,matrix:function(){const e=u.rotationMat4v(90*u.DEGTORAD,[0,1,0],u.identityMat4()),t=u.rotationMat4v(270*u.DEGTORAD,[1,0,0],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1}),e),xCurveArrow1:s.addChild(new li(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=u.translateMat4c(0,-.07,-.8,u.identityMat4()),t=u.scaleMat4v([.6,.6,.6],u.identityMat4()),i=u.rotationMat4v(0*u.DEGTORAD,[0,0,1],u.identityMat4());return u.mulMat4(u.mulMat4(e,t,u.identityMat4()),i,u.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1}),e),xCurveArrow2:s.addChild(new li(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=u.translateMat4c(0,-.8,-.07,u.identityMat4()),t=u.scaleMat4v([.6,.6,.6],u.identityMat4()),i=u.rotationMat4v(90*u.DEGTORAD,[1,0,0],u.identityMat4());return u.mulMat4(u.mulMat4(e,t,u.identityMat4()),i,u.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1}),e),yCurve:s.addChild(new li(s,{geometry:r.curve,material:o.green,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1}),e),yCurveHandle:s.addChild(new li(s,{geometry:r.curveHandle,material:o.pickable,rotation:[-90,0,0],pickable:!0,collidable:!0,clippable:!1,backfaces:!0,visible:!1}),e),yCurveArrow1:s.addChild(new li(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=u.translateMat4c(.07,0,-.8,u.identityMat4()),t=u.scaleMat4v([.6,.6,.6],u.identityMat4()),i=u.rotationMat4v(90*u.DEGTORAD,[0,0,1],u.identityMat4());return u.mulMat4(u.mulMat4(e,t,u.identityMat4()),i,u.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1}),e),yCurveArrow2:s.addChild(new li(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=u.translateMat4c(.8,0,-.07,u.identityMat4()),t=u.scaleMat4v([.6,.6,.6],u.identityMat4()),i=u.rotationMat4v(90*u.DEGTORAD,[1,0,0],u.identityMat4());return u.mulMat4(u.mulMat4(e,t,u.identityMat4()),i,u.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1}),e),zCurve:s.addChild(new li(s,{geometry:r.curve,material:o.blue,matrix:u.rotationMat4v(180*u.DEGTORAD,[1,0,0],u.identityMat4()),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zCurveHandle:s.addChild(new li(s,{geometry:r.curveHandle,material:o.pickable,matrix:u.rotationMat4v(180*u.DEGTORAD,[1,0,0],u.identityMat4()),pickable:!0,collidable:!0,clippable:!1,visible:!1}),e),zCurveCurveArrow1:s.addChild(new li(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=u.translateMat4c(.8,-.07,0,u.identityMat4()),t=u.scaleMat4v([.6,.6,.6],u.identityMat4());return u.mulMat4(e,t,u.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1}),e),zCurveArrow2:s.addChild(new li(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=u.translateMat4c(.05,-.8,0,u.identityMat4()),t=u.scaleMat4v([.6,.6,.6],u.identityMat4()),i=u.rotationMat4v(90*u.DEGTORAD,[0,0,1],u.identityMat4());return u.mulMat4(u.mulMat4(e,t,u.identityMat4()),i,u.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1}),e),center:s.addChild(new li(s,{geometry:new Je(s,ui({radius:.05})),material:o.center,pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),xAxisArrow:s.addChild(new li(s,{geometry:r.arrowHead,material:o.red,matrix:function(){const e=u.translateMat4c(0,1.1,0,u.identityMat4()),t=u.rotationMat4v(-90*u.DEGTORAD,[0,0,1],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),xAxisArrowHandle:s.addChild(new li(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=u.translateMat4c(0,1.1,0,u.identityMat4()),t=u.rotationMat4v(-90*u.DEGTORAD,[0,0,1],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1}),e),xAxis:s.addChild(new li(s,{geometry:r.axis,material:o.red,matrix:function(){const e=u.translateMat4c(0,.5,0,u.identityMat4()),t=u.rotationMat4v(-90*u.DEGTORAD,[0,0,1],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),xAxisHandle:s.addChild(new li(s,{geometry:r.axisHandle,material:o.pickable,matrix:function(){const e=u.translateMat4c(0,.5,0,u.identityMat4()),t=u.rotationMat4v(-90*u.DEGTORAD,[0,0,1],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1}),e),yAxisArrow:s.addChild(new li(s,{geometry:r.arrowHead,material:o.green,matrix:function(){const e=u.translateMat4c(0,1.1,0,u.identityMat4()),t=u.rotationMat4v(180*u.DEGTORAD,[1,0,0],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),yAxisArrowHandle:s.addChild(new li(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=u.translateMat4c(0,1.1,0,u.identityMat4()),t=u.rotationMat4v(180*u.DEGTORAD,[1,0,0],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1,opacity:.2}),e),yShaft:s.addChild(new li(s,{geometry:r.axis,material:o.green,position:[0,-.5,0],pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),yShaftHandle:s.addChild(new li(s,{geometry:r.axisHandle,material:o.pickable,position:[0,-.5,0],pickable:!0,collidable:!0,clippable:!1,visible:!1}),e),zAxisArrow:s.addChild(new li(s,{geometry:r.arrowHead,material:o.blue,matrix:function(){const e=u.translateMat4c(0,1.1,0,u.identityMat4()),t=u.rotationMat4v(-90*u.DEGTORAD,[.8,0,0],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zAxisArrowHandle:s.addChild(new li(s,{geometry:r.arrowHeadHandle,material:o.pickable,matrix:function(){const e=u.translateMat4c(0,1.1,0,u.identityMat4()),t=u.rotationMat4v(-90*u.DEGTORAD,[.8,0,0],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!0,collidable:!0,clippable:!1,visible:!1}),e),zShaft:s.addChild(new li(s,{geometry:r.axis,material:o.blue,matrix:function(){const e=u.translateMat4c(0,.5,0,u.identityMat4()),t=u.rotationMat4v(-90*u.DEGTORAD,[1,0,0],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),clippable:!1,pickable:!1,collidable:!0,visible:!1}),e),zAxisHandle:s.addChild(new li(s,{geometry:r.axisHandle,material:o.pickable,matrix:function(){const e=u.translateMat4c(0,.5,0,u.identityMat4()),t=u.rotationMat4v(-90*u.DEGTORAD,[1,0,0],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),clippable:!1,pickable:!0,collidable:!0,visible:!1}),e)},this._affordanceMeshes={planeFrame:s.addChild(new li(s,{geometry:new Je(s,Sa({center:[0,0,0],radius:2,tube:i,radialSegments:4,tubeSegments:4,arc:2*Math.PI})),material:new rt(s,{ambient:[1,1,1],diffuse:[0,0,0],emissive:[1,1,0]}),highlighted:!0,highlightMaterial:new at(s,{edges:!1,filled:!0,fillColor:[1,1,0],fillAlpha:1}),pickable:!1,collidable:!1,clippable:!1,visible:!1,scale:[1,1,1],rotation:[0,0,45]}),e),xHoop:s.addChild(new li(s,{geometry:r.hoop,material:o.red,highlighted:!0,highlightMaterial:o.highlightRed,matrix:function(){const e=u.rotationMat4v(90*u.DEGTORAD,[0,1,0],u.identityMat4()),t=u.rotationMat4v(270*u.DEGTORAD,[1,0,0],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),yHoop:s.addChild(new li(s,{geometry:r.hoop,material:o.green,highlighted:!0,highlightMaterial:o.highlightGreen,rotation:[-90,0,0],pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zHoop:s.addChild(new li(s,{geometry:r.hoop,material:o.blue,highlighted:!0,highlightMaterial:o.highlightBlue,matrix:u.rotationMat4v(180*u.DEGTORAD,[1,0,0],u.identityMat4()),pickable:!1,collidable:!0,clippable:!1,backfaces:!0,visible:!1}),e),xAxisArrow:s.addChild(new li(s,{geometry:r.arrowHeadBig,material:o.red,matrix:function(){const e=u.translateMat4c(0,1.1,0,u.identityMat4()),t=u.rotationMat4v(-90*u.DEGTORAD,[0,0,1],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),yAxisArrow:s.addChild(new li(s,{geometry:r.arrowHeadBig,material:o.green,matrix:function(){const e=u.translateMat4c(0,1.1,0,u.identityMat4()),t=u.rotationMat4v(180*u.DEGTORAD,[1,0,0],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e),zAxisArrow:s.addChild(new li(s,{geometry:r.arrowHeadBig,material:o.blue,matrix:function(){const e=u.translateMat4c(0,1.1,0,u.identityMat4()),t=u.rotationMat4v(-90*u.DEGTORAD,[.8,0,0],u.identityMat4());return u.mulMat4(t,e,u.identityMat4())}(),pickable:!1,collidable:!0,clippable:!1,visible:!1}),e)}}_bindEvents(){const e=this;var t=!1;const i=-1,s=0,r=1,o=2,a=3,n=4,l=5,h=this._rootNode;var c=null,d=null;const p=u.vec2(),f=u.vec3([1,0,0]),_=u.vec3([0,1,0]),g=u.vec3([0,0,1]),m=this._viewer.scene.canvas.canvas,v=this._viewer.camera,b=this._viewer.scene;{const e=u.vec3([0,0,0]);let t=-1;this._onCameraViewMatrix=b.camera.on(\"viewMatrix\",(()=>{})),this._onCameraProjMatrix=b.camera.on(\"projMatrix\",(()=>{})),this._onSceneTick=b.on(\"tick\",(()=>{const i=Math.abs(u.lenVec3(u.subVec3(b.camera.eye,this._pos,e)));if(i!==t&&\"perspective\"===v.projection){const e=.07*(Math.tan(v.perspective.fov*u.DEGTORAD)*i);h.scale=[e,e,e],t=i}if(\"ortho\"===v.projection){const e=v.ortho.scale/10;h.scale=[e,e,e],t=i}}))}const P=function(){const e=new Float64Array(2);return function(t){if(t){for(var i=t.target,s=0,r=0;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;e[0]=t.pageX-s,e[1]=t.pageY-r}else t=window.event,e[0]=t.x,e[1]=t.y;return e}}(),y=function(){const t=u.mat4();return function(i,s){return u.quaternionToMat4(e._rootNode.quaternion,t),u.transformVec3(t,i,s),u.normalizeVec3(s),s}}();var x=function(){const e=u.vec3();return function(t){const i=Math.abs(t[0]);return i>Math.abs(t[1])&&i>Math.abs(t[2])?u.cross3Vec3(t,[0,1,0],e):u.cross3Vec3(t,[1,0,0],e),u.cross3Vec3(e,t,e),u.normalizeVec3(e),e}}();const M=function(){const t=u.vec3(),i=u.vec3(),s=u.vec4();return function(r,o,a){y(r,s);const n=x(s,o,a);E(o,n,t),E(a,n,i),u.subVec3(i,t);const l=u.dotVec3(i,s);e._pos[0]+=s[0]*l,e._pos[1]+=s[1]*l,e._pos[2]+=s[2]*l,e._rootNode.position=e._pos,e._sectionPlane&&(e._sectionPlane.pos=e._pos)}}();var w=function(){const t=u.vec4(),i=u.vec4(),s=u.vec4(),r=u.vec4();return function(o,a,n){y(o,r);if(!(E(a,r,t)&&E(n,r,i))){const e=x(r,a,n);E(a,e,t,1),E(n,e,i,1);var l=u.dotVec3(t,r);t[0]-=l*r[0],t[1]-=l*r[1],t[2]-=l*r[2],l=u.dotVec3(i,r),i[0]-=l*r[0],i[1]-=l*r[1],i[2]-=l*r[2]}u.normalizeVec3(t),u.normalizeVec3(i),l=u.dotVec3(t,i),l=u.clamp(l,-1,1);var h=Math.acos(l)*u.RADTODEG;u.cross3Vec3(t,i,s),u.dotVec3(s,r)<0&&(h=-h),e._rootNode.rotate(o,h),C()}}(),E=function(){const t=u.vec4([0,0,0,1]),i=u.mat4();return function(s,r,o,a){a=a||0,t[0]=s[0]/m.width*2-1,t[1]=-(s[1]/m.height*2-1),t[2]=0,t[3]=1,u.mulMat4(v.projMatrix,v.viewMatrix,i),u.inverseMat4(i),u.transformVec4(i,t,t),u.mulVec4Scalar(t,1/t[3]);var n=v.eye;u.subVec4(t,n,t);const l=e._sectionPlane.pos;var h=-u.dotVec3(l,r)-a,c=u.dotVec3(r,t);if(Math.abs(c)>.005){var d=-(u.dotVec3(r,n)+h)/c;return u.mulVec3Scalar(t,d,o),u.addVec3(o,n),u.subVec3(o,l,o),!0}return!1}}();const C=function(){const t=u.vec3(),i=u.mat4();return function(){e.sectionPlane&&(u.quaternionToMat4(h.quaternion,i),u.transformVec3(i,[0,0,1],t),e._setSectionPlaneDir(t))}}();var A,S=!1;this._onCameraControlHover=this._viewer.cameraControl.on(\"hoverEnter\",(e=>{if(!this._visible)return;if(S)return;var h;t=!1,A&&(A.visible=!1);switch(e.entity.id){case this._displayMeshes.xAxisArrowHandle.id:case this._displayMeshes.xAxisHandle.id:h=this._affordanceMeshes.xAxisArrow,c=s;break;case this._displayMeshes.yAxisArrowHandle.id:case this._displayMeshes.yShaftHandle.id:h=this._affordanceMeshes.yAxisArrow,c=r;break;case this._displayMeshes.zAxisArrowHandle.id:case this._displayMeshes.zAxisHandle.id:h=this._affordanceMeshes.zAxisArrow,c=o;break;case this._displayMeshes.xCurveHandle.id:h=this._affordanceMeshes.xHoop,c=a;break;case this._displayMeshes.yCurveHandle.id:h=this._affordanceMeshes.yHoop,c=n;break;case this._displayMeshes.zCurveHandle.id:h=this._affordanceMeshes.zHoop,c=l;break;default:return void(c=i)}h&&(h.visible=!0),A=h,t=!0})),this._onCameraControlHoverLeave=this._viewer.cameraControl.on(\"hoverOut\",(e=>{this._visible&&(A&&(A.visible=!1),A=null,c=i)})),m.addEventListener(\"mousedown\",this._canvasMouseDownListener=e=>{if(e.preventDefault(),this._visible&&t)switch(this._viewer.cameraControl.pointerEnabled=!1,e.which){case 1:S=!0;var i=P(e);d=c,p[0]=i[0],p[1]=i[1]}}),m.addEventListener(\"mousemove\",this._canvasMouseMoveListener=e=>{if(!this._visible)return;if(!S)return;var t=P(e);const i=t[0],h=t[1];switch(d){case s:M(f,p,t);break;case r:M(_,p,t);break;case o:M(g,p,t);break;case a:w(f,p,t);break;case n:w(_,p,t);break;case l:w(g,p,t)}p[0]=i,p[1]=h}),m.addEventListener(\"mouseup\",this._canvasMouseUpListener=e=>{this._visible&&(this._viewer.cameraControl.pointerEnabled=!0,S&&(e.which,S=!1,t=!1))}),m.addEventListener(\"wheel\",this._canvasWheelListener=e=>{if(this._visible)Math.max(-1,Math.min(1,40*-e.deltaY))})}_destroy(){this._unbindEvents(),this._destroyNodes()}_unbindEvents(){const e=this._viewer,t=e.scene,i=t.canvas.canvas,s=e.camera,r=e.cameraControl;t.off(this._onSceneTick),i.removeEventListener(\"mousedown\",this._canvasMouseDownListener),i.removeEventListener(\"mousemove\",this._canvasMouseMoveListener),i.removeEventListener(\"mouseup\",this._canvasMouseUpListener),i.removeEventListener(\"wheel\",this._canvasWheelListener),s.off(this._onCameraViewMatrix),s.off(this._onCameraProjMatrix),r.off(this._onCameraControlHover),r.off(this._onCameraControlHoverLeave)}_destroyNodes(){this._setSectionPlane(null),this._rootNode.destroy(),this._displayMeshes={},this._affordanceMeshes={}}}class Ta{constructor(e,t,i){this.id=i.id,this._sectionPlane=i,this._mesh=new li(t,{id:i.id,geometry:new Je(t,et({xSize:.5,ySize:.5,zSize:.001})),material:new rt(t,{emissive:[1,1,1],diffuse:[0,0,0],backfaces:!1}),edgeMaterial:new lt(t,{edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),highlightMaterial:new at(t,{fill:!0,fillColor:[.5,1,.5],fillAlpha:.7,edges:!0,edgeColor:[0,0,0],edgeAlpha:1,edgeWidth:1}),selectedMaterial:new at(t,{fill:!0,fillColor:[0,0,1],fillAlpha:.7,edges:!0,edgeColor:[1,0,0],edgeAlpha:1,edgeWidth:1}),highlighted:!0,scale:[3,3,3],position:[0,0,0],rotation:[0,0,0],opacity:.3,edges:!0});{const e=u.vec3([0,0,0]),t=u.vec3(),i=u.vec3([0,0,1]),s=u.vec4(4),r=u.vec3(),o=()=>{const o=this._sectionPlane.scene.center,a=[-this._sectionPlane.dir[0],-this._sectionPlane.dir[1],-this._sectionPlane.dir[2]];u.subVec3(o,this._sectionPlane.pos,e);const n=-u.dotVec3(a,e);u.normalizeVec3(a),u.mulVec3Scalar(a,n,t);const l=u.vec3PairToQuaternion(i,this._sectionPlane.dir,s);r[0]=.1*t[0],r[1]=.1*t[1],r[2]=.1*t[2],this._mesh.quaternion=l,this._mesh.position=r};this._onSectionPlanePos=this._sectionPlane.on(\"pos\",o),this._onSectionPlaneDir=this._sectionPlane.on(\"dir\",o)}this._highlighted=!1,this._selected=!1}setHighlighted(e){this._highlighted=!!e,this._mesh.highlighted=this._highlighted,this._mesh.highlightMaterial.fillColor=e?[0,.7,0]:[0,0,0]}getHighlighted(){return this._highlighted}setSelected(e){this._selected=!!e,this._mesh.edgeMaterial.edgeWidth=e?3:1,this._mesh.highlightMaterial.edgeWidth=e?3:1}getSelected(){return this._selected}destroy(){this._sectionPlane.off(this._onSectionPlanePos),this._sectionPlane.off(this._onSectionPlaneDir),this._mesh.destroy()}}class Ra{constructor(e,t){if(!(t.onHoverEnterPlane&&t.onHoverLeavePlane&&t.onClickedNothing&&t.onClickedPlane))throw\"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane\";this.plugin=e,this._viewer=e.viewer,this._onHoverEnterPlane=t.onHoverEnterPlane,this._onHoverLeavePlane=t.onHoverLeavePlane,this._onClickedNothing=t.onClickedNothing,this._onClickedPlane=t.onClickedPlane,this._visible=!0,this._planes={},this._canvas=t.overviewCanvas,this._scene=new mt(this._viewer,{canvasId:this._canvas.id,transparent:!0}),this._scene.clearLights(),new ze(this._scene,{dir:[.4,-.4,.8],color:[.8,1,1],intensity:1,space:\"view\"}),new ze(this._scene,{dir:[-.8,-.3,-.4],color:[.8,.8,.8],intensity:1,space:\"view\"}),new ze(this._scene,{dir:[.8,-.6,-.8],color:[1,1,1],intensity:1,space:\"view\"}),this._scene.camera,this._scene.camera.perspective.fov=70,this._zUp=!1;{const e=this._scene.camera,t=u.rotationMat4c(-90*u.DEGTORAD,1,0,0),i=u.vec3(),s=u.vec3(),r=u.vec3();this._synchCamera=()=>{const o=this._viewer.camera.eye,a=this._viewer.camera.look,n=this._viewer.camera.up;u.mulVec3Scalar(u.normalizeVec3(u.subVec3(o,a,i)),7),this._zUp?(u.transformVec3(t,i,s),u.transformVec3(t,n,r),e.look=[0,0,0],e.eye=u.transformVec3(t,i,s),e.up=u.transformPoint3(t,n,r)):(e.look=[0,0,0],e.eye=i,e.up=n)}}this._onViewerCameraMatrix=this._viewer.camera.on(\"matrix\",this._synchCamera),this._onViewerCameraWorldAxis=this._viewer.camera.on(\"worldAxis\",this._synchCamera),this._onViewerCameraFOV=this._viewer.camera.perspective.on(\"fov\",(e=>{this._scene.camera.perspective.fov=e}));var i=null;this._onInputMouseMove=this._scene.input.on(\"mousemove\",(e=>{const t=this._scene.pick({canvasPos:e});if(t){if(!i||t.entity.id!==i.id){if(i){this._planes[i.id]&&this._onHoverLeavePlane(i.id)}i=t.entity;this._planes[i.id]&&this._onHoverEnterPlane(i.id)}}else i&&(this._onHoverLeavePlane(i.id),i=null)})),this._scene.canvas.canvas.addEventListener(\"mouseup\",this._onCanvasMouseUp=()=>{if(i){this._planes[i.id]&&this._onClickedPlane(i.id)}else this._onClickedNothing()}),this._scene.canvas.canvas.addEventListener(\"mouseout\",this._onCanvasMouseOut=()=>{i&&(this._onHoverLeavePlane(i.id),i=null)}),this.setVisible(t.overviewVisible)}addSectionPlane(e){this._planes[e.id]=new Ta(this,this._scene,e)}setPlaneHighlighted(e,t){const i=this._planes[e];i&&i.setHighlighted(t)}setPlaneSelected(e,t){const i=this._planes[e];i&&i.setSelected(t)}removeSectionPlane(e){const t=this._planes[e.id];t&&(t.destroy(),delete this._planes[e.id])}setVisible(e=!0){this._visible=e,this._canvas.style.visibility=e?\"visible\":\"hidden\"}getVisible(){return this._visible}destroy(){this._viewer.camera.off(this._onViewerCameraMatrix),this._viewer.camera.off(this._onViewerCameraWorldAxis),this._viewer.camera.perspective.off(this._onViewerCameraFOV),this._scene.input.off(this._onInputMouseMove),this._scene.canvas.canvas.removeEventListener(\"mouseup\",this._onCanvasMouseUp),this._scene.canvas.canvas.removeEventListener(\"mouseout\",this._onCanvasMouseOut),this._scene.destroy()}}const Fa=u.AABB3(),Na=u.vec3();class Ia extends a{constructor(e,t={}){if(super(\"SectionPlanes\",e),this._freeControls=[],this._sectionPlanes=e.scene.sectionPlanes,this._controls={},this._shownControlId=null,null!==t.overviewCanvasId&&void 0!==t.overviewCanvasId){const e=document.getElementById(t.overviewCanvasId);e?this._overview=new Ra(this,{overviewCanvas:e,visible:t.overviewVisible,onHoverEnterPlane:e=>{this._overview.setPlaneHighlighted(e,!0)},onHoverLeavePlane:e=>{this._overview.setPlaneHighlighted(e,!1)},onClickedPlane:e=>{if(this.getShownControl()===e)return void this.hideControl();this.showControl(e);const t=this.sectionPlanes[e].pos;Fa.set(this.viewer.scene.aabb),u.getAABB3Center(Fa,Na),Fa[0]+=t[0]-Na[0],Fa[1]+=t[1]-Na[1],Fa[2]+=t[2]-Na[2],Fa[3]+=t[0]-Na[0],Fa[4]+=t[1]-Na[1],Fa[5]+=t[2]-Na[2],this.viewer.cameraFlight.flyTo({aabb:Fa,fitFOV:65})},onClickedNothing:()=>{this.hideControl()}}):this.warn(\"Can't find overview canvas: '\"+t.overviewCanvasId+\"' - will create plugin without overview\")}this._onSceneSectionPlaneCreated=e.scene.on(\"sectionPlaneCreated\",(e=>{this._sectionPlaneCreated(e)}))}setOverviewVisible(e){this._overview&&this._overview.setVisible(e)}getOverviewVisible(){if(this._overview)return this._overview.getVisible()}get sectionPlanes(){return this._sectionPlanes}createSectionPlane(e={}){void 0!==e.id&&null!==e.id&&this.viewer.scene.components[e.id]&&(this.error(\"Viewer component with this ID already exists: \"+e.id),delete e.id);return new di(this.viewer.scene,{id:e.id,pos:e.pos,dir:e.dir,active:!0})}_sectionPlaneCreated(e){const t=this._freeControls.length>0?this._freeControls.pop():new Ba(this);t._setSectionPlane(e),t.setVisible(!1),this._controls[e.id]=t,this._overview&&this._overview.addSectionPlane(e),e.once(\"destroyed\",(()=>{this._sectionPlaneDestroyed(e)}))}flipSectionPlanes(){const e=this.viewer.scene.sectionPlanes;for(let t in e){e[t].flipDir()}}showControl(e){const t=this._controls[e];t?(this.hideControl(),t.setVisible(!0),this._overview&&this._overview.setPlaneSelected(e,!0),this._shownControlId=e):this.error(\"Control not found: \"+e)}getShownControl(){return this._shownControlId}hideControl(){for(var e in this._controls)this._controls.hasOwnProperty(e)&&(this._controls[e].setVisible(!1),this._overview&&this._overview.setPlaneSelected(e,!1));this._shownControlId=null}destroySectionPlane(e){var t=this.viewer.scene.sectionPlanes[e];t?(this._sectionPlaneDestroyed(t),t.destroy(),e===this._shownControlId&&(this._shownControlId=null)):this.error(\"SectionPlane not found: \"+e)}_sectionPlaneDestroyed(e){this._overview&&this._overview.removeSectionPlane(e);const t=this._controls[e.id];t&&(t.setVisible(!1),t._setSectionPlane(null),delete this._controls[e.id],this._freeControls.push(t))}clear(){const e=Object.keys(this._sectionPlanes);for(var t=0,i=e.length;t{e.preventDefault()},this._onObjectVisibility=this._viewer.scene.on(\"objectVisibility\",(e=>{if(this._muteSceneEvents)return;const t=e.id,i=this._objectNodes[t];if(!i)return;const s=e.visible;if(!(s!==i.checked))return;this._muteTreeEvents=!0,i.checked=s,s?i.numVisibleEntities++:i.numVisibleEntities--;const r=document.getElementById(i.nodeId);r&&(r.checked=s);let o=i.parent;for(;o;){o.checked=s,s?o.numVisibleEntities++:o.numVisibleEntities--;const e=document.getElementById(o.nodeId);if(e){const t=o.numVisibleEntities>0;t!==e.checked&&(e.checked=t)}o=o.parent}this._muteTreeEvents=!1})),this.switchExpandHandler=e=>{e.preventDefault(),e.stopPropagation();const t=e.target;this._expandSwitchElement(t)},this.switchCollapseHandler=e=>{e.preventDefault(),e.stopPropagation();const t=e.target;this._collapseSwitchElement(t)},this._checkboxChangeHandler=e=>{if(this._muteTreeEvents)return;this._muteSceneEvents=!0;const t=e.target,i=t.checked,s=t.id,r=this._nodeToObjectID(s),o=this._objectNodes[r],a=this._viewer.scene.objects;let n=0;this._withNodeTree(o,(e=>{const t=e.objectId,s=e.nodeId,r=a[t],o=0===e.children.length;e.numVisibleEntities=i?e.numEntities:0,o&&i!==e.checked&&n++,e.checked=i;const l=document.getElementById(s);l&&(l.checked=i),r&&(r.visible=i)}));let l=o.parent;for(;l;){l.checked=i;const e=document.getElementById(l.nodeId);i?l.numVisibleEntities+=n:l.numVisibleEntities-=n;const t=l.numVisibleEntities>0;t!==e.checked&&(e.checked=t),l=l.parent}this._muteSceneEvents=!1},this._hierarchy=r.hierarchy||\"containment\",this._autoExpandDepth=r.autoExpandDepth||0,this._createNodes())}_nodeToObjectID(e){return e.substring(this._baseId.length)}_objectToNodeID(e){return this._baseId+e}setAutoExpandDepth(e=0){this._autoExpandDepth=e}setHierarchy(e){this._hierarchy!==e&&(this._hierarchy=e,this._createNodes())}_createNodes(){this._rootElement&&(this._rootElement.parentNode.removeChild(this._rootElement),this._rootElement=null),this._rootNodes=[],this._objectNodes={},this._validate(),this.valid||\"storeys\"!==this._hierarchy?this._createEnabledNodes():this._createDisabledNodes()}_validate(){switch(this.errors=[],this._hierarchy){case\"storeys\":this.valid=Oa(this.metaModel,this.errors);break;case\"types\":this.valid=(e=this.metaModel,t=this.errors,!!e.rootMetaObject||(t.push(\"Can't build types hierarchy: model is empty\"),!1));break;case\"containment\":default:this.valid=function(e,t){return!!e.rootMetaObject||(t.push(\"Can't build containment hierarchy: model is empty\"),!1)}(this.metaModel,this.errors)}var e,t;return this.valid}_createEnabledNodes(){switch(this._pruneEmptyNodes&&this._findEmptyNodes(),this._hierarchy){case\"storeys\":this._createStoreysNodes(),0===this._rootNodes.length&&this._treeViewPlugin.error(\"Failed to build storeys hierarchy for model '\"+this.metaModel.id+\"' - perhaps this model is not an IFC model?\");break;case\"types\":this._createTypesNodes();break;case\"containment\":default:this._createContainmentNodes()}this._sortNodes&&this._doSortNodes(),this._synchNodesToEntities(),this._createTrees(),this.expandToDepth(this._autoExpandDepth)}_createDisabledNodes(){const e=this._rootMetaObject,t=e.type,i=e.name,s=i&&\"\"!==i&&\"Undefined\"!==i&&\"Default\"!==i?i:t,r=document.createElement(\"ul\"),o=document.createElement(\"li\");r.appendChild(o),this._containerElement.appendChild(r),this._rootElement=r;const a=document.createElement(\"a\");a.href=\"#\",a.textContent=\"!\",a.classList.add(\"warn\"),a.classList.add(\"warning\"),o.appendChild(a);const n=document.createElement(\"span\");n.textContent=s,o.appendChild(n)}_findEmptyNodes(e=this._rootMetaObject,t=0){const i=this._treeViewPlugin.viewer.scene,s=e.children,r=e.id,o=i.objects[r];if(e._countEntities=0,o&&e._countEntities++,s)for(let t=0,i=s.length;t{e.aabb&&r.aabb||(e.aabb||(e.aabb=t.getAABB(s.getObjectIDsInSubtree(e.objectId))),r.aabb||(r.aabb=t.getAABB(s.getObjectIDsInSubtree(r.objectId))));let o=0;return o=i.xUp?0:i.yUp?1:2,e.aabb[o]>r.aabb[o]?-1:e.aabb[o]s?1:0}_synchNodesToEntities(){const e=this._rootMetaObject.getObjectIDsInSubtree(),t=this._viewer.metaScene.metaObjects,i=this._viewer.scene.objects;for(let s=0,r=e.length;sthis._createNodeElement(e))),t=document.createElement(\"ul\");e.forEach((e=>{t.appendChild(e)})),this._containerElement.appendChild(t),this._rootElement=t}_createNodeElement(e){const t=document.createElement(\"li\"),i=e.nodeId;if(t.id=\"node-\"+i,e.children.length>0){const e=\"switch-\"+i,s=document.createElement(\"a\");s.href=\"#\",s.id=e,s.textContent=\"+\",s.classList.add(\"plus\"),s.addEventListener(\"click\",this.switchExpandHandler),t.appendChild(s)}const s=document.createElement(\"input\");s.id=i,s.type=\"checkbox\",s.checked=e.checked,s.style[\"pointer-events\"]=\"all\",s.addEventListener(\"change\",this._checkboxChangeHandler),t.appendChild(s);const r=document.createElement(\"span\");return r.textContent=e.title,t.appendChild(r),r.oncontextmenu=t=>{this._treeViewPlugin.fire(\"contextmenu\",{event:t,viewer:this._viewer,treeViewPlugin:this._treeViewPlugin,treeViewNode:e}),t.preventDefault()},r.onclick=t=>{this._treeViewPlugin.fire(\"nodeTitleClicked\",{event:t,viewer:this._viewer,treeViewPlugin:this._treeViewPlugin,treeViewNode:e}),t.preventDefault()},t}expandToDepth(e){const t=(i,s)=>{if(s===e)return;const r=\"switch-\"+i.nodeId,o=document.getElementById(r);if(o){this._expandSwitchElement(o);const e=i.children;for(var a=0,n=e.length;athis._createNodeElement(e))),o=document.createElement(\"ul\");r.forEach((e=>{o.appendChild(e)})),t.appendChild(o),e.classList.remove(\"plus\"),e.classList.add(\"minus\"),e.textContent=\"-\",e.removeEventListener(\"click\",this.switchExpandHandler),e.addEventListener(\"click\",this.switchCollapseHandler)}_collapseNode(e){const t=\"switch-\"+this._objectToNodeID(e),i=document.getElementById(t);this._collapseSwitchElement(i)}_collapseSwitchElement(e){if(!e)return;const t=e.parentElement;if(!t)return;const i=t.querySelector(\"ul\");i&&(t.removeChild(i),e.classList.remove(\"minus\"),e.classList.add(\"plus\"),e.textContent=\"+\",e.removeEventListener(\"click\",this.switchCollapseHandler),e.addEventListener(\"click\",this.switchExpandHandler))}destroy(){this._rootElement&&!this._destroyed&&(this._rootElement.parentNode.removeChild(this._rootElement),this._viewer.scene.off(this._onObjectVisibility),this._destroyed=!0,Va.removeItem(this._id))}}class za extends a{constructor(e,t={}){if(super(\"TreeViewPlugin\",e),t.containerElement){if(this._containerElement=t.containerElement,this._modelTreeViews={},this._autoAddModels=!1!==t.autoAddModels,this._autoExpandDepth=t.autoExpandDepth||0,this._sortNodes=!1!==t.sortNodes,this._pruneEmptyNodes=!1!==t.pruneEmptyNodes,this._autoAddModels){const e=Object.keys(this.viewer.metaScene.metaModels);for(let t=0,i=e.length;t{this.viewer.metaScene.metaModels[e]&&this.addModel(e)}))}this.hierarchy=t.hierarchy}else this.error(\"Config expected: containerElement\")}get modelTreeViews(){return this._modelTreeViews}set hierarchy(e){\"containment\"!==(e=e||\"containment\")&&\"storeys\"!==e&&\"types\"!==e&&(this.error(\"Unsupported value for `hierarchy' - defaulting to 'containment'\"),e=\"containment\"),this._hierarchy=e;for(let e in this._modelTreeViews)this._modelTreeViews.hasOwnProperty(e)&&this._modelTreeViews[e].setHierarchy(this._hierarchy)}get hierarchy(){return this._hierarchy}addModel(e,t={}){if(!this._containerElement)return;const i=this.viewer.scene.models[e];if(!i)throw\"Model not found: \"+e;const s=this.viewer.metaScene.metaModels[e];if(!s)return void this.error(\"MetaModel not found: \"+e);if(this._modelTreeViews[e])return void this.warn(\"Model already added: \"+e);const r=new ja(this.viewer,this,i,s,{containerElement:this._containerElement,autoExpandDepth:this._autoExpandDepth,hierarchy:this._hierarchy,sortNodes:this._sortNodes,pruneEmptyNodes:this._pruneEmptyNodes,rootName:t.rootName});return this._modelTreeViews[e]=r,i.on(\"destroyed\",(()=>{this.removeModel(i.id)})),r}removeModel(e){if(!this._containerElement)return;const t=this._modelTreeViews[e];t&&(t.destroy(),delete this._modelTreeViews[e])}collapse(){for(let e in this._modelTreeViews)if(this._modelTreeViews.hasOwnProperty(e)){this._modelTreeViews[e].collapse()}}showNode(e){this.unShowNode();const t=this.viewer.metaScene.metaObjects[e];if(!t)return void this.error(\"MetaObject not found: \"+e);const i=t.metaModel.id,s=this._modelTreeViews[i];s?s.showNode(e):this.error(\"Object not in this TreeView: \"+e)}unShowNode(){for(let e in this._modelTreeViews)if(this._modelTreeViews.hasOwnProperty(e)){this._modelTreeViews[e].unShowNode()}}expandToDepth(e){for(let t in this._modelTreeViews)if(this._modelTreeViews.hasOwnProperty(t)){const i=this._modelTreeViews[t];i.collapse(),i.expandToDepth(e)}}withNodeTree(e,t){t(e);const i=e.children;if(i)for(let e=0,s=i.length;e{t(e)}),(function(e){i(e)}))}getXKT(e,t,i){var s=()=>{};t=t||s,i=i||s;const r=e.match(/^data:(.*?)(;base64)?,(.*)$/);if(r){const e=!!r[2];var o=r[3];o=window.decodeURIComponent(o),e&&(o=window.atob(o));try{const e=new ArrayBuffer(o.length),i=new Uint8Array(e);for(var a=0;a0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new n,this.strm.avail_out=0;var i=s.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==i)throw new Error(a[i]);if(t.header&&s.deflateSetHeader(this.strm,t.header),t.dictionary){var c;if(c=\"string\"==typeof t.dictionary?o.string2buf(t.dictionary):\"[object ArrayBuffer]\"===l.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,0!==(i=s.deflateSetDictionary(this.strm,c)))throw new Error(a[i]);this._dict_set=!0}}function c(e,t){var i=new h(t);if(i.push(e,!0),i.err)throw i.msg||a[i.err];return i.result}h.prototype.push=function(e,t){var i,a,n=this.strm,h=this.options.chunkSize;if(this.ended)return!1;a=t===~~t?t:!0===t?4:0,\"string\"==typeof e?n.input=o.string2buf(e):\"[object ArrayBuffer]\"===l.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;do{if(0===n.avail_out&&(n.output=new r.Buf8(h),n.next_out=0,n.avail_out=h),1!==(i=s.deflate(n,a))&&0!==i)return this.onEnd(i),this.ended=!0,!1;0!==n.avail_out&&(0!==n.avail_in||4!==a&&2!==a)||(\"string\"===this.options.to?this.onData(o.buf2binstring(r.shrinkBuf(n.output,n.next_out))):this.onData(r.shrinkBuf(n.output,n.next_out)))}while((n.avail_in>0||0===n.avail_out)&&1!==i);return 4===a?(i=s.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,0===i):2!==a||(this.onEnd(0),n.avail_out=0,!0)},h.prototype.onData=function(e){this.chunks.push(e)},h.prototype.onEnd=function(e){0===e&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},i.Deflate=h,i.deflate=c,i.deflateRaw=function(e,t){return(t=t||{}).raw=!0,c(e,t)},i.gzip=function(e,t){return(t=t||{}).gzip=!0,c(e,t)}},{\"./utils/common\":3,\"./utils/strings\":4,\"./zlib/deflate\":8,\"./zlib/messages\":13,\"./zlib/zstream\":15}],2:[function(e,t,i){var s=e(\"./zlib/inflate\"),r=e(\"./utils/common\"),o=e(\"./utils/strings\"),a=e(\"./zlib/constants\"),n=e(\"./zlib/messages\"),l=e(\"./zlib/zstream\"),h=e(\"./zlib/gzheader\"),c=Object.prototype.toString;function u(e){if(!(this instanceof u))return new u(e);this.options=r.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new l,this.strm.avail_out=0;var i=s.inflateInit2(this.strm,t.windowBits);if(i!==a.Z_OK)throw new Error(n[i]);if(this.header=new h,s.inflateGetHeader(this.strm,this.header),t.dictionary&&(\"string\"==typeof t.dictionary?t.dictionary=o.string2buf(t.dictionary):\"[object ArrayBuffer]\"===c.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(i=s.inflateSetDictionary(this.strm,t.dictionary))!==a.Z_OK))throw new Error(n[i])}function d(e,t){var i=new u(t);if(i.push(e,!0),i.err)throw i.msg||n[i.err];return i.result}u.prototype.push=function(e,t){var i,n,l,h,u,d=this.strm,p=this.options.chunkSize,f=this.options.dictionary,_=!1;if(this.ended)return!1;n=t===~~t?t:!0===t?a.Z_FINISH:a.Z_NO_FLUSH,\"string\"==typeof e?d.input=o.binstring2buf(e):\"[object ArrayBuffer]\"===c.call(e)?d.input=new Uint8Array(e):d.input=e,d.next_in=0,d.avail_in=d.input.length;do{if(0===d.avail_out&&(d.output=new r.Buf8(p),d.next_out=0,d.avail_out=p),(i=s.inflate(d,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&f&&(i=s.inflateSetDictionary(this.strm,f)),i===a.Z_BUF_ERROR&&!0===_&&(i=a.Z_OK,_=!1),i!==a.Z_STREAM_END&&i!==a.Z_OK)return this.onEnd(i),this.ended=!0,!1;d.next_out&&(0!==d.avail_out&&i!==a.Z_STREAM_END&&(0!==d.avail_in||n!==a.Z_FINISH&&n!==a.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(l=o.utf8border(d.output,d.next_out),h=d.next_out-l,u=o.buf2string(d.output,l),d.next_out=h,d.avail_out=p-h,h&&r.arraySet(d.output,d.output,l,h,0),this.onData(u)):this.onData(r.shrinkBuf(d.output,d.next_out)))),0===d.avail_in&&0===d.avail_out&&(_=!0)}while((d.avail_in>0||0===d.avail_out)&&i!==a.Z_STREAM_END);return i===a.Z_STREAM_END&&(n=a.Z_FINISH),n===a.Z_FINISH?(i=s.inflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===a.Z_OK):n!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),d.avail_out=0,!0)},u.prototype.onData=function(e){this.chunks.push(e)},u.prototype.onEnd=function(e){e===a.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=r.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},i.Inflate=u,i.inflate=d,i.inflateRaw=function(e,t){return(t=t||{}).raw=!0,d(e,t)},i.ungzip=d},{\"./utils/common\":3,\"./utils/strings\":4,\"./zlib/constants\":6,\"./zlib/gzheader\":9,\"./zlib/inflate\":11,\"./zlib/messages\":13,\"./zlib/zstream\":15}],3:[function(e,t,i){var s=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function r(e,t){return Object.prototype.hasOwnProperty.call(e,t)}i.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var i=t.shift();if(i){if(\"object\"!=typeof i)throw new TypeError(i+\"must be non-object\");for(var s in i)r(i,s)&&(e[s]=i[s])}}return e},i.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var o={arraySet:function(e,t,i,s,r){if(t.subarray&&e.subarray)e.set(t.subarray(i,i+s),r);else for(var o=0;o=252?6:n>=248?5:n>=240?4:n>=224?3:n>=192?2:1;function l(e,t){if(t<65534&&(e.subarray&&o||!e.subarray&&r))return String.fromCharCode.apply(null,s.shrinkBuf(e,t));for(var i=\"\",a=0;a>>6,t[a++]=128|63&i):i<65536?(t[a++]=224|i>>>12,t[a++]=128|i>>>6&63,t[a++]=128|63&i):(t[a++]=240|i>>>18,t[a++]=128|i>>>12&63,t[a++]=128|i>>>6&63,t[a++]=128|63&i);return t},i.buf2binstring=function(e){return l(e,e.length)},i.binstring2buf=function(e){for(var t=new s.Buf8(e.length),i=0,r=t.length;i4)h[s++]=65533,i+=o-1;else{for(r&=2===o?31:3===o?15:7;o>1&&i1?h[s++]=65533:r<65536?h[s++]=r:(r-=65536,h[s++]=55296|r>>10&1023,h[s++]=56320|1023&r)}return l(h,s)},i.utf8border=function(e,t){var i;for((t=t||e.length)>e.length&&(t=e.length),i=t-1;i>=0&&128==(192&e[i]);)i--;return i<0||0===i?t:i+a[e[i]]>t?i:t}},{\"./common\":3}],5:[function(e,t,i){t.exports=function(e,t,i,s){for(var r=65535&e|0,o=e>>>16&65535|0,a=0;0!==i;){i-=a=i>2e3?2e3:i;do{o=o+(r=r+t[s++]|0)|0}while(--a);r%=65521,o%=65521}return r|o<<16|0}},{}],6:[function(e,t,i){t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],7:[function(e,t,i){var s=function(){for(var e,t=[],i=0;i<256;i++){e=i;for(var s=0;s<8;s++)e=1&e?3988292384^e>>>1:e>>>1;t[i]=e}return t}();t.exports=function(e,t,i,r){var o=s,a=r+i;e^=-1;for(var n=r;n>>8^o[255&(e^t[n])];return-1^e}},{}],8:[function(e,t,i){var s,r=e(\"../utils/common\"),o=e(\"./trees\"),a=e(\"./adler32\"),n=e(\"./crc32\"),l=e(\"./messages\"),h=-2,c=258,u=262,d=103,p=113,f=666;function _(e,t){return e.msg=l[t],t}function g(e){return(e<<1)-(e>4?9:0)}function m(e){for(var t=e.length;--t>=0;)e[t]=0}function v(e){var t=e.state,i=t.pending;i>e.avail_out&&(i=e.avail_out),0!==i&&(r.arraySet(e.output,t.pending_buf,t.pending_out,i,e.next_out),e.next_out+=i,t.pending_out+=i,e.total_out+=i,e.avail_out-=i,t.pending-=i,0===t.pending&&(t.pending_out=0))}function b(e,t){o._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,v(e.strm)}function P(e,t){e.pending_buf[e.pending++]=t}function y(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function x(e,t){var i,s,r=e.max_chain_length,o=e.strstart,a=e.prev_length,n=e.nice_match,l=e.strstart>e.w_size-u?e.strstart-(e.w_size-u):0,h=e.window,d=e.w_mask,p=e.prev,f=e.strstart+c,_=h[o+a-1],g=h[o+a];e.prev_length>=e.good_match&&(r>>=2),n>e.lookahead&&(n=e.lookahead);do{if(h[(i=t)+a]===g&&h[i+a-1]===_&&h[i]===h[o]&&h[++i]===h[o+1]){o+=2,i++;do{}while(h[++o]===h[++i]&&h[++o]===h[++i]&&h[++o]===h[++i]&&h[++o]===h[++i]&&h[++o]===h[++i]&&h[++o]===h[++i]&&h[++o]===h[++i]&&h[++o]===h[++i]&&oa){if(e.match_start=t,a=s,s>=n)break;_=h[o+a-1],g=h[o+a]}}}while((t=p[t&d])>l&&0!=--r);return a<=e.lookahead?a:e.lookahead}function M(e){var t,i,s,o,l,h,c,d,p,f,_=e.w_size;do{if(o=e.window_size-e.lookahead-e.strstart,e.strstart>=_+(_-u)){r.arraySet(e.window,e.window,_,_,0),e.match_start-=_,e.strstart-=_,e.block_start-=_,t=i=e.hash_size;do{s=e.head[--t],e.head[t]=s>=_?s-_:0}while(--i);t=i=_;do{s=e.prev[--t],e.prev[t]=s>=_?s-_:0}while(--i);o+=_}if(0===e.strm.avail_in)break;if(h=e.strm,c=e.window,d=e.strstart+e.lookahead,p=o,f=void 0,(f=h.avail_in)>p&&(f=p),i=0===f?0:(h.avail_in-=f,r.arraySet(c,h.input,h.next_in,f,d),1===h.state.wrap?h.adler=a(h.adler,c,f,d):2===h.state.wrap&&(h.adler=n(h.adler,c,f,d)),h.next_in+=f,h.total_in+=f,f),e.lookahead+=i,e.lookahead+e.insert>=3)for(l=e.strstart-e.insert,e.ins_h=e.window[l],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(s=o._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,s=o._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=(e.ins_h<15&&(n=2,s-=16),o<1||o>9||8!==i||s<8||s>15||t<0||t>9||a<0||a>4)return _(e,h);8===s&&(s=9);var l=new A;return e.state=l,l.strm=e,l.wrap=n,l.gzhead=null,l.w_bits=s,l.w_size=1<e.pending_buf_size-5&&(i=e.pending_buf_size-5);;){if(e.lookahead<=1){if(M(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var s=e.block_start+i;if((0===e.strstart||e.strstart>=s)&&(e.lookahead=e.strstart-s,e.strstart=s,b(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-u&&(b(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(b(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(b(e,!1),e.strm.avail_out),1)})),new C(4,4,8,4,w),new C(4,5,16,8,w),new C(4,6,32,32,w),new C(4,4,16,16,E),new C(8,16,32,32,E),new C(8,16,128,128,E),new C(8,32,128,256,E),new C(32,128,258,1024,E),new C(32,258,258,4096,E)],i.deflateInit=function(e,t){return L(e,t,8,15,8,0)},i.deflateInit2=L,i.deflateReset=D,i.deflateResetKeep=S,i.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?h:(e.state.gzhead=t,0):h},i.deflate=function(e,t){var i,r,a,l;if(!e||!e.state||t>5||t<0)return e?_(e,h):h;if(r=e.state,!e.output||!e.input&&0!==e.avail_in||r.status===f&&4!==t)return _(e,0===e.avail_out?-5:h);if(r.strm=e,i=r.last_flush,r.last_flush=t,42===r.status)if(2===r.wrap)e.adler=0,P(r,31),P(r,139),P(r,8),r.gzhead?(P(r,(r.gzhead.text?1:0)+(r.gzhead.hcrc?2:0)+(r.gzhead.extra?4:0)+(r.gzhead.name?8:0)+(r.gzhead.comment?16:0)),P(r,255&r.gzhead.time),P(r,r.gzhead.time>>8&255),P(r,r.gzhead.time>>16&255),P(r,r.gzhead.time>>24&255),P(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),P(r,255&r.gzhead.os),r.gzhead.extra&&r.gzhead.extra.length&&(P(r,255&r.gzhead.extra.length),P(r,r.gzhead.extra.length>>8&255)),r.gzhead.hcrc&&(e.adler=n(e.adler,r.pending_buf,r.pending,0)),r.gzindex=0,r.status=69):(P(r,0),P(r,0),P(r,0),P(r,0),P(r,0),P(r,9===r.level?2:r.strategy>=2||r.level<2?4:0),P(r,3),r.status=p);else{var u=8+(r.w_bits-8<<4)<<8;u|=(r.strategy>=2||r.level<2?0:r.level<6?1:6===r.level?2:3)<<6,0!==r.strstart&&(u|=32),u+=31-u%31,r.status=p,y(r,u),0!==r.strstart&&(y(r,e.adler>>>16),y(r,65535&e.adler)),e.adler=1}if(69===r.status)if(r.gzhead.extra){for(a=r.pending;r.gzindex<(65535&r.gzhead.extra.length)&&(r.pending!==r.pending_buf_size||(r.gzhead.hcrc&&r.pending>a&&(e.adler=n(e.adler,r.pending_buf,r.pending-a,a)),v(e),a=r.pending,r.pending!==r.pending_buf_size));)P(r,255&r.gzhead.extra[r.gzindex]),r.gzindex++;r.gzhead.hcrc&&r.pending>a&&(e.adler=n(e.adler,r.pending_buf,r.pending-a,a)),r.gzindex===r.gzhead.extra.length&&(r.gzindex=0,r.status=73)}else r.status=73;if(73===r.status)if(r.gzhead.name){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(e.adler=n(e.adler,r.pending_buf,r.pending-a,a)),v(e),a=r.pending,r.pending===r.pending_buf_size)){l=1;break}l=r.gzindexa&&(e.adler=n(e.adler,r.pending_buf,r.pending-a,a)),0===l&&(r.gzindex=0,r.status=91)}else r.status=91;if(91===r.status)if(r.gzhead.comment){a=r.pending;do{if(r.pending===r.pending_buf_size&&(r.gzhead.hcrc&&r.pending>a&&(e.adler=n(e.adler,r.pending_buf,r.pending-a,a)),v(e),a=r.pending,r.pending===r.pending_buf_size)){l=1;break}l=r.gzindexa&&(e.adler=n(e.adler,r.pending_buf,r.pending-a,a)),0===l&&(r.status=d)}else r.status=d;if(r.status===d&&(r.gzhead.hcrc?(r.pending+2>r.pending_buf_size&&v(e),r.pending+2<=r.pending_buf_size&&(P(r,255&e.adler),P(r,e.adler>>8&255),e.adler=0,r.status=p)):r.status=p),0!==r.pending){if(v(e),0===e.avail_out)return r.last_flush=-1,0}else if(0===e.avail_in&&g(t)<=g(i)&&4!==t)return _(e,-5);if(r.status===f&&0!==e.avail_in)return _(e,-5);if(0!==e.avail_in||0!==r.lookahead||0!==t&&r.status!==f){var x=2===r.strategy?function(e,t){for(var i;;){if(0===e.lookahead&&(M(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,i=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,i&&(b(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(b(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(b(e,!1),0===e.strm.avail_out)?1:2}(r,t):3===r.strategy?function(e,t){for(var i,s,r,a,n=e.window;;){if(e.lookahead<=c){if(M(e),e.lookahead<=c&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(s=n[r=e.strstart-1])===n[++r]&&s===n[++r]&&s===n[++r]){a=e.strstart+c;do{}while(s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&s===n[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(i=o._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(i=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),i&&(b(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(b(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(b(e,!1),0===e.strm.avail_out)?1:2}(r,t):s[r.level].func(r,t);if(3!==x&&4!==x||(r.status=f),1===x||3===x)return 0===e.avail_out&&(r.last_flush=-1),0;if(2===x&&(1===t?o._tr_align(r):5!==t&&(o._tr_stored_block(r,0,0,!1),3===t&&(m(r.head),0===r.lookahead&&(r.strstart=0,r.block_start=0,r.insert=0))),v(e),0===e.avail_out))return r.last_flush=-1,0}return 4!==t?0:r.wrap<=0?1:(2===r.wrap?(P(r,255&e.adler),P(r,e.adler>>8&255),P(r,e.adler>>16&255),P(r,e.adler>>24&255),P(r,255&e.total_in),P(r,e.total_in>>8&255),P(r,e.total_in>>16&255),P(r,e.total_in>>24&255)):(y(r,e.adler>>>16),y(r,65535&e.adler)),v(e),r.wrap>0&&(r.wrap=-r.wrap),0!==r.pending?0:1)},i.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&t!==d&&t!==p&&t!==f?_(e,h):(e.state=null,t===p?_(e,-3):0):h},i.deflateSetDictionary=function(e,t){var i,s,o,n,l,c,u,d,p=t.length;if(!e||!e.state)return h;if(2===(n=(i=e.state).wrap)||1===n&&42!==i.status||i.lookahead)return h;for(1===n&&(e.adler=a(e.adler,t,p,0)),i.wrap=0,p>=i.w_size&&(0===n&&(m(i.head),i.strstart=0,i.block_start=0,i.insert=0),d=new r.Buf8(i.w_size),r.arraySet(d,t,p-i.w_size,i.w_size,0),t=d,p=i.w_size),l=e.avail_in,c=e.next_in,u=e.input,e.avail_in=p,e.next_in=0,e.input=t,M(i);i.lookahead>=3;){s=i.strstart,o=i.lookahead-2;do{i.ins_h=(i.ins_h<>>=P=b>>>24,f-=P,0===(P=b>>>16&255))C[o++]=65535&b;else{if(!(16&P)){if(0==(64&P)){b=_[(65535&b)+(p&(1<>>=P,f-=P),f<15&&(p+=E[s++]<>>=P=b>>>24,f-=P,!(16&(P=b>>>16&255))){if(0==(64&P)){b=g[(65535&b)+(p&(1<l){e.msg=\"invalid distance too far back\",i.mode=30;break e}if(p>>>=P,f-=P,x>(P=o-a)){if((P=x-P)>c&&i.sane){e.msg=\"invalid distance too far back\",i.mode=30;break e}if(M=0,w=d,0===u){if(M+=h-P,P2;)C[o++]=w[M++],C[o++]=w[M++],C[o++]=w[M++],y-=3;y&&(C[o++]=w[M++],y>1&&(C[o++]=w[M++]))}else{M=o-x;do{C[o++]=C[M++],C[o++]=C[M++],C[o++]=C[M++],y-=3}while(y>2);y&&(C[o++]=C[M++],y>1&&(C[o++]=C[M++]))}break}}break}}while(s>3,p&=(1<<(f-=y<<3))-1,e.next_in=s,e.next_out=o,e.avail_in=s>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function d(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new s.Buf16(320),this.work=new s.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function p(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new s.Buf32(852),t.distcode=t.distdyn=new s.Buf32(592),t.sane=1,t.back=-1,0):l}function f(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,p(e)):l}function _(e,t){var i,s;return e&&e.state?(s=e.state,t<0?(i=0,t=-t):(i=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?l:(null!==s.window&&s.wbits!==t&&(s.window=null),s.wrap=i,s.wbits=t,f(e))):l}function g(e,t){var i,s;return e?(s=new d,e.state=s,s.window=null,0!==(i=_(e,t))&&(e.state=null),i):l}var m,v,b=!0;function P(e){if(b){var t;for(m=new s.Buf32(512),v=new s.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(n(1,e.lens,0,288,m,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;n(2,e.lens,0,32,v,0,e.work,{bits:5}),b=!1}e.lencode=m,e.lenbits=9,e.distcode=v,e.distbits=5}function y(e,t,i,r){var o,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(s.arraySet(a.window,t,i-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):((o=a.wsize-a.wnext)>r&&(o=r),s.arraySet(a.window,t,i-r,o,a.wnext),(r-=o)?(s.arraySet(a.window,t,i-r,r,0),a.wnext=r,a.whave=a.wsize):(a.wnext+=o,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,i.check=o(i.check,k,2,0),v=0,b=0,i.mode=2;break}if(i.flags=0,i.head&&(i.head.done=!1),!(1&i.wrap)||(((255&v)<<8)+(v>>8))%31){e.msg=\"incorrect header check\",i.mode=c;break}if(8!=(15&v)){e.msg=\"unknown compression method\",i.mode=c;break}if(b-=4,R=8+(15&(v>>>=4)),0===i.wbits)i.wbits=R;else if(R>i.wbits){e.msg=\"invalid window size\",i.mode=c;break}i.dmax=1<>8&1),512&i.flags&&(k[0]=255&v,k[1]=v>>>8&255,i.check=o(i.check,k,2,0)),v=0,b=0,i.mode=3;case 3:for(;b<32;){if(0===g)break e;g--,v+=d[f++]<>>8&255,k[2]=v>>>16&255,k[3]=v>>>24&255,i.check=o(i.check,k,4,0)),v=0,b=0,i.mode=4;case 4:for(;b<16;){if(0===g)break e;g--,v+=d[f++]<>8),512&i.flags&&(k[0]=255&v,k[1]=v>>>8&255,i.check=o(i.check,k,2,0)),v=0,b=0,i.mode=5;case 5:if(1024&i.flags){for(;b<16;){if(0===g)break e;g--,v+=d[f++]<>>8&255,i.check=o(i.check,k,2,0)),v=0,b=0}else i.head&&(i.head.extra=null);i.mode=6;case 6:if(1024&i.flags&&((w=i.length)>g&&(w=g),w&&(i.head&&(R=i.head.extra_len-i.length,i.head.extra||(i.head.extra=new Array(i.head.extra_len)),s.arraySet(i.head.extra,d,f,w,R)),512&i.flags&&(i.check=o(i.check,d,w,f)),g-=w,f+=w,i.length-=w),i.length))break e;i.length=0,i.mode=7;case 7:if(2048&i.flags){if(0===g)break e;w=0;do{R=d[f+w++],i.head&&R&&i.length<65536&&(i.head.name+=String.fromCharCode(R))}while(R&&w>9&1,i.head.done=!0),e.adler=i.check=0,i.mode=h;break;case 10:for(;b<32;){if(0===g)break e;g--,v+=d[f++]<>>=7&b,b-=7&b,i.mode=27;break}for(;b<3;){if(0===g)break e;g--,v+=d[f++]<>>=1)){case 0:i.mode=14;break;case 1:if(P(i),i.mode=20,6===t){v>>>=2,b-=2;break e}break;case 2:i.mode=17;break;case 3:e.msg=\"invalid block type\",i.mode=c}v>>>=2,b-=2;break;case 14:for(v>>>=7&b,b-=7&b;b<32;){if(0===g)break e;g--,v+=d[f++]<>>16^65535)){e.msg=\"invalid stored block lengths\",i.mode=c;break}if(i.length=65535&v,v=0,b=0,i.mode=15,6===t)break e;case 15:i.mode=16;case 16:if(w=i.length){if(w>g&&(w=g),w>m&&(w=m),0===w)break e;s.arraySet(p,d,f,w,_),g-=w,f+=w,m-=w,_+=w,i.length-=w;break}i.mode=h;break;case 17:for(;b<14;){if(0===g)break e;g--,v+=d[f++]<>>=5,b-=5,i.ndist=1+(31&v),v>>>=5,b-=5,i.ncode=4+(15&v),v>>>=4,b-=4,i.nlen>286||i.ndist>30){e.msg=\"too many length or distance symbols\",i.mode=c;break}i.have=0,i.mode=18;case 18:for(;i.have>>=3,b-=3}for(;i.have<19;)i.lens[V[i.have++]]=0;if(i.lencode=i.lendyn,i.lenbits=7,N={bits:i.lenbits},F=n(0,i.lens,0,19,i.lencode,0,i.work,N),i.lenbits=N.bits,F){e.msg=\"invalid code lengths set\",i.mode=c;break}i.have=0,i.mode=19;case 19:for(;i.have>>16&255,D=65535&O,!((A=O>>>24)<=b);){if(0===g)break e;g--,v+=d[f++]<>>=A,b-=A,i.lens[i.have++]=D;else{if(16===D){for(I=A+2;b>>=A,b-=A,0===i.have){e.msg=\"invalid bit length repeat\",i.mode=c;break}R=i.lens[i.have-1],w=3+(3&v),v>>>=2,b-=2}else if(17===D){for(I=A+3;b>>=A)),v>>>=3,b-=3}else{for(I=A+7;b>>=A)),v>>>=7,b-=7}if(i.have+w>i.nlen+i.ndist){e.msg=\"invalid bit length repeat\",i.mode=c;break}for(;w--;)i.lens[i.have++]=R}}if(i.mode===c)break;if(0===i.lens[256]){e.msg=\"invalid code -- missing end-of-block\",i.mode=c;break}if(i.lenbits=9,N={bits:i.lenbits},F=n(1,i.lens,0,i.nlen,i.lencode,0,i.work,N),i.lenbits=N.bits,F){e.msg=\"invalid literal/lengths set\",i.mode=c;break}if(i.distbits=6,i.distcode=i.distdyn,N={bits:i.distbits},F=n(2,i.lens,i.nlen,i.ndist,i.distcode,0,i.work,N),i.distbits=N.bits,F){e.msg=\"invalid distances set\",i.mode=c;break}if(i.mode=20,6===t)break e;case 20:i.mode=21;case 21:if(g>=6&&m>=258){e.next_out=_,e.avail_out=m,e.next_in=f,e.avail_in=g,i.hold=v,i.bits=b,a(e,M),_=e.next_out,p=e.output,m=e.avail_out,f=e.next_in,d=e.input,g=e.avail_in,v=i.hold,b=i.bits,i.mode===h&&(i.back=-1);break}for(i.back=0;S=(O=i.lencode[v&(1<>>16&255,D=65535&O,!((A=O>>>24)<=b);){if(0===g)break e;g--,v+=d[f++]<>L)])>>>16&255,D=65535&O,!(L+(A=O>>>24)<=b);){if(0===g)break e;g--,v+=d[f++]<>>=L,b-=L,i.back+=L}if(v>>>=A,b-=A,i.back+=A,i.length=D,0===S){i.mode=26;break}if(32&S){i.back=-1,i.mode=h;break}if(64&S){e.msg=\"invalid literal/length code\",i.mode=c;break}i.extra=15&S,i.mode=22;case 22:if(i.extra){for(I=i.extra;b>>=i.extra,b-=i.extra,i.back+=i.extra}i.was=i.length,i.mode=23;case 23:for(;S=(O=i.distcode[v&(1<>>16&255,D=65535&O,!((A=O>>>24)<=b);){if(0===g)break e;g--,v+=d[f++]<>L)])>>>16&255,D=65535&O,!(L+(A=O>>>24)<=b);){if(0===g)break e;g--,v+=d[f++]<>>=L,b-=L,i.back+=L}if(v>>>=A,b-=A,i.back+=A,64&S){e.msg=\"invalid distance code\",i.mode=c;break}i.offset=D,i.extra=15&S,i.mode=24;case 24:if(i.extra){for(I=i.extra;b>>=i.extra,b-=i.extra,i.back+=i.extra}if(i.offset>i.dmax){e.msg=\"invalid distance too far back\",i.mode=c;break}i.mode=25;case 25:if(0===m)break e;if(w=M-m,i.offset>w){if((w=i.offset-w)>i.whave&&i.sane){e.msg=\"invalid distance too far back\",i.mode=c;break}w>i.wnext?(w-=i.wnext,E=i.wsize-w):E=i.wnext-w,w>i.length&&(w=i.length),C=i.window}else C=p,E=_-i.offset,w=i.length;w>m&&(w=m),m-=w,i.length-=w;do{p[_++]=C[E++]}while(--w);0===i.length&&(i.mode=21);break;case 26:if(0===m)break e;p[_++]=i.length,m--,i.mode=21;break;case 27:if(i.wrap){for(;b<32;){if(0===g)break e;g--,v|=d[f++]<=1&&0===I[A];A--);if(S>A&&(S=A),0===A)return c[u++]=20971520,c[u++]=20971520,p.bits=1,0;for(C=1;C0&&(0===e||1!==A))return-1;for(O[1]=0,w=1;w852||2===e&&T>592)return 1;for(;;){P=w-L,d[E]b?(y=k[V+d[E]],x=F[N+d[E]]):(y=96,x=0),f=1<>L)+(_-=f)]=P<<24|y<<16|x|0}while(0!==_);for(f=1<>=1;if(0!==f?(R&=f-1,R+=f):R=0,E++,0==--I[w]){if(w===A)break;w=t[i+d[E]]}if(w>S&&(R&m)!==g){for(0===L&&(L=S),v+=C,B=1<<(D=w-L);D+L852||2===e&&T>592)return 1;c[g=R&m]=S<<24|D<<16|v-u|0}}return 0!==R&&(c[v+R]=w-L<<24|64<<16|0),p.bits=S,0}},{\"../utils/common\":3}],13:[function(e,t,i){t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],14:[function(e,t,i){var s=e(\"../utils/common\");function r(e){for(var t=e.length;--t>=0;)e[t]=0}var o=256,a=286,n=30,l=15,h=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],c=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],u=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],d=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],p=new Array(576);r(p);var f=new Array(60);r(f);var _=new Array(512);r(_);var g=new Array(256);r(g);var m=new Array(29);r(m);var v,b,P,y=new Array(n);function x(e,t,i,s,r){this.static_tree=e,this.extra_bits=t,this.extra_base=i,this.elems=s,this.max_length=r,this.has_stree=e&&e.length}function M(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function w(e){return e<256?_[e]:_[256+(e>>>7)]}function E(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function C(e,t,i){e.bi_valid>16-i?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=i-16):(e.bi_buf|=t<>>=1,i<<=1}while(--t>0);return i>>>1}function D(e,t,i){var s,r,o=new Array(16),a=0;for(s=1;s<=l;s++)o[s]=a=a+i[s-1]<<1;for(r=0;r<=t;r++){var n=e[2*r+1];0!==n&&(e[2*r]=S(o[n]++,n))}}function L(e){var t;for(t=0;t8?E(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function T(e,t,i,s){var r=2*t,o=2*i;return e[r]>1;i>=1;i--)R(e,o,i);r=h;do{i=e.heap[1],e.heap[1]=e.heap[e.heap_len--],R(e,o,1),s=e.heap[1],e.heap[--e.heap_max]=i,e.heap[--e.heap_max]=s,o[2*r]=o[2*i]+o[2*s],e.depth[r]=(e.depth[i]>=e.depth[s]?e.depth[i]:e.depth[s])+1,o[2*i+1]=o[2*s+1]=r,e.heap[1]=r++,R(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var i,s,r,o,a,n,h=t.dyn_tree,c=t.max_code,u=t.stat_desc.static_tree,d=t.stat_desc.has_stree,p=t.stat_desc.extra_bits,f=t.stat_desc.extra_base,_=t.stat_desc.max_length,g=0;for(o=0;o<=l;o++)e.bl_count[o]=0;for(h[2*e.heap[e.heap_max]+1]=0,i=e.heap_max+1;i<573;i++)(o=h[2*h[2*(s=e.heap[i])+1]+1]+1)>_&&(o=_,g++),h[2*s+1]=o,s>c||(e.bl_count[o]++,a=0,s>=f&&(a=p[s-f]),n=h[2*s],e.opt_len+=n*(o+a),d&&(e.static_len+=n*(u[2*s+1]+a)));if(0!==g){do{for(o=_-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[_]--,g-=2}while(g>0);for(o=_;0!==o;o--)for(s=e.bl_count[o];0!==s;)(r=e.heap[--i])>c||(h[2*r+1]!==o&&(e.opt_len+=(o-h[2*r+1])*h[2*r],h[2*r+1]=o),s--)}}(e,t),D(o,c,e.bl_count)}function I(e,t,i){var s,r,o=-1,a=t[1],n=0,l=7,h=4;for(0===a&&(l=138,h=3),t[2*(i+1)+1]=65535,s=0;s<=i;s++)r=a,a=t[2*(s+1)+1],++n>=7;s0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,i=4093624447;for(t=0;t<=31;t++,i>>>=1)if(1&i&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t=3&&0===e.bl_tree[2*d[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),r=e.opt_len+3+7>>>3,(a=e.static_len+3+7>>>3)<=r&&(r=a)):r=a=i+5,i+4<=r&&-1!==t?V(e,t,i,s):4===e.strategy||a===r?(C(e,2+(s?1:0),3),F(e,p,f)):(C(e,4+(s?1:0),3),function(e,t,i,s){var r;for(C(e,t-257,5),C(e,i-1,5),C(e,s-4,4),r=0;r>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&i,e.last_lit++,0===t?e.dyn_ltree[2*i]++:(e.matches++,t--,e.dyn_ltree[2*(g[i]+o+1)]++,e.dyn_dtree[2*w(t)]++),e.last_lit===e.lit_bufsize-1},i._tr_align=function(e){C(e,2,3),A(e,256,p),function(e){16===e.bi_valid?(E(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":3}],15:[function(e,t,i){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],\"/\":[function(e,t,i){var s={};(0,e(\"./lib/utils/common\").assign)(s,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=s},{\"./lib/deflate\":1,\"./lib/inflate\":2,\"./lib/utils/common\":3,\"./lib/zlib/constants\":6}]},{},[])(\"/\")}));var Ga=Object.freeze({__proto__:null});let Xa=window.pako||Ga;Xa.inflate||(Xa=Xa.default);const Ha=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const Wa={version:1,parse:function(e,t,i,s){!function(e,t,i,s){s.positionsCompression=\"precompressed\",s.normalsCompression=\"precompressed\";const r=i.positions,o=i.normals,a=i.indices,n=i.edgeIndices,l=i.meshPositions,h=i.meshIndices,c=i.meshEdgesIndices,d=i.meshColors,p=JSON.parse(i.entityIDs),f=i.entityMeshes,g=i.entityIsObjects,m=l.length,v=f.length;for(let b=0;bp[e]p[t]?1:0));for(let e=0;e1||(E[i]=e)}}for(let e=0;e1,g=en(f.subarray(4*t,4*t+3)),v=f[4*t+3]/255,b=r.subarray(c[t],i?r.length:c[t+1]),y=o.subarray(c[t],i?o.length:c[t+1]),w=a.subarray(u[t],i?a.length:u[t+1]),A=n.subarray(d[t],i?n.length:d[t+1]),S=l.subarray(p[t],p[t]+16);if(h){var C=\"geometry\"+t;s.createGeometry({id:C,primitive:\"triangles\",positions:b,normals:y,indices:w,edgeIndices:A,positionsDecodeMatrix:S})}else{const e=t;m[E[t]];const i={};s.createMesh(_.apply(i,{id:e,primitive:\"triangles\",positions:b,normals:y,indices:w,edgeIndices:A,positionsDecodeMatrix:S,color:g,opacity:v}))}}let A=0;for(let e=0;e1){const t={},r=\"instance.\"+A++,o=\"geometry\"+i,a=16*b[e],l=h.subarray(a,a+16);s.createMesh(_.apply(t,{id:r,geometryId:o,matrix:l})),n.push(r)}else n.push(i)}if(n.length>0){const e={};s.createEntity(_.apply(e,{id:r,isObject:!0,meshIds:n}))}}}(0,0,function(e){return{positions:new Uint16Array(Ja.inflate(e.positions).buffer),normals:new Int8Array(Ja.inflate(e.normals).buffer),indices:new Uint32Array(Ja.inflate(e.indices).buffer),edgeIndices:new Uint32Array(Ja.inflate(e.edgeIndices).buffer),decodeMatrices:new Float32Array(Ja.inflate(e.decodeMatrices).buffer),matrices:new Float32Array(Ja.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(Ja.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(Ja.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(Ja.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveDecodeMatricesPortion:new Uint32Array(Ja.inflate(e.eachPrimitiveDecodeMatricesPortion).buffer),eachPrimitiveColor:new Uint8Array(Ja.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(Ja.inflate(e.primitiveInstances).buffer),eachEntityId:Ja.inflate(e.eachEntityId,{to:\"string\"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(Ja.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(Ja.inflate(e.eachEntityMatricesPortion).buffer)}}(function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],decodeMatrices:e[4],matrices:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveDecodeMatricesPortion:e[9],eachPrimitiveColor:e[10],primitiveInstances:e[11],eachEntityId:e[12],eachEntityPrimitiveInstancesPortion:e[13],eachEntityMatricesPortion:e[14],eachEntityMatrix:e[15]}}(i)),s)}};let sn=window.pako||Ga;sn.inflate||(sn=sn.default);const rn=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const on={version:5,parse:function(e,t,i,s){!function(e,t,i,s){s.positionsCompression=\"disabled\",s.normalsCompression=\"precompressed\";const r=i.positions,o=i.normals,a=i.indices,n=i.edgeIndices,l=i.matrices,h=i.eachPrimitivePositionsAndNormalsPortion,c=i.eachPrimitiveIndicesPortion,u=i.eachPrimitiveEdgeIndicesPortion,d=i.eachPrimitiveColor,p=i.primitiveInstances,f=JSON.parse(i.eachEntityId),g=i.eachEntityPrimitiveInstancesPortion,m=i.eachEntityMatricesPortion,v=h.length,b=p.length,P=new Uint8Array(v),y=f.length;for(let e=0;e1||(x[i]=e)}}for(let e=0;e1,l=rn(d.subarray(4*e,4*e+3)),p=d[4*e+3]/255,g=r.subarray(h[e],t?r.length:h[e+1]),m=o.subarray(h[e],t?o.length:h[e+1]),b=a.subarray(c[e],t?a.length:c[e+1]),y=n.subarray(u[e],t?n.length:u[e+1]);if(i){var M=\"geometry\"+e;s.createGeometry({id:M,primitive:\"triangles\",positions:g,normals:m,indices:b,edgeIndices:y})}else{const t=e;f[x[e]];const i={};s.createMesh(_.apply(i,{id:t,primitive:\"triangles\",positions:g,normals:m,indices:b,edgeIndices:y,color:l,opacity:p}))}}let w=0;for(let e=0;e1){const t={},r=\"instance.\"+w++,o=\"geometry\"+i,a=16*m[e],h=l.subarray(a,a+16);s.createMesh(_.apply(t,{id:r,geometryId:o,matrix:h})),n.push(r)}else n.push(i)}if(n.length>0){const e={};s.createEntity(_.apply(e,{id:r,isObject:!0,meshIds:n}))}}}(0,0,function(e){return{positions:new Float32Array(sn.inflate(e.positions).buffer),normals:new Int8Array(sn.inflate(e.normals).buffer),indices:new Uint32Array(sn.inflate(e.indices).buffer),edgeIndices:new Uint32Array(sn.inflate(e.edgeIndices).buffer),matrices:new Float32Array(sn.inflate(e.matrices).buffer),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(sn.inflate(e.eachPrimitivePositionsAndNormalsPortion).buffer),eachPrimitiveIndicesPortion:new Uint32Array(sn.inflate(e.eachPrimitiveIndicesPortion).buffer),eachPrimitiveEdgeIndicesPortion:new Uint32Array(sn.inflate(e.eachPrimitiveEdgeIndicesPortion).buffer),eachPrimitiveColor:new Uint8Array(sn.inflate(e.eachPrimitiveColor).buffer),primitiveInstances:new Uint32Array(sn.inflate(e.primitiveInstances).buffer),eachEntityId:sn.inflate(e.eachEntityId,{to:\"string\"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(sn.inflate(e.eachEntityPrimitiveInstancesPortion).buffer),eachEntityMatricesPortion:new Uint32Array(sn.inflate(e.eachEntityMatricesPortion).buffer)}}(function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],eachPrimitivePositionsAndNormalsPortion:e[5],eachPrimitiveIndicesPortion:e[6],eachPrimitiveEdgeIndicesPortion:e[7],eachPrimitiveColor:e[8],primitiveInstances:e[9],eachEntityId:e[10],eachEntityPrimitiveInstancesPortion:e[11],eachEntityMatricesPortion:e[12]}}(i)),s)}};let an=window.pako||Ga;an.inflate||(an=an.default);const nn=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const ln={version:6,parse:function(e,t,i,s){!function(e,t,i,s){const r=i.positions,o=i.normals,a=i.indices,n=i.edgeIndices,l=i.matrices,h=i.reusedPrimitivesDecodeMatrix,c=i.eachPrimitivePositionsAndNormalsPortion,d=i.eachPrimitiveIndicesPortion,p=i.eachPrimitiveEdgeIndicesPortion,f=i.eachPrimitiveColorAndOpacity,g=i.primitiveInstances,m=JSON.parse(i.eachEntityId),v=i.eachEntityPrimitiveInstancesPortion,b=i.eachEntityMatricesPortion,P=i.eachTileAABB,y=i.eachTileEntitiesPortion,x=c.length,M=g.length,w=m.length,E=y.length;let C=0;const A=new Uint32Array(x);for(let e=0;e1,u=t===x-1,m=r.subarray(c[t],u?r.length:c[t+1]),v=o.subarray(c[t],u?o.length:c[t+1]),b=a.subarray(d[t],u?a.length:d[t+1]),P=n.subarray(p[t],u?n.length:p[t+1]),y=nn(f.subarray(4*t,4*t+3)),M=f[4*t+3]/255,w=C++;if(l){const e=\"geometry.\"+i+\".\"+t;N[e]||(s.createGeometry({id:e,rtcCenter:S,primitive:\"triangles\",positions:m,normals:v,indices:b,edgeIndices:P,positionsDecodeMatrix:h}),N[e]=!0),s.createMesh(_.apply(k,{id:w,geometryId:e,matrix:D,color:y,opacity:M})),R.push(w)}else s.createMesh(_.apply(k,{id:w,rtcCenter:S,primitive:\"triangles\",positions:m,normals:v,indices:b,edgeIndices:P,positionsDecodeMatrix:F,color:y,opacity:M})),R.push(w)}R.length>0&&s.createEntity(_.apply(O,{id:M,isObject:!0,meshIds:R}))}}}(e,t,function(e){function t(e,t){return 0===e.length?[]:an.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedPrimitivesDecodeMatrix:new Float32Array(t(e.reusedPrimitivesDecodeMatrix)),eachPrimitivePositionsAndNormalsPortion:new Uint32Array(t(e.eachPrimitivePositionsAndNormalsPortion)),eachPrimitiveIndicesPortion:new Uint32Array(t(e.eachPrimitiveIndicesPortion)),eachPrimitiveEdgeIndicesPortion:new Uint32Array(t(e.eachPrimitiveEdgeIndicesPortion)),eachPrimitiveColorAndOpacity:new Uint8Array(t(e.eachPrimitiveColorAndOpacity)),primitiveInstances:new Uint32Array(t(e.primitiveInstances)),eachEntityId:an.inflate(e.eachEntityId,{to:\"string\"}),eachEntityPrimitiveInstancesPortion:new Uint32Array(t(e.eachEntityPrimitiveInstancesPortion)),eachEntityMatricesPortion:new Uint32Array(t(e.eachEntityMatricesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(function(e){return{positions:e[0],normals:e[1],indices:e[2],edgeIndices:e[3],matrices:e[4],reusedPrimitivesDecodeMatrix:e[5],eachPrimitivePositionsAndNormalsPortion:e[6],eachPrimitiveIndicesPortion:e[7],eachPrimitiveEdgeIndicesPortion:e[8],eachPrimitiveColorAndOpacity:e[9],primitiveInstances:e[10],eachEntityId:e[11],eachEntityPrimitiveInstancesPortion:e[12],eachEntityMatricesPortion:e[13],eachTileAABB:e[14],eachTileEntitiesPortion:e[15]}}(i)),s)}};let hn=window.pako||Ga;hn.inflate||(hn=hn.default);const cn=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function un(e){const t=[];for(let i=0,s=e.length;i1,x=t===C-1,M=cn(y.subarray(6*e,6*e+3)),w=y[6*e+3]/255,E=y[6*e+4]/255,A=y[6*e+5]/255,S=L++;if(u){const u=P[e],b=h.slice(u,u+16),y=\"geometry.\"+i+\".\"+t;if(!V[y]){let e,i,h,u,_,b;switch(d[t]){case 0:e=\"solid\",i=r.subarray(p[t],x?r.length:p[t+1]),h=o.subarray(f[t],x?o.length:f[t+1]),_=n.subarray(m[t],x?n.length:m[t+1]),b=l.subarray(v[t],x?l.length:v[t+1]);break;case 1:e=\"surface\",i=r.subarray(p[t],x?r.length:p[t+1]),h=o.subarray(f[t],x?o.length:f[t+1]),_=n.subarray(m[t],x?n.length:m[t+1]),b=l.subarray(v[t],x?l.length:v[t+1]);break;case 2:e=\"points\",i=r.subarray(p[t],x?r.length:p[t+1]),u=un(a.subarray(g[t],x?a.length:g[t+1]));break;case 3:e=\"lines\",i=r.subarray(p[t],x?r.length:p[t+1]),_=n.subarray(m[t],x?n.length:m[t+1]);break;default:continue}s.createGeometry({id:y,rtcCenter:T,primitive:e,positions:i,normals:h,colors:u,indices:_,edgeIndices:b,positionsDecodeMatrix:c}),V[y]=!0}s.createMesh(_.apply(j,{id:S,geometryId:y,matrix:b,color:M,metallic:E,roughness:A,opacity:w})),N.push(S)}else{let e,i,h,c,u,b;switch(d[t]){case 0:e=\"solid\",i=r.subarray(p[t],x?r.length:p[t+1]),h=o.subarray(f[t],x?o.length:f[t+1]),u=n.subarray(m[t],x?n.length:m[t+1]),b=l.subarray(v[t],x?l.length:v[t+1]);break;case 1:e=\"surface\",i=r.subarray(p[t],x?r.length:p[t+1]),h=o.subarray(f[t],x?o.length:f[t+1]),u=n.subarray(m[t],x?n.length:m[t+1]),b=l.subarray(v[t],x?l.length:v[t+1]);break;case 2:e=\"points\",i=r.subarray(p[t],x?r.length:p[t+1]),c=un(a.subarray(g[t],x?a.length:g[t+1]));break;case 3:e=\"lines\",i=r.subarray(p[t],x?r.length:p[t+1]),u=n.subarray(m[t],x?n.length:m[t+1]);break;default:continue}s.createMesh(_.apply(j,{id:S,rtcCenter:T,primitive:e,positions:i,normals:h,colors:c,indices:u,edgeIndices:b,positionsDecodeMatrix:k,color:M,metallic:E,roughness:A,opacity:w})),N.push(S)}}N.length>0&&s.createEntity(_.apply(O,{id:A,isObject:!0,meshIds:N}))}}}(e,t,function(e){function t(e,t){return 0===e.length?[]:hn.inflate(e,t).buffer}return{positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:hn.inflate(e.eachEntityId,{to:\"string\"}),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(function(e){return{positions:e[0],normals:e[1],colors:e[2],indices:e[3],edgeIndices:e[4],matrices:e[5],reusedGeometriesDecodeMatrix:e[6],eachGeometryPrimitiveType:e[7],eachGeometryPositionsPortion:e[8],eachGeometryNormalsPortion:e[9],eachGeometryColorsPortion:e[10],eachGeometryIndicesPortion:e[11],eachGeometryEdgeIndicesPortion:e[12],eachMeshGeometriesPortion:e[13],eachMeshMatricesPortion:e[14],eachMeshMaterial:e[15],eachEntityId:e[16],eachEntityMeshesPortion:e[17],eachTileAABB:e[18],eachTileEntitiesPortion:e[19]}}(i)),s)}};let pn=window.pako||Ga;pn.inflate||(pn=pn.default);const fn=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();function _n(e){const t=[];for(let i=0,s=e.length;i{e.metaScene.destroyMetaModel(O)}))}const k=new Uint32Array(T);for(let e=0;e1,o=t===T-1,a=fn(C.subarray(6*e,6*e+3)),n=C[6*e+3]/255,l=C[6*e+4]/255,u=C[6*e+5]/255,A=I++;if(r){const r=E[e],w=g.slice(r,r+16),C=\"geometry.\"+i+\".\"+t;if(!O[C]){let e,i,r,a,n,l,u=!1;switch(v[t]){case 0:e=\"solid\",i=h.subarray(b[t],o?h.length:b[t+1]),r=c.subarray(P[t],o?c.length:P[t+1]),n=p.subarray(x[t],o?p.length:x[t+1]),l=f.subarray(M[t],o?f.length:M[t+1]),u=i.length>0&&n.length>0;break;case 1:e=\"surface\",i=h.subarray(b[t],o?h.length:b[t+1]),r=c.subarray(P[t],o?c.length:P[t+1]),n=p.subarray(x[t],o?p.length:x[t+1]),l=f.subarray(M[t],o?f.length:M[t+1]),u=i.length>0&&n.length>0;break;case 2:e=\"points\",i=h.subarray(b[t],o?h.length:b[t+1]),a=_n(d.subarray(y[t],o?d.length:y[t+1])),u=i.length>0;break;case 3:e=\"lines\",i=h.subarray(b[t],o?h.length:b[t+1]),n=p.subarray(x[t],o?p.length:x[t+1]),u=i.length>0&&n.length>0;break;default:continue}u&&(s.createGeometry({id:C,rtcCenter:V,primitive:e,positions:i,normals:r,colorsCompressed:a,indices:n,edgeIndices:l,positionsDecodeMatrix:m}),O[C]=!0)}O[C]&&(s.createMesh(_.apply(z,{id:A,geometryId:C,matrix:w,color:a,metallic:l,roughness:u,opacity:n})),B.push(A))}else{let e,i,r,g,m,w,E=!1;switch(v[t]){case 0:e=\"solid\",i=h.subarray(b[t],o?h.length:b[t+1]),r=c.subarray(P[t],o?c.length:P[t+1]),m=p.subarray(x[t],o?p.length:x[t+1]),w=f.subarray(M[t],o?f.length:M[t+1]),E=i.length>0&&m.length>0;break;case 1:e=\"surface\",i=h.subarray(b[t],o?h.length:b[t+1]),r=c.subarray(P[t],o?c.length:P[t+1]),m=p.subarray(x[t],o?p.length:x[t+1]),w=f.subarray(M[t],o?f.length:M[t+1]),E=i.length>0&&m.length>0;break;case 2:e=\"points\",i=h.subarray(b[t],o?h.length:b[t+1]),g=_n(d.subarray(y[t],o?d.length:y[t+1])),E=i.length>0;break;case 3:e=\"lines\",i=h.subarray(b[t],o?h.length:b[t+1]),m=p.subarray(x[t],o?p.length:x[t+1]),E=i.length>0&&m.length>0;break;default:continue}E&&(s.createMesh(_.apply(z,{id:A,rtcCenter:V,primitive:e,positions:i,normals:r,colorsCompressed:g,indices:m,edgeIndices:w,positionsDecodeMatrix:R,color:a,metallic:l,roughness:u,opacity:n})),B.push(A))}}B.length>0&&s.createEntity(_.apply(j,{id:n,isObject:!0,meshIds:B}))}}}(e,t,function(e){function t(e,t){return 0===e.length?[]:pn.inflate(e,t).buffer}return{types:pn.inflate(e.types,{to:\"string\"}),eachMetaObjectId:pn.inflate(e.eachMetaObjectId,{to:\"string\"}),eachMetaObjectType:new Uint32Array(t(e.eachMetaObjectType)),eachMetaObjectName:pn.inflate(e.eachMetaObjectName,{to:\"string\"}),eachMetaObjectParent:new Uint32Array(t(e.eachMetaObjectParent)),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityMetaObject:new Uint32Array(t(e.eachEntityMetaObject)),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(function(e){return{types:e[0],eachMetaObjectId:e[1],eachMetaObjectType:e[2],eachMetaObjectName:e[3],eachMetaObjectParent:e[4],positions:e[5],normals:e[6],colors:e[7],indices:e[8],edgeIndices:e[9],matrices:e[10],reusedGeometriesDecodeMatrix:e[11],eachGeometryPrimitiveType:e[12],eachGeometryPositionsPortion:e[13],eachGeometryNormalsPortion:e[14],eachGeometryColorsPortion:e[15],eachGeometryIndicesPortion:e[16],eachGeometryEdgeIndicesPortion:e[17],eachMeshGeometriesPortion:e[18],eachMeshMatricesPortion:e[19],eachMeshMaterial:e[20],eachEntityMetaObject:e[21],eachEntityMeshesPortion:e[22],eachTileAABB:e[23],eachTileEntitiesPortion:e[24]}}(i)),s)}};let mn=window.pako||Ga;mn.inflate||(mn=mn.default);const vn=function(){const e=new Float32Array(3);return function(t){return e[0]=t[0]/255,e[1]=t[1]/255,e[2]=t[2]/255,e}}();const bn={version:9,parse:function(e,t,i,s){!function(e,t,i,s){const r=i.metadata,o=i.positions,a=i.normals,n=i.colors,l=i.indices,h=i.edgeIndices,c=i.matrices,d=i.reusedGeometriesDecodeMatrix,p=i.eachGeometryPrimitiveType,f=i.eachGeometryPositionsPortion,g=i.eachGeometryNormalsPortion,m=i.eachGeometryColorsPortion,v=i.eachGeometryIndicesPortion,b=i.eachGeometryEdgeIndicesPortion,P=i.eachMeshGeometriesPortion,y=i.eachMeshMatricesPortion,x=i.eachMeshMaterial,M=i.eachEntityId,w=i.eachEntityMeshesPortion,E=i.eachTileAABB,C=i.eachTileEntitiesPortion,A=f.length,S=P.length,D=w.length,L=C.length;let B=0;const T=s.id;e.metaScene.metaModels[T]||(e.metaScene.createMetaModel(T,r,{includeTypes:t.includeTypes,excludeTypes:t.excludeTypes,globalizeObjectIds:t.globalizeObjectIds}),s.once(\"destroyed\",(()=>{e.metaScene.destroyMetaModel(T)})));const R=new Uint32Array(A);for(let e=0;e1,u=t===A-1,M=vn(x.subarray(6*e,6*e+3)),w=x[6*e+3]/255,E=x[6*e+4]/255,C=x[6*e+5]/255,S=B++;if(r){const r=y[e],P=c.slice(r,r+16),x=\"geometry.\"+i+\".\"+t;if(!V[x]){let e,i,r,c,_,P,y=!1;switch(p[t]){case 0:e=\"solid\",i=o.subarray(f[t],u?o.length:f[t+1]),r=a.subarray(g[t],u?a.length:g[t+1]),_=l.subarray(v[t],u?l.length:v[t+1]),P=h.subarray(b[t],u?h.length:b[t+1]),y=i.length>0&&_.length>0;break;case 1:e=\"surface\",i=o.subarray(f[t],u?o.length:f[t+1]),r=a.subarray(g[t],u?a.length:g[t+1]),_=l.subarray(v[t],u?l.length:v[t+1]),P=h.subarray(b[t],u?h.length:b[t+1]),y=i.length>0&&_.length>0;break;case 2:e=\"points\",i=o.subarray(f[t],u?o.length:f[t+1]),c=n.subarray(m[t],u?n.length:m[t+1]),y=i.length>0;break;case 3:e=\"lines\",i=o.subarray(f[t],u?o.length:f[t+1]),_=l.subarray(v[t],u?l.length:v[t+1]),y=i.length>0&&_.length>0;break;default:continue}y&&(s.createGeometry({id:x,rtcCenter:F,primitive:e,positions:i,normals:r,colorsCompressed:c,indices:_,edgeIndices:P,positionsDecodeMatrix:d}),V[x]=!0)}V[x]&&(s.createMesh(_.apply(j,{id:S,geometryId:x,matrix:P,color:M,metallic:E,roughness:C,opacity:w})),N.push(S))}else{let e,i,r,c,d,P,y=!1;switch(p[t]){case 0:e=\"solid\",i=o.subarray(f[t],u?o.length:f[t+1]),r=a.subarray(g[t],u?a.length:g[t+1]),d=l.subarray(v[t],u?l.length:v[t+1]),P=h.subarray(b[t],u?h.length:b[t+1]),y=i.length>0&&d.length>0;break;case 1:e=\"surface\",i=o.subarray(f[t],u?o.length:f[t+1]),r=a.subarray(g[t],u?a.length:g[t+1]),d=l.subarray(v[t],u?l.length:v[t+1]),P=h.subarray(b[t],u?h.length:b[t+1]),y=i.length>0&&d.length>0;break;case 2:e=\"points\",i=o.subarray(f[t],u?o.length:f[t+1]),c=n.subarray(m[t],u?n.length:m[t+1]),y=i.length>0;break;case 3:e=\"lines\",i=o.subarray(f[t],u?o.length:f[t+1]),d=l.subarray(v[t],u?l.length:v[t+1]),y=i.length>0&&d.length>0;break;default:continue}y&&(s.createMesh(_.apply(j,{id:S,rtcCenter:F,primitive:e,positions:i,normals:r,colorsCompressed:c,indices:d,edgeIndices:P,positionsDecodeMatrix:k,color:M,metallic:E,roughness:C,opacity:w})),N.push(S))}}N.length>0&&s.createEntity(_.apply(O,{id:C,isObject:!0,meshIds:N}))}}}(e,t,function(e){function t(e,t){return 0===e.length?[]:mn.inflate(e,t).buffer}return{metadata:JSON.parse(mn.inflate(e.metadata,{to:\"string\"})),positions:new Uint16Array(t(e.positions)),normals:new Int8Array(t(e.normals)),colors:new Uint8Array(t(e.colors)),indices:new Uint32Array(t(e.indices)),edgeIndices:new Uint32Array(t(e.edgeIndices)),matrices:new Float32Array(t(e.matrices)),reusedGeometriesDecodeMatrix:new Float32Array(t(e.reusedGeometriesDecodeMatrix)),eachGeometryPrimitiveType:new Uint8Array(t(e.eachGeometryPrimitiveType)),eachGeometryPositionsPortion:new Uint32Array(t(e.eachGeometryPositionsPortion)),eachGeometryNormalsPortion:new Uint32Array(t(e.eachGeometryNormalsPortion)),eachGeometryColorsPortion:new Uint32Array(t(e.eachGeometryColorsPortion)),eachGeometryIndicesPortion:new Uint32Array(t(e.eachGeometryIndicesPortion)),eachGeometryEdgeIndicesPortion:new Uint32Array(t(e.eachGeometryEdgeIndicesPortion)),eachMeshGeometriesPortion:new Uint32Array(t(e.eachMeshGeometriesPortion)),eachMeshMatricesPortion:new Uint32Array(t(e.eachMeshMatricesPortion)),eachMeshMaterial:new Uint8Array(t(e.eachMeshMaterial)),eachEntityId:JSON.parse(mn.inflate(e.eachEntityId,{to:\"string\"})),eachEntityMeshesPortion:new Uint32Array(t(e.eachEntityMeshesPortion)),eachTileAABB:new Float64Array(t(e.eachTileAABB)),eachTileEntitiesPortion:new Uint32Array(t(e.eachTileEntitiesPortion))}}(function(e){return{metadata:e[0],positions:e[1],normals:e[2],colors:e[3],indices:e[4],edgeIndices:e[5],matrices:e[6],reusedGeometriesDecodeMatrix:e[7],eachGeometryPrimitiveType:e[8],eachGeometryPositionsPortion:e[9],eachGeometryNormalsPortion:e[10],eachGeometryColorsPortion:e[11],eachGeometryIndicesPortion:e[12],eachGeometryEdgeIndicesPortion:e[13],eachMeshGeometriesPortion:e[14],eachMeshMatricesPortion:e[15],eachMeshMaterial:e[16],eachEntityId:e[17],eachEntityMeshesPortion:e[18],eachTileAABB:e[19],eachTileEntitiesPortion:e[20]}}(i)),s)}},Pn={};Pn[Wa.version]=Wa,Pn[Ka.version]=Ka,Pn[$a.version]=$a,Pn[tn.version]=tn,Pn[on.version]=on,Pn[ln.version]=ln,Pn[dn.version]=dn,Pn[gn.version]=gn,Pn[bn.version]=bn;class yn extends a{constructor(e,t={}){super(\"XKTLoader\",e,t),this._maxGeometryBatchSize=t.maxGeometryBatchSize,this.dataSource=t.dataSource,this.objectDefaults=t.objectDefaults,this.includeTypes=t.includeTypes,this.excludeTypes=t.excludeTypes,this.excludeUnclassifiedObjects=t.excludeUnclassifiedObjects}get supportedVersions(){return Object.keys(Pn)}set dataSource(e){this._dataSource=e||new Ua}get dataSource(){return this._dataSource}set objectDefaults(e){this._objectDefaults=e||Ea}get objectDefaults(){return this._objectDefaults}set includeTypes(e){this._includeTypes=e}get includeTypes(){return this._includeTypes}set excludeTypes(e){this._excludeTypes=e}get excludeTypes(){return this._excludeTypes}set excludeUnclassifiedObjects(e){this._excludeUnclassifiedObjects=!!e}get excludeUnclassifiedObjects(){return this._excludeUnclassifiedObjects}set globalizeObjectIds(e){this._globalizeObjectIds=!!e}get globalizeObjectIds(){return this._globalizeObjectIds}load(e={}){e.id&&this.viewer.scene.components[e.id]&&(this.error(\"Component with this ID already exists in viewer: \"+e.id+\" - will autogenerate this ID\"),delete e.id);const t=new aa(this.viewer.scene,_.apply(e,{isModel:!0,maxGeometryBatchSize:this._maxGeometryBatchSize})),i=t.id;if(!e.src&&!e.xkt)return this.error(\"load() param expected: src or xkt\"),t;const s={},r=e.includeTypes||this._includeTypes,o=e.excludeTypes||this._excludeTypes,a=e.objectDefaults||this._objectDefaults;if(r){s.includeTypesMap={};for(let e=0,t=r.length;e!!this.viewer.metaScene.createMetaModel(i,a,{includeTypes:r,excludeTypes:o,globalizeObjectIds:this.globalizeObjectIds})&&(e.src?this._loadModel(e.src,e,s,t):this._parseModel(e.xkt,e,s,t),t.once(\"destroyed\",(()=>{this.viewer.metaScene.destroyMetaModel(t.id)})),!0);if(e.metaModelSrc){const s=e.metaModelSrc;this.viewer.scene.canvas.spinner.processes++,this._dataSource.getMetaModel(s,(e=>{t.destroyed||(a(e)||(this.error(`load(): Failed to load model metadata for model '${i} from '${s}' - metadata not valid`),t.fire(\"error\",\"Metadata not valid\")),this.viewer.scene.canvas.spinner.processes--)}),(e=>{this.error(`load(): Failed to load model metadata for model '${i} from '${s}' - ${e}`),t.fire(\"error\",`Failed to load model metadata from '${s}' - ${e}`),this.viewer.scene.canvas.spinner.processes--}))}else e.metaModelData&&(a(e.metaModelData)||(this.error(`load(): Failed to load model metadata for model '${i} from '${e.metaModelSrc}' - metadata not valid`),t.fire(\"error\",\"Metadata not valid\")))}else e.src?this._loadModel(e.src,e,s,t):this._parseModel(e.xkt,e,s,t);return t}_loadModel(e,t,i,s){const r=this.viewer.scene.canvas.spinner;r.processes++,this._dataSource.getXKT(t.src,(e=>{this._parseModel(e,t,i,s),r.processes--}),(e=>{r.processes--,this.error(e),s.fire(\"error\",e)}))}_parseModel(e,t,i,s){if(s.destroyed)return;const r=new DataView(e),o=new Uint8Array(e),a=r.getUint32(0,!0),n=Pn[a];if(!n)return void this.error(\"Unsupported .XKT file version: \"+a+\" - this XKTLoaderPlugin supports versions \"+Object.keys(Pn));this.log(\"Loading .xkt V\"+a);const l=r.getUint32(4,!0),h=[];let c=4*(l+2);for(let e=0;e{s.destroyed||(s.scene.fire(\"modelLoaded\",s.id),s.fire(\"loaded\",!0,!1))}))}_createDefaultMetaModelIfNeeded(e,t,i){const s=e.id;if(!this.viewer.metaScene.metaModels[s]){const r={metaObjects:[]};r.metaObjects.push({id:s,type:\"default\",name:s,parent:null});const o=e.entityList;for(let e=0,t=o.length;eawait this._dataSource.getProperties(a,e)}),e.once(\"destroyed\",(()=>{this.viewer.metaScene.destroyMetaModel(s)}))}}}var xn={};!function(e){var t,i=\"File format is not recognized.\",s=\"Error while reading zip file.\",r=\"Error while reading file data.\",o=524288,a=\"text/plain\";try{t=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function n(){this.crc=-1}function l(){}function h(e,t){var i,s;return i=new ArrayBuffer(e),s=new Uint8Array(i),t&&s.set(t,0),{buffer:i,array:s,view:new DataView(i)}}function c(){}function u(e){var t,i=this;i.size=0,i.init=function(s,r){var o=new Blob([e],{type:a});(t=new p(o)).init((function(){i.size=t.size,s()}),r)},i.readUint8Array=function(e,i,s,r){t.readUint8Array(e,i,s,r)}}function d(t){var i,s=this;s.size=0,s.init=function(e){for(var r=t.length;\"=\"==t.charAt(r-1);)r--;i=t.indexOf(\",\")+1,s.size=Math.floor(.75*(r-i)),e()},s.readUint8Array=function(s,r,o){var a,n=h(r),l=4*Math.floor(s/3),c=4*Math.ceil((s+r)/3),u=e.atob(t.substring(l+i,c+i)),d=s-3*Math.floor(l/4);for(a=d;ae.size)throw new RangeError(\"offset:\"+t+\", length:\"+i+\", size:\"+e.size);return e.slice?e.slice(t,t+i):e.webkitSlice?e.webkitSlice(t,t+i):e.mozSlice?e.mozSlice(t,t+i):e.msSlice?e.msSlice(t,t+i):void 0}(e,t,i))}catch(e){r(e)}}}function f(){}function _(e){var i,s=this;s.init=function(e){i=new Blob([],{type:a}),e()},s.writeUint8Array=function(e,s){i=new Blob([i,t?e:e.buffer],{type:a}),s()},s.getData=function(t,s){var r=new FileReader;r.onload=function(e){t(e.target.result)},r.onerror=s,r.readAsText(i,e)}}function g(t){var i=this,s=\"\",r=\"\";i.init=function(e){s+=\"data:\"+(t||\"\")+\";base64,\",e()},i.writeUint8Array=function(t,i){var o,a=r.length,n=r;for(r=\"\",o=0;o<3*Math.floor((a+t.length)/3)-a;o++)n+=String.fromCharCode(t[o]);for(;o2?s+=e.btoa(n):r=n,i()},i.getData=function(t){t(s+e.btoa(r))}}function m(e){var i,s=this;s.init=function(t){i=new Blob([],{type:e}),t()},s.writeUint8Array=function(s,r){i=new Blob([i,t?s:s.buffer],{type:e}),r()},s.getData=function(e){e(i)}}function v(e,t,i,s,r,a,n,l,h,c){var u,d,p,f=0,_=t.sn;function g(){e.removeEventListener(\"message\",m,!1),l(d,p)}function m(t){var i=t.data,r=i.data,o=i.error;if(o)return o.toString=function(){return\"Error: \"+this.message},void h(o);if(i.sn===_)switch(\"number\"==typeof i.codecTime&&(e.codecTime+=i.codecTime),\"number\"==typeof i.crcTime&&(e.crcTime+=i.crcTime),i.type){case\"append\":r?(d+=r.length,s.writeUint8Array(r,(function(){v()}),c)):v();break;case\"flush\":p=i.crc,r?(d+=r.length,s.writeUint8Array(r,(function(){g()}),c)):g();break;case\"progress\":n&&n(u+i.loaded,a);break;case\"importScripts\":case\"newTask\":case\"echo\":break;default:console.warn(\"zip.js:launchWorkerProcess: unknown message: \",i)}}function v(){(u=f*o)<=a?i.readUint8Array(r+u,Math.min(o,a-u),(function(i){n&&n(u,a);var s=0===u?t:{sn:_};s.type=\"append\",s.data=i;try{e.postMessage(s,[i.buffer])}catch(t){e.postMessage(s)}f++}),h):e.postMessage({sn:_,type:\"flush\"})}d=0,e.addEventListener(\"message\",m,!1),v()}function b(e,t,i,s,r,a,l,h,c,u){var d,p=0,f=0,_=\"input\"===a,g=\"output\"===a,m=new n;!function a(){var n;if((d=p*o)127?r[i-128]:String.fromCharCode(i);return s}function x(e){return decodeURIComponent(escape(e))}function M(e){var t,i=\"\";for(t=0;t>16,i=65535&e;try{return new Date(1980+((65024&t)>>9),((480&t)>>5)-1,31&t,(63488&i)>>11,(2016&i)>>5,2*(31&i),0)}catch(e){}}(e.lastModDateRaw),1!=(1&e.bitFlag)?((s||8!=(8&e.bitFlag))&&(e.crc32=t.view.getUint32(i+10,!0),e.compressedSize=t.view.getUint32(i+14,!0),e.uncompressedSize=t.view.getUint32(i+18,!0)),4294967295!==e.compressedSize&&4294967295!==e.uncompressedSize?(e.filenameLength=t.view.getUint16(i+22,!0),e.extraFieldLength=t.view.getUint16(i+24,!0)):r(\"File is using Zip64 (4gb+ file size).\")):r(\"File contains encrypted entry.\")}function E(t,o,a){var n=0;function l(){}l.prototype.getData=function(s,o,l,c){var u=this;function d(e,t){c&&!function(e){var t=h(4);return t.view.setUint32(0,e),u.crc32==t.view.getUint32(0)}(t)?a(\"CRC failed.\"):s.getData((function(e){o(e)}))}function p(e){a(e||r)}function f(e){a(e||\"Error while writing file data.\")}t.readUint8Array(u.offset,30,(function(r){var o,_=h(r.length,r);1347093252==_.view.getUint32(0)?(w(u,_,4,!1,a),o=u.offset+30+u.filenameLength+u.extraFieldLength,s.init((function(){0===u.compressionMethod?P(u._worker,n++,t,s,o,u.compressedSize,c,d,l,p,f):function(t,i,s,r,o,a,n,l,h,c,u){var d=n?\"output\":\"none\";e.zip.useWebWorkers?v(t,{sn:i,codecClass:\"Inflater\",crcType:d},s,r,o,a,h,l,c,u):b(new e.zip.Inflater,s,r,o,a,d,h,l,c,u)}(u._worker,n++,t,s,o,u.compressedSize,c,d,l,p,f)}),f)):a(i)}),p)};var c={getEntries:function(e){var r=this._worker;!function(e){t.size<22?a(i):r(22,(function(){r(Math.min(65558,t.size),(function(){a(i)}))}));function r(i,r){t.readUint8Array(t.size-i,i,(function(t){for(var i=t.length-22;i>=0;i--)if(80===t[i]&&75===t[i+1]&&5===t[i+2]&&6===t[i+3])return void e(new DataView(t.buffer,i,22));r()}),(function(){a(s)}))}}((function(o){var n,c;n=o.getUint32(16,!0),c=o.getUint16(8,!0),n<0||n>=t.size?a(i):t.readUint8Array(n,t.size-n,(function(t){var s,o,n,u,d=0,p=[],f=h(t.length,t);for(s=0;s>>8^i[255&(t^e[s])];this.crc=t},n.prototype.get=function(){return~this.crc},n.prototype.table=function(){var e,t,i,s=[];for(e=0;e<256;e++){for(i=e,t=0;t<8;t++)1&i?i=i>>>1^3988292384:i>>>=1;s[e]=i}return s}(),l.prototype.append=function(e,t){return e},l.prototype.flush=function(){},u.prototype=new c,u.prototype.constructor=u,d.prototype=new c,d.prototype.constructor=d,p.prototype=new c,p.prototype.constructor=p,f.prototype.getData=function(e){e(this.data)},_.prototype=new f,_.prototype.constructor=_,g.prototype=new f,g.prototype.constructor=g,m.prototype=new f,m.prototype.constructor=m;var D={deflater:[\"z-worker.js\",\"deflate.js\"],inflater:[\"z-worker.js\",\"inflate.js\"]};function L(t,i,s){if(null===e.zip.workerScripts||null===e.zip.workerScriptsPath){var r,o,a;if(e.zip.workerScripts){if(r=e.zip.workerScripts[t],!Array.isArray(r))return void s(new Error(\"zip.workerScripts.\"+t+\" is not an array!\"));o=r,a=document.createElement(\"a\"),r=o.map((function(e){return a.href=e,a.href}))}else(r=D[t].slice(0))[0]=(e.zip.workerScriptsPath||\"\")+r[0];var n=new Worker(r[0]);n.codecTime=n.crcTime=0,n.postMessage({type:\"importScripts\",scripts:r.slice(1)}),n.addEventListener(\"message\",(function e(t){var r=t.data;if(r.error)return n.terminate(),void s(r.error);\"importScripts\"===r.type&&(n.removeEventListener(\"message\",e),n.removeEventListener(\"error\",l),i(n))})),n.addEventListener(\"error\",l)}else s(new Error(\"Either zip.workerScripts or zip.workerScriptsPath may be set, not both.\"));function l(e){n.terminate(),s(e)}}function B(e){console.error(e)}e.zip={Reader:c,Writer:f,BlobReader:p,Data64URIReader:d,TextReader:u,BlobWriter:m,Data64URIWriter:g,TextWriter:_,createReader:function(e,t,i){i=i||B,e.init((function(){E(e,t,i)}),i)},createWriter:function(e,t,i,s){i=i||B,s=!!s,e.init((function(){S(e,t,i,s)}),i)},useWebWorkers:!0,workerScriptsPath:null,workerScripts:null}}(xn);!function(e){var t,i,s=e.Reader,r=e.Writer;try{i=0===new Blob([new DataView(new ArrayBuffer(0))]).size}catch(e){}function o(e){var t=this;function i(i,s){var r;t.data?i():((r=new XMLHttpRequest).addEventListener(\"load\",(function(){t.size||(t.size=Number(r.getResponseHeader(\"Content-Length\"))||Number(r.response.byteLength)),t.data=new Uint8Array(r.response),i()}),!1),r.addEventListener(\"error\",s,!1),r.open(\"GET\",e),r.responseType=\"arraybuffer\",r.send())}t.size=0,t.init=function(s,r){if(function(e){var t=document.createElement(\"a\");return t.href=e,\"http:\"===t.protocol||\"https:\"===t.protocol}(e)){var o=new XMLHttpRequest;o.addEventListener(\"load\",(function(){t.size=Number(o.getResponseHeader(\"Content-Length\")),t.size?s():i(s,r)}),!1),o.addEventListener(\"error\",r,!1),o.open(\"HEAD\",e),o.send()}else i(s,r)},t.readUint8Array=function(e,s,r,o){i((function(){r(new Uint8Array(t.data.subarray(e,e+s)))}),o)}}function a(e){var t=this;t.size=0,t.init=function(i,s){var r=new XMLHttpRequest;r.addEventListener(\"load\",(function(){t.size=Number(r.getResponseHeader(\"Content-Length\")),\"bytes\"==r.getResponseHeader(\"Accept-Ranges\")?i():s(\"HTTP Range not supported.\")}),!1),r.addEventListener(\"error\",s,!1),r.open(\"HEAD\",e),r.send()},t.readUint8Array=function(t,i,s,r){!function(t,i,s,r){var o=new XMLHttpRequest;o.open(\"GET\",e),o.responseType=\"arraybuffer\",o.setRequestHeader(\"Range\",\"bytes=\"+t+\"-\"+(t+i-1)),o.addEventListener(\"load\",(function(){s(o.response)}),!1),o.addEventListener(\"error\",r,!1),o.send()}(t,i,(function(e){s(new Uint8Array(e))}),r)}}function n(e){var t=this;t.size=0,t.init=function(i,s){t.size=e.byteLength,i()},t.readUint8Array=function(t,i,s,r){s(new Uint8Array(e.slice(t,t+i)))}}function l(){var e,t=this;t.init=function(t,i){e=new Uint8Array,t()},t.writeUint8Array=function(t,i,s){var r=new Uint8Array(e.length+t.length);r.set(e),r.set(t,e.length),e=r,i()},t.getData=function(t){t(e.buffer)}}function h(e,t){var s,r=this;r.init=function(t,i){e.createWriter((function(e){s=e,t()}),i)},r.writeUint8Array=function(e,r,o){var a=new Blob([i?e:e.buffer],{type:t});s.onwrite=function(){s.onwrite=null,r()},s.onerror=o,s.write(a)},r.getData=function(t){e.file(t)}}o.prototype=new s,o.prototype.constructor=o,a.prototype=new s,a.prototype.constructor=a,n.prototype=new s,n.prototype.constructor=n,l.prototype=new r,l.prototype.constructor=l,h.prototype=new r,h.prototype.constructor=h,e.FileWriter=h,e.HttpReader=o,e.HttpRangeReader=a,e.ArrayBufferReader=n,e.ArrayBufferWriter=l,e.fs&&((t=e.fs.ZipDirectoryEntry).prototype.addHttpContent=function(i,s,r){return function(i,s,r,o){if(i.directory)return o?new t(i.fs,s,r,i):new e.fs.ZipFileEntry(i.fs,s,r,i);throw\"Parent entry is not a directory.\"}(this,i,{data:s,Reader:r?a:o})},t.prototype.importHttpContent=function(e,t,i,s){this.importZip(t?new a(e):new o(e),i,s)},e.fs.FS.prototype.importHttpContent=function(e,i,s,r){this.entries=[],this.root=new t(this),this.root.importHttpContent(e,i,s,r)})}(xn.zip);class Mn{constructor(e={}){this._eventSubIDMap=null,this._eventSubEvents=null,this._eventSubs=null,this._events=null,this._locale=\"en\",this._messages={},this._locales=[],this._locale=\"en\",this.messages=e.messages,this.locale=e.locale}set messages(e){this._messages=e||{},this._locales=Object.keys(this._messages),this.fire(\"updated\",this)}loadMessages(e={}){for(let t in e)this._messages[t]=e[t];this.messages=this._messages}clearMessages(){this.messages={}}get locales(){return this._locales}set locale(e){e=e||\"de\",this._locale!==e&&(this._locale=e,this.fire(\"updated\",e))}get locale(){return this._locale}translate(e,t){const i=this._messages[this._locale];if(!i)return null;const s=wn(e,i);return s?t?En(s,t):s:null}translatePlurals(e,t,i){const s=this._messages[this._locale];if(!s)return null;let r=wn(e,s);return r=0===(t=parseInt(\"\"+t,10))?r.zero:t>1?r.other:r.one,r?(r=En(r,[t]),i&&(r=En(r,i)),r):null}fire(e,t,i){this._events||(this._events={}),this._eventSubs||(this._eventSubs={}),!0!==i&&(this._events[e]=t||!0);const s=this._eventSubs[e];if(s)for(const e in s)if(s.hasOwnProperty(e)){s[e].callback(t)}}on(t,i){this._events||(this._events={}),this._eventSubIDMap||(this._eventSubIDMap=new e),this._eventSubEvents||(this._eventSubEvents={}),this._eventSubs||(this._eventSubs={});let s=this._eventSubs[t];s||(s={},this._eventSubs[t]=s);const r=this._eventSubIDMap.addItem();s[r]={callback:i},this._eventSubEvents[r]=t;const o=this._events[t];return void 0!==o&&i(o),r}off(e){if(null==e)return;if(!this._eventSubEvents)return;const t=this._eventSubEvents[e];if(t){delete this._eventSubEvents[e];const i=this._eventSubs[t];i&&delete i[e],this._eventSubIDMap.removeItem(e)}}}function wn(e,t){if(t[e])return t[e];const i=e.split(\".\");let s=t;for(let e=0,t=i.length;s&&e=1;e>1&&(e=1);const i=this.easing?Bn._ease(e,0,1,1):e,s=this.scene.camera;if(this._flyingEye||this._flyingLook?this._flyingEye?(u.subVec3(s.eye,s.look,Ln),s.eye=u.lerpVec3(i,0,1,this._eye1,this._eye2,Sn),s.look=u.subVec3(Sn,Ln,An)):this._flyingLook&&(s.look=u.lerpVec3(i,0,1,this._look1,this._look2,An),s.up=u.lerpVec3(i,0,1,this._up1,this._up2,Dn)):this._flyingEyeLookUp&&(s.eye=u.lerpVec3(i,0,1,this._eye1,this._eye2,Sn),s.look=u.lerpVec3(i,0,1,this._look1,this._look2,An),s.up=u.lerpVec3(i,0,1,this._up1,this._up2,Dn)),this._projection2){const t=\"ortho\"===this._projection2?Bn._easeOutExpo(e,0,1,1):Bn._easeInCubic(e,0,1,1);s.customProjection.matrix=u.lerpMat4(t,0,1,this._projMatrix1,this._projMatrix2)}else s.ortho.scale=this._orthoScale1+e*(this._orthoScale2-this._orthoScale1);if(t)return s.ortho.scale=this._orthoScale2,void this.stop();w.scheduleTask(this._update,this)}static _ease(e,t,i,s){return-i*(e/=s)*(e-2)+t}static _easeInCubic(e,t,i,s){return i*(e/=s)*e*e+t}static _easeOutExpo(e,t,i,s){return i*(1-Math.pow(2,-10*e/s))+t}stop(){if(!this._flying)return;this._flying=!1,this._time1=null,this._time2=null,this._projection2&&(this.scene.camera.projection=this._projection2);const e=this._callback;e&&(this._callback=null,this._callbackScope?e.call(this._callbackScope):e()),this.fire(\"stopped\",!0,!0)}cancel(){this._flying&&(this._flying=!1,this._time1=null,this._time2=null,this._callback&&(this._callback=null),this.fire(\"canceled\",!0,!0))}set duration(e){this._duration=e?1e3*e:500,this.stop()}get duration(){return this._duration/1e3}set fit(e){this._fit=!1!==e}get fit(){return this._fit}set fitFOV(e){this._fitFOV=e||45}get fitFOV(){return this._fitFOV}set trail(e){this._trail=!!e}get trail(){return this._trail}destroy(){this.stop(),super.destroy()}}var Tn={load:function(e,t){var i=new XMLHttpRequest;i.open(\"GET\",e,!0),i.responseType=\"arraybuffer\",i.onload=function(e){t(e.target.response)},i.send()},save:function(e,t){var i=\"data:application/octet-stream;base64,\"+btoa(Tn.parse._buffToStr(e));window.location.href=i},clone:function(e){return JSON.parse(JSON.stringify(e))},bin:{}};Tn.bin.f=new Float32Array(1),Tn.bin.fb=new Uint8Array(Tn.bin.f.buffer),Tn.bin.rf=function(e,t){for(var i=Tn.bin.f,s=Tn.bin.fb,r=0;r<4;r++)s[r]=e[t+r];return i[0]},Tn.bin.rsl=function(e,t){return e[t]|e[t+1]<<8},Tn.bin.ril=function(e,t){return e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24},Tn.bin.rASCII0=function(e,t){for(var i=\"\";0!=e[t];)i+=String.fromCharCode(e[t++]);return i},Tn.bin.wf=function(e,t,i){new Float32Array(e.buffer,t,1)[0]=i},Tn.bin.wsl=function(e,t,i){e[t]=i,e[t+1]=i>>8},Tn.bin.wil=function(e,t,i){e[t]=i,e[t+1]=i>>8,e[t+2]=i>>16,e[t+3]},Tn.parse={},Tn.parse._buffToStr=function(e){for(var t=new Uint8Array(e),i=\"\",s=0;sr&&(r=l),ho&&(o=h),ca&&(a=c)}return{min:{x:t,y:i,z:s},max:{x:r,y:o,z:a}}};u.vec3(),u.vec3();u.vec3();u.vec3([0,-1,0]),u.vec4([0,0,0,1]);const Rn=u.vec3();class Fn{constructor(e){if(this.objectsVisible=[],this.objectsEdges=[],this.objectsXrayed=[],this.objectsHighlighted=[],this.objectsSelected=[],this.objectsClippable=[],this.objectsPickable=[],this.objectsColorize=[],this.objectsOpacity=[],this.numObjects=0,e){const t=e.metaScene.scene;this.saveObjects(t,e)}}saveObjects(e,t,i){const s=t.rootMetaObject;if(!s)return;const r=s.getObjectIDsInSubtree();this.numObjects=0,this._mask=i?_.apply(i,{}):null;const o=e.objects,a=!i||i.visible,n=!i||i.edges,l=!i||i.xrayed,h=!i||i.highlighted,c=!i||i.selected,u=!i||i.clippable,d=!i||i.pickable,p=!i||i.colorize,f=!i||i.opacity;for(var g=0,m=r.length;g{this._cameraDirty=!0})),this._onProjMatrix=this._scene.camera.on(\"projMatrix\",(()=>{this._cameraDirty=!0})),this._onTick=this._scene.on(\"tick\",(()=>{this.updatePivotElement()}))}updatePivotElement(){const e=this._scene.camera,t=this._scene.canvas;if(this._pivoting&&this._cameraDirty){u.transformPoint3(e.viewMatrix,this.getPivotPos(),this._pivotViewPos),this._pivotViewPos[3]=1,u.transformPoint4(e.projMatrix,this._pivotViewPos,this._pivotProjPos);const i=t.boundary,s=i[2],r=i[3];this._pivotCanvasPos[0]=Math.floor((1+this._pivotProjPos[0]/this._pivotProjPos[3])*s/2),this._pivotCanvasPos[1]=Math.floor((1-this._pivotProjPos[1]/this._pivotProjPos[3])*r/2);const o=t.canvas.getBoundingClientRect();this._pivotElement&&(this._pivotElement.style.left=Math.floor(o.left+this._pivotCanvasPos[0])-this._pivotElement.clientWidth/2+window.scrollX+\"px\",this._pivotElement.style.top=Math.floor(o.top+this._pivotCanvasPos[1])-this._pivotElement.clientHeight/2+window.scrollY+\"px\"),this._cameraDirty=!1}}setPivotElement(e){this._pivotElement=e}startPivot(){if(this._cameraLookingDownwards())return this._pivoting=!1,!1;const e=this._scene.camera;let t=u.lookAtMat4v(e.eye,e.look,e.worldUp);u.transformPoint3(t,this.getPivotPos(),this._cameraOffset);const i=this.getPivotPos();this._cameraOffset[2]+=u.distVec3(e.eye,i),t=u.inverseMat4(t);const s=u.transformVec3(t,this._cameraOffset),r=u.vec3();if(u.subVec3(e.eye,i,r),u.addVec3(r,s),e.zUp){const e=r[1];r[1]=r[2],r[2]=e}this._radius=u.lenVec3(r),this._polar=Math.acos(r[1]/this._radius),this._azimuth=Math.atan2(r[0],r[2]),this._pivoting=!0}_cameraLookingDownwards(){const e=this._scene.camera,t=u.normalizeVec3(u.subVec3(e.look,e.eye,Xn)),i=u.cross3Vec3(t,e.worldUp,Hn);return u.sqLenVec3(i)<=1e-4}getPivoting(){return this._pivoting}setPivotPos(e){this._pivotWorldPos.set(e),this._pivotPosSet=!0}setCanvasPivotPos(e){const t=this._scene.camera,i=Math.abs(u.distVec3(this._scene.center,t.eye)),s=t.project.transposedMatrix,r=s.subarray(8,12),o=s.subarray(12),a=[0,0,-1,1],n=u.dotVec4(a,r)/u.dotVec4(a,o),l=Yn;t.project.unproject(e,n,qn,Kn,l);const h=u.normalizeVec3(u.subVec3(l,t.eye,Xn)),c=u.addVec3(t.eye,u.mulVec3Scalar(h,i,Hn),Wn);this.setPivotPos(c)}getPivotPos(){return this._pivotPosSet?this._pivotWorldPos:this._scene.camera.look}continuePivot(e,t){if(!this._pivoting)return;if(0===e&&0===t)return;const i=this._scene.camera;var s=-e;const r=-t;1===i.worldUp[2]&&(s=-s),this._azimuth+=.01*-s,this._polar+=.01*r,this._polar=u.clamp(this._polar,.001,Math.PI-.001);const o=[this._radius*Math.sin(this._polar)*Math.sin(this._azimuth),this._radius*Math.cos(this._polar),this._radius*Math.sin(this._polar)*Math.cos(this._azimuth)];if(1===i.worldUp[2]){const e=o[1];o[1]=o[2],o[2]=e}const a=u.lenVec3(u.subVec3(i.look,i.eye,u.vec3())),n=this.getPivotPos();u.addVec3(o,n);let l=u.lookAtMat4v(o,n,i.worldUp);l=u.inverseMat4(l);const h=u.transformVec3(l,this._cameraOffset);l[12]-=h[0],l[13]-=h[1],l[14]-=h[2];const c=[l[8],l[9],l[10]];i.eye=[l[12],l[13],l[14]],u.subVec3(i.eye,u.mulVec3Scalar(c,a),i.look),i.up=[l[4],l[5],l[6]],this.showPivot()}showPivot(){this._shown||(null!==this._hideTimeout&&(window.clearTimeout(this._hideTimeout),this._hideTimeout=null),this._pivotElement&&(this.updatePivotElement(),this._pivotElement.style.visibility=\"visible\",this._shown=!0,this._hideTimeout=window.setTimeout((()=>{this.hidePivot()}),1e3)))}hidePivot(){this._shown&&(null!==this._hideTimeout&&(window.clearTimeout(this._hideTimeout),this._hideTimeout=null),this._pivotElement&&(this._pivotElement.style.visibility=\"hidden\"),this._shown=!1)}endPivot(){this._pivoting=!1}destroy(){this._scene.camera.off(this._onViewMatrix),this._scene.camera.off(this._onProjMatrix),this._scene.off(this._onTick)}}class Qn{constructor(e,t){this._scene=e.scene,this._cameraControl=e,this._scene.canvas.canvas.oncontextmenu=function(e){e.preventDefault()},this._configs=t,this.schedulePickEntity=!1,this.schedulePickSurface=!1,this.pickCursorPos=u.vec2(),this.picked=!1,this.pickedSurface=!1,this.pickResult=null,this._lastPickedEntityId=null,this._needFireEvents=!1}update(){if(!this._configs.pointerEnabled)return;if(!this.schedulePickEntity&&!this.schedulePickSurface)return;this.picked=!1,this.pickedSurface=!1,this._needFireEvents=!1;const e=this._cameraControl.hasSubs(\"hoverSurface\");if(this.schedulePickSurface&&this.pickResult&&this.pickResult.worldPos){const t=this.pickResult.canvasPos;if(t[0]===this.pickCursorPos[0]&&t[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!0,this._needFireEvents=e,this.schedulePickEntity=!1,void(this.schedulePickSurface=!1)}if(this.schedulePickEntity&&this.pickResult){const e=this.pickResult.canvasPos;if(e[0]===this.pickCursorPos[0]&&e[1]===this.pickCursorPos[1])return this.picked=!0,this.pickedSurface=!1,this._needFireEvents=!1,this.schedulePickEntity=!1,void(this.schedulePickSurface=!1)}this.schedulePickSurface?(this.pickResult=this._scene.pick({pickSurface:!0,pickSurfaceNormal:!1,canvasPos:this.pickCursorPos}),this.pickResult&&(this.picked=!0,this.pickedSurface=!0,this._needFireEvents=!0)):(this.pickResult=this._scene.pick({canvasPos:this.pickCursorPos}),this.pickResult&&(this.picked=!0,this.pickedSurface=!1,this._needFireEvents=!0)),this.schedulePickEntity=!1,this.schedulePickSurface=!1}fireEvents(){if(this._needFireEvents){if(this.picked&&this.pickResult&&this.pickResult.entity){const e=this.pickResult.entity.id;this._lastPickedEntityId!==e&&(void 0!==this._lastPickedEntityId&&this._cameraControl.fire(\"hoverOut\",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._cameraControl.fire(\"hoverEnter\",this.pickResult,!0),this._lastPickedEntityId=e),this._cameraControl.fire(\"hover\",this.pickResult,!0),this.pickResult.worldPos&&(this.pickedSurface=!0,this._cameraControl.fire(\"hoverSurface\",this.pickResult,!0))}else void 0!==this._lastPickedEntityId&&(this._cameraControl.fire(\"hoverOut\",{entity:this._scene.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),this._cameraControl.fire(\"hoverOff\",{canvasPos:this.pickCursorPos},!0);this.pickResult=null,this._needFireEvents=!1}}destroy(){}}const $n=u.vec2();class Jn{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController;let a,n,l,h=0,c=0,d=0,p=0,f=!1;const _=u.vec3();let g=!0;const m=this._scene.canvas.canvas,v=[];function b(e=!0){m.style.cursor=\"move\",h=s.pointerCanvasPos[0],c=s.pointerCanvasPos[1],d=s.pointerCanvasPos[0],p=s.pointerCanvasPos[1],e&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(f=!0,_.set(o.pickResult.worldPos)):f=!1)}document.addEventListener(\"keydown\",this._documentKeyDownHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;v[s]=!0}),document.addEventListener(\"keyup\",this._documentKeyUpHandler=t=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;const s=t.keyCode;v[s]=!1}),m.addEventListener(\"mousedown\",this._mouseDownHandler=t=>{if(i.active&&i.pointerEnabled)switch(t.which){case 1:v[e.input.KEY_SHIFT]||i.planView?(a=!0,b()):(a=!0,b(!1));break;case 2:n=!0,b();break;case 3:l=!0,i.panRightClick&&b()}}),document.addEventListener(\"mousemove\",this._documentMouseMoveHandler=()=>{if(!i.active||!i.pointerEnabled)return;if(!a&&!n&&!l)return;const t=e.canvas.boundary,o=t[2]-t[0],d=t[3]-t[1],p=s.pointerCanvasPos[0],g=s.pointerCanvasPos[1];if(v[e.input.KEY_SHIFT]||i.planView||!i.panRightClick&&n||i.panRightClick&&l){const t=p-h,i=g-c,s=e.camera;if(\"perspective\"===s.projection){const o=Math.abs(f?u.lenVec3(u.subVec3(_,e.camera.eye,[])):e.camera.eyeLookDist)*Math.tan(s.perspective.fov/2*Math.PI/180);r.panDeltaX+=1.5*t*o/d,r.panDeltaY+=1.5*i*o/d}else r.panDeltaX+=.5*s.ortho.scale*(t/d),r.panDeltaY+=.5*s.ortho.scale*(i/d)}else!a||n||l||i.planView||(i.firstPerson?(r.rotateDeltaY-=(p-h)/o*i.dragRotationRate/2,r.rotateDeltaX+=(g-c)/d*(i.dragRotationRate/4)):(r.rotateDeltaY-=(p-h)/o*(1.5*i.dragRotationRate),r.rotateDeltaX+=(g-c)/d*(1.5*i.dragRotationRate)));h=p,c=g}),m.addEventListener(\"mousemove\",this._canvasMouseMoveHandler=e=>{i.active&&i.pointerEnabled&&s.mouseover&&(g=!0)}),document.addEventListener(\"mouseup\",this._documentMouseUpHandler=e=>{if(i.active&&i.pointerEnabled)switch(e.which){case 1:case 2:case 3:a=!1,n=!1,l=!1}}),m.addEventListener(\"mouseup\",this._mouseUpHandler=e=>{if(i.active&&i.pointerEnabled){switch(e.which){case 3:!function(e,t){if(e){let i=e.target,s=0,r=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y}(e,$n);const i=$n[0],s=$n[1];Math.abs(i-d)<3&&Math.abs(s-p)<3&&t.cameraControl.fire(\"rightClick\",{pagePos:[Math.round(e.pageX),Math.round(e.pageY)],canvasPos:$n,event:e},!0)}m.style.removeProperty(\"cursor\")}}),m.addEventListener(\"mouseenter\",this._mouseEnterHandler=()=>{i.active&&i.pointerEnabled});const P=1/60;let y=null;m.addEventListener(\"wheel\",this._mouseWheelHandler=e=>{if(!i.active||!i.pointerEnabled)return;const t=performance.now()/1e3;var o=null!==y?t-y:0;y=t,o>.05&&(o=.05),o{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const a=r._isKeyDownForAction(r.AXIS_VIEW_RIGHT),n=r._isKeyDownForAction(r.AXIS_VIEW_BACK),l=r._isKeyDownForAction(r.AXIS_VIEW_LEFT),h=r._isKeyDownForAction(r.AXIS_VIEW_FRONT),c=r._isKeyDownForAction(r.AXIS_VIEW_TOP),d=r._isKeyDownForAction(r.AXIS_VIEW_BOTTOM);if(!(a||n||l||h||c||d))return;const p=e.aabb,f=u.getAABB3Diag(p);u.getAABB3Center(p,el);const _=Math.abs(f/Math.tan(t.cameraFlight.fitFOV*u.DEGTORAD)),g=1.1*f;ol.orthoScale=g,a?(ol.eye.set(u.addVec3(el,u.mulVec3Scalar(o.worldRight,_,tl),rl)),ol.look.set(el),ol.up.set(o.worldUp)):n?(ol.eye.set(u.addVec3(el,u.mulVec3Scalar(o.worldForward,_,tl),rl)),ol.look.set(el),ol.up.set(o.worldUp)):l?(ol.eye.set(u.addVec3(el,u.mulVec3Scalar(o.worldRight,-_,tl),rl)),ol.look.set(el),ol.up.set(o.worldUp)):h?(ol.eye.set(u.addVec3(el,u.mulVec3Scalar(o.worldForward,-_,tl),rl)),ol.look.set(el),ol.up.set(o.worldUp)):c?(ol.eye.set(u.addVec3(el,u.mulVec3Scalar(o.worldUp,_,tl),rl)),ol.look.set(el),ol.up.set(u.normalizeVec3(u.mulVec3Scalar(o.worldForward,1,il),sl))):d&&(ol.eye.set(u.addVec3(el,u.mulVec3Scalar(o.worldUp,-_,tl),rl)),ol.look.set(el),ol.up.set(u.normalizeVec3(u.mulVec3Scalar(o.worldForward,-1,il)))),!i.firstPerson&&i.followPointer&&t.pivotController.setPivotPos(el),t.cameraFlight.duration>0?t.cameraFlight.flyTo(ol,(()=>{t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot()})):(t.cameraFlight.jumpTo(ol),t.pivotController.getPivoting()&&i.followPointer&&t.pivotController.showPivot())}))}reset(){}destroy(){this._scene.input.off(this._onSceneKeyDown)}}class nl{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,a=t.pivotController,n=t.cameraControl;this._clicks=0,this._timeout=null,this._lastPickedEntityId=null;let l=!1,h=!1;const c=this._scene.canvas.canvas,d=i=>{let s;i&&i.worldPos&&(s=i.worldPos);const r=i&&i.entity?i.entity.aabb:e.aabb;if(s){const i=e.camera;u.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})};c.addEventListener(\"mousemove\",this._canvasMouseMoveHandler=t=>{if(!i.active||!i.pointerEnabled)return;if(l||h)return;const r=n.hasSubs(\"hover\"),a=n.hasSubs(\"hoverOut\"),c=n.hasSubs(\"hoverOff\"),u=n.hasSubs(\"hoverSurface\");if(r||a||c||u)if(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=u,o.update(),o.pickResult){const t=o.pickResult.entity.id;this._lastPickedEntityId!==t&&(void 0!==this._lastPickedEntityId&&n.fire(\"hoverOut\",{entity:e.objects[this._lastPickedEntityId]},!0),n.fire(\"hoverEnter\",o.pickResult,!0),this._lastPickedEntityId=t),n.fire(\"hover\",o.pickResult,!0),o.pickResult.worldPos&&n.fire(\"hoverSurface\",o.pickResult,!0)}else void 0!==this._lastPickedEntityId&&(n.fire(\"hoverOut\",{entity:e.objects[this._lastPickedEntityId]},!0),this._lastPickedEntityId=void 0),n.fire(\"hoverOff\",{canvasPos:o.pickCursorPos},!0)}),c.addEventListener(\"mousedown\",this._canvasMouseDownHandler=t=>{1===t.which&&(l=!0),3===t.which&&(h=!0);if(1===t.which&&i.active&&i.pointerEnabled&&(s.mouseDownClientX=t.clientX,s.mouseDownClientY=t.clientY,s.mouseDownCursorX=s.pointerCanvasPos[0],s.mouseDownCursorY=s.pointerCanvasPos[1],!i.firstPerson&&i.followPointer&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickSurface=!0,o.update(),1===t.which))){const t=o.pickResult;t&&t.worldPos?(a.setPivotPos(t.worldPos),a.startPivot()):(i.smartPivot?a.setCanvasPivotPos(s.pointerCanvasPos):a.setPivotPos(e.camera.look),a.startPivot())}}),document.addEventListener(\"mouseup\",this._documentMouseUpHandler=e=>{1===e.which&&(l=!1),3===e.which&&(h=!1)}),c.addEventListener(\"mouseup\",this._canvasMouseUpHandler=r=>{if(!i.active||!i.pointerEnabled)return;if(!(1===r.which))return;if(a.hidePivot(),Math.abs(r.clientX-s.mouseDownClientX)>3||Math.abs(r.clientY-s.mouseDownClientY)>3)return;const l=n.hasSubs(\"picked\"),h=n.hasSubs(\"pickedNothing\"),c=n.hasSubs(\"pickedSurface\"),p=n.hasSubs(\"doublePicked\"),f=n.hasSubs(\"doublePickedSurface\"),_=n.hasSubs(\"doublePickedNothing\");if(!(i.doublePickFlyTo||p||f||_))return(l||h||c)&&(o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=!0,o.schedulePickSurface=c,o.update(),o.pickResult?(n.fire(\"picked\",o.pickResult,!0),o.pickedSurface&&n.fire(\"pickedSurface\",o.pickResult,!0)):n.fire(\"pickedNothing\",{canvasPos:s.pointerCanvasPos},!0)),void(this._clicks=0);if(this._clicks++,1===this._clicks)this._timeout=setTimeout((()=>{o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo,o.schedulePickSurface=c,o.update(),o.pickResult?(n.fire(\"picked\",o.pickResult,!0),o.pickedSurface&&(n.fire(\"pickedSurface\",o.pickResult,!0),!i.firstPerson&&i.followPointer&&(t.pivotController.setPivotPos(o.pickResult.worldPos),t.pivotController.startPivot()&&t.pivotController.showPivot()))):n.fire(\"pickedNothing\",{canvasPos:s.pointerCanvasPos},!0),this._clicks=0}),250);else{if(null!==this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null),o.pickCursorPos=s.pointerCanvasPos,o.schedulePickEntity=i.doublePickFlyTo||p||f,o.schedulePickSurface=o.schedulePickEntity&&f,o.update(),o.pickResult){if(n.fire(\"doublePicked\",o.pickResult,!0),o.pickedSurface&&n.fire(\"doublePickedSurface\",o.pickResult,!0),i.doublePickFlyTo&&(d(o.pickResult),!i.firstPerson&&i.followPointer)){const e=o.pickResult.entity.aabb,i=u.getAABB3Center(e);t.pivotController.setPivotPos(i),t.pivotController.startPivot()&&t.pivotController.showPivot()}}else if(n.fire(\"doublePickedNothing\",{canvasPos:s.pointerCanvasPos},!0),i.doublePickFlyTo&&(d(),!i.firstPerson&&i.followPointer)){const i=e.aabb,s=u.getAABB3Center(i);t.pivotController.setPivotPos(s),t.pivotController.startPivot()&&t.pivotController.showPivot()}this._clicks=0}},!1)}reset(){this._clicks=0,this._lastPickedEntityId=null,this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}destroy(){const e=this._scene.canvas.canvas;e.removeEventListener(\"mousemove\",this._canvasMouseMoveHandler),e.removeEventListener(\"mousedown\",this._canvasMouseDownHandler),document.removeEventListener(\"mouseup\",this._documentMouseUpHandler),e.removeEventListener(\"mouseup\",this._canvasMouseUpHandler),this._timeout&&(window.clearTimeout(this._timeout),this._timeout=null)}}class ll{constructor(e,t,i,s,r){this._scene=e;const o=e.input,a=[],n=e.canvas.canvas;let l=!0;this._onSceneMouseMove=o.on(\"mousemove\",(()=>{l=!0})),this._onSceneKeyDown=o.on(\"keydown\",(t=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&s.mouseover&&(a[t]=!0,t===o.KEY_SHIFT&&(n.style.cursor=\"move\"))})),this._onSceneKeyUp=o.on(\"keyup\",(t=>{i.active&&i.pointerEnabled&&e.input.keyboardEnabled&&s.mouseover&&(a[t]=!1,t===o.KEY_SHIFT&&(n.style.cursor=null))})),this._onTick=e.on(\"tick\",(n=>{if(!i.active||!i.pointerEnabled||!e.input.keyboardEnabled)return;if(!s.mouseover)return;const h=t.cameraControl,c=n.deltaTime/1e3;if(!i.planView){const e=h._isKeyDownForAction(h.ROTATE_Y_POS,a),s=h._isKeyDownForAction(h.ROTATE_Y_NEG,a),o=h._isKeyDownForAction(h.ROTATE_X_POS,a),n=h._isKeyDownForAction(h.ROTATE_X_NEG,a),l=c*i.keyboardRotationRate;(e||s||o||n)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),e?r.rotateDeltaY+=l:s&&(r.rotateDeltaY-=l),o?r.rotateDeltaX+=l:n&&(r.rotateDeltaX-=l),!i.firstPerson&&i.followPointer&&t.pivotController.startPivot())}if(!a[o.KEY_CTRL]&&!a[o.KEY_ALT]){const e=h._isKeyDownForAction(h.DOLLY_BACKWARDS,a),o=h._isKeyDownForAction(h.DOLLY_FORWARDS,a);if(e||o){const a=c*i.keyboardDollyRate;!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),o?r.dollyDelta-=a:e&&(r.dollyDelta+=a),l&&(s.followPointerDirty=!0,l=!1)}}const u=h._isKeyDownForAction(h.PAN_FORWARDS,a),d=h._isKeyDownForAction(h.PAN_BACKWARDS,a),p=h._isKeyDownForAction(h.PAN_LEFT,a),f=h._isKeyDownForAction(h.PAN_RIGHT,a),_=h._isKeyDownForAction(h.PAN_UP,a),g=h._isKeyDownForAction(h.PAN_DOWN,a),m=(a[o.KEY_ALT]?.3:1)*c*i.keyboardPanRate;(u||d||p||f||_||g)&&(!i.firstPerson&&i.followPointer&&t.pivotController.startPivot(),g?r.panDeltaY+=m:_&&(r.panDeltaY+=-m),f?r.panDeltaX+=-m:p&&(r.panDeltaX+=m),d?r.panDeltaZ+=m:u&&(r.panDeltaZ+=-m))}))}reset(){}destroy(){this._scene.off(this._onTick),this._scene.input.off(this._onSceneMouseMove),this._scene.input.off(this._onSceneKeyDown),this._scene.input.off(this._onSceneKeyUp)}}const hl=u.vec3();class cl{constructor(e,t,i,s,r){this._scene=e;const o=e.camera,a=t.pickController,n=t.pivotController,l=t.panController;let h=1,c=1,d=null;this._onTick=e.on(\"tick\",(()=>{if(!i.active||!i.pointerEnabled)return;let t=\"default\";if(Math.abs(r.dollyDelta)<.001&&(r.dollyDelta=0),Math.abs(r.rotateDeltaX)<.001&&(r.rotateDeltaX=0),Math.abs(r.rotateDeltaY)<.001&&(r.rotateDeltaY=0),0===r.rotateDeltaX&&0===r.rotateDeltaY||(r.dollyDelta=0),i.followPointer&&--h<=0&&(h=1,0!==r.dollyDelta)){if(0===r.rotateDeltaY&&0===r.rotateDeltaX&&i.followPointer&&s.followPointerDirty&&(a.pickCursorPos=s.pointerCanvasPos,a.schedulePickSurface=!0,a.update(),a.pickResult&&a.pickResult.worldPos?d=a.pickResult.worldPos:(c=1,d=null),s.followPointerDirty=!1),d){const t=Math.abs(u.lenVec3(u.subVec3(d,e.camera.eye,hl)));c=t/i.dollyProximityThreshold}c{s.mouseover=!0}),o.addEventListener(\"mouseleave\",this._mouseLeaveHandler=()=>{s.mouseover=!1,o.style.cursor=null}),document.addEventListener(\"mousemove\",this._mouseMoveHandler=e=>{dl(e,o,s.pointerCanvasPos)}),o.addEventListener(\"mousedown\",this._mouseDownHandler=e=>{i.active&&i.pointerEnabled&&(dl(e,o,s.pointerCanvasPos),s.mouseover=!0)}),o.addEventListener(\"mouseup\",this._mouseUpHandler=e=>{i.active&&i.pointerEnabled})}reset(){}destroy(){const e=this._scene.canvas.canvas;document.removeEventListener(\"mousemove\",this._mouseMoveHandler),e.removeEventListener(\"mouseenter\",this._mouseEnterHandler),e.removeEventListener(\"mouseleave\",this._mouseLeaveHandler),e.removeEventListener(\"mousedown\",this._mouseDownHandler),e.removeEventListener(\"mouseup\",this._mouseUpHandler)}}function dl(e,t,i){if(e){const{x:s,y:r}=t.getBoundingClientRect();i[0]=e.clientX-s,i[1]=e.clientY-r}else e=window.event,i[0]=e.x,i[1]=e.y;return i}const pl=function(e,t){if(e){let i=e.target,s=0,r=0;for(;i.offsetParent;)s+=i.offsetLeft,r+=i.offsetTop,i=i.offsetParent;t[0]=e.pageX-s,t[1]=e.pageY-r}else e=window.event,t[0]=e.x,t[1]=e.y;return t};class fl{constructor(e,t,i,s,r){this._scene=e;const o=t.pickController,a=t.pivotController,n=u.vec2(),l=u.vec2(),h=u.vec2(),c=u.vec2(),d=[],p=this._scene.canvas.canvas;let f=0,_=!1;this._onTick=e.on(\"tick\",(()=>{_=!1})),p.addEventListener(\"touchstart\",this._canvasTouchStartHandler=t=>{if(!i.active||!i.pointerEnabled)return;t.preventDefault();const r=t.touches,l=t.changedTouches;for(s.touchStartTime=Date.now(),1===r.length&&1===l.length&&(s.touchStartTime,pl(r[0],n),i.followPointer&&(o.pickCursorPos=n,o.schedulePickSurface=!0,o.update(),i.planView||(o.picked&&o.pickedSurface&&o.pickResult&&o.pickResult.worldPos?(a.setPivotPos(o.pickResult.worldPos),!i.firstPerson&&a.startPivot()&&a.showPivot()):(i.smartPivot?a.setCanvasPivotPos(s.pointerCanvasPos):a.setPivotPos(e.camera.look),!i.firstPerson&&a.startPivot()&&a.showPivot()))));d.length{if(!i.active||!i.pointerEnabled)return;if(t.stopPropagation(),t.preventDefault(),_)return;_=!0;const a=e.canvas.boundary,n=a[2]-a[0],p=a[3]-a[1],g=t.touches;if(t.touches.length===f){if(1===f){pl(g[0],l),u.subVec2(l,d[0],c);const t=c[0],o=c[1];if(null!==s.longTouchTimeout&&(Math.abs(t)>i.longTapRadius||Math.abs(o)>i.longTapRadius)&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),i.planView){const s=e.camera;if(\"perspective\"===s.projection){const a=Math.abs(e.camera.eyeLookDist)*Math.tan(s.perspective.fov/2*Math.PI/180);r.panDeltaX+=t*a/p*i.touchPanRate,r.panDeltaY+=o*a/p*i.touchPanRate}else r.panDeltaX+=.5*s.ortho.scale*(t/p)*i.touchPanRate,r.panDeltaY+=.5*s.ortho.scale*(o/p)*i.touchPanRate}else r.rotateDeltaY-=t/n*(1*i.dragRotationRate),r.rotateDeltaX+=o/p*(1.5*i.dragRotationRate)}else if(2===f){const t=g[0],a=g[1];pl(t,l),pl(a,h);const n=u.geometricMeanVec2(d[0],d[1]),c=u.geometricMeanVec2(l,h),f=u.vec2();u.subVec2(n,c,f);const _=f[0],m=f[1],v=e.camera,b=u.distVec2([t.pageX,t.pageY],[a.pageX,a.pageY]),P=(u.distVec2(d[0],d[1])-b)*i.touchDollyRate;if(r.dollyDelta=P,Math.abs(P)<1)if(\"perspective\"===v.projection){const t=o.pickResult?o.pickResult.worldPos:e.center,s=Math.abs(u.lenVec3(u.subVec3(t,e.camera.eye,[])))*Math.tan(v.perspective.fov/2*Math.PI/180);r.panDeltaX-=_*s/p*i.touchPanRate,r.panDeltaY-=m*s/p*i.touchPanRate}else r.panDeltaX-=.5*v.ortho.scale*(_/p)*i.touchPanRate,r.panDeltaY-=.5*v.ortho.scale*(m/p)*i.touchPanRate;s.pointerCanvasPos=c}for(let e=0;e{let s;i&&i.worldPos&&(s=i.worldPos);const r=i?i.entity.aabb:e.aabb;if(s){const i=e.camera;u.subVec3(i.eye,i.look,[]),t.cameraFlight.flyTo({aabb:r})}else t.cameraFlight.flyTo({aabb:r})};p.addEventListener(\"touchstart\",this._canvasTouchStartHandler=e=>{if(!i.active||!i.pointerEnabled)return;null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null);const r=e.touches,o=e.changedTouches;if(n=Date.now(),1===r.length&&1===o.length){c=n,_l(r[0],h);const o=h[0],a=h[1],l=r[0].pageX,u=r[0].pageY;s.longTouchTimeout=setTimeout((()=>{t.cameraControl.fire(\"rightClick\",{pagePos:[Math.round(l),Math.round(u)],canvasPos:[Math.round(o),Math.round(a)],event:e},!0),s.longTouchTimeout=null}),i.longTapTimeout)}else c=-1;for(;l.length{if(!i.active||!i.pointerEnabled)return;const t=Date.now(),r=e.touches,n=e.changedTouches,p=a.hasSubs(\"pickedSurface\");null!==s.longTouchTimeout&&(clearTimeout(s.longTouchTimeout),s.longTouchTimeout=null),0===r.length&&1===n.length&&c>-1&&t-c<150&&(d>-1&&c-d<325?(_l(n[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=p,o.update(),o.pickResult?(a.fire(\"doublePicked\",o.pickResult),o.pickedSurface&&a.fire(\"doublePickedSurface\",o.pickResult),i.doublePickFlyTo&&f(o.pickResult)):(a.fire(\"doublePickedNothing\"),i.doublePickFlyTo&&f()),d=-1):u.distVec2(l[0],h)<4&&(_l(n[0],o.pickCursorPos),o.schedulePickEntity=!0,o.schedulePickSurface=p,o.update(),o.pickResult?(a.fire(\"picked\",o.pickResult),o.pickedSurface&&a.fire(\"pickedSurface\",o.pickResult)):a.fire(\"pickedNothing\"),d=t),c=-1),l.length=r.length;for(let e=0,t=r.length;e{e.preventDefault()},this._configs={longTapTimeout:600,longTapRadius:5,active:!0,keyboardLayout:\"qwerty\",navMode:\"orbit\",planView:!1,firstPerson:!1,followPointer:!0,doublePickFlyTo:!0,panRightClick:!0,showPivot:!1,pointerEnabled:!0,constrainVertical:!1,smartPivot:!1,dragRotationRate:360,keyboardRotationRate:90,rotationInertia:0,keyboardPanRate:1,touchPanRate:1,panInertia:.5,keyboardDollyRate:10,mouseWheelDollyRate:100,touchDollyRate:.2,dollyInertia:0,dollyProximityThreshold:30,dollyMinSpeed:.04},this._states={pointerCanvasPos:u.vec2(),mouseover:!1,followPointerDirty:!0,mouseDownClientX:0,mouseDownClientY:0,mouseDownCursorX:0,mouseDownCursorY:0,touchStartTime:null,activeTouches:[],tapStartPos:u.vec2(),tapStartTime:-1,lastTapTime:-1,longTouchTimeout:null},this._updates={rotateDeltaX:0,rotateDeltaY:0,panDeltaX:0,panDeltaY:0,panDeltaZ:0,dollyDelta:0};const i=this.scene;this._controllers={cameraControl:this,pickController:new Qn(this,this._configs),pivotController:new Zn(i,this._configs),panController:new Gn(i),cameraFlight:new Bn(this,{duration:.5})},this._handlers=[new ul(this.scene,this._controllers,this._configs,this._states,this._updates),new fl(this.scene,this._controllers,this._configs,this._states,this._updates),new Jn(this.scene,this._controllers,this._configs,this._states,this._updates),new al(this.scene,this._controllers,this._configs,this._states,this._updates),new nl(this.scene,this._controllers,this._configs,this._states,this._updates),new gl(this.scene,this._controllers,this._configs,this._states,this._updates),new ll(this.scene,this._controllers,this._configs,this._states,this._updates)],this._cameraUpdater=new cl(this.scene,this._controllers,this._configs,this._states,this._updates),this.navMode=t.navMode,t.planView&&(this.planView=t.planView),this.constrainVertical=t.constrainVertical,t.keyboardLayout?this.keyboardLayout=t.keyboardLayout:this.keyMap=t.keyMap,this.doublePickFlyTo=t.doublePickFlyTo,this.panRightClick=t.panRightClick,this.active=t.active,this.followPointer=t.followPointer,this.rotationInertia=t.rotationInertia,this.keyboardPanRate=t.keyboardPanRate,this.touchPanRate=t.touchPanRate,this.keyboardRotationRate=t.keyboardRotationRate,this.dragRotationRate=t.dragRotationRate,this.touchDollyRate=t.touchDollyRate,this.dollyInertia=t.dollyInertia,this.dollyProximityThreshold=t.dollyProximityThreshold,this.dollyMinSpeed=t.dollyMinSpeed,this.panInertia=t.panInertia,this.pointerEnabled=!0,this.keyboardDollyRate=t.keyboardDollyRate,this.mouseWheelDollyRate=t.mouseWheelDollyRate}set keyMap(e){if(e=e||\"qwerty\",_.isString(e)){const t=this.scene.input,i={};switch(e){default:this.error(\"Unsupported value for 'keyMap': \"+e+\" defaulting to 'qwerty'\");case\"qwerty\":i[this.PAN_LEFT]=[t.KEY_A],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_Z],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_W,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_Q,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6];break;case\"azerty\":i[this.PAN_LEFT]=[t.KEY_Q],i[this.PAN_RIGHT]=[t.KEY_D],i[this.PAN_UP]=[t.KEY_W],i[this.PAN_DOWN]=[t.KEY_X],i[this.PAN_BACKWARDS]=[],i[this.PAN_FORWARDS]=[],i[this.DOLLY_FORWARDS]=[t.KEY_Z,t.KEY_ADD],i[this.DOLLY_BACKWARDS]=[t.KEY_S,t.KEY_SUBTRACT],i[this.ROTATE_X_POS]=[t.KEY_DOWN_ARROW],i[this.ROTATE_X_NEG]=[t.KEY_UP_ARROW],i[this.ROTATE_Y_POS]=[t.KEY_A,t.KEY_LEFT_ARROW],i[this.ROTATE_Y_NEG]=[t.KEY_E,t.KEY_RIGHT_ARROW],i[this.AXIS_VIEW_RIGHT]=[t.KEY_NUM_1],i[this.AXIS_VIEW_BACK]=[t.KEY_NUM_2],i[this.AXIS_VIEW_LEFT]=[t.KEY_NUM_3],i[this.AXIS_VIEW_FRONT]=[t.KEY_NUM_4],i[this.AXIS_VIEW_TOP]=[t.KEY_NUM_5],i[this.AXIS_VIEW_BOTTOM]=[t.KEY_NUM_6]}this._keyMap=i}else{const t=e;this._keyMap=t}}get keyMap(){return this._keyMap}_isKeyDownForAction(e,t){const i=this._keyMap[e];if(!i)return!1;t||(t=this.scene.input.keyDown);for(let e=0,s=i.length;e1){this.scene.error(\"Multiple containment hierarchy root found in metamodel - will insert fake 'Model' root\");const t={id:e+\".fakeRoot\",name:e,type:\"Model\",parent:null};a.push(t);for(let e=0,i=p.length;e0)for(let e=0,t=s.propertySetIds.length;e{delete t[e.id];const r=i[e.type];r&&r[e.id]&&(delete r[e.id],0==--this._typeCounts[e.type]&&(delete this._typeCounts[e.type],delete i[e.type]));const o=e.children;if(o)for(let e=0,t=o.length;e0?Ml(t):null,a=i&&i.length>0?Ml(i):null;return function e(t){if(!t)return;var i=!0;(a&&a[t.type]||o&&!o[t.type])&&(i=!1),i&&s.push(t.id);const r=t.children;if(r)for(var n=0,l=r.length;n
Default text
',i.appendChild(this._modal),this._modalVisible=!1,this._modal.style.display=\"hidden\"}show(e){this._modalVisible=!0,this._modal.querySelector(\".xeokit-busy-modal-message\").innerText=e,this._modal.style.display=\"block\"}hide(){this._modalVisible=!1,this._modal.style.display=\"none\"}destroy(){super.destroy(),this._modal&&(this._modal.parentNode.removeChild(this._modal),this._modal=null)}}const Dl=u.vec3();class Ll extends Al{constructor(e,t={}){if(super(e,t),!t.buttonElement)throw\"Missing config: buttonElement\";const i=t.buttonElement,s=this.viewer.camera;this._modelMementos={},s.eye=[.577,.577,.577],s.look=[0,0,0],s.up=[-1,1,-1],this.bimViewer._modelsExplorer.on(\"modelLoaded\",(e=>{this._saveModelMemento(e)})),this.bimViewer._modelsExplorer.on(\"modelUnloaded\",(e=>{this._destroyModelMemento(e)})),this.on(\"enabled\",(e=>{e?i.classList.remove(\"disabled\"):i.classList.add(\"disabled\")})),this.on(\"active\",(e=>{e?i.classList.add(\"active\"):i.classList.remove(\"active\")})),i.addEventListener(\"click\",(e=>{this.getEnabled()&&this.reset(),e.preventDefault()}))}_saveModelMemento(e){const t=this.viewer.metaScene.metaModels[e];if(!t)return;const i=new Fn;i.saveObjects(this.viewer.scene,t,{visible:!0,edges:!0,xrayed:!0,highlighted:!0,selected:!0,clippable:!0,pickable:!0,colorize:!1,opacity:!1}),this._modelMementos[e]=i}_restoreModelMemento(e){const t=this.viewer.metaScene.metaModels[e];if(!t)return;this._modelMementos[e].restoreObjects(this.viewer.scene,t)}_destroyModelMemento(e){delete this._modelMementos[e]}reset(){const e=this.viewer.scene.modelIds;for(var t=0,i=e.length;t{e?i.classList.remove(\"disabled\"):i.classList.add(\"disabled\")})),this.on(\"active\",(e=>{e?i.classList.add(\"active\"):i.classList.remove(\"active\")})),i.addEventListener(\"click\",(e=>{this.getEnabled()&&this.fit(),e.preventDefault()}))}fit(){const e=this.viewer.scene,t=e.getAABB(e.visibleObjectIds);this.viewer.cameraFlight.flyTo({aabb:t}),this.viewer.cameraControl.pivotPos=u.getAABB3Center(t,Bl)}set fov(e){this.viewer.scene.cameraFlight.fitFOV=e}get fov(){return this.viewer.scene.cameraFlight.fitFOV}set duration(e){this.viewer.scene.cameraFlight.duration=e}get duration(){return this.viewer.scene.cameraFlight.duration}}class Rl extends Al{constructor(e,t){if(super(e,t),!t.buttonElement)throw\"Missing config: buttonElement\";const i=t.buttonElement,s=this.viewer.cameraControl,r=t.cameraControlNavModeMediator;s.navMode=\"orbit\",s.followPointer=!0,this.on(\"enabled\",(e=>{e?i.classList.remove(\"disabled\"):i.classList.add(\"disabled\")})),this.on(\"active\",(e=>{e?i.classList.add(\"active\"):i.classList.remove(\"active\")})),this.on(\"active\",(e=>{r.setFirstPersonModeActive(e),e?(s.followPointer=!0,s.pivoting=!1):s.pivoting=!0})),i.addEventListener(\"click\",(e=>{if(this.getEnabled()){const e=this.getActive();this.setActive(!e)}e.preventDefault()})),this.bimViewer.on(\"reset\",(()=>{this.setActive(!1)}))}}class Fl extends Al{constructor(e,t){if(super(e,t),!t.buttonElement)throw\"Missing config: buttonElement\";const i=t.buttonElement;this.on(\"enabled\",(e=>{e?i.classList.remove(\"disabled\"):i.classList.add(\"disabled\")})),this.on(\"active\",(e=>{e?(i.classList.add(\"active\"),this.viewer.cameraControl.doublePickFlyTo=!1,this._onPick=this.viewer.cameraControl.on(\"picked\",(e=>{e.entity&&(e.entity.visible=!1)}))):(i.classList.remove(\"active\"),this.viewer.cameraControl.doublePickFlyTo=!1,void 0!==this._onPick&&(this.viewer.cameraControl.off(this._onPick),this._onPick=void 0))})),i.addEventListener(\"click\",(e=>{if(this.getEnabled()){this.bimViewer._sectionTool.hideControl();const e=this.getActive();this.setActive(!e)}e.preventDefault()})),this.bimViewer.on(\"reset\",(()=>{this.setActive(!1)}))}}class Nl extends Al{constructor(e,t){if(super(e),!t.buttonElement)throw\"Missing config: buttonElement\";const i=t.buttonElement;this.on(\"enabled\",(e=>{e?i.classList.remove(\"disabled\"):i.classList.add(\"disabled\")})),this.on(\"active\",(e=>{e?(i.classList.add(\"active\"),this._onPick=this.viewer.cameraControl.on(\"picked\",(e=>{e.entity&&(e.entity.selected=!e.entity.selected)}))):(i.classList.remove(\"active\"),void 0!==this._onPick&&(this.viewer.cameraControl.off(this._onPick),this._onPick=void 0))})),i.addEventListener(\"click\",(e=>{if(this.getEnabled()){this.bimViewer._sectionTool.hideControl();const e=this.getActive();this.setActive(!e)}e.preventDefault()})),this.bimViewer.on(\"reset\",(()=>{this.setActive(!1)}))}}class Il extends Al{constructor(e,t){super(e)}}const Ol=u.AABB3(),kl=u.vec3();class Vl extends o{constructor(e={}){if(!e.sectionPlanesPlugin)throw\"Missing config: sectionPlanesPlugin\";super(_.apply({},e)),this._sectionPlanesPlugin=e.sectionPlanesPlugin,this._viewer=this._sectionPlanesPlugin.viewer,this._onSceneSectionPlaneCreated=this._viewer.scene.on(\"sectionPlaneCreated\",(()=>{this._buildMenu()})),this._onSceneSectionPlaneDestroyed=this._viewer.scene.on(\"sectionPlaneDestroyed\",(()=>{this._buildMenu()})),this._buildMenu()}_buildMenu(){const e=this._sectionPlanesPlugin,t=Object.values(e.sectionPlanes),i=[];for(let s=0,r=t.length;s`${e.viewer.localeService.translate(\"sectionToolContextMenu.slice\")||\"Slice\"} #`+(s+1),doHoverEnter(t){e.hideControl(),e.showControl(r.id)},doHoverLeave(t){e.hideControl()},items:[[{getTitle:e=>e.viewer.localeService.translate(\"sectionToolContextMenu.edit\")||\"Edit\",doAction:t=>{e.hideControl(),e.showControl(r.id);const i=r.pos;Ol.set(this._viewer.scene.aabb),u.getAABB3Center(Ol,kl),Ol[0]+=i[0]-kl[0],Ol[1]+=i[1]-kl[1],Ol[2]+=i[2]-kl[2],Ol[3]+=i[0]-kl[0],Ol[4]+=i[1]-kl[1],Ol[5]+=i[2]-kl[2],this._viewer.cameraFlight.flyTo({aabb:Ol,fitFOV:65})}},{getTitle:e=>e.viewer.localeService.translate(\"sectionToolContextMenu.flip\")||\"Flip\",doAction:e=>{r.flipDir()}},{getTitle:e=>e.viewer.localeService.translate(\"sectionToolContextMenu.delete\")||\"Delete\",doAction:e=>{r.destroy()}}]]})}this.items=[[{getTitle:e=>e.viewer.localeService.translate(\"sectionToolContextMenu.clearSlices\")||\"Clear Slices\",getEnabled:e=>e.bimViewer.getNumSections()>0,doAction:e=>{e.bimViewer.clearSections()}},{getTitle:e=>e.viewer.localeService.translate(\"sectionToolContextMenu.flipSlices\")||\"Flip Slices\",getEnabled:e=>e.bimViewer.getNumSections()>0,doAction:e=>{e.bimViewer.flipSections()}}],i]}destroy(){super.destroy();const e=this._viewer.scene;e.off(this._onSceneSectionPlaneCreated),e.off(this._onSceneSectionPlaneDestroyed)}}class jl extends Al{constructor(e,t){if(super(e,t),!t.buttonElement)throw\"Missing config: buttonElement\";if(!t.menuButtonElement)throw\"Missing config: menuButtonElement\";this._buttonElement=t.buttonElement,this._counterElement=t.counterElement,this._menuButtonElement=t.menuButtonElement,this._menuButtonArrowElement=t.menuButtonArrowElement,this._sectionPlanesPlugin=new Ia(this.viewer,{}),this._sectionToolContextMenu=new Vl({sectionPlanesPlugin:this._sectionPlanesPlugin,hideOnMouseDown:!1}),this._sectionPlanesPlugin.setOverviewVisible(!1),this.on(\"enabled\",(e=>{e?(this._buttonElement.classList.remove(\"disabled\"),this._counterElement&&this._counterElement.classList.remove(\"disabled\"),this._menuButtonElement.classList.remove(\"disabled\"),this._menuButtonArrowElement.classList.remove(\"disabled\")):(this._buttonElement.classList.add(\"disabled\"),this._counterElement&&this._counterElement.classList.add(\"disabled\"),this._menuButtonElement.classList.add(\"disabled\"),this._menuButtonArrowElement.classList.add(\"disabled\"))})),this.on(\"active\",(e=>{e?(this._buttonElement.classList.add(\"active\"),this._counterElement&&this._counterElement.classList.add(\"active\"),this._menuButtonElement.classList.add(\"active\"),this._menuButtonArrowElement.classList.add(\"active\")):(this._buttonElement.classList.remove(\"active\"),this._counterElement&&this._counterElement.classList.remove(\"active\"),this._menuButtonElement.classList.remove(\"active\"),this._menuButtonArrowElement.classList.remove(\"active\"))})),this.on(\"active\",(e=>{e||this._sectionPlanesPlugin.hideControl()})),this._buttonElement.addEventListener(\"click\",(e=>{if(!this.getEnabled())return;if(e.target===this._menuButtonElement||e.target.parentNode===this._menuButtonElement)return;const t=this.getActive();this.setActive(!t),e.preventDefault()})),document.addEventListener(\"mousedown\",(e=>{if(!e.target.classList.contains(\"xeokit-context-menu-item\"))if(e.target===this._menuButtonElement||e.target.parentNode===this._menuButtonElement)if(e.preventDefault(),this._sectionToolContextMenu.shown)this._sectionToolContextMenu.hide();else{this._sectionToolContextMenu.context={bimViewer:this.bimViewer,viewer:this.viewer,sectionTool:this};const e=this._menuButtonElement.getBoundingClientRect();this._sectionToolContextMenu.show(e.left,e.bottom+5)}else this._sectionToolContextMenu.hide()})),this._sectionToolContextMenu.on(\"shown\",(()=>{this._menuButtonArrowElement.classList.remove(\"xeokit-arrow-down\"),this._menuButtonArrowElement.classList.add(\"xeokit-arrow-up\")})),this._sectionToolContextMenu.on(\"hidden\",(()=>{this._menuButtonArrowElement.classList.remove(\"xeokit-arrow-up\"),this._menuButtonArrowElement.classList.add(\"xeokit-arrow-down\")})),this.bimViewer.on(\"reset\",(()=>{this.clear(),this.setActive(!1)})),this.viewer.scene.on(\"sectionPlaneCreated\",(()=>{this._updateSectionPlanesCount()})),this.viewer.scene.on(\"sectionPlaneDestroyed\",(()=>{this._updateSectionPlanesCount()})),this._initSectionMode()}_initSectionMode(){this.viewer.scene.input.on(\"mouseclicked\",(e=>{if(!this.getActive()||!this.getEnabled())return;const t=this.viewer.scene.pick({canvasPos:e,pickSurface:!0});if(t){const e=this._sectionPlanesPlugin.createSectionPlane({pos:t.worldPos,dir:u.mulVec3Scalar(t.worldNormal,-1)});this._sectionPlanesPlugin.showControl(e.id)}})),this._updateSectionPlanesCount()}_updateSectionPlanesCount(){this._counterElement&&(this._counterElement.innerText=\"\"+this.getNumSections())}getNumSections(){return Object.keys(this.viewer.scene.sectionPlanes).length}clear(){this._sectionPlanesPlugin.clear(),this._updateSectionPlanesCount()}flipSections(){this._sectionPlanesPlugin.flipSectionPlanes()}hideControl(){this._sectionPlanesPlugin.hideControl()}destroy(){this._sectionPlanesPlugin.destroy(),this._sectionToolContextMenu.destroy(),super.destroy()}}class zl extends Al{constructor(e,t){if(super(e,t),!t.navCubeCanvasElement)throw\"Missing config: navCubeCanvasElement\";const i=t.navCubeCanvasElement;this._navCube=new Aa(this.viewer,{canvasElement:i,fitVisible:!0,color:\"#CFCFCF\"}),this._navCube.setVisible(this._active),this.on(\"active\",(e=>{this._navCube.setVisible(e)}))}destroy(){this._navCube.destroy(),super.destroy()}}const Ul={IfcSpace:{opacity:.3},IfcWindow:{opacity:.4},IfcOpeningElement:{opacity:.3},IfcPlate:{opacity:.3}},Gl={IfcRoof:{colorize:[.837255,.203922,.270588],priority:0},IfcSlab:{colorize:[.637255,.603922,.670588],priority:0},IfcWall:{colorize:[.537255,.337255,.237255],priority:0},IfcWallStandardCase:{colorize:[.537255,.337255,.237255],priority:0},IfcCovering:{colorize:[.8470588235,.427450980392,0],priority:0},IfcDoor:{colorize:[.637255,.603922,.670588],priority:1},IfcStair:{colorize:[.637255,.603922,.670588],priority:2},IfcStairFlight:{colorize:[.637255,.603922,.670588],priority:2},IfcProxy:{colorize:[.137255,.403922,.870588],priority:2},IfcRamp:{colorize:[.8470588235,.427450980392,0],priority:2},IfcColumn:{colorize:[.137255,.403922,.870588],priority:3},IfcBeam:{colorize:[.137255,.403922,.870588],priority:3},IfcCurtainWall:{colorize:[.137255,.403922,.870588],priority:3},IfcPlate:{colorize:[.8470588235,.427450980392,0,.5],opacity:.5,priority:3},IfcTransportElement:{colorize:[.8470588235,.427450980392,0],priority:3},IfcFooting:{colorize:[.8470588235,.427450980392,0],priority:3},IfcRailing:{colorize:[.137255,.403922,.870588],priority:4},IfcFurnishingElement:{colorize:[.137255,.403922,.870588],priority:4},IfcFurniture:{colorize:[.8470588235,.427450980392,0],priority:4},IfcSystemFurnitureElement:{colorize:[.8470588235,.427450980392,0],priority:4},IfcFlowSegment:{colorize:[.137255,.403922,.870588],priority:5},IfcFlowitting:{colorize:[.137255,.403922,.870588],priority:5},IfcFlowTerminal:{colorize:[.137255,.403922,.870588],priority:5},IfcFlowController:{colorize:[.8470588235,.427450980392,0],priority:5},IfcFlowFitting:{colorize:[.8470588235,.427450980392,0],priority:5},IfcDuctSegment:{colorize:[.8470588235,.427450980392,0],priority:5},IfcDistributionFlowElement:{colorize:[.8470588235,.427450980392,0],priority:5},IfcDuctFitting:{colorize:[.8470588235,.427450980392,0],priority:5},IfcLightFixture:{colorize:[.8470588235,.8470588235,.870588],priority:5},IfcAirTerminal:{colorize:[.8470588235,.427450980392,0],priority:6},IfcOpeningElement:{colorize:[.137255,.403922,.870588],opacity:.3,priority:6},IfcSpace:{colorize:[.137255,.403922,.870588],opacity:.5,priority:6},IfcWindow:{colorize:[.137255,.403922,.870588],opacity:.4,priority:6},IfcBuildingElementProxy:{colorize:[.5,.5,.5]},IfcSite:{colorize:[.137255,.403922,.870588]},IfcMember:{colorize:[.8470588235,.427450980392,0]},DEFAULT:{colorize:[.5,.5,.5],priority:10}};class Xl extends o{constructor(e={}){const t=[[{getTitle:e=>e.viewer.localeService.translate(\"modelsContextMenu.loadModel\")||\"Load\",getEnabled:e=>!e.bimViewer.isModelLoaded(e.modelId),doAction:e=>{e.bimViewer.loadModel(e.modelId)}},{getTitle:e=>e.viewer.localeService.translate(\"modelsContextMenu.unloadModel\")||\"Unload\",getEnabled:e=>e.bimViewer.isModelLoaded(e.modelId),doAction:e=>{e.bimViewer.unloadModel(e.modelId)}}]];!!e.enableEditModels&&t.push([{getTitle:e=>e.viewer.localeService.translate(\"modelsContextMenu.editModel\")||\"Edit\",getEnabled:e=>!0,doAction:e=>{e.bimViewer.editModel(e.modelId)}},{getTitle:e=>e.viewer.localeService.translate(\"modelsContextMenu.deleteModel\")||\"Delete\",getEnabled:e=>!0,doAction:e=>{e.bimViewer.deleteModel(e.modelId)}}]),t.push([{getTitle:e=>e.viewer.localeService.translate(\"modelsContextMenu.loadAllModels\")||\"Load All\",getEnabled:e=>{const t=e.bimViewer,i=t.getModelIds();return t.getLoadedModelIds().length{e.bimViewer.loadAllModels()}},{getTitle:e=>e.viewer.localeService.translate(\"modelsContextMenu.unloadAllModels\")||\"Unload All\",getEnabled:e=>e.bimViewer.getLoadedModelIds().length>0,doAction:e=>{e.bimViewer.unloadAllModels()}}]),t.push([{getTitle:e=>e.viewer.localeService.translate(\"modelsContextMenu.clearSlices\")||\"Clear Slices\",getEnabled:e=>e.bimViewer.getNumSections()>0,doAction:e=>{e.bimViewer.clearSections()}}]),super({context:e.context,items:t})}}const Hl=u.vec3();class Wl extends Al{constructor(e,t){if(super(e,t),!t.modelsTabElement)throw\"Missing config: modelsTabElement\";if(!t.unloadModelsButtonElement)throw\"Missing config: unloadModelsButtonElement\";if(!t.modelsElement)throw\"Missing config: modelsElement\";if(this._enableAddModels=!!t.enableEditModels,this._modelsTabElement=t.modelsTabElement,this._loadModelsButtonElement=t.loadModelsButtonElement,this._unloadModelsButtonElement=t.unloadModelsButtonElement,this._addModelButtonElement=t.addModelButtonElement,this._modelsElement=t.modelsElement,this._modelsTabButtonElement=this._modelsTabElement.querySelector(\".xeokit-tab-btn\"),!this._modelsTabButtonElement)throw\"Missing DOM element: ,xeokit-tab-btn\";this._xktLoader=new yn(this.viewer,{objectDefaults:Ul}),this._modelsContextMenu=new Xl({enableEditModels:t.enableEditModels}),this._modelsInfo={},this._numModels=0,this._numModelsLoaded=0,this._projectId=null}loadProject(e,t,i){this.server.getProject(e,(i=>{this.unloadProject(),this._projectId=e,this._modelsInfo={},this._numModels=0,this._parseProject(i,t),this._numModelsLoaded0&&this._unloadModelsButtonElement.classList.remove(\"disabled\"),this._enableAddModels&&this._addModelButtonElement.classList.remove(\"disabled\")}),(e=>{this.error(e),i&&i(e)}))}_parseProject(e,t){this._buildModelsMenu(e),this._parseViewerConfigs(e),this._parseViewerContent(e,(()=>{this._parseViewerState(e,(()=>{t()}))}))}_buildModelsMenu(e){var t=\"\";const i=e.models||[];this._modelsInfo={},this._numModels=i.length;for(let e=0,s=i.length;e\",t+=\"\"+s.name+\"\",t+=\"\"}this._modelsElement.innerHTML=t;for(let e=0,t=i.length;e{r.checked?this.loadModel(s):this.unloadModel(t.id)})),o.addEventListener(\"click\",(()=>{!!this.viewer.scene.models[s]?this.unloadModel(t.id):this.loadModel(s)})),o.oncontextmenu=e=>{this._modelsContextMenu.context={bimViewer:this.bimViewer,viewer:this.viewer,modelId:s},this._modelsContextMenu.show(e.pageX,e.pageY),e.preventDefault()}}}_parseViewerConfigs(e){const t=e.viewerConfigs;t&&this.bimViewer.setConfigs(t)}_parseViewerContent(e,t){const i=e.viewerContent;i?this._parseModelsLoaded(i,(()=>{t()})):t()}_parseModelsLoaded(e,t){const i=e.modelsLoaded;i&&0!==i.length?this._loadNextModel(i.slice(0),t):t()}_loadNextModel(e,t){if(0===e.length)return void t();const i=e.pop();this.loadModel(i,(()=>{this._loadNextModel(e,t)}),(()=>{this._loadNextModel(e,t)}))}_parseViewerState(e,t){const i=e.viewerState;i?this.bimViewer.setViewerState(i,t):t()}unloadProject(){if(!this._projectId)return;const e=this.viewer.scene.models;for(var t in e)if(e.hasOwnProperty(t)){e[t].destroy()}this._modelsElement.innerHTML=\"\",this._numModelsLoaded=0,this._loadModelsButtonElement.classList.add(\"disabled\"),this._unloadModelsButtonElement.classList.add(\"disabled\"),this._enableAddModels&&this._addModelButtonElement.classList.add(\"disabled\");const i=this._projectId;this._projectId=null,this.fire(\"projectUnloaded\",{projectId:i})}getLoadedProjectId(){return this._projectId}getModelIds(){return Object.keys(this._modelsInfo)}loadModel(e,t,i){if(!this._projectId){const e=\"No project currently loaded\";return this.error(e),void(i&&i(e))}const s=this._modelsInfo[e];if(!s){const e=\"Model not in currently loaded project\";return this.error(e),void(i&&i(e))}this.bimViewer._busyModal.show(`${this.viewer.localeService.translate(\"busyModal.loading\")||\"Loading\"} ${s.name}`);this.bimViewer.getConfig(\"externalMetadata\")?this.server.getMetadata(this._projectId,e,(r=>{this._loadGeometry(e,s,r,t,i)}),(e=>{this.bimViewer._busyModal.hide(),this.error(e),i&&i(e)})):this._loadGeometry(e,s,null,t,i)}_loadGeometry(e,t,i,s,r){this.server.getGeometry(this._projectId,e,(r=>{const o=\"model\"===(t.objectColorSource||this.bimViewer.getObjectColorSource())?Ul:Gl;this._xktLoader.load({id:e,metaModelData:i,xkt:r,objectDefaults:o,excludeUnclassifiedObjects:!0,position:t.position,scale:t.scale,rotation:t.rotation,matrix:t.matrix,edges:!1!==t.edges,saoEnabled:t.saoEnabled,pbrEnabled:t.pbrEnabled,backfaces:t.backfaces,excludeTypes:[\"IfcSpace\"]}).on(\"loaded\",(()=>{document.getElementById(\"\"+e).checked=!0;this.viewer.scene;this._numModelsLoaded++,this._unloadModelsButtonElement.classList.remove(\"disabled\"),this._numModelsLoaded{this.bimViewer._busyModal.hide(),this.error(e),r&&r(e)}))}_jumpToInitialCamera(){const e=this.viewer,t=e.scene,i=t.getAABB(t.visibleObjectIds),s=u.getAABB3Diag(i),r=u.getAABB3Center(i,Hl),o=t.camera,a=(o.perspective.fov,Math.abs(s/Math.tan(45*u.DEGTORAD))),n=u.normalizeVec3(o.yUp?[-.5,-.7071,-.5]:[-1,1,-1]),l=u.normalizeVec3(o.yUp?[-.5,.7071,-.5]:[-1,1,1]);e.cameraControl.pivotPos=r,e.cameraControl.planView=!1,e.cameraFlight.jumpTo({look:r,eye:[r[0]-a*n[0],r[1]-a*n[1],r[2]-a*n[2]],up:l,orthoScale:1.1*s})}unloadModel(e){const t=this.viewer.scene.models[e];if(!t)return void this.error(\"Model not loaded: \"+e);t.destroy();document.getElementById(\"\"+e).checked=!1;document.getElementById(\"span-\"+e);this._numModelsLoaded--,this._numModelsLoaded>0?this._unloadModelsButtonElement.classList.remove(\"disabled\"):this._unloadModelsButtonElement.classList.add(\"disabled\"),this._numModelsLoadede.viewer.localeService.translate(\"treeViewContextMenu.inspectProperties\")||\"Inspect Properties\",getShown:e=>!!e.viewer.metaScene.metaObjects[e.treeViewNode.objectId],doAction:e=>{const t=e.treeViewNode.objectId;e.bimViewer.showObjectProperties(t)}}),t.push({getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.viewFit\")||\"View Fit\",doAction:function(e){const t=e.viewer,i=t.scene,s=[];e.treeViewPlugin.withNodeTree(e.treeViewNode,(e=>{e.objectId&&s.push(e.objectId)})),i.setObjectsVisible(s,!0),i.setObjectsHighlighted(s,!0);const r=i.getAABB(s);t.cameraFlight.flyTo({aabb:r,duration:.5},(()=>{setTimeout((function(){i.setObjectsHighlighted(i.highlightedObjectIds,!1)}),500)})),t.cameraControl.pivotPos=u.getAABB3Center(r)}},{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.viewFitAll\")||\"View Fit All\",doAction:function(e){const t=e.viewer,i=t.scene,s=i.getAABB(i.visibleObjectIds);t.cameraFlight.flyTo({aabb:s,duration:.5}),t.cameraControl.pivotPos=u.getAABB3Center(s)}}),this.items=[e,t,[{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.isolate\")||\"Isolate\",doAction:function(e){const t=e.viewer,i=t.scene,s=[];e.treeViewPlugin.withNodeTree(e.treeViewNode,(e=>{e.objectId&&s.push(e.objectId)}));const r=i.getAABB(s);t.cameraControl.pivotPos=u.getAABB3Center(r,Yl),i.setObjectsXRayed(i.xrayedObjectIds,!1),i.setObjectsVisible(i.visibleObjectIds,!1),i.setObjectsSelected(i.selectedObjectIds,!1),i.setObjectsVisible(s,!0),t.cameraFlight.flyTo({aabb:r},(()=>{}))}}],[{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.hide\")||\"Hide\",doAction:function(e){e.treeViewPlugin.withNodeTree(e.treeViewNode,(t=>{if(t.objectId){const i=e.viewer.scene.objects[t.objectId];i&&(i.visible=!1)}}))}},{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.hideOthers\")||\"Hide Others\",doAction:function(e){const t=e.viewer.scene;t.setObjectsVisible(t.visibleObjectIds,!1),t.setObjectsPickable(t.xrayedObjectIds,!0),t.setObjectsXRayed(t.xrayedObjectIds,!1),e.treeViewPlugin.withNodeTree(e.treeViewNode,(e=>{if(e.objectId){const i=t.objects[e.objectId];i&&(i.visible=!0)}}))}},{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.hideAll\")||\"Hide All\",getEnabled:function(e){return e.viewer.scene.visibleObjectIds.length>0},doAction:function(e){e.viewer.scene.setObjectsVisible(e.viewer.scene.visibleObjectIds,!1)}}],[{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.show\")||\"Show\",doAction:function(e){e.treeViewPlugin.withNodeTree(e.treeViewNode,(t=>{if(t.objectId){const i=e.viewer.scene.objects[t.objectId];i&&(i.visible=!0,i.xrayed&&(i.pickable=!0),i.xrayed=!1,i.selected=!1)}}))}},{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.showOthers\")||\"Shows Others\",doAction:function(e){const t=e.viewer.scene;t.setObjectsVisible(t.objectIds,!0),t.setObjectsPickable(t.xrayedObjectIds,!0),t.setObjectsXRayed(t.xrayedObjectIds,!1),e.treeViewPlugin.withNodeTree(e.treeViewNode,(e=>{if(e.objectId){const i=t.objects[e.objectId];i&&(i.visible=!1)}}))}},{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.showAll\")||\"Show All\",getEnabled:function(e){const t=e.viewer.scene;return t.numVisibleObjects0},doAction:function(e){const t=e.viewer.scene;t.setObjectsVisible(t.objectIds,!0),t.setObjectsPickable(t.xrayedObjectIds,!0),t.setObjectsXRayed(t.xrayedObjectIds,!1)}}],[{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.xray\")||\"X-Ray\",doAction:function(e){e.treeViewPlugin.withNodeTree(e.treeViewNode,(t=>{if(t.objectId){const i=e.viewer.scene.objects[t.objectId];i&&(i.selected=!1,i.xrayed=!0,i.visible=!0,i.pickable=!1)}}))}},{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.undoXray\")||\"Undo X-Ray\",doAction:function(e){e.treeViewPlugin.withNodeTree(e.treeViewNode,(t=>{if(t.objectId){const i=e.viewer.scene.objects[t.objectId];i&&(i.xrayed=!1,i.pickable=!0)}}))}},{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.xrayOthers\")||\"X-Ray Others\",doAction:function(e){const t=e.viewer.scene;t.setObjectsVisible(t.objectIds,!0),t.setObjectsPickable(t.objectIds,!1),t.setObjectsXRayed(t.objectIds,!0),t.setObjectsSelected(t.selectedObjectIds,!1),e.treeViewPlugin.withNodeTree(e.treeViewNode,(e=>{if(e.objectId){const i=t.objects[e.objectId];i&&(i.xrayed=!1,i.pickable=!0)}}))}},{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.xrayAll\")||\"X-Ray All\",doAction:function(e){const t=e.viewer.scene;t.setObjectsVisible(t.objectIds,!0),t.setObjectsXRayed(t.objectIds,!0),t.setObjectsSelected(t.selectedObjectIds,!1),t.setObjectsPickable(t.objectIds,!1)}},{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.xrayNone\")||\"X-Ray None\",getEnabled:function(e){return e.viewer.scene.numXRayedObjects>0},doAction:function(e){const t=e.viewer.scene,i=t.xrayedObjectIds;t.setObjectsPickable(i,!0),t.setObjectsXRayed(i,!1)}}],[{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.select\")||\"Select\",doAction:function(e){e.treeViewPlugin.withNodeTree(e.treeViewNode,(t=>{if(t.objectId){const i=e.viewer.scene.objects[t.objectId];i&&(i.selected=!0,i.visible=!0)}}))}},{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.undoSelect\")||\"Undo Select\",doAction:function(e){e.treeViewPlugin.withNodeTree(e.treeViewNode,(t=>{if(t.objectId){const i=e.viewer.scene.objects[t.objectId];i&&(i.selected=!1)}}))}},{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.selectNone\")||\"Select None\",getEnabled:function(e){return e.viewer.scene.numSelectedObjects>0},doAction:function(e){e.viewer.scene.setObjectsSelected(e.viewer.scene.selectedObjectIds,!1)}}],[{getTitle:e=>e.viewer.localeService.translate(\"treeViewContextMenu.clearSlices\")||\"Clear Slices\",getEnabled:function(e){return e.bimViewer.getNumSections()>0},doAction:function(e){e.bimViewer.clearSections()}}]]}}class Kl extends Al{constructor(e,t={}){if(super(e),!t.objectsTabElement)throw\"Missing config: objectsTabElement\";if(!t.showAllObjectsButtonElement)throw\"Missing config: showAllObjectsButtonElement\";if(!t.hideAllObjectsButtonElement)throw\"Missing config: hideAllObjectsButtonElement\";if(!t.objectsElement)throw\"Missing config: objectsElement\";if(this._objectsTabElement=t.objectsTabElement,this._showAllObjectsButtonElement=t.showAllObjectsButtonElement,this._hideAllObjectsButtonElement=t.hideAllObjectsButtonElement,this._objectsTabButtonElement=this._objectsTabElement.querySelector(\".xeokit-tab-btn\"),!this._objectsTabButtonElement)throw\"Missing DOM element: ,xeokit-tab-btn\";const i=t.objectsElement;this._treeView=new za(this.viewer,{containerElement:i,hierarchy:\"containment\",autoAddModels:!1,pruneEmptyNodes:!0}),this._treeViewContextMenu=new ql(this.bimViewer),this._treeView.on(\"contextmenu\",(e=>{this._treeViewContextMenu.context={bimViewer:this.bimViewer,viewer:e.viewer,treeViewPlugin:e.treeViewPlugin,treeViewNode:e.treeViewNode},this._treeViewContextMenu.show(e.event.pageX,e.event.pageY)})),this._treeView.on(\"nodeTitleClicked\",(e=>{const t=this.viewer.scene,i=[];e.treeViewPlugin.withNodeTree(e.treeViewNode,(e=>{e.objectId&&i.push(e.objectId)}));e.treeViewNode.checked?(t.setObjectsXRayed(i,!1),t.setObjectsVisible(i,!1),t.setObjectsPickable(i,!0)):(t.setObjectsXRayed(i,!1),t.setObjectsVisible(i,!0),t.setObjectsPickable(i,!0))})),this._onModelLoaded=this.viewer.scene.on(\"modelLoaded\",(e=>{if(this.viewer.metaScene.metaModels[e]){const t=this.bimViewer._modelsExplorer.getModelInfo(e);if(!t)return;this._treeView.addModel(e,{rootName:t.name})}})),this._onModelUnloaded=this.viewer.scene.on(\"modelUnloaded\",(e=>{this.viewer.metaScene.metaModels[e]&&this._treeView.removeModel(e)})),this.bimViewer.on(\"reset\",(()=>{this._treeView.collapse()}))}setEnabled(e){e?(this._objectsTabButtonElement.classList.remove(\"disabled\"),this._showAllObjectsButtonElement.classList.remove(\"disabled\"),this._hideAllObjectsButtonElement.classList.remove(\"disabled\")):(this._objectsTabButtonElement.classList.add(\"disabled\"),this._showAllObjectsButtonElement.classList.add(\"disabled\"),this._hideAllObjectsButtonElement.classList.add(\"disabled\"))}expandTreeViewToDepth(e){this._treeView.expandToDepth(e)}showNodeInTreeView(e){this._treeView.collapse(),this._treeView.showNode(e)}unShowNodeInTreeView(){this._treeView.unShowNode()}destroy(){super.destroy(),this._treeView.destroy(),this._treeViewContextMenu.destroy(),this.viewer.scene.off(this._onModelLoaded),this.viewer.scene.off(this._onModelUnloaded)}}class Zl extends Al{constructor(e,t={}){if(super(e),!t.classesTabElement)throw\"Missing config: classesTabElement\";if(!t.showAllClassesButtonElement)throw\"Missing config: showAllClassesButtonElement\";if(!t.hideAllClassesButtonElement)throw\"Missing config: hideAllClassesButtonElement\";if(!t.classesElement)throw\"Missing config: classesElement\";if(this._classesTabElement=t.classesTabElement,this._showAllClassesButtonElement=t.showAllClassesButtonElement,this._hideAllClassesButtonElement=t.hideAllClassesButtonElement,this._classesTabButtonElement=this._classesTabElement.querySelector(\".xeokit-tab-btn\"),!this._classesTabButtonElement)throw\"Missing DOM element: xeokit-tab-btn\";const i=t.classesElement;this._treeView=new za(this.viewer,{containerElement:i,hierarchy:\"types\",autoAddModels:!1,pruneEmptyNodes:!0}),this._treeViewContextMenu=new ql(this.bimViewer),this._treeView.on(\"contextmenu\",(e=>{this._treeViewContextMenu.context={bimViewer:this.bimViewer,viewer:e.viewer,treeViewPlugin:e.treeViewPlugin,treeViewNode:e.treeViewNode},this._treeViewContextMenu.show(e.event.pageX,e.event.pageY)})),this._treeView.on(\"nodeTitleClicked\",(e=>{const t=this.viewer.scene,i=[];e.treeViewPlugin.withNodeTree(e.treeViewNode,(e=>{e.objectId&&i.push(e.objectId)}));e.treeViewNode.checked?(t.setObjectsXRayed(i,!1),t.setObjectsVisible(i,!1),t.setObjectsPickable(i,!0)):(t.setObjectsXRayed(i,!1),t.setObjectsVisible(i,!0),t.setObjectsPickable(i,!0))})),this._onModelLoaded=this.viewer.scene.on(\"modelLoaded\",(e=>{if(this.viewer.metaScene.metaModels[e]){const t=this.bimViewer._modelsExplorer.getModelInfo(e);if(!t)return;this._treeView.addModel(e,{rootName:t.name})}})),this._onModelUnloaded=this.viewer.scene.on(\"modelUnloaded\",(e=>{this.viewer.metaScene.metaModels[e]&&this._treeView.removeModel(e)})),this.bimViewer.on(\"reset\",(()=>{this._treeView.collapse()}))}setEnabled(e){e?(this._classesTabButtonElement.classList.remove(\"disabled\"),this._showAllClassesButtonElement.classList.remove(\"disabled\"),this._hideAllClassesButtonElement.classList.remove(\"disabled\")):(this._classesTabButtonElement.classList.add(\"disabled\"),this._showAllClassesButtonElement.classList.add(\"disabled\"),this._hideAllClassesButtonElement.classList.add(\"disabled\"))}expandTreeViewToDepth(e){this._treeView.expandToDepth(e)}showNodeInTreeView(e){this._treeView.collapse(),this._treeView.showNode(e)}unShowNodeInTreeView(){this._treeView.unShowNode()}destroy(){super.destroy(),this._treeView.destroy(),this._treeViewContextMenu.destroy(),this.viewer.scene.off(this._onModelLoaded),this.viewer.scene.off(this._onModelUnloaded)}}const Ql=u.vec3();class $l extends Al{constructor(e,t={}){if(super(e),!t.storeysTabElement)throw\"Missing config: storeysTabElement\";if(!t.showAllStoreysButtonElement)throw\"Missing config: showAllStoreysButtonElement\";if(!t.hideAllStoreysButtonElement)throw\"Missing config: hideAllStoreysButtonElement\";if(!t.storeysElement)throw\"Missing config: storeysElement\";if(this._storeysTabElement=t.storeysTabElement,this._showAllStoreysButtonElement=t.showAllStoreysButtonElement,this._hideAllStoreysButtonElement=t.hideAllStoreysButtonElement,this._storeysTabButtonElement=this._storeysTabElement.querySelector(\".xeokit-tab-btn\"),!this._storeysTabButtonElement)throw\"Missing DOM element: .xeokit-tab-btn\";const i=t.storeysElement;this._treeView=new za(this.viewer,{containerElement:i,autoAddModels:!1,hierarchy:\"storeys\",autoExpandDepth:1}),this._treeViewContextMenu=new ql(this.bimViewer),this._treeView.on(\"contextmenu\",(e=>{this._treeViewContextMenu.context={bimViewer:this.bimViewer,viewer:e.viewer,treeViewPlugin:e.treeViewPlugin,treeViewNode:e.treeViewNode,pruneEmptyNodes:!0},this._treeViewContextMenu.show(e.event.pageX,e.event.pageY)})),this._treeView.on(\"nodeTitleClicked\",(e=>{const t=this.viewer.scene,i=[];e.treeViewPlugin.withNodeTree(e.treeViewNode,(e=>{e.objectId&&i.push(e.objectId)}));e.treeViewNode.checked?(t.setObjectsXRayed(i,!1),t.setObjectsVisible(i,!1),t.setObjectsPickable(i,!0)):(t.setObjectsXRayed(i,!1),t.setObjectsVisible(i,!0),t.setObjectsPickable(i,!0))})),this._onModelLoaded=this.viewer.scene.on(\"modelLoaded\",(e=>{const t=this.bimViewer._modelsExplorer.getModelInfo(e);t&&this._treeView.addModel(e,{rootName:t.name})})),this._onModelUnloaded=this.viewer.scene.on(\"modelUnloaded\",(e=>{this.viewer.metaScene.metaModels[e]&&this._treeView.removeModel(e)})),this.bimViewer.on(\"reset\",(()=>{this._treeView.collapse(),this._treeView.expandToDepth(1)}))}setEnabled(e){e?(this._storeysTabButtonElement.classList.remove(\"disabled\"),this._showAllStoreysButtonElement.classList.remove(\"disabled\"),this._hideAllStoreysButtonElement.classList.remove(\"disabled\")):(this._storeysTabButtonElement.classList.add(\"disabled\"),this._showAllStoreysButtonElement.classList.add(\"disabled\"),this._hideAllStoreysButtonElement.classList.add(\"disabled\"))}expandTreeViewToDepth(e){this._treeView.expandToDepth(e)}showNodeInTreeView(e){this._treeView.collapse(),this._treeView.showNode(e)}unShowNodeInTreeView(){this._treeView.unShowNode()}selectStorey(e,t){const i=this.viewer.metaScene.metaObjects[e];if(!i)return void this.error(\"selectStorey() - object is not found: '\"+e+\"'\");if(\"IfcBuildingStorey\"!==i.type)return void this.error(\"selectStorey() - object is not found: '\"+e+\"'\");const s=i.getObjectIDsInSubtree();this._selectObjects(s,t)}_selectObjects(e,t){const i=this.viewer.scene,s=i.getAABB(e);this.viewer.cameraControl.pivotPos=u.getAABB3Center(s,Ql),t?(i.setObjectsXRayed(i.objectIds,!0),i.setObjectsVisible(i.objectIds,!0),i.setObjectsPickable(i.objectIds,!1),i.setObjectsSelected(i.selectedObjectIds,!1),i.setObjectsXRayed(e,!1),i.setObjectsVisible(e,!0),i.setObjectsPickable(e,!0),this.viewer.cameraFlight.flyTo({aabb:s},(()=>{setTimeout((function(){i.setObjectsVisible(i.xrayedObjectIds,!1),i.setObjectsXRayed(i.xrayedObjectIds,!1)}),500),t()}))):(i.setObjectsVisible(i.objectIds,!1),i.setObjectsPickable(i.xrayedObjectIds,!0),i.setObjectsXRayed(i.xrayedObjectIds,!1),i.setObjectsSelected(i.selectedObjectIds,!1),i.setObjectsVisible(e,!0),this.viewer.cameraFlight.jumpTo({aabb:s}))}destroy(){super.destroy(),this._treeView.destroy(),this._treeViewContextMenu.destroy(),this.viewer.scene.off(this._onModelLoaded),this.viewer.scene.off(this._onModelUnloaded)}}const Jl=u.vec3();class eh extends Al{constructor(e,t){if(super(e,t),!t.buttonElement)throw\"Missing config: buttonElement\";this._saveOrthoActive=null,this._buttonElement=t.buttonElement,this._cameraControlNavModeMediator=t.cameraControlNavModeMediator,this._active=!1,this.on(\"enabled\",(e=>{e?this._buttonElement.classList.remove(\"disabled\"):this._buttonElement.classList.add(\"disabled\")})),this._buttonElement.addEventListener(\"click\",(e=>{this.getEnabled()&&(this.bimViewer._sectionTool.hideControl(),this.setActive(!this.getActive(),(()=>{}))),e.preventDefault()})),this.bimViewer.on(\"reset\",(()=>{this.setActive(!0,(()=>{}))}))}setEnabled(e){super.setEnabled(e),this._saveOrthoActive=this.bimViewer._orthoMode.getActive()}setActive(e,t){this._active!==e?(this._active=e,e?(this._buttonElement.classList.add(\"active\"),t?this._enterThreeDMode((()=>{this.fire(\"active\",this._active),t()})):(this._enterThreeDMode(),this.fire(\"active\",this._active))):(this._buttonElement.classList.remove(\"active\"),t?this._exitThreeDMode((()=>{this.fire(\"active\",this._active),t()})):(this._exitThreeDMode(),this.fire(\"active\",this._active)))):t&&t()}_enterThreeDMode(e){const t=this.viewer,i=t.scene,s=i.getAABB(i.visibleObjectIds),r=u.getAABB3Diag(s),o=u.getAABB3Center(s,Jl),a=Math.abs(r/Math.tan(32.5)),n=i.camera,l=n.yUp?[-1,-1,-1]:[1,1,1],h=n.yUp?[-1,1,-1]:[-1,1,1];t.cameraControl.pivotPos=o,this.bimViewer._navCubeMode.setActive(!0),this.bimViewer._firstPersonMode.setEnabled(!0),this._cameraControlNavModeMediator.setThreeDModeActive(!0),this.bimViewer._sectionTool.setEnabled(!0),this.bimViewer._orthoMode.setEnabled(!0),e?t.cameraFlight.flyTo({look:o,eye:[o[0]-a*l[0],o[1]-a*l[1],o[2]-a*l[2]],up:h,orthoScale:1.3*r,duration:1,projection:this._saveOrthoActive?\"ortho\":\"perspective\"},(()=>{e()})):t.cameraFlight.jumpTo({look:o,eye:[o[0]-a*l[0],o[1]-a*l[1],o[2]-a*l[2]],up:h,orthoScale:1.3*r,projection:this._saveOrthoActive?\"ortho\":\"perspective\"})}_exitThreeDMode(e){const t=this.viewer,i=t.scene,s=i.camera,r=i.getAABB(i.visibleObjectIds),o=u.getAABB3Center(r),a=u.getAABB3Diag(r),n=Math.abs(a/Math.tan(45*u.DEGTORAD)),l=1.3*a,h=Jl;h[0]=o[0]+s.worldUp[0]*n,h[1]=o[1]+s.worldUp[1]*n,h[2]=o[2]+s.worldUp[2]*n;const c=u.mulVec3Scalar(s.worldForward,-1,[]);this.bimViewer._sectionTool.setActive(!1),this.bimViewer._firstPersonMode.setEnabled(!1),this._saveOrthoActive=this.bimViewer._orthoMode.getActive(),this.bimViewer._orthoMode.setEnabled(!1),this._cameraControlNavModeMediator.setThreeDModeActive(!1),e?t.cameraFlight.flyTo({eye:h,look:o,up:c,orthoScale:l,projection:\"ortho\"},(()=>{this.bimViewer._navCubeMode.setActive(!1)})):(t.cameraFlight.jumpTo({eye:h,look:o,up:c,orthoScale:l,projection:\"ortho\"}),this.bimViewer._navCubeMode.setActive(!1))}}class th extends o{constructor(e){super(),this._bimViewer=e,this._buildMenu()}_buildMenu(){const e=[],t=[];this._bimViewer._enablePropertiesInspector&&e.push({getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.inspectProperties\")||\"Inspect Properties\",doAction:e=>{const t=e.entity.id;e.bimViewer.showObjectProperties(t)}}),e.push({getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.showInTree\")||\"Show in Explorer\",doAction:e=>{const t=e.entity.id;e.showObjectInExplorers(t)}}),t.push({getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.viewFit\")||\"View Fit\",doAction:e=>{const t=e.viewer,i=t.scene,s=e.entity;t.cameraFlight.flyTo({aabb:s.aabb,duration:.5},(()=>{setTimeout((function(){i.setObjectsHighlighted(i.highlightedObjectIds,!1)}),500)})),t.cameraControl.pivotPos=u.getAABB3Center(s.aabb)}},{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.viewFitAll\")||\"View Fit All\",doAction:e=>{const t=e.viewer,i=t.scene,s=i.getAABB(i.visibleObjectIds);t.cameraFlight.flyTo({aabb:s,duration:.5}),t.cameraControl.pivotPos=u.getAABB3Center(s)}}),this.items=[e,t,[{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.hide\")||\"Hide\",getEnabled:e=>e.entity.visible,doAction:e=>{e.entity.visible=!1}},{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.hideOthers\")||\"Hide Others\",doAction:e=>{const t=e.viewer,i=t.scene,s=e.entity,r=t.metaScene.metaObjects[s.id];r&&(i.setObjectsVisible(i.visibleObjectIds,!1),r.withMetaObjectsInSubtree((e=>{const t=i.objects[e.id];t&&(t.visible=!0)})))}},{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.hideAll\")||\"Hide All\",getEnabled:e=>e.viewer.scene.numVisibleObjects>0,doAction:e=>{e.viewer.scene.setObjectsVisible(e.viewer.scene.visibleObjectIds,!1)}},{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.showAll\")||\"Show All\",getEnabled:e=>{const t=e.viewer.scene;return t.numVisibleObjects0},doAction:e=>{const t=e.viewer.scene;t.setObjectsVisible(t.objectIds,!0),t.setObjectsPickable(t.xrayedObjectIds,!0),t.setObjectsXRayed(t.xrayedObjectIds,!1)}}],[{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.xray\")||\"X-Ray\",getEnabled:e=>!e.entity.xrayed,doAction:e=>{const t=e.entity;t.xrayed=!0,t.pickable=!1}},{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.xrayOthers\")||\"X-Ray Others\",doAction:e=>{const t=e.viewer,i=t.scene,s=e.entity,r=t.metaScene.metaObjects[s.id];r&&(i.setObjectsVisible(i.objectIds,!0),i.setObjectsXRayed(i.objectIds,!0),i.setObjectsPickable(i.objectIds,!1),r.withMetaObjectsInSubtree((e=>{const t=i.objects[e.id];t&&(t.xrayed=!1,t.pickable=!0)})))}},{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.xrayAll\")||\"X-Ray All\",getEnabled:e=>{const t=e.viewer.scene;return t.numXRayedObjects{const t=e.viewer.scene;t.setObjectsVisible(t.objectIds,!0),t.setObjectsPickable(t.objectIds,!1),t.setObjectsXRayed(t.objectIds,!0)}},{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.xrayNone\")||\"X-Ray None\",getEnabled:e=>e.viewer.scene.numXRayedObjects>0,doAction:e=>{const t=e.viewer.scene,i=t.xrayedObjectIds;t.setObjectsPickable(i,!0),t.setObjectsXRayed(i,!1)}}],[{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.select\")||\"Select\",getEnabled:e=>!e.entity.selected,doAction:e=>{e.entity.selected=!0}},{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.undoSelect\")||\"Undo Select\",getEnabled:e=>e.entity.selected,doAction:e=>{e.entity.selected=!1}},{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.selectNone\")||\"Select None\",getEnabled:e=>e.viewer.scene.numSelectedObjects>0,doAction:e=>{e.viewer.scene.setObjectsSelected(e.viewer.scene.selectedObjectIds,!1)}}],[{getTitle:e=>e.viewer.localeService.translate(\"objectContextMenu.clearSlices\")||\"Clear Slices\",getEnabled:e=>e.bimViewer.getNumSections()>0,doAction:e=>{e.bimViewer.clearSections()}}]]}}class ih extends o{constructor(e={}){super({context:e.context,items:[[{getTitle:e=>e.viewer.localeService.translate(\"canvasContextMenu.viewFitAll\")||\"View Fit All\",doAction:e=>{const t=e.viewer,i=t.scene,s=i.getAABB(i.visibleObjectIds);t.cameraFlight.flyTo({aabb:s,duration:.5}),t.cameraControl.pivotPos=u.getAABB3Center(s)}}],[{getTitle:e=>e.viewer.localeService.translate(\"canvasContextMenu.hideAll\")||\"Hide All\",getEnabled:e=>e.viewer.scene.numVisibleObjects>0,doAction:e=>{e.viewer.scene.setObjectsVisible(e.viewer.scene.visibleObjectIds,!1)}},{getTitle:e=>e.viewer.localeService.translate(\"canvasContextMenu.showAll\")||\"Show All\",getEnabled:e=>{const t=e.viewer.scene;return t.numVisibleObjects0},doAction:e=>{const t=e.viewer.scene;t.setObjectsVisible(t.objectIds,!0),t.setObjectsXRayed(t.xrayedObjectIds,!1)}}],[{getTitle:e=>e.viewer.localeService.translate(\"canvasContextMenu.xRayAll\")||\"X-Ray All\",getEnabled:e=>{const t=e.viewer.scene;return t.numXRayedObjects{const t=e.viewer.scene;t.setObjectsVisible(t.objectIds,!0),t.setObjectsXRayed(t.objectIds,!0),t.setObjectsPickable(t.objectIds,!1)}},{getTitle:e=>e.viewer.localeService.translate(\"canvasContextMenu.xRayNone\")||\"X-Ray None\",getEnabled:e=>e.viewer.scene.numXRayedObjects>0,doAction:e=>{const t=e.viewer.scene.xrayedObjectIds;e.viewer.scene.setObjectsPickable(t,!0),e.viewer.scene.setObjectsXRayed(t,!1)}}],[{getTitle:e=>e.viewer.localeService.translate(\"canvasContextMenu.selectNone\")||\"Select None\",getEnabled:e=>e.viewer.scene.numSelectedObjects>0,doAction:e=>{e.viewer.scene.setObjectsSelected(e.viewer.scene.selectedObjectIds,!1)}}],[{getTitle:e=>e.viewer.localeService.translate(\"canvasContextMenu.resetView\")||\"Reset View\",doAction:e=>{e.bimViewer.resetView()}}],[{getTitle:e=>e.viewer.localeService.translate(\"canvasContextMenu.clearSlices\")||\"Clear Slices\",getEnabled:e=>e.bimViewer.getNumSections()>0,doAction:e=>{e.bimViewer.clearSections()}}]]})}}class sh extends Al{constructor(e,t){if(super(e,t),!t.buttonElement)throw\"Missing config: buttonElement\";this._buttonElement=t.buttonElement,this.on(\"enabled\",(e=>{e?this._buttonElement.classList.remove(\"disabled\"):this._buttonElement.classList.add(\"disabled\")})),this._buttonElement.addEventListener(\"click\",(e=>{this.getEnabled()&&this.setActive(!this.getActive(),(()=>{})),e.preventDefault()})),this.bimViewer.on(\"reset\",(()=>{this.setActive(!1)})),this.viewer.camera.on(\"projection\",(()=>{const e=\"ortho\"===this.viewer.camera.projection;this._active=e,this._active?this._buttonElement.classList.add(\"active\"):this._buttonElement.classList.remove(\"active\")})),this._active=!1,this._buttonElement.classList.remove(\"active\")}setActive(e,t){this._active!==e?(this._active=e,e?(this._buttonElement.classList.add(\"active\"),t?this._enterOrthoMode((()=>{this.fire(\"active\",this._active),t()})):(this._enterOrthoMode(),this.fire(\"active\",this._active))):(this._buttonElement.classList.remove(\"active\"),t?this._exitOrthoMode((()=>{this.fire(\"active\",this._active),t()})):(this._exitOrthoMode(),this.fire(\"active\",this._active)))):t&&t()}_enterOrthoMode(e){e?this.viewer.cameraFlight.flyTo({projection:\"ortho\",duration:.5},e):this.viewer.cameraFlight.jumpTo({projection:\"ortho\"})}_exitOrthoMode(e){e?this.viewer.cameraFlight.flyTo({projection:\"perspective\",duration:.5},e):this.viewer.cameraFlight.jumpTo({projection:\"perspective\"})}}class rh extends Al{constructor(e,t={}){if(super(e),!t.propertiesTabElement)throw\"Missing config: propertiesTabElement\";if(!t.propertiesElement)throw\"Missing config: propertiesElement\";if(this._metaObject=null,this._propertiesTabElement=t.propertiesTabElement,this._propertiesElement=t.propertiesElement,this._propertiesTabButtonElement=this._propertiesTabElement.querySelector(\".xeokit-tab-btn\"),!this._propertiesTabButtonElement)throw\"Missing DOM element: ,xeokit-tab-btn\";this._onModelUnloaded=this.viewer.scene.on(\"modelUnloaded\",(e=>{this._metaObject&&this._metaObject.metaModel.id===e&&this.clear()})),this.bimViewer.on(\"reset\",(()=>{this.clear()})),document.addEventListener(\"click\",this._clickListener=e=>{e.target.matches(\".xeokit-accordion .xeokit-accordion-button\")&&(e.target.parentElement.classList.contains(\"active\")?e.target.parentElement.classList.remove(\"active\"):e.target.parentElement.classList.add(\"active\"))}),this.clear()}showObjectPropertySets(e){const t=this.viewer.metaScene.metaObjects[e];if(!t)return;const i=t.propertySets;i&&i.length>0?this._setPropertySets(t,i):this._setPropertySets(t),this._metaObject=t}clear(){const e=[];e.push('
'),e.push(\"

No object inspected. Right-click or long-tab an object and select 'Inspect Properties' to view its properties here.

\"),e.push(\"
\");const t=e.join(\"\");this._propertiesElement.innerHTML=t}_setPropertySets(e,t){const i=[];if(i.push('
'),e)if(i.push(''),i.push(``),e.type&&i.push(``),i.push(``),i.push(\"
Name:${e.name}
Class:${e.type}
UUID:${e.id}
\"),t&&0!==t.length){i.push(\"
\"),i.push('
');for(let e=0,s=t.length;e0){i.push(`
\\n

${s.name}

\\n
\\n `);for(let e=0,t=r.length;e`)}i.push(\"
${t.name||t.label}:${t.value}
\\n
\\n
\")}}i.push(\"
\")}else i.push('

No properties sets found for this object.

'),i.push(\"\");else i.push('

No object selected

');this._propertiesElement.innerHTML=i.join(\"\")}setEnabled(e){e?this._propertiesTabButtonElement.classList.remove(\"disabled\"):this._propertiesTabButtonElement.classList.add(\"disabled\")}destroy(){super.destroy(),this.viewer.scene.off(this._onModelLoaded),this.viewer.scene.off(this._onModelUnloaded),document.removeEventListener(\"click\",this._clickListener)}}function oh(e){const t=\"xeokit-tab\",i=\"active\";function s(e){let s=e.parentNode.querySelectorAll(\".\"+t);for(let t=0;t{e.preventDefault()},o.oncontextmenu=e=>{e.preventDefault()},a.oncontextmenu=e=>{e.preventDefault()};const l=new wl({localeService:t.localeService,canvasElement:i,keyboardEventsElement:t.keyboardEventsElement,transparent:!1,backgroundColor:[1,1,1],backgroundColorFromAmbientLight:!1,saoEnabled:!0,pbrEnabled:!0});super(null,t,e,l),this._configs={},this._enableAddModels=!!t.enableEditModels,this._enablePropertiesInspector=!!t.inspectorElement,this.viewer=l,this._customizeViewer(),this._initCanvasContextMenus(),s.innerHTML=function(e){return'
\\n
\\n Models\\n
\\n
\\n \\n '+(e.enableEditModels?'':\"\")+'
\\n
\\n
\\n
\\n
\\n Objects\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n Classes\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
\\n Storeys\\n
\\n
\\n \\n \\n
\\n
\\n
\\n
\\n
'}(t),o.innerHTML='
\\n \\x3c!-- Reset button --\\x3e\\n
\\n \\n
\\n
\\n \\x3c!-- 3D Mode button --\\x3e\\n \\n \\x3c!-- Perspective/Ortho Mode button --\\x3e\\n \\n \\x3c!-- Fit button --\\x3e\\n \\n \\x3c!-- First Person mode button --\\x3e\\n \\n
\\n \\x3c!-- Tools button group --\\x3e\\n
\\n \\x3c!-- Hide tool button --\\x3e\\n \\n \\x3c!-- Select tool button --\\x3e\\n \\n \\x3c!-- section tool button --\\x3e\\n \\n
\\n
',this._enablePropertiesInspector&&(r.innerHTML='
\\n
\\n Properties\\n
\\n
\\n
\\n
\\n
'),this._explorerElement=s,this._inspectorElement=r,oh(s),this._enablePropertiesInspector&&oh(r),this._modelsExplorer=new Wl(this,{modelsTabElement:s.querySelector(\".xeokit-modelsTab\"),loadModelsButtonElement:s.querySelector(\".xeokit-loadAllModels\"),unloadModelsButtonElement:s.querySelector(\".xeokit-unloadAllModels\"),addModelButtonElement:s.querySelector(\".xeokit-addModel\"),modelsElement:s.querySelector(\".xeokit-models\"),enableEditModels:this._enableAddModels}),this._objectsExplorer=new Kl(this,{objectsTabElement:s.querySelector(\".xeokit-objectsTab\"),showAllObjectsButtonElement:s.querySelector(\".xeokit-showAllObjects\"),hideAllObjectsButtonElement:s.querySelector(\".xeokit-hideAllObjects\"),objectsElement:s.querySelector(\".xeokit-objects\")}),this._classesExplorer=new Zl(this,{classesTabElement:s.querySelector(\".xeokit-classesTab\"),showAllClassesButtonElement:s.querySelector(\".xeokit-showAllClasses\"),hideAllClassesButtonElement:s.querySelector(\".xeokit-hideAllClasses\"),classesElement:s.querySelector(\".xeokit-classes\")}),this._storeysExplorer=new $l(this,{storeysTabElement:s.querySelector(\".xeokit-storeysTab\"),showAllStoreysButtonElement:s.querySelector(\".xeokit-showAllStoreys\"),hideAllStoreysButtonElement:s.querySelector(\".xeokit-hideAllStoreys\"),storeysElement:s.querySelector(\".xeokit-storeys\")}),this._enablePropertiesInspector&&(this._propertiesInspector=new rh(this,{propertiesTabElement:r.querySelector(\".xeokit-propertiesTab\"),propertiesElement:r.querySelector(\".xeokit-properties\")})),this._resetAction=new Ll(this,{buttonElement:o.querySelector(\".xeokit-reset\"),active:!1}),this._fitAction=new Tl(this,{buttonElement:o.querySelector(\".xeokit-fit\"),active:!1});const h=new function(e){let t=!1;this.setThreeDModeActive=i=>{i?(e._firstPersonMode.setActive(!1),e.viewer.cameraControl.navMode=\"orbit\"):(e._firstPersonMode.setActive(!1),e.viewer.cameraControl.navMode=\"planView\"),t=i},this.setFirstPersonModeActive=i=>{e.viewer.cameraControl.navMode=i?\"firstPerson\":t?\"orbit\":\"planView\"}}(this);this._threeDMode=new eh(this,{buttonElement:o.querySelector(\".xeokit-threeD\"),cameraControlNavModeMediator:h,active:!1}),this._orthoMode=new sh(this,{buttonElement:o.querySelector(\".xeokit-ortho\"),active:!1}),this._firstPersonMode=new Rl(this,{buttonElement:o.querySelector(\".xeokit-firstPerson\"),cameraControlNavModeMediator:h,active:!1}),this._hideTool=new Fl(this,{buttonElement:o.querySelector(\".xeokit-hide\"),active:!1}),this._selectionTool=new Nl(this,{buttonElement:o.querySelector(\".xeokit-select\"),active:!1}),this._queryTool=new Il(this,{active:!1}),this._sectionTool=new jl(this,{buttonElement:o.querySelector(\".xeokit-section\"),counterElement:o.querySelector(\".xeokit-section-counter\"),menuButtonElement:o.querySelector(\".xeokit-section-menu-button\"),menuButtonArrowElement:o.querySelector(\".xeokit-section-menu-button-arrow\"),active:!1}),this._navCubeMode=new zl(this,{navCubeCanvasElement:a,active:!0}),this._busyModal=new Sl(this,{busyModalBackdropElement:n}),this._threeDMode.setActive(!0),this._firstPersonMode.setActive(!1),this._navCubeMode.setActive(!0),this._modelsExplorer.on(\"modelLoaded\",(e=>{this._modelsExplorer.getNumModelsLoaded()>0&&this.setControlsEnabled(!0),this.fire(\"modelLoaded\",e)})),this._modelsExplorer.on(\"modelUnloaded\",(e=>{0===this._modelsExplorer.getNumModelsLoaded()&&(this.setControlsEnabled(!1),this.openTab(\"models\")),this.fire(\"modelUnloaded\",e)})),this._resetAction.on(\"reset\",(()=>{this.fire(\"reset\",!0)})),this._mutexActivation([this._hideTool,this._selectionTool,this._sectionTool]),s.querySelector(\".xeokit-showAllObjects\").addEventListener(\"click\",(e=>{this.setAllObjectsVisible(!0),this.setAllObjectsXRayed(!1),e.preventDefault()})),s.querySelector(\".xeokit-hideAllObjects\").addEventListener(\"click\",(e=>{this.setAllObjectsVisible(!1),e.preventDefault()})),s.querySelector(\".xeokit-showAllClasses\").addEventListener(\"click\",(e=>{this.setAllObjectsVisible(!0),this.setAllObjectsXRayed(!1),e.preventDefault()})),s.querySelector(\".xeokit-hideAllClasses\").addEventListener(\"click\",(e=>{this.setAllObjectsVisible(!1),e.preventDefault()})),s.querySelector(\".xeokit-showAllStoreys\").addEventListener(\"click\",(e=>{this.setAllObjectsVisible(!0),this.setAllObjectsXRayed(!1),e.preventDefault()})),s.querySelector(\".xeokit-hideAllStoreys\").addEventListener(\"click\",(e=>{this.setAllObjectsVisible(!1),e.preventDefault()})),s.querySelector(\".xeokit-loadAllModels\").addEventListener(\"click\",(e=>{this.setControlsEnabled(!1),this.loadAllModels(),e.preventDefault()})),s.querySelector(\".xeokit-unloadAllModels\").addEventListener(\"click\",(e=>{this.setControlsEnabled(!1),this._modelsExplorer.unloadAllModels(),e.preventDefault()})),this._enableAddModels&&s.querySelector(\".xeokit-addModel\").addEventListener(\"click\",(e=>{this.fire(\"addModel\",{}),e.preventDefault()})),this._bcfViewpointsPlugin=new fi(this.viewer,{}),this._fastNavPlugin=new bi(l,{}),this._initConfigs(),this.setControlsEnabled(!1)}_customizeViewer(){const e=this.viewer.scene;e.xrayMaterial.fill=!1,e.xrayMaterial.fillAlpha=.3,e.xrayMaterial.fillColor=[0,0,0],e.xrayMaterial.edges=!0,e.xrayMaterial.edgeAlpha=.1,e.xrayMaterial.edgeColor=[0,0,0],e.highlightMaterial.edges=!0,e.highlightMaterial.edgeColor=[1,1,0],e.highlightMaterial.edgeAlpha=.9,e.highlightMaterial.fill=!0,e.highlightMaterial.fillAlpha=.1,e.highlightMaterial.fillColor=[1,0,0],e.pointsMaterial.pointSize=1,e.pointsMaterial.roundPoints=!0,e.pointsMaterial.perspectivePoints=!0,e.pointsMaterial.minPerspectivePointSize=2,e.pointsMaterial.maxPerspectivePointSize=4,this.viewer.cameraControl.panRightClick=!0,this.viewer.cameraControl.followPointer=!0,this.viewer.cameraControl.doublePickFlyTo=!1,this.viewer.cameraControl.smartPivot=!0,this.viewer.cameraControl.keyboardDollyRate=100,this.viewer.cameraControl.mouseWheelDollyRate=100,this.viewer.cameraControl.dollyInertia=0,this.viewer.cameraControl.dollyMinSpeed=.04,this.viewer.cameraControl.dollyProximityThreshold=30;const t=document.createRange().createContextualFragment(\"
\").firstChild;document.body.appendChild(t),this.viewer.cameraControl.pivotElement=t,e.camera.perspective.near=.01,e.camera.perspective.far=3e3,e.camera.ortho.near=.01,e.camera.ortho.far=2e3;const i=e.sao;i.enabled=!0,i.numSamples=50,i.kernelRadius=200}_initCanvasContextMenus(){this._canvasContextMenu=new ih(this),this._objectContextMenu=new th(this),this.viewer.cameraControl.on(\"rightClick\",(e=>{e.event;const t=this.viewer.scene.pick({canvasPos:e.canvasPos});t&&t.entity.isObject?(this._canvasContextMenu.hide(),this._objectContextMenu.context={viewer:this.viewer,bimViewer:this,showObjectInExplorers:e=>{const t=this.getOpenTab();\"objects\"!==t&&\"classes\"!==t&&\"storeys\"!==t&&this.openTab(\"objects\"),this.showObjectInExplorers(e)},entity:t.entity},this._objectContextMenu.show(e.pagePos[0],e.pagePos[1])):(this._objectContextMenu.hide(),this._canvasContextMenu.context={viewer:this.viewer,bimViewer:this},this._canvasContextMenu.show(e.pagePos[0],e.pagePos[1]))}))}_initConfigs(){this.setConfigs({cameraNear:\"0.05\",cameraFar:\"3000.0\",smartPivot:\"true\",saoEnabled:\"true\",pbrEnabled:\"false\",saoBias:\"0.5\",saoIntensity:\"0.15\",saoNumSamples:\"40\",saoKernelRadius:\"100\",edgesEnabled:!0,xrayContext:!0,backgroundColor:[1,1,1],objectColorSource:\"model\",externalMetadata:!1})}get localeService(){return this.viewer.localeService}setConfigs(e){for(let t in e)if(e.hasOwnProperty(t)){const i=e[t];this.setConfig(t,i)}}setConfig(e,t){function i(e){return!0===e||\"true\"===e}try{switch(e){case\"backgroundColor\":const s=t;this.setBackgroundColor(s),this._configs[e]=s;break;case\"cameraNear\":const r=parseFloat(t);this.viewer.scene.camera.perspective.near=r,this.viewer.scene.camera.ortho.near=r,this._configs[e]=r;break;case\"cameraFar\":const o=parseFloat(t);this.viewer.scene.camera.perspective.far=o,this._configs[e]=o;break;case\"smartPivot\":this.viewer.cameraControl.smartPivot=this._configs[e]=i(t);break;case\"saoEnabled\":this._fastNavPlugin.saoEnabled=this._configs[e]=i(t);break;case\"saoBias\":this.viewer.scene.sao.bias=parseFloat(t);break;case\"saoIntensity\":this.viewer.scene.sao.intensity=parseFloat(t);break;case\"saoKernelRadius\":this.viewer.scene.sao.kernelRadius=this._configs[e]=parseFloat(t);break;case\"saoNumSamples\":this.viewer.scene.sao.numSamples=this._configs[e]=parseFloat(t);break;case\"saoBlur\":this.viewer.scene.sao.blur=this._configs[e]=i(t);break;case\"edgesEnabled\":this._fastNavPlugin.edgesEnabled=this._configs[e]=i(t);break;case\"pbrEnabled\":this._fastNavPlugin.pbrEnabled=this._configs[e]=i(t);break;case\"viewFitFOV\":this.viewer.cameraFlight.fitFOV=this._configs[e]=parseFloat(t);break;case\"viewFitDuration\":this.viewer.cameraFlight.duration=this._configs[e]=parseFloat(t);break;case\"perspectiveFOV\":this.viewer.camera.perspective.fov=this._configs[e]=parseFloat(t);break;case\"excludeUnclassifiedObjects\":this._configs[e]=i(t);break;case\"objectColorSource\":this.setObjectColorSource(t),this._configs[e]=t;break;case\"xrayContext\":this._configs[e]=t;break;case\"externalMetadata\":this._configs[e]=i(t);break;default:this.error(\"setConfig() - unsupported configuration: '\"+e+\"'\")}}catch(t){this.error(\"setConfig() - failed to configure '\"+e+\"': \"+t)}}getConfig(e){return this._configs[e]}getProjectsInfo(e,t){e?this.server.getProjects(e,(e=>{this.error(\"getProjectsInfo() - \"+e),t&&t(e)})):this.error(\"getProjectsInfo() - Argument expected: 'done'\")}getProjectInfo(e,t,i){e?t?this.server.getProject(e,t,(e=>{this.error(\"getProjectInfo() - \"+e),i&&i(e)})):this.error(\"getProjectInfo() - Argument expected: 'done'\"):this.error(\"getProjectInfo() - Argument expected: projectId\")}getObjectInfo(e,t,i,s,r){e?t?i?s?this.server.getObjectInfo(e,t,i,s,(e=>{r&&r(e)})):this.error(\"getProjectInfo() - Argument expected: 'done'\"):this.error(\"getObjectInfo() - Argument expected: objectId\"):this.error(\"getObjectInfo() - Argument expected: modelId\"):this.error(\"getObjectInfo() - Argument expected: projectId\")}loadProject(e,t,i){e?this._modelsExplorer.loadProject(e,(()=>{t&&t()}),(e=>{this.error(\"loadProject() - \"+e),i&&i(e)})):this.error(\"loadProject() - Argument expected: objectId\")}unloadProject(){this._modelsExplorer.unloadProject(),this.openTab(\"models\"),this.setControlsEnabled(!1)}getLoadedProjectId(){return this._modelsExplorer.getLoadedProjectId()}getModelIds(){return this._modelsExplorer.getModelIds()}loadModel(e,t,i){e?this._modelsExplorer.loadModel(e,(()=>{t&&t()}),(e=>{this.error(\"loadModel() - \"+e),i&&i(e)})):this.error(\"loadModel() - Argument expected: modelId\")}loadAllModels(e=function(){}){const t=this._modelsExplorer.getModelIds(),i=(e,s)=>{if(e>=t.length)s();else{const r=t[e];this._modelsExplorer.isModelLoaded(r)?i(e+1,s):this._modelsExplorer.loadModel(r,(()=>{i(e+1,s)}),(t=>{this.error(\"loadAllModels() - \"+t),i(e+1,s)}))}};i(0,e)}getLoadedModelIds(){return this._modelsExplorer._getLoadedModelIds()}isModelLoaded(e){if(e)return this._modelsExplorer.isModelLoaded(e);this.error(\"unloadModel() - Argument expected: modelId\")}unloadModel(e){e?this._modelsExplorer.unloadModel(e):this.error(\"unloadModel() - Argument expected: modelId\")}unloadAllModels(){this._modelsExplorer.unloadAllModels()}editModel(e){this.fire(\"editModel\",{modelId:e})}deleteModel(e){this.fire(\"deleteModel\",{modelId:e})}addModel(){this.fire(\"addModel\",{})}setBackgroundColor(e){this.viewer.scene.canvas.backgroundColor=e}setObjectColorSource(e){switch(e){case\"model\":case\"viewer\":break;default:return e=\"model\",void this.error(\"setObjectColorSource() - Unsupported value - accepted values are 'model' and 'viewer' - defaulting to 'model'\")}this._objectColorSource=e}getObjectColorSource(){return this._objectColorSource||\"model\"}setViewerState(e,t=(()=>{})){e.tabOpen&&this.openTab(e.tabOpen),e.expandObjectsTree&&this._objectsExplorer.expandTreeViewToDepth(e.expandObjectsTree),e.expandClassesTree&&this._classesExplorer.expandTreeViewToDepth(e.expandClassesTree),e.expandStoreysTree&&this._storeysExplorer.expandTreeViewToDepth(e.expandStoreysTree),e.setCamera&&this.setCamera(e.setCamera),this._parseSelectedStorey(e,(()=>{this._parseThreeDMode(e,(()=>{t()}))}))}_parseSelectedStorey(e,t){e.selectedStorey?(this.selectStorey(e.selectedStorey),t()):t()}_parseThreeDMode(e,t){const i=!1!==e.threeDActive;this.set3DEnabled(i,t)}showObjectInExplorers(e){e?(this._objectsExplorer.showNodeInTreeView(e),this._classesExplorer.showNodeInTreeView(e),this._storeysExplorer.showNodeInTreeView(e),this.fire(\"openExplorer\",{})):this.error(\"showObjectInExplorers() - Argument expected: objectId\")}unShowObjectInExplorers(){this._objectsExplorer.unShowNodeInTreeView(),this._classesExplorer.unShowNodeInTreeView(),this._storeysExplorer.unShowNodeInTreeView()}showObjectProperties(e){e?(this._enablePropertiesInspector&&this._propertiesInspector.showObjectPropertySets(e),this.fire(\"openInspector\",{})):this.error(\"showObjectInExplorers() - Argument expected: objectId\")}setObjectsVisible(e,t){this._withObjectsInSubtree(e,(e=>{e.visible=t}))}setAllObjectsVisible(e){e?this.viewer.scene.setObjectsVisible(this.viewer.scene.objectIds,!0):this.viewer.scene.setObjectsVisible(this.viewer.scene.visibleObjectIds,!1)}setObjectsXRayed(e,t){this._withObjectsInSubtree(e,(e=>{e.xrayed=t}))}setAllObjectsXRayed(e){e?this.viewer.scene.setObjectsXRayed(this.viewer.scene.objectIds,!0):this.viewer.scene.setObjectsXRayed(this.viewer.scene.xrayedObjectIds,!1)}setObjectsSelected(e,t){this._withObjectsInSubtree(e,(e=>{e.selected=t}))}setAllObjectsSelected(e){e?this.viewer.scene.setObjectsSelected(this.viewer.scene.objectIds,!0):this.viewer.scene.setObjectsSelected(this.viewer.scene.selectedObjectIds,!1)}_withObjectsInSubtree(e,t){if(e)for(let i=0,s=e.length;i{const i=this.viewer.scene.objects[e.id];i&&t(i)}))}else this.error(\"Argument expected: objectIds\")}flyToObject(e,t){if(!e)return void this.error(\"flyToObject() - Argument expected: objectId\");const i=this.viewer,s=i.scene,r=[];if(this.viewer.metaScene.withMetaObjectsInSubtree(e,(e=>{s.objects[e.id]&&r.push(e.id)})),0===r.length)return this.error(\"Object not found in viewer: '\"+e+\"'\"),void(t&&t());s.setObjectsVisible(r,!0),s.setObjectsHighlighted(r,!0);const o=s.getAABB(r);i.cameraFlight.flyTo({aabb:o},(()=>{t&&t(),setTimeout((function(){s.setObjectsHighlighted(s.highlightedObjectIds,!1)}),500)})),i.cameraControl.pivotPos=u.getAABB3Center(o)}viewFitObjects(e,t){if(!e)return void this.error(\"flyToObject() - Argument expected: objectIds\");const i=this.viewer,s=i.scene,r=[];for(var o=0,a=e.length;o{s.objects[e.id]&&r.push(e.id)}))}if(0===r.length)return void(t&&t());s.setObjectsVisible(r,!0),s.setObjectsHighlighted(r,!0);const n=s.getAABB(r);i.cameraFlight.flyTo({aabb:n},(()=>{t&&t(),setTimeout((function(){s.setObjectsHighlighted(s.highlightedObjectIds,!1)}),500)})),i.cameraControl.pivotPos=u.getAABB3Center(n)}viewFitAll(e){const t=this.viewer,i=t.scene.getAABB();t.cameraFlight.flyTo({aabb:i},(()=>{e&&e()})),t.cameraControl.pivotPos=u.getAABB3Center(i)}jumpToObject(e){if(!e)return void this.error(\"jumpToObject() - Argument expected: objectId\");const t=this.viewer,i=t.scene,s=[];if(this.viewer.metaScene.withMetaObjectsInSubtree(e,(e=>{i.objects[e.id]&&s.push(e.id)})),0===s.length)return void this.error(\"Object not found in viewer: '\"+e+\"'\");i.setObjectsVisible(s,!0);const r=i.getAABB(s);t.cameraFlight.jumpTo({aabb:r}),t.cameraControl.pivotPos=u.getAABB3Center(r)}setCamera(e){const t=this.viewer.scene.camera;e.eye&&(t.eye=e.eye),e.look&&(t.look=e.look),e.up&&(t.up=e.up)}viewFitModels(e,t){if(!e)return void this.error(\"viewFitModels() - Argument expected: modelIds\");const i=this.viewer,s=i.scene,r=u.AABB3();u.collapseAABB3(r);for(var o=0,a=e.length;o{t(),setTimeout((function(){s.setObjectsHighlighted(s.highlightedObjectIds,!1)}),500)})):(i.cameraFlight.jumpTo({aabb:r}),setTimeout((function(){s.setObjectsHighlighted(s.highlightedObjectIds,!1)}),500)),i.cameraControl.pivotPos=u.getAABB3Center(r)}openTab(e){if(!e)return void this.error(\"openTab() - Argument expected: tabId\");let t;switch(e){case\"models\":t=\"xeokit-modelsTab\";break;case\"objects\":t=\"xeokit-objectsTab\";break;case\"classes\":t=\"xeokit-classesTab\";break;case\"storeys\":t=\"xeokit-storeysTab\";break;case\"properties\":t=\"xeokit-propertiesTab\";break;default:return void this.error(\"openTab() - tab not recognized: '\"+e+\"'\")}this._openTab(this._explorerElement,t)}_openTab(e,t){const i=\"active\";let s=e.querySelectorAll(\".xeokit-tab\"),r=e.querySelector(\".\"+t);for(let e=0;e-1}const t=\"active\";return e(this._explorerElement.querySelector(\".xeokit-modelsTab\"),t)?\"models\":e(this._explorerElement.querySelector(\".xeokit-objectsTab\"),t)?\"objects\":e(this._explorerElement.querySelector(\".xeokit-classesTab\"),t)?\"classes\":e(this._explorerElement.querySelector(\".xeokit-storeysTab\"),t)?\"storeys\":e(this._inspectorElement.querySelector(\".xeokit-propertiesTab\"),t)?\"properties\":\"none\"}set3DEnabled(e,t){this._threeDMode.setActive(e,t)}get3DEnabled(){return this._threeDMode.getActive()}setOrthoEnabled(e,t){this._orthoMode.setActive(e,t)}getOrthoEnabled(){return this._orthoMode.getActive()}selectStorey(e,t){const i=this.viewer.metaScene.metaObjects[e];i?\"IfcBuildingStorey\"===i.type?this._storeysExplorer.selectStorey(e,t):this.error(\"selectStorey() - Object is not an IfcBuildingStorey: '\"+e+\"'\"):this.error(\"selectStorey() - Object is not found: '\"+e+\"'\")}saveBCFViewpoint(e){return this._bcfViewpointsPlugin.getViewpoint(e)}loadBCFViewpoint(e,t){e?(this._orthoMode.setActive(\"ortho\"===this.viewer.camera.projection),this._bcfViewpointsPlugin.setViewpoint(e,t)):this.error(\"loadBCFViewpoint() - Argument expected: bcfViewpoint\")}resetView(){this._resetAction.reset()}setControlsEnabled(e){this._objectsExplorer.setEnabled(e),this._classesExplorer.setEnabled(e),this._storeysExplorer.setEnabled(e),this._resetAction.setEnabled(e),this._fitAction.setEnabled(e),this._threeDMode.setEnabled(e),this._orthoMode.setEnabled(e),this._firstPersonMode.setEnabled(e),this._queryTool.setEnabled(e),this._hideTool.setEnabled(e),this._selectionTool.setEnabled(e),this._sectionTool.setEnabled(e),this._enablePropertiesInspector&&this._propertiesInspector.setEnabled(e)}setKeyboardEnabled(e){this.viewer.scene.input.keyboardEnabled=e}getKeyboardEnabled(){return this.viewer.scene.input.keyboardEnabled}clearSections(){this._sectionTool.clear()}flipSections(){this._sectionTool.flipSections()}hideSectionEditControl(){this._sectionTool.hideControl()}getNumSections(){return this._sectionTool.getNumSections()}destroy(){this.viewer.destroy(),this._bcfViewpointsPlugin.destroy(),this._canvasContextMenu.destroy(),this._objectContextMenu.destroy()}}export{ah as BIMViewer,Mn as LocaleService,El as Server};\n","/** @private */\nclass Map {\n\n constructor(items, baseId) {\n this.items = items || [];\n this._lastUniqueId = (baseId || 0) + 1;\n }\n\n /**\n * Usage:\n *\n * id = myMap.addItem(\"foo\") // ID internally generated\n * id = myMap.addItem(\"foo\", \"bar\") // ID is \"foo\"\n */\n addItem() {\n let item;\n if (arguments.length === 2) {\n const id = arguments[0];\n item = arguments[1];\n if (this.items[id]) { // Won't happen if given ID is string\n throw \"ID clash: '\" + id + \"'\";\n }\n this.items[id] = item;\n return id;\n\n } else {\n item = arguments[0] || {};\n while (true) {\n const findId = this._lastUniqueId++;\n if (!this.items[findId]) {\n this.items[findId] = item;\n return findId;\n }\n }\n }\n }\n\n removeItem(id) {\n const item = this.items[id];\n delete this.items[id];\n return item;\n }\n}\n\nconst idMap$1 = new Map();\n\n/**\n * Internal data class that represents the state of a menu or a submenu.\n * @private\n */\nclass Menu {\n constructor(id) {\n this.id = id;\n this.parentItem = null; // Set to an Item when this Menu is a submenu\n this.groups = [];\n this.menuElement = null;\n this.shown = false;\n this.mouseOver = 0;\n }\n}\n\n/**\n * Internal data class that represents a group of Items in a Menu.\n * @private\n */\nclass Group {\n constructor() {\n this.items = [];\n }\n}\n\n/**\n * Internal data class that represents the state of a menu item.\n * @private\n */\nclass Item {\n constructor(id, getTitle, doAction, getEnabled, getShown) {\n this.id = id;\n this.getTitle = getTitle;\n this.doAction = doAction;\n this.getEnabled = getEnabled;\n this.getShown = getShown;\n this.itemElement = null;\n this.subMenu = null;\n this.enabled = true;\n }\n}\n\n/**\n * @desc A customizable HTML context menu.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/#ContextMenu_Canvas_TreeViewPlugin_Custom)\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#ContextMenu_Canvas_TreeViewPlugin_Custom)]\n *\n * ## Overview\n *\n * * A pure JavaScript, lightweight context menu\n * * Dynamically configure menu items\n * * Dynamically enable or disable items\n * * Dynamically show or hide items\n * * Supports cascading sub-menus\n * * Configure custom style with custom CSS (see examples above)\n *\n * ## Usage\n *\n * In the example below we'll create a ````ContextMenu```` that pops up whenever we right-click on an {@link Entity} within\n * our {@link Scene}.\n *\n * First, we'll create the ````ContextMenu````, configuring it with a list of menu items.\n *\n * Each item has:\n *\n * * a ````title```` for the item,\n * * a ````doAction()```` callback to fire when the item's title is clicked,\n * * an optional ````getShown()```` callback that indicates if the item should shown in the menu or not, and\n * * an optional ````getEnabled()```` callback that indicates if the item should be shown enabled in the menu or not.\n *\n *
\n *\n * The ````getShown()```` and ````getEnabled()```` callbacks are invoked whenever the menu is shown.\n *\n * When an item's ````getShown()```` callback\n * returns ````true````, then the item is shown. When it returns ````false````, then the item is hidden. An item without\n * a ````getShown()```` callback is always shown.\n *\n * When an item's ````getEnabled()```` callback returns ````true````, then the item is enabled and clickable (as long as it's also shown). When it\n * returns ````false````, then the item is disabled and cannot be clicked. An item without a ````getEnabled()````\n * callback is always enabled and clickable.\n *\n * Note how the ````doAction()````, ````getShown()```` and ````getEnabled()```` callbacks accept a ````context````\n * object. That must be set on the ````ContextMenu```` before we're able to we show it. The context object can be anything. In this example,\n * we'll use the context object to provide the callbacks with the Entity that we right-clicked.\n *\n * We'll also initially enable the ````ContextMenu````.\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#ContextMenu_Canvas_Custom)]\n *\n * ````javascript\n * const canvasContextMenu = new ContextMenu({\n *\n * enabled: true,\n *\n * items: [\n * [\n * {\n * title: \"Hide Object\",\n * getEnabled: (context) => {\n * return context.entity.visible; // Can't hide entity if already hidden\n * },\n * doAction: function (context) {\n * context.entity.visible = false;\n * }\n * }\n * ],\n * [\n * {\n * title: \"Select Object\",\n * getEnabled: (context) => {\n * return (!context.entity.selected); // Can't select an entity that's already selected\n * },\n * doAction: function (context) {\n * context.entity.selected = true;\n * }\n * }\n * ],\n * [\n * {\n * title: \"X-Ray Object\",\n * getEnabled: (context) => {\n * return (!context.entity.xrayed); // Can't X-ray an entity that's already X-rayed\n * },\n * doAction: (context) => {\n * context.entity.xrayed = true;\n * }\n * }\n * ]\n * ]\n * });\n * ````\n *\n * Next, we'll make the ````ContextMenu```` appear whenever we right-click on an Entity. Whenever we right-click\n * on the canvas, we'll attempt to pick the Entity at those mouse coordinates. If we succeed, we'll feed the\n * Entity into ````ContextMenu```` via the context object, then show the ````ContextMenu````.\n *\n * From there, each ````ContextMenu```` item's ````getEnabled()```` callback will be invoked (if provided), to determine if the item should\n * be enabled. If we click an item, its ````doAction()```` callback will be invoked with our context object.\n *\n * Remember that we must set the context on our ````ContextMenu```` before we show it, otherwise it will log an error to the console,\n * and ignore our attempt to show it.\n *\n * ````javascript*\n * viewer.scene.canvas.canvas.oncontextmenu = (e) => { // Right-clicked on the canvas\n *\n * if (!objectContextMenu.enabled) {\n * return;\n * }\n *\n * var hit = viewer.scene.pick({ // Try to pick an Entity at the coordinates\n * canvasPos: [e.pageX, e.pageY]\n * });\n *\n * if (hit) { // Picked an Entity\n *\n * objectContextMenu.context = { // Feed entity to ContextMenu\n * entity: hit.entity\n * };\n *\n * objectContextMenu.show(e.pageX, e.pageY); // Show the ContextMenu\n * }\n *\n * e.preventDefault();\n * });\n * ````\n *\n * Note how we only show the ````ContextMenu```` if it's enabled. We can use that mechanism to switch between multiple\n * ````ContextMenu```` instances depending on what we clicked.\n *\n * ## Dynamic Item Titles\n *\n * To make an item dynamically regenerate its title text whenever we show the ````ContextMenu````, provide its title with a\n * ````getTitle()```` callback. The callback will fire each time you show ````ContextMenu````, which will dynamically\n * set the item title text.\n *\n * In the example below, we'll create a simple ````ContextMenu```` that allows us to toggle the selection of an object\n * via its first item, which changes text depending on whether we are selecting or deselecting the object.\n *\n * [[Run an example](https://xeokit.github.io/xeokit-sdk/examples/#ContextMenu_dynamicItemTitles)]\n *\n * ````javascript\n * const canvasContextMenu = new ContextMenu({\n *\n * enabled: true,\n *\n * items: [\n * [\n * {\n * getTitle: (context) => {\n * return (!context.entity.selected) ? \"Select\" : \"Undo Select\";\n * },\n * doAction: function (context) {\n * context.entity.selected = !context.entity.selected;\n * }\n * },\n * {\n * title: \"Clear Selection\",\n * getEnabled: function (context) {\n * return (context.viewer.scene.numSelectedObjects > 0);\n * },\n * doAction: function (context) {\n * context.viewer.scene.setObjectsSelected(context.viewer.scene.selectedObjectIds, false);\n * }\n * }\n * ]\n * ]\n * });\n * ````\n *\n * ## Sub-menus\n *\n * Each menu item can optionally have a sub-menu, which will appear when we hover over the item.\n *\n * In the example below, we'll create a much simpler ````ContextMenu```` that has only one item, called \"Effects\", which\n * will open a cascading sub-menu whenever we hover over that item.\n *\n * Note that our \"Effects\" item has no ````doAction```` callback, because an item with a sub-menu performs no\n * action of its own.\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#ContextMenu_subMenus)]\n *\n * ````javascript\n * const canvasContextMenu = new ContextMenu({\n * items: [ // Top level items\n * [\n * {\n * getTitle: (context) => {\n * return \"Effects\";\n * },\n *\n * items: [ // Sub-menu\n * [\n * {\n * getTitle: (context) => {\n * return (!context.entity.visible) ? \"Show\" : \"Hide\";\n * },\n * doAction: function (context) {\n * context.entity.visible = !context.entity.visible;\n * }\n * },\n * {\n * getTitle: (context) => {\n * return (!context.entity.selected) ? \"Select\" : \"Undo Select\";\n * },\n * doAction: function (context) {\n * context.entity.selected = !context.entity.selected;\n * }\n * },\n * {\n * getTitle: (context) => {\n * return (!context.entity.highlighted) ? \"Highlight\" : \"Undo Highlight\";\n * },\n * doAction: function (context) {\n * context.entity.highlighted = !context.entity.highlighted;\n * }\n * }\n * ]\n * ]\n * }\n * ]\n * ]\n * });\n * ````\n */\nclass ContextMenu {\n\n /**\n * Creates a ````ContextMenu````.\n *\n * The ````ContextMenu```` will be initially hidden.\n *\n * @param {Object} [cfg] ````ContextMenu```` configuration.\n * @param {Object} [cfg.items] The context menu items. These can also be dynamically set on {@link ContextMenu#items}. See the class documentation for an example.\n * @param {Object} [cfg.context] The context, which is passed into the item callbacks. This can also be dynamically set on {@link ContextMenu#context}. This must be set before calling {@link ContextMenu#show}.\n * @param {Boolean} [cfg.enabled=true] Whether this ````ContextMenu```` is initially enabled. {@link ContextMenu#show} does nothing while this is ````false````.\n * @param {Boolean} [cfg.hideOnMouseDown=true] Whether this ````ContextMenu```` automatically hides whenever we mouse-down or tap anywhere in the page.\n */\n constructor(cfg = {}) {\n\n this._id = idMap$1.addItem();\n this._context = null;\n this._enabled = false; // True when the ContextMenu is enabled\n this._itemsCfg = []; // Items as given as configs\n this._rootMenu = null; // The root Menu in the tree\n this._menuList = []; // List of Menus\n this._menuMap = {}; // Menus mapped to their IDs\n this._itemList = []; // List of Items\n this._itemMap = {}; // Items mapped to their IDs\n this._shown = false; // True when the ContextMenu is visible\n this._nextId = 0;\n\n /**\n * Subscriptions to events fired at this ContextMenu.\n * @private\n */\n this._eventSubs = {};\n\n if (cfg.hideOnMouseDown !== false) {\n document.addEventListener(\"mousedown\", (event) => {\n if (!event.target.classList.contains(\"xeokit-context-menu-item\")) {\n this.hide();\n }\n });\n document.addEventListener(\"touchstart\", this._canvasTouchStartHandler = (event) => {\n if (!event.target.classList.contains(\"xeokit-context-menu-item\")) {\n this.hide();\n }\n });\n }\n\n if (cfg.items) {\n this.items = cfg.items;\n }\n\n this.context = cfg.context;\n this.enabled = cfg.enabled !== false;\n this.hide();\n }\n\n\n /**\n Subscribes to an event fired at this ````ContextMenu````.\n\n @param {String} event The event\n @param {Function} callback Callback fired on the event\n */\n on(event, callback) {\n let subs = this._eventSubs[event];\n if (!subs) {\n subs = [];\n this._eventSubs[event] = subs;\n }\n subs.push(callback);\n }\n\n /**\n Fires an event at this ````ContextMenu````.\n\n @param {String} event The event type name\n @param {Object} value The event parameters\n */\n fire(event, value) {\n const subs = this._eventSubs[event];\n if (subs) {\n for (let i = 0, len = subs.length; i < len; i++) {\n subs[i](value);\n }\n }\n }\n\n /**\n * Sets the ````ContextMenu```` items.\n *\n * These can be updated dynamically at any time.\n *\n * See class documentation for an example.\n *\n * @type {Object[]}\n */\n set items(itemsCfg) {\n this._clear();\n this._itemsCfg = itemsCfg || [];\n this._parseItems(itemsCfg);\n this._createUI();\n }\n\n /**\n * Gets the ````ContextMenu```` items.\n *\n * @type {Object[]}\n */\n get items() {\n return this._itemsCfg;\n }\n\n /**\n * Sets whether this ````ContextMenu```` is enabled.\n *\n * Hides the menu when disabling.\n *\n * @type {Boolean}\n */\n set enabled(enabled) {\n enabled = (!!enabled);\n if (enabled === this._enabled) {\n return;\n }\n this._enabled = enabled;\n if (!this._enabled) {\n this.hide();\n }\n }\n\n /**\n * Gets whether this ````ContextMenu```` is enabled.\n *\n * {@link ContextMenu#show} does nothing while this is ````false````.\n *\n * @type {Boolean}\n */\n get enabled() {\n return this._enabled;\n }\n\n /**\n * Sets the ````ContextMenu```` context.\n *\n * The context can be any object that you need to be provides to the callbacks configured on {@link ContextMenu#items}.\n *\n * This must be set before calling {@link ContextMenu#show}.\n *\n * @type {Object}\n */\n set context(context) {\n this._context = context;\n }\n\n /**\n * Gets the ````ContextMenu```` context.\n *\n * @type {Object}\n */\n get context() {\n return this._context;\n }\n\n /**\n * Shows this ````ContextMenu```` at the given page coordinates.\n *\n * Does nothing when {@link ContextMenu#enabled} is ````false````.\n *\n * Logs error to console and does nothing if {@link ContextMenu#context} has not been set.\n *\n * Fires a \"shown\" event when shown.\n *\n * @param {Number} pageX Page X-coordinate.\n * @param {Number} pageY Page Y-coordinate.\n */\n show(pageX, pageY) {\n if (!this._context) {\n console.error(\"ContextMenu cannot be shown without a context - set context first\");\n return;\n }\n if (!this._enabled) {\n return;\n }\n if (this._shown) {\n return;\n }\n this._hideAllMenus();\n this._updateItemsTitles();\n this._updateItemsEnabledStatus();\n this._showMenu(this._rootMenu.id, pageX, pageY);\n this._shown = true;\n this.fire(\"shown\", {});\n }\n\n /**\n * Gets whether this ````ContextMenu```` is currently shown or not.\n *\n * @returns {Boolean} Whether this ````ContextMenu```` is shown.\n */\n get shown() {\n return this._shown;\n }\n\n /**\n * Hides this ````ContextMenu````.\n *\n * Fires a \"hidden\" event when hidden.\n */\n hide() {\n if (!this._enabled) {\n return;\n }\n if (!this._shown) {\n return;\n }\n this._hideAllMenus();\n this._shown = false;\n this.fire(\"hidden\", {});\n }\n\n /**\n * Destroys this ````ContextMenu````.\n */\n destroy() {\n this._context = null;\n this._clear();\n if (this._id !== null) {\n idMap$1.removeItem(this._id);\n this._id = null;\n }\n }\n\n _clear() { // Destroys DOM elements, clears menu data\n for (let i = 0, len = this._menuList.length; i < len; i++) {\n const menu = this._menuList[i];\n const menuElement = menu.menuElement;\n menuElement.parentElement.removeChild(menuElement);\n }\n this._itemsCfg = [];\n this._rootMenu = null;\n this._menuList = [];\n this._menuMap = {};\n this._itemList = [];\n this._itemMap = {};\n }\n\n _parseItems(itemsCfg) { // Parses \"items\" config into menu data\n\n const visitItems = (itemsCfg) => {\n\n const menuId = this._getNextId();\n const menu = new Menu(menuId);\n\n for (let i = 0, len = itemsCfg.length; i < len; i++) {\n\n const itemsGroupCfg = itemsCfg[i];\n\n const group = new Group();\n\n menu.groups.push(group);\n\n for (let j = 0, lenj = itemsGroupCfg.length; j < lenj; j++) {\n\n const itemCfg = itemsGroupCfg[j];\n const subItemsCfg = itemCfg.items;\n const hasSubItems = (subItemsCfg && (subItemsCfg.length > 0));\n const itemId = this._getNextId();\n\n const getTitle = itemCfg.getTitle || (() => {\n return (itemCfg.title || \"\");\n });\n\n const doAction = itemCfg.doAction || itemCfg.callback || (() => {\n });\n\n const getEnabled = itemCfg.getEnabled || (() => {\n return true;\n });\n\n const getShown = itemCfg.getShown || (() => {\n return true;\n });\n\n const item = new Item(itemId, getTitle, doAction, getEnabled, getShown);\n\n item.parentMenu = menu;\n\n group.items.push(item);\n\n if (hasSubItems) {\n const subMenu = visitItems(subItemsCfg);\n item.subMenu = subMenu;\n subMenu.parentItem = item;\n }\n\n this._itemList.push(item);\n this._itemMap[item.id] = item;\n }\n }\n\n this._menuList.push(menu);\n this._menuMap[menu.id] = menu;\n\n return menu;\n };\n\n this._rootMenu = visitItems(itemsCfg);\n }\n\n _getNextId() { // Returns a unique ID\n return \"ContextMenu_\" + this._id + \"\" + this._nextId++; // Start ID with alpha chars to make a valid DOM element selector\n }\n\n _createUI() { // Builds DOM elements for the entire menu tree\n\n const visitMenu = (menu) => {\n\n this._createMenuUI(menu);\n\n const groups = menu.groups;\n for (let i = 0, len = groups.length; i < len; i++) {\n const group = groups[i];\n const groupItems = group.items;\n for (let j = 0, lenj = groupItems.length; j < lenj; j++) {\n const item = groupItems[j];\n const subMenu = item.subMenu;\n if (subMenu) {\n visitMenu(subMenu);\n }\n }\n }\n };\n\n visitMenu(this._rootMenu);\n }\n\n _createMenuUI(menu) { // Builds DOM elements for a menu\n\n const groups = menu.groups;\n const html = [];\n\n html.push('
');\n\n html.push('
    ');\n\n if (groups) {\n\n for (let i = 0, len = groups.length; i < len; i++) {\n\n const group = groups[i];\n const groupIdx = i;\n const groupLen = len;\n const groupItems = group.items;\n\n if (groupItems) {\n\n for (let j = 0, lenj = groupItems.length; j < lenj; j++) {\n\n const item = groupItems[j];\n const itemSubMenu = item.subMenu;\n const actionTitle = item.title || \"\";\n\n if (itemSubMenu) {\n\n html.push(\n '
  • ' +\n actionTitle +\n ' [MORE]' +\n '
  • ');\n\n } else {\n\n html.push(\n '
  • ' +\n actionTitle +\n '
  • ');\n }\n }\n }\n }\n }\n\n html.push('
');\n html.push('
');\n\n const htmlString = html.join(\"\");\n\n document.body.insertAdjacentHTML('beforeend', htmlString);\n\n const menuElement = document.querySelector(\".\" + menu.id);\n\n menu.menuElement = menuElement;\n\n menuElement.style[\"border-radius\"] = 4 + \"px\";\n menuElement.style.display = 'none';\n menuElement.style[\"z-index\"] = 300000;\n menuElement.style.background = \"white\";\n menuElement.style.border = \"1px solid black\";\n menuElement.style[\"box-shadow\"] = \"0 4px 5px 0 gray\";\n menuElement.oncontextmenu = (e) => {\n e.preventDefault();\n };\n\n // Bind event handlers\n\n const self = this;\n\n let lastSubMenu = null;\n\n if (groups) {\n\n for (let i = 0, len = groups.length; i < len; i++) {\n\n const group = groups[i];\n const groupItems = group.items;\n\n if (groupItems) {\n\n for (let j = 0, lenj = groupItems.length; j < lenj; j++) {\n\n const item = groupItems[j];\n const itemSubMenu = item.subMenu;\n\n item.itemElement = document.getElementById(item.id);\n\n if (!item.itemElement) {\n console.error(\"ContextMenu item element not found: \" + item.id);\n continue;\n }\n\n item.itemElement.addEventListener(\"mouseenter\", (event) => {\n event.preventDefault();\n if (item.enabled === false) {\n return;\n }\n const subMenu = item.subMenu;\n if (!subMenu) {\n if (lastSubMenu) {\n self._hideMenu(lastSubMenu.id);\n lastSubMenu = null;\n }\n return;\n }\n if (lastSubMenu && (lastSubMenu.id !== subMenu.id)) {\n self._hideMenu(lastSubMenu.id);\n lastSubMenu = null;\n }\n\n const itemElement = item.itemElement;\n const subMenuElement = subMenu.menuElement;\n\n const itemRect = itemElement.getBoundingClientRect();\n subMenuElement.getBoundingClientRect();\n\n const subMenuWidth = 200; // TODO\n const showOnLeft = ((itemRect.right + subMenuWidth) > window.innerWidth);\n\n if (showOnLeft) {\n self._showMenu(subMenu.id, itemRect.left - subMenuWidth, itemRect.top - 1);\n } else {\n self._showMenu(subMenu.id, itemRect.right - 5, itemRect.top - 1);\n }\n\n lastSubMenu = subMenu;\n });\n\n if (!itemSubMenu) {\n\n // Item without sub-menu\n // clicking item fires the item's action callback\n\n item.itemElement.addEventListener(\"click\", (event) => {\n event.preventDefault();\n self.hide();\n if (!self._context) {\n return;\n }\n if (item.enabled === false) {\n return;\n }\n if (item.doAction) {\n item.doAction(self._context);\n }\n });\n\n\n item.itemElement.addEventListener(\"mouseenter\", (event) => {\n event.preventDefault();\n if (item.enabled === false) {\n return;\n }\n if (item.doHover) {\n item.doHover(self._context);\n }\n });\n\n }\n }\n }\n }\n }\n }\n\n _updateItemsTitles() { // Dynamically updates the title of each Item to the result of Item#getTitle()\n if (!this._context) {\n return;\n }\n for (let i = 0, len = this._itemList.length; i < len; i++) {\n const item = this._itemList[i];\n const itemElement = item.itemElement;\n if (!itemElement) {\n continue;\n }\n const getShown = item.getShown;\n if (!getShown || !getShown(this._context)) {\n continue;\n }\n const title = item.getTitle(this._context);\n if (item.subMenu) {\n itemElement.innerText = title;\n } else {\n itemElement.innerText = title;\n }\n }\n }\n\n _updateItemsEnabledStatus() { // Enables or disables each Item, depending on the result of Item#getEnabled()\n if (!this._context) {\n return;\n }\n for (let i = 0, len = this._itemList.length; i < len; i++) {\n const item = this._itemList[i];\n const itemElement = item.itemElement;\n if (!itemElement) {\n continue;\n }\n const getEnabled = item.getEnabled;\n if (!getEnabled) {\n continue;\n }\n const getShown = item.getShown;\n if (!getShown) {\n continue;\n }\n const shown = getShown(this._context);\n item.shown = shown;\n if (!shown) {\n itemElement.style.visibility = \"hidden\";\n itemElement.style.height = \"0\";\n itemElement.style.padding = \"0\";\n continue;\n } else {\n itemElement.style.visibility = \"visible\";\n itemElement.style.height = \"auto\";\n itemElement.style.padding = null;\n }\n const enabled = getEnabled(this._context);\n item.enabled = enabled;\n if (!enabled) {\n itemElement.classList.add(\"disabled\");\n } else {\n itemElement.classList.remove(\"disabled\");\n }\n }\n }\n\n _showMenu(menuId, pageX, pageY) { // Shows the given menu, at the specified page coordinates\n const menu = this._menuMap[menuId];\n if (!menu) {\n console.error(\"Menu not found: \" + menuId);\n return;\n }\n if (menu.shown) {\n return;\n }\n const menuElement = menu.menuElement;\n if (menuElement) {\n this._showMenuElement(menuElement, pageX, pageY);\n menu.shown = true;\n }\n }\n\n _hideMenu(menuId) { // Hides the given menu\n const menu = this._menuMap[menuId];\n if (!menu) {\n console.error(\"Menu not found: \" + menuId);\n return;\n }\n if (!menu.shown) {\n return;\n }\n const menuElement = menu.menuElement;\n if (menuElement) {\n this._hideMenuElement(menuElement);\n menu.shown = false;\n }\n }\n\n _hideAllMenus() {\n for (let i = 0, len = this._menuList.length; i < len; i++) {\n const menu = this._menuList[i];\n this._hideMenu(menu.id);\n }\n }\n\n _showMenuElement(menuElement, pageX, pageY) { // Shows the given menu element, at the specified page coordinates\n menuElement.style.display = 'block';\n const menuHeight = menuElement.offsetHeight;\n const menuWidth = menuElement.offsetWidth;\n if ((pageY + menuHeight) > window.innerHeight) {\n pageY = window.innerHeight - menuHeight;\n }\n if ((pageX + menuWidth) > window.innerWidth) {\n pageX = window.innerWidth - menuWidth;\n }\n menuElement.style.left = pageX + 'px';\n menuElement.style.top = pageY + 'px';\n }\n\n _hideMenuElement(menuElement) {\n menuElement.style.display = 'none';\n }\n}\n\n/**\n @desc Base class for {@link Viewer} plugin classes.\n */\nclass Plugin {\n\n /**\n * Creates this Plugin and installs it into the given {@link Viewer}.\n *\n * @param {string} id ID for this plugin, unique among all plugins in the viewer.\n * @param {Viewer} viewer The viewer.\n * @param {Object} [cfg] Options\n */\n constructor(id, viewer, cfg) {\n\n /**\n * ID for this Plugin, unique within its {@link Viewer}.\n *\n * @type {string}\n */\n this.id = (cfg && cfg.id) ? cfg.id : id;\n\n /**\n * The Viewer that contains this Plugin.\n *\n * @type {Viewer}\n */\n this.viewer = viewer;\n\n /**\n * Subscriptions to events fired at this Plugin.\n * @private\n */\n this._eventSubs = {};\n\n viewer.addPlugin(this);\n }\n\n /**\n Subscribes to an event fired at this Plugin.\n\n @param {String} event The event\n @param {Function} callback Callback fired on the event\n */\n on(event, callback) {\n let subs = this._eventSubs[event];\n if (!subs) {\n subs = [];\n this._eventSubs[event] = subs;\n }\n subs.push(callback);\n }\n\n /**\n Fires an event at this Plugin.\n\n @param {String} event The event type name\n @param {Object} value The event parameters\n */\n fire(event, value) {\n const subs = this._eventSubs[event];\n if (subs) {\n for (let i = 0, len = subs.length; i < len; i++) {\n subs[i](value);\n }\n }\n }\n\n /**\n * Logs a message to the JavaScript developer console, prefixed with the ID of this Plugin.\n *\n * @param {String} msg The error message\n */\n log(msg) {\n console.log(`[xeokit plugin ${this.id}]: ${msg}`);\n }\n\n /**\n * Logs a warning message to the JavaScript developer console, prefixed with the ID of this Plugin.\n *\n * @param {String} msg The error message\n */\n warn(msg) {\n console.warn(`[xeokit plugin ${this.id}]: ${msg}`);\n }\n\n /**\n * Logs an error message to the JavaScript developer console, prefixed with the ID of this Plugin.\n *\n * @param {String} msg The error message\n */\n error(msg) {\n console.error(`[xeokit plugin ${this.id}]: ${msg}`);\n }\n\n /**\n * Sends a message to this Plugin.\n *\n * @private\n */\n send(name, value) {\n //...\n }\n\n /**\n * Destroys this Plugin and removes it from its {@link Viewer}.\n */\n destroy() {\n this.viewer.removePlugin(this);\n }\n}\n\n// Some temporary vars to help avoid garbage collection\nconst FloatArrayType = Float64Array ;\n\nconst tempMat1 = new FloatArrayType(16);\nconst tempMat2 = new FloatArrayType(16);\nconst tempVec4$6 = new FloatArrayType(4);\n\n\n/**\n * @private\n */\nconst math = {\n\n MIN_DOUBLE: -Number.MAX_SAFE_INTEGER,\n MAX_DOUBLE: Number.MAX_SAFE_INTEGER,\n\n /**\n * The number of radiians in a degree (0.0174532925).\n * @property DEGTORAD\n * @type {Number}\n */\n DEGTORAD: 0.0174532925,\n\n /**\n * The number of degrees in a radian.\n * @property RADTODEG\n * @type {Number}\n */\n RADTODEG: 57.295779513,\n\n unglobalizeObjectId(modelId, globalId) {\n const idx = globalId.indexOf(\"#\");\n return (idx === modelId.length && globalId.startsWith(modelId)) ? globalId.substring(idx + 1) : globalId;\n },\n\n globalizeObjectId(modelId, objectId) {\n return (modelId + \"#\" + objectId)\n },\n\n /**\n * Returns a new, uninitialized two-element vector.\n * @method vec2\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec2(values) {\n return new FloatArrayType(values || 2);\n },\n\n /**\n * Returns a new, uninitialized three-element vector.\n * @method vec3\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec3(values) {\n return new FloatArrayType(values || 3);\n },\n\n /**\n * Returns a new, uninitialized four-element vector.\n * @method vec4\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n vec4(values) {\n return new FloatArrayType(values || 4);\n },\n\n /**\n * Returns a new, uninitialized 3x3 matrix.\n * @method mat3\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n mat3(values) {\n return new FloatArrayType(values || 9);\n },\n\n /**\n * Converts a 3x3 matrix to 4x4\n * @method mat3ToMat4\n * @param mat3 3x3 matrix.\n * @param mat4 4x4 matrix\n * @static\n * @returns {Number[]}\n */\n mat3ToMat4(mat3, mat4 = new FloatArrayType(16)) {\n mat4[0] = mat3[0];\n mat4[1] = mat3[1];\n mat4[2] = mat3[2];\n mat4[3] = 0;\n mat4[4] = mat3[3];\n mat4[5] = mat3[4];\n mat4[6] = mat3[5];\n mat4[7] = 0;\n mat4[8] = mat3[6];\n mat4[9] = mat3[7];\n mat4[10] = mat3[8];\n mat4[11] = 0;\n mat4[12] = 0;\n mat4[13] = 0;\n mat4[14] = 0;\n mat4[15] = 1;\n return mat4;\n },\n\n /**\n * Returns a new, uninitialized 4x4 matrix.\n * @method mat4\n * @param [values] Initial values.\n * @static\n * @returns {Number[]}\n */\n mat4(values) {\n return new FloatArrayType(values || 16);\n },\n\n /**\n * Converts a 4x4 matrix to 3x3\n * @method mat4ToMat3\n * @param mat4 4x4 matrix.\n * @param mat3 3x3 matrix\n * @static\n * @returns {Number[]}\n */\n mat4ToMat3(mat4, mat3) { // TODO\n //return new FloatArrayType(values || 9);\n },\n\n /**\n * Converts a list of double-precision values to a list of high-part floats and a list of low-part floats.\n * @param doubleVals\n * @param floatValsHigh\n * @param floatValsLow\n */\n doublesToFloats(doubleVals, floatValsHigh, floatValsLow) {\n const floatPair = new FloatArrayType(2);\n for (let i = 0, len = doubleVals.length; i < len; i++) {\n math.splitDouble(doubleVals[i], floatPair);\n floatValsHigh[i] = floatPair[0];\n floatValsLow[i] = floatPair[1];\n }\n },\n\n /**\n * Splits a double value into two floats.\n * @param value\n * @param floatPair\n */\n splitDouble(value, floatPair) {\n const hi = FloatArrayType.from([value])[0];\n const low = value - hi;\n floatPair[0] = hi;\n floatPair[1] = low;\n },\n\n /**\n * Returns a new UUID.\n * @method createUUID\n * @static\n * @return string The new UUID\n */\n createUUID: ((() => {\n const lut = [];\n for (let i = 0; i < 256; i++) {\n lut[i] = (i < 16 ? '0' : '') + (i).toString(16);\n }\n return () => {\n const d0 = Math.random() * 0xffffffff | 0;\n const d1 = Math.random() * 0xffffffff | 0;\n const d2 = Math.random() * 0xffffffff | 0;\n const d3 = Math.random() * 0xffffffff | 0;\n return `${lut[d0 & 0xff] + lut[d0 >> 8 & 0xff] + lut[d0 >> 16 & 0xff] + lut[d0 >> 24 & 0xff]}-${lut[d1 & 0xff]}${lut[d1 >> 8 & 0xff]}-${lut[d1 >> 16 & 0x0f | 0x40]}${lut[d1 >> 24 & 0xff]}-${lut[d2 & 0x3f | 0x80]}${lut[d2 >> 8 & 0xff]}-${lut[d2 >> 16 & 0xff]}${lut[d2 >> 24 & 0xff]}${lut[d3 & 0xff]}${lut[d3 >> 8 & 0xff]}${lut[d3 >> 16 & 0xff]}${lut[d3 >> 24 & 0xff]}`;\n };\n }))(),\n\n /**\n * Clamps a value to the given range.\n * @param {Number} value Value to clamp.\n * @param {Number} min Lower bound.\n * @param {Number} max Upper bound.\n * @returns {Number} Clamped result.\n */\n clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n },\n\n /**\n * Floating-point modulus\n * @method fmod\n * @static\n * @param {Number} a\n * @param {Number} b\n * @returns {*}\n */\n fmod(a, b) {\n if (a < b) {\n console.error(\"math.fmod : Attempting to find modulus within negative range - would be infinite loop - ignoring\");\n return a;\n }\n while (b <= a) {\n a -= b;\n }\n return a;\n },\n\n /**\n * Returns true if the two 3-element vectors are the same.\n * @param v1\n * @param v2\n * @returns {boolean}\n */\n compareVec3(v1, v2) {\n return (v1[0] === v2[0] && v1[1] === v2[1] && v1[2] === v2[2]);\n },\n\n /**\n * Negates a three-element vector.\n * @method negateVec3\n * @static\n * @param {Array(Number)} v Vector to negate\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n negateVec3(v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = -v[0];\n dest[1] = -v[1];\n dest[2] = -v[2];\n return dest;\n },\n\n /**\n * Negates a four-element vector.\n * @method negateVec4\n * @static\n * @param {Array(Number)} v Vector to negate\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n negateVec4(v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = -v[0];\n dest[1] = -v[1];\n dest[2] = -v[2];\n dest[3] = -v[3];\n return dest;\n },\n\n /**\n * Adds one four-element vector to another.\n * @method addVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n addVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] + v[0];\n dest[1] = u[1] + v[1];\n dest[2] = u[2] + v[2];\n dest[3] = u[3] + v[3];\n return dest;\n },\n\n /**\n * Adds a scalar value to each element of a four-element vector.\n * @method addVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n addVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] + s;\n dest[1] = v[1] + s;\n dest[2] = v[2] + s;\n dest[3] = v[3] + s;\n return dest;\n },\n\n /**\n * Adds one three-element vector to another.\n * @method addVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n addVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] + v[0];\n dest[1] = u[1] + v[1];\n dest[2] = u[2] + v[2];\n return dest;\n },\n\n /**\n * Adds a scalar value to each element of a three-element vector.\n * @method addVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n addVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] + s;\n dest[1] = v[1] + s;\n dest[2] = v[2] + s;\n return dest;\n },\n\n /**\n * Subtracts one four-element vector from another.\n * @method subVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n dest[2] = u[2] - v[2];\n dest[3] = u[3] - v[3];\n return dest;\n },\n\n /**\n * Subtracts one three-element vector from another.\n * @method subVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n dest[2] = u[2] - v[2];\n return dest;\n },\n\n /**\n * Subtracts one two-element vector from another.\n * @method subVec2\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Vector to subtract\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n subVec2(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] - v[0];\n dest[1] = u[1] - v[1];\n return dest;\n },\n\n /**\n * Get the geometric mean of the vectors.\n * @method geometricMeanVec2\n * @static\n * @param {...Array(Number)} vectors Vec2 to mean\n * @return {Array(Number)} The geometric mean vec2\n */\n geometricMeanVec2(...vectors) {\n const geometricMean = new FloatArrayType(vectors[0]);\n for (let i = 1; i < vectors.length; i++) {\n geometricMean[0] += vectors[i][0];\n geometricMean[1] += vectors[i][1];\n }\n geometricMean[0] /= vectors.length;\n geometricMean[1] /= vectors.length;\n return geometricMean;\n },\n\n /**\n * Subtracts a scalar value from each element of a four-element vector.\n * @method subVec4Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n subVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] - s;\n dest[1] = v[1] - s;\n dest[2] = v[2] - s;\n dest[3] = v[3] - s;\n return dest;\n },\n\n /**\n * Sets each element of a 4-element vector to a scalar value minus the value of that element.\n * @method subScalarVec4\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n subScalarVec4(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s - v[0];\n dest[1] = s - v[1];\n dest[2] = s - v[2];\n dest[3] = s - v[3];\n return dest;\n },\n\n /**\n * Multiplies one three-element vector by another.\n * @method mulVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n mulVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] * v[0];\n dest[1] = u[1] * v[1];\n dest[2] = u[2] * v[2];\n dest[3] = u[3] * v[3];\n return dest;\n },\n\n /**\n * Multiplies each element of a four-element vector by a scalar.\n * @method mulVec34calar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n dest[2] = v[2] * s;\n dest[3] = v[3] * s;\n return dest;\n },\n\n /**\n * Multiplies each element of a three-element vector by a scalar.\n * @method mulVec3Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n dest[2] = v[2] * s;\n return dest;\n },\n\n /**\n * Multiplies each element of a two-element vector by a scalar.\n * @method mulVec2Scalar\n * @static\n * @param {Array(Number)} v The vector\n * @param {Number} s The scalar\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, v otherwise\n */\n mulVec2Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] * s;\n dest[1] = v[1] * s;\n return dest;\n },\n\n /**\n * Divides one three-element vector by another.\n * @method divVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n divVec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] / v[0];\n dest[1] = u[1] / v[1];\n dest[2] = u[2] / v[2];\n return dest;\n },\n\n /**\n * Divides one four-element vector by another.\n * @method divVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @param {Array(Number)} [dest] Destination vector\n * @return {Array(Number)} dest if specified, u otherwise\n */\n divVec4(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n dest[0] = u[0] / v[0];\n dest[1] = u[1] / v[1];\n dest[2] = u[2] / v[2];\n dest[3] = u[3] / v[3];\n return dest;\n },\n\n /**\n * Divides a scalar by a three-element vector, returning a new vector.\n * @method divScalarVec3\n * @static\n * @param v vec3\n * @param s scalar\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divScalarVec3(s, v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s / v[0];\n dest[1] = s / v[1];\n dest[2] = s / v[2];\n return dest;\n },\n\n /**\n * Divides a three-element vector by a scalar.\n * @method divVec3Scalar\n * @static\n * @param v vec3\n * @param s scalar\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divVec3Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] / s;\n dest[1] = v[1] / s;\n dest[2] = v[2] / s;\n return dest;\n },\n\n /**\n * Divides a four-element vector by a scalar.\n * @method divVec4Scalar\n * @static\n * @param v vec4\n * @param s scalar\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divVec4Scalar(v, s, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = v[0] / s;\n dest[1] = v[1] / s;\n dest[2] = v[2] / s;\n dest[3] = v[3] / s;\n return dest;\n },\n\n\n /**\n * Divides a scalar by a four-element vector, returning a new vector.\n * @method divScalarVec4\n * @static\n * @param s scalar\n * @param v vec4\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n */\n divScalarVec4(s, v, dest) {\n if (!dest) {\n dest = v;\n }\n dest[0] = s / v[0];\n dest[1] = s / v[1];\n dest[2] = s / v[2];\n dest[3] = s / v[3];\n return dest;\n },\n\n /**\n * Returns the dot product of two four-element vectors.\n * @method dotVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec4(u, v) {\n return (u[0] * v[0] + u[1] * v[1] + u[2] * v[2] + u[3] * v[3]);\n },\n\n /**\n * Returns the cross product of two four-element vectors.\n * @method cross3Vec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The cross product\n */\n cross3Vec4(u, v) {\n const u0 = u[0];\n const u1 = u[1];\n const u2 = u[2];\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n return [\n u1 * v2 - u2 * v1,\n u2 * v0 - u0 * v2,\n u0 * v1 - u1 * v0,\n 0.0];\n },\n\n /**\n * Returns the cross product of two three-element vectors.\n * @method cross3Vec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The cross product\n */\n cross3Vec3(u, v, dest) {\n if (!dest) {\n dest = u;\n }\n const x = u[0];\n const y = u[1];\n const z = u[2];\n const x2 = v[0];\n const y2 = v[1];\n const z2 = v[2];\n dest[0] = y * z2 - z * y2;\n dest[1] = z * x2 - x * z2;\n dest[2] = x * y2 - y * x2;\n return dest;\n },\n\n\n sqLenVec4(v) { // TODO\n return math.dotVec4(v, v);\n },\n\n /**\n * Returns the length of a four-element vector.\n * @method lenVec4\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec4(v) {\n return Math.sqrt(math.sqLenVec4(v));\n },\n\n /**\n * Returns the dot product of two three-element vectors.\n * @method dotVec3\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec3(u, v) {\n return (u[0] * v[0] + u[1] * v[1] + u[2] * v[2]);\n },\n\n /**\n * Returns the dot product of two two-element vectors.\n * @method dotVec4\n * @static\n * @param {Array(Number)} u First vector\n * @param {Array(Number)} v Second vector\n * @return The dot product\n */\n dotVec2(u, v) {\n return (u[0] * v[0] + u[1] * v[1]);\n },\n\n\n sqLenVec3(v) {\n return math.dotVec3(v, v);\n },\n\n\n sqLenVec2(v) {\n return math.dotVec2(v, v);\n },\n\n /**\n * Returns the length of a three-element vector.\n * @method lenVec3\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec3(v) {\n return Math.sqrt(math.sqLenVec3(v));\n },\n\n distVec3: ((() => {\n const vec = new FloatArrayType(3);\n return (v, w) => math.lenVec3(math.subVec3(v, w, vec));\n }))(),\n\n /**\n * Returns the length of a two-element vector.\n * @method lenVec2\n * @static\n * @param {Array(Number)} v The vector\n * @return The length\n */\n lenVec2(v) {\n return Math.sqrt(math.sqLenVec2(v));\n },\n\n distVec2: ((() => {\n const vec = new FloatArrayType(2);\n return (v, w) => math.lenVec2(math.subVec2(v, w, vec));\n }))(),\n\n /**\n * @method rcpVec3\n * @static\n * @param v vec3\n * @param dest vec3 - optional destination\n * @return [] dest if specified, v otherwise\n *\n */\n rcpVec3(v, dest) {\n return math.divScalarVec3(1.0, v, dest);\n },\n\n /**\n * Normalizes a four-element vector\n * @method normalizeVec4\n * @static\n * @param v vec4\n * @param dest vec4 - optional destination\n * @return [] dest if specified, v otherwise\n *\n */\n normalizeVec4(v, dest) {\n const f = 1.0 / math.lenVec4(v);\n return math.mulVec4Scalar(v, f, dest);\n },\n\n /**\n * Normalizes a three-element vector\n * @method normalizeVec4\n * @static\n */\n normalizeVec3(v, dest) {\n const f = 1.0 / math.lenVec3(v);\n return math.mulVec3Scalar(v, f, dest);\n },\n\n /**\n * Normalizes a two-element vector\n * @method normalizeVec2\n * @static\n */\n normalizeVec2(v, dest) {\n const f = 1.0 / math.lenVec2(v);\n return math.mulVec2Scalar(v, f, dest);\n },\n\n /**\n * Gets the angle between two vectors\n * @method angleVec3\n * @param v\n * @param w\n * @returns {number}\n */\n angleVec3(v, w) {\n let theta = math.dotVec3(v, w) / (Math.sqrt(math.sqLenVec3(v) * math.sqLenVec3(w)));\n theta = theta < -1 ? -1 : (theta > 1 ? 1 : theta); // Clamp to handle numerical problems\n return Math.acos(theta);\n },\n\n /**\n * Creates a three-element vector from the rotation part of a sixteen-element matrix.\n * @param m\n * @param dest\n */\n vec3FromMat4Scale: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n\n return (m, dest) => {\n\n tempVec3[0] = m[0];\n tempVec3[1] = m[1];\n tempVec3[2] = m[2];\n\n dest[0] = math.lenVec3(tempVec3);\n\n tempVec3[0] = m[4];\n tempVec3[1] = m[5];\n tempVec3[2] = m[6];\n\n dest[1] = math.lenVec3(tempVec3);\n\n tempVec3[0] = m[8];\n tempVec3[1] = m[9];\n tempVec3[2] = m[10];\n\n dest[2] = math.lenVec3(tempVec3);\n\n return dest;\n };\n }))(),\n\n /**\n * Converts an n-element vector to a JSON-serializable\n * array with values rounded to two decimal places.\n */\n vecToArray: ((() => {\n function trunc(v) {\n return Math.round(v * 100000) / 100000\n }\n\n return v => {\n v = Array.prototype.slice.call(v);\n for (let i = 0, len = v.length; i < len; i++) {\n v[i] = trunc(v[i]);\n }\n return v;\n };\n }))(),\n\n /**\n * Converts a 3-element vector from an array to an object of the form ````{x:999, y:999, z:999}````.\n * @param arr\n * @returns {{x: *, y: *, z: *}}\n */\n xyzArrayToObject(arr) {\n return {\"x\": arr[0], \"y\": arr[1], \"z\": arr[2]};\n },\n\n /**\n * Converts a 3-element vector object of the form ````{x:999, y:999, z:999}```` to an array.\n * @param xyz\n * @param [arry]\n * @returns {*[]}\n */\n xyzObjectToArray(xyz, arry) {\n arry = arry || math.vec3();\n arry[0] = xyz.x;\n arry[1] = xyz.y;\n arry[2] = xyz.z;\n return arry;\n },\n\n /**\n * Duplicates a 4x4 identity matrix.\n * @method dupMat4\n * @static\n */\n dupMat4(m) {\n return m.slice(0, 16);\n },\n\n /**\n * Extracts a 3x3 matrix from a 4x4 matrix.\n * @method mat4To3\n * @static\n */\n mat4To3(m) {\n return [\n m[0], m[1], m[2],\n m[4], m[5], m[6],\n m[8], m[9], m[10]\n ];\n },\n\n /**\n * Returns a 4x4 matrix with each element set to the given scalar value.\n * @method m4s\n * @static\n */\n m4s(s) {\n return [\n s, s, s, s,\n s, s, s, s,\n s, s, s, s,\n s, s, s, s\n ];\n },\n\n /**\n * Returns a 4x4 matrix with each element set to zero.\n * @method setMat4ToZeroes\n * @static\n */\n setMat4ToZeroes() {\n return math.m4s(0.0);\n },\n\n /**\n * Returns a 4x4 matrix with each element set to 1.0.\n * @method setMat4ToOnes\n * @static\n */\n setMat4ToOnes() {\n return math.m4s(1.0);\n },\n\n /**\n * Returns a 4x4 matrix with each element set to 1.0.\n * @method setMat4ToOnes\n * @static\n */\n diagonalMat4v(v) {\n return new FloatArrayType([\n v[0], 0.0, 0.0, 0.0,\n 0.0, v[1], 0.0, 0.0,\n 0.0, 0.0, v[2], 0.0,\n 0.0, 0.0, 0.0, v[3]\n ]);\n },\n\n /**\n * Returns a 4x4 matrix with diagonal elements set to the given vector.\n * @method diagonalMat4c\n * @static\n */\n diagonalMat4c(x, y, z, w) {\n return math.diagonalMat4v([x, y, z, w]);\n },\n\n /**\n * Returns a 4x4 matrix with diagonal elements set to the given scalar.\n * @method diagonalMat4s\n * @static\n */\n diagonalMat4s(s) {\n return math.diagonalMat4c(s, s, s, s);\n },\n\n /**\n * Returns a 4x4 identity matrix.\n * @method identityMat4\n * @static\n */\n identityMat4(mat = new FloatArrayType(16)) {\n mat[0] = 1.0;\n mat[1] = 0.0;\n mat[2] = 0.0;\n mat[3] = 0.0;\n\n mat[4] = 0.0;\n mat[5] = 1.0;\n mat[6] = 0.0;\n mat[7] = 0.0;\n\n mat[8] = 0.0;\n mat[9] = 0.0;\n mat[10] = 1.0;\n mat[11] = 0.0;\n\n mat[12] = 0.0;\n mat[13] = 0.0;\n mat[14] = 0.0;\n mat[15] = 1.0;\n\n return mat;\n },\n\n /**\n * Returns a 3x3 identity matrix.\n * @method identityMat3\n * @static\n */\n identityMat3(mat = new FloatArrayType(9)) {\n mat[0] = 1.0;\n mat[1] = 0.0;\n mat[2] = 0.0;\n\n mat[3] = 0.0;\n mat[4] = 1.0;\n mat[5] = 0.0;\n\n mat[6] = 0.0;\n mat[7] = 0.0;\n mat[8] = 1.0;\n\n return mat;\n },\n\n /**\n * Tests if the given 4x4 matrix is the identity matrix.\n * @method isIdentityMat4\n * @static\n */\n isIdentityMat4(m) {\n if (m[0] !== 1.0 || m[1] !== 0.0 || m[2] !== 0.0 || m[3] !== 0.0 ||\n m[4] !== 0.0 || m[5] !== 1.0 || m[6] !== 0.0 || m[7] !== 0.0 ||\n m[8] !== 0.0 || m[9] !== 0.0 || m[10] !== 1.0 || m[11] !== 0.0 ||\n m[12] !== 0.0 || m[13] !== 0.0 || m[14] !== 0.0 || m[15] !== 1.0) {\n return false;\n }\n return true;\n },\n\n /**\n * Negates the given 4x4 matrix.\n * @method negateMat4\n * @static\n */\n negateMat4(m, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = -m[0];\n dest[1] = -m[1];\n dest[2] = -m[2];\n dest[3] = -m[3];\n dest[4] = -m[4];\n dest[5] = -m[5];\n dest[6] = -m[6];\n dest[7] = -m[7];\n dest[8] = -m[8];\n dest[9] = -m[9];\n dest[10] = -m[10];\n dest[11] = -m[11];\n dest[12] = -m[12];\n dest[13] = -m[13];\n dest[14] = -m[14];\n dest[15] = -m[15];\n return dest;\n },\n\n /**\n * Adds the given 4x4 matrices together.\n * @method addMat4\n * @static\n */\n addMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n dest[0] = a[0] + b[0];\n dest[1] = a[1] + b[1];\n dest[2] = a[2] + b[2];\n dest[3] = a[3] + b[3];\n dest[4] = a[4] + b[4];\n dest[5] = a[5] + b[5];\n dest[6] = a[6] + b[6];\n dest[7] = a[7] + b[7];\n dest[8] = a[8] + b[8];\n dest[9] = a[9] + b[9];\n dest[10] = a[10] + b[10];\n dest[11] = a[11] + b[11];\n dest[12] = a[12] + b[12];\n dest[13] = a[13] + b[13];\n dest[14] = a[14] + b[14];\n dest[15] = a[15] + b[15];\n return dest;\n },\n\n /**\n * Adds the given scalar to each element of the given 4x4 matrix.\n * @method addMat4Scalar\n * @static\n */\n addMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] + s;\n dest[1] = m[1] + s;\n dest[2] = m[2] + s;\n dest[3] = m[3] + s;\n dest[4] = m[4] + s;\n dest[5] = m[5] + s;\n dest[6] = m[6] + s;\n dest[7] = m[7] + s;\n dest[8] = m[8] + s;\n dest[9] = m[9] + s;\n dest[10] = m[10] + s;\n dest[11] = m[11] + s;\n dest[12] = m[12] + s;\n dest[13] = m[13] + s;\n dest[14] = m[14] + s;\n dest[15] = m[15] + s;\n return dest;\n },\n\n /**\n * Adds the given scalar to each element of the given 4x4 matrix.\n * @method addScalarMat4\n * @static\n */\n addScalarMat4(s, m, dest) {\n return math.addMat4Scalar(m, s, dest);\n },\n\n /**\n * Subtracts the second 4x4 matrix from the first.\n * @method subMat4\n * @static\n */\n subMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n dest[0] = a[0] - b[0];\n dest[1] = a[1] - b[1];\n dest[2] = a[2] - b[2];\n dest[3] = a[3] - b[3];\n dest[4] = a[4] - b[4];\n dest[5] = a[5] - b[5];\n dest[6] = a[6] - b[6];\n dest[7] = a[7] - b[7];\n dest[8] = a[8] - b[8];\n dest[9] = a[9] - b[9];\n dest[10] = a[10] - b[10];\n dest[11] = a[11] - b[11];\n dest[12] = a[12] - b[12];\n dest[13] = a[13] - b[13];\n dest[14] = a[14] - b[14];\n dest[15] = a[15] - b[15];\n return dest;\n },\n\n /**\n * Subtracts the given scalar from each element of the given 4x4 matrix.\n * @method subMat4Scalar\n * @static\n */\n subMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] - s;\n dest[1] = m[1] - s;\n dest[2] = m[2] - s;\n dest[3] = m[3] - s;\n dest[4] = m[4] - s;\n dest[5] = m[5] - s;\n dest[6] = m[6] - s;\n dest[7] = m[7] - s;\n dest[8] = m[8] - s;\n dest[9] = m[9] - s;\n dest[10] = m[10] - s;\n dest[11] = m[11] - s;\n dest[12] = m[12] - s;\n dest[13] = m[13] - s;\n dest[14] = m[14] - s;\n dest[15] = m[15] - s;\n return dest;\n },\n\n /**\n * Subtracts the given scalar from each element of the given 4x4 matrix.\n * @method subScalarMat4\n * @static\n */\n subScalarMat4(s, m, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = s - m[0];\n dest[1] = s - m[1];\n dest[2] = s - m[2];\n dest[3] = s - m[3];\n dest[4] = s - m[4];\n dest[5] = s - m[5];\n dest[6] = s - m[6];\n dest[7] = s - m[7];\n dest[8] = s - m[8];\n dest[9] = s - m[9];\n dest[10] = s - m[10];\n dest[11] = s - m[11];\n dest[12] = s - m[12];\n dest[13] = s - m[13];\n dest[14] = s - m[14];\n dest[15] = s - m[15];\n return dest;\n },\n\n /**\n * Multiplies the two given 4x4 matrix by each other.\n * @method mulMat4\n * @static\n */\n mulMat4(a, b, dest) {\n if (!dest) {\n dest = a;\n }\n\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = a[0];\n\n const a01 = a[1];\n const a02 = a[2];\n const a03 = a[3];\n const a10 = a[4];\n const a11 = a[5];\n const a12 = a[6];\n const a13 = a[7];\n const a20 = a[8];\n const a21 = a[9];\n const a22 = a[10];\n const a23 = a[11];\n const a30 = a[12];\n const a31 = a[13];\n const a32 = a[14];\n const a33 = a[15];\n const b00 = b[0];\n const b01 = b[1];\n const b02 = b[2];\n const b03 = b[3];\n const b10 = b[4];\n const b11 = b[5];\n const b12 = b[6];\n const b13 = b[7];\n const b20 = b[8];\n const b21 = b[9];\n const b22 = b[10];\n const b23 = b[11];\n const b30 = b[12];\n const b31 = b[13];\n const b32 = b[14];\n const b33 = b[15];\n\n dest[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30;\n dest[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31;\n dest[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32;\n dest[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33;\n dest[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30;\n dest[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31;\n dest[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32;\n dest[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33;\n dest[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30;\n dest[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31;\n dest[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32;\n dest[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33;\n dest[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30;\n dest[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31;\n dest[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32;\n dest[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33;\n\n return dest;\n },\n\n /**\n * Multiplies the two given 3x3 matrices by each other.\n * @method mulMat4\n * @static\n */\n mulMat3(a, b, dest) {\n if (!dest) {\n dest = new FloatArrayType(9);\n }\n\n const a11 = a[0];\n const a12 = a[3];\n const a13 = a[6];\n const a21 = a[1];\n const a22 = a[4];\n const a23 = a[7];\n const a31 = a[2];\n const a32 = a[5];\n const a33 = a[8];\n const b11 = b[0];\n const b12 = b[3];\n const b13 = b[6];\n const b21 = b[1];\n const b22 = b[4];\n const b23 = b[7];\n const b31 = b[2];\n const b32 = b[5];\n const b33 = b[8];\n\n dest[0] = a11 * b11 + a12 * b21 + a13 * b31;\n dest[3] = a11 * b12 + a12 * b22 + a13 * b32;\n dest[6] = a11 * b13 + a12 * b23 + a13 * b33;\n\n dest[1] = a21 * b11 + a22 * b21 + a23 * b31;\n dest[4] = a21 * b12 + a22 * b22 + a23 * b32;\n dest[7] = a21 * b13 + a22 * b23 + a23 * b33;\n\n dest[2] = a31 * b11 + a32 * b21 + a33 * b31;\n dest[5] = a31 * b12 + a32 * b22 + a33 * b32;\n dest[8] = a31 * b13 + a32 * b23 + a33 * b33;\n\n return dest;\n },\n\n /**\n * Multiplies each element of the given 4x4 matrix by the given scalar.\n * @method mulMat4Scalar\n * @static\n */\n mulMat4Scalar(m, s, dest) {\n if (!dest) {\n dest = m;\n }\n dest[0] = m[0] * s;\n dest[1] = m[1] * s;\n dest[2] = m[2] * s;\n dest[3] = m[3] * s;\n dest[4] = m[4] * s;\n dest[5] = m[5] * s;\n dest[6] = m[6] * s;\n dest[7] = m[7] * s;\n dest[8] = m[8] * s;\n dest[9] = m[9] * s;\n dest[10] = m[10] * s;\n dest[11] = m[11] * s;\n dest[12] = m[12] * s;\n dest[13] = m[13] * s;\n dest[14] = m[14] * s;\n dest[15] = m[15] * s;\n return dest;\n },\n\n /**\n * Multiplies the given 4x4 matrix by the given four-element vector.\n * @method mulMat4v4\n * @static\n */\n mulMat4v4(m, v, dest = math.vec4()) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n const v3 = v[3];\n dest[0] = m[0] * v0 + m[4] * v1 + m[8] * v2 + m[12] * v3;\n dest[1] = m[1] * v0 + m[5] * v1 + m[9] * v2 + m[13] * v3;\n dest[2] = m[2] * v0 + m[6] * v1 + m[10] * v2 + m[14] * v3;\n dest[3] = m[3] * v0 + m[7] * v1 + m[11] * v2 + m[15] * v3;\n return dest;\n },\n\n /**\n * Transposes the given 4x4 matrix.\n * @method transposeMat4\n * @static\n */\n transposeMat4(mat, dest) {\n // If we are transposing ourselves we can skip a few steps but have to cache some values\n const m4 = mat[4];\n\n const m14 = mat[14];\n const m8 = mat[8];\n const m13 = mat[13];\n const m12 = mat[12];\n const m9 = mat[9];\n if (!dest || mat === dest) {\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a12 = mat[6];\n const a13 = mat[7];\n const a23 = mat[11];\n mat[1] = m4;\n mat[2] = m8;\n mat[3] = m12;\n mat[4] = a01;\n mat[6] = m9;\n mat[7] = m13;\n mat[8] = a02;\n mat[9] = a12;\n mat[11] = m14;\n mat[12] = a03;\n mat[13] = a13;\n mat[14] = a23;\n return mat;\n }\n dest[0] = mat[0];\n dest[1] = m4;\n dest[2] = m8;\n dest[3] = m12;\n dest[4] = mat[1];\n dest[5] = mat[5];\n dest[6] = m9;\n dest[7] = m13;\n dest[8] = mat[2];\n dest[9] = mat[6];\n dest[10] = mat[10];\n dest[11] = m14;\n dest[12] = mat[3];\n dest[13] = mat[7];\n dest[14] = mat[11];\n dest[15] = mat[15];\n return dest;\n },\n\n /**\n * Transposes the given 3x3 matrix.\n *\n * @method transposeMat3\n * @static\n */\n transposeMat3(mat, dest) {\n if (dest === mat) {\n const a01 = mat[1];\n const a02 = mat[2];\n const a12 = mat[5];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = a01;\n dest[5] = mat[7];\n dest[6] = a02;\n dest[7] = a12;\n } else {\n dest[0] = mat[0];\n dest[1] = mat[3];\n dest[2] = mat[6];\n dest[3] = mat[1];\n dest[4] = mat[4];\n dest[5] = mat[7];\n dest[6] = mat[2];\n dest[7] = mat[5];\n dest[8] = mat[8];\n }\n return dest;\n },\n\n /**\n * Returns the determinant of the given 4x4 matrix.\n * @method determinantMat4\n * @static\n */\n determinantMat4(mat) {\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = mat[0];\n\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a10 = mat[4];\n const a11 = mat[5];\n const a12 = mat[6];\n const a13 = mat[7];\n const a20 = mat[8];\n const a21 = mat[9];\n const a22 = mat[10];\n const a23 = mat[11];\n const a30 = mat[12];\n const a31 = mat[13];\n const a32 = mat[14];\n const a33 = mat[15];\n return a30 * a21 * a12 * a03 - a20 * a31 * a12 * a03 - a30 * a11 * a22 * a03 + a10 * a31 * a22 * a03 +\n a20 * a11 * a32 * a03 - a10 * a21 * a32 * a03 - a30 * a21 * a02 * a13 + a20 * a31 * a02 * a13 +\n a30 * a01 * a22 * a13 - a00 * a31 * a22 * a13 - a20 * a01 * a32 * a13 + a00 * a21 * a32 * a13 +\n a30 * a11 * a02 * a23 - a10 * a31 * a02 * a23 - a30 * a01 * a12 * a23 + a00 * a31 * a12 * a23 +\n a10 * a01 * a32 * a23 - a00 * a11 * a32 * a23 - a20 * a11 * a02 * a33 + a10 * a21 * a02 * a33 +\n a20 * a01 * a12 * a33 - a00 * a21 * a12 * a33 - a10 * a01 * a22 * a33 + a00 * a11 * a22 * a33;\n },\n\n /**\n * Returns the inverse of the given 4x4 matrix.\n * @method inverseMat4\n * @static\n */\n inverseMat4(mat, dest) {\n if (!dest) {\n dest = mat;\n }\n\n // Cache the matrix values (makes for huge speed increases!)\n const a00 = mat[0];\n\n const a01 = mat[1];\n const a02 = mat[2];\n const a03 = mat[3];\n const a10 = mat[4];\n const a11 = mat[5];\n const a12 = mat[6];\n const a13 = mat[7];\n const a20 = mat[8];\n const a21 = mat[9];\n const a22 = mat[10];\n const a23 = mat[11];\n const a30 = mat[12];\n const a31 = mat[13];\n const a32 = mat[14];\n const a33 = mat[15];\n const b00 = a00 * a11 - a01 * a10;\n const b01 = a00 * a12 - a02 * a10;\n const b02 = a00 * a13 - a03 * a10;\n const b03 = a01 * a12 - a02 * a11;\n const b04 = a01 * a13 - a03 * a11;\n const b05 = a02 * a13 - a03 * a12;\n const b06 = a20 * a31 - a21 * a30;\n const b07 = a20 * a32 - a22 * a30;\n const b08 = a20 * a33 - a23 * a30;\n const b09 = a21 * a32 - a22 * a31;\n const b10 = a21 * a33 - a23 * a31;\n const b11 = a22 * a33 - a23 * a32;\n\n // Calculate the determinant (inlined to avoid double-caching)\n const invDet = 1 / (b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06);\n\n dest[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet;\n dest[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet;\n dest[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet;\n dest[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet;\n dest[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet;\n dest[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet;\n dest[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet;\n dest[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet;\n dest[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet;\n dest[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet;\n dest[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet;\n dest[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet;\n dest[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet;\n dest[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet;\n dest[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet;\n dest[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet;\n\n return dest;\n },\n\n /**\n * Returns the trace of the given 4x4 matrix.\n * @method traceMat4\n * @static\n */\n traceMat4(m) {\n return (m[0] + m[5] + m[10] + m[15]);\n },\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4\n * @static\n */\n translationMat4v(v, dest) {\n const m = dest || math.identityMat4();\n m[12] = v[0];\n m[13] = v[1];\n m[14] = v[2];\n return m;\n },\n\n /**\n * Returns 3x3 translation matrix.\n * @method translationMat3\n * @static\n */\n translationMat3v(v, dest) {\n const m = dest || math.identityMat3();\n m[6] = v[0];\n m[7] = v[1];\n return m;\n },\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4c\n * @static\n */\n translationMat4c: ((() => {\n const xyz = new FloatArrayType(3);\n return (x, y, z, dest) => {\n xyz[0] = x;\n xyz[1] = y;\n xyz[2] = z;\n return math.translationMat4v(xyz, dest);\n };\n }))(),\n\n /**\n * Returns 4x4 translation matrix.\n * @method translationMat4s\n * @static\n */\n translationMat4s(s, dest) {\n return math.translationMat4c(s, s, s, dest);\n },\n\n /**\n * Efficiently post-concatenates a translation to the given matrix.\n * @param v\n * @param m\n */\n translateMat4v(xyz, m) {\n return math.translateMat4c(xyz[0], xyz[1], xyz[2], m);\n },\n\n /**\n * Efficiently post-concatenates a translation to the given matrix.\n * @param x\n * @param y\n * @param z\n * @param m\n */\n OLDtranslateMat4c(x, y, z, m) {\n\n const m12 = m[12];\n m[0] += m12 * x;\n m[4] += m12 * y;\n m[8] += m12 * z;\n\n const m13 = m[13];\n m[1] += m13 * x;\n m[5] += m13 * y;\n m[9] += m13 * z;\n\n const m14 = m[14];\n m[2] += m14 * x;\n m[6] += m14 * y;\n m[10] += m14 * z;\n\n const m15 = m[15];\n m[3] += m15 * x;\n m[7] += m15 * y;\n m[11] += m15 * z;\n\n return m;\n },\n\n translateMat4c(x, y, z, m) {\n\n const m3 = m[3];\n m[0] += m3 * x;\n m[1] += m3 * y;\n m[2] += m3 * z;\n\n const m7 = m[7];\n m[4] += m7 * x;\n m[5] += m7 * y;\n m[6] += m7 * z;\n\n const m11 = m[11];\n m[8] += m11 * x;\n m[9] += m11 * y;\n m[10] += m11 * z;\n\n const m15 = m[15];\n m[12] += m15 * x;\n m[13] += m15 * y;\n m[14] += m15 * z;\n\n return m;\n },\n\n /**\n * Creates a new matrix that replaces the translation in the rightmost column of the given\n * affine matrix with the given translation.\n * @param m\n * @param translation\n * @param dest\n * @returns {*}\n */\n setMat4Translation(m, translation, dest) {\n\n dest[0] = m[0];\n dest[1] = m[1];\n dest[2] = m[2];\n dest[3] = m[3];\n\n dest[4] = m[4];\n dest[5] = m[5];\n dest[6] = m[6];\n dest[7] = m[7];\n\n dest[8] = m[8];\n dest[9] = m[9];\n dest[10] = m[10];\n dest[11] = m[11];\n\n dest[12] = translation[0];\n dest[13] = translation[1];\n dest[14] = translation[2];\n dest[15] = m[15];\n\n return dest;\n },\n\n /**\n * Returns 4x4 rotation matrix.\n * @method rotationMat4v\n * @static\n */\n rotationMat4v(anglerad, axis, m) {\n const ax = math.normalizeVec4([axis[0], axis[1], axis[2], 0.0], []);\n const s = Math.sin(anglerad);\n const c = Math.cos(anglerad);\n const q = 1.0 - c;\n\n const x = ax[0];\n const y = ax[1];\n const z = ax[2];\n\n let xy;\n let yz;\n let zx;\n let xs;\n let ys;\n let zs;\n\n //xx = x * x; used once\n //yy = y * y; used once\n //zz = z * z; used once\n xy = x * y;\n yz = y * z;\n zx = z * x;\n xs = x * s;\n ys = y * s;\n zs = z * s;\n\n m = m || math.mat4();\n\n m[0] = (q * x * x) + c;\n m[1] = (q * xy) + zs;\n m[2] = (q * zx) - ys;\n m[3] = 0.0;\n\n m[4] = (q * xy) - zs;\n m[5] = (q * y * y) + c;\n m[6] = (q * yz) + xs;\n m[7] = 0.0;\n\n m[8] = (q * zx) + ys;\n m[9] = (q * yz) - xs;\n m[10] = (q * z * z) + c;\n m[11] = 0.0;\n\n m[12] = 0.0;\n m[13] = 0.0;\n m[14] = 0.0;\n m[15] = 1.0;\n\n return m;\n },\n\n /**\n * Returns 4x4 rotation matrix.\n * @method rotationMat4c\n * @static\n */\n rotationMat4c(anglerad, x, y, z, mat) {\n return math.rotationMat4v(anglerad, [x, y, z], mat);\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4v\n * @static\n */\n scalingMat4v(v, m = math.identityMat4()) {\n m[0] = v[0];\n m[5] = v[1];\n m[10] = v[2];\n return m;\n },\n\n /**\n * Returns 3x3 scale matrix.\n * @method scalingMat3v\n * @static\n */\n scalingMat3v(v, m = math.identityMat3()) {\n m[0] = v[0];\n m[4] = v[1];\n return m;\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4c\n * @static\n */\n scalingMat4c: ((() => {\n const xyz = new FloatArrayType(3);\n return (x, y, z, dest) => {\n xyz[0] = x;\n xyz[1] = y;\n xyz[2] = z;\n return math.scalingMat4v(xyz, dest);\n };\n }))(),\n\n /**\n * Efficiently post-concatenates a scaling to the given matrix.\n * @method scaleMat4c\n * @param x\n * @param y\n * @param z\n * @param m\n */\n scaleMat4c(x, y, z, m) {\n\n m[0] *= x;\n m[4] *= y;\n m[8] *= z;\n\n m[1] *= x;\n m[5] *= y;\n m[9] *= z;\n\n m[2] *= x;\n m[6] *= y;\n m[10] *= z;\n\n m[3] *= x;\n m[7] *= y;\n m[11] *= z;\n return m;\n },\n\n /**\n * Efficiently post-concatenates a scaling to the given matrix.\n * @method scaleMat4c\n * @param xyz\n * @param m\n */\n scaleMat4v(xyz, m) {\n\n const x = xyz[0];\n const y = xyz[1];\n const z = xyz[2];\n\n m[0] *= x;\n m[4] *= y;\n m[8] *= z;\n m[1] *= x;\n m[5] *= y;\n m[9] *= z;\n m[2] *= x;\n m[6] *= y;\n m[10] *= z;\n m[3] *= x;\n m[7] *= y;\n m[11] *= z;\n\n return m;\n },\n\n /**\n * Returns 4x4 scale matrix.\n * @method scalingMat4s\n * @static\n */\n scalingMat4s(s) {\n return math.scalingMat4c(s, s, s);\n },\n\n /**\n * Creates a matrix from a quaternion rotation and vector translation\n *\n * @param {Number[]} q Rotation quaternion\n * @param {Number[]} v Translation vector\n * @param {Number[]} dest Destination matrix\n * @returns {Number[]} dest\n */\n rotationTranslationMat4(q, v, dest = math.mat4()) {\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n dest[0] = 1 - (yy + zz);\n dest[1] = xy + wz;\n dest[2] = xz - wy;\n dest[3] = 0;\n dest[4] = xy - wz;\n dest[5] = 1 - (xx + zz);\n dest[6] = yz + wx;\n dest[7] = 0;\n dest[8] = xz + wy;\n dest[9] = yz - wx;\n dest[10] = 1 - (xx + yy);\n dest[11] = 0;\n dest[12] = v[0];\n dest[13] = v[1];\n dest[14] = v[2];\n dest[15] = 1;\n\n return dest;\n },\n\n /**\n * Gets Euler angles from a 4x4 matrix.\n *\n * @param {Number[]} mat The 4x4 matrix.\n * @param {String} order Desired Euler angle order: \"XYZ\", \"YXZ\", \"ZXY\" etc.\n * @param {Number[]} [dest] Destination Euler angles, created by default.\n * @returns {Number[]} The Euler angles.\n */\n mat4ToEuler(mat, order, dest = math.vec4()) {\n const clamp = math.clamp;\n\n // Assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const m11 = mat[0];\n\n const m12 = mat[4];\n const m13 = mat[8];\n const m21 = mat[1];\n const m22 = mat[5];\n const m23 = mat[9];\n const m31 = mat[2];\n const m32 = mat[6];\n const m33 = mat[10];\n\n if (order === 'XYZ') {\n\n dest[1] = Math.asin(clamp(m13, -1, 1));\n\n if (Math.abs(m13) < 0.99999) {\n dest[0] = Math.atan2(-m23, m33);\n dest[2] = Math.atan2(-m12, m11);\n } else {\n dest[0] = Math.atan2(m32, m22);\n dest[2] = 0;\n\n }\n\n } else if (order === 'YXZ') {\n\n dest[0] = Math.asin(-clamp(m23, -1, 1));\n\n if (Math.abs(m23) < 0.99999) {\n dest[1] = Math.atan2(m13, m33);\n dest[2] = Math.atan2(m21, m22);\n } else {\n dest[1] = Math.atan2(-m31, m11);\n dest[2] = 0;\n }\n\n } else if (order === 'ZXY') {\n\n dest[0] = Math.asin(clamp(m32, -1, 1));\n\n if (Math.abs(m32) < 0.99999) {\n dest[1] = Math.atan2(-m31, m33);\n dest[2] = Math.atan2(-m12, m22);\n } else {\n dest[1] = 0;\n dest[2] = Math.atan2(m21, m11);\n }\n\n } else if (order === 'ZYX') {\n\n dest[1] = Math.asin(-clamp(m31, -1, 1));\n\n if (Math.abs(m31) < 0.99999) {\n dest[0] = Math.atan2(m32, m33);\n dest[2] = Math.atan2(m21, m11);\n } else {\n dest[0] = 0;\n dest[2] = Math.atan2(-m12, m22);\n }\n\n } else if (order === 'YZX') {\n\n dest[2] = Math.asin(clamp(m21, -1, 1));\n\n if (Math.abs(m21) < 0.99999) {\n dest[0] = Math.atan2(-m23, m22);\n dest[1] = Math.atan2(-m31, m11);\n } else {\n dest[0] = 0;\n dest[1] = Math.atan2(m13, m33);\n }\n\n } else if (order === 'XZY') {\n\n dest[2] = Math.asin(-clamp(m12, -1, 1));\n\n if (Math.abs(m12) < 0.99999) {\n dest[0] = Math.atan2(m32, m22);\n dest[1] = Math.atan2(m13, m11);\n } else {\n dest[0] = Math.atan2(-m23, m33);\n dest[1] = 0;\n }\n }\n\n return dest;\n },\n\n composeMat4(position, quaternion, scale, mat = math.mat4()) {\n math.quaternionToRotationMat4(quaternion, mat);\n math.scaleMat4v(scale, mat);\n math.translateMat4v(position, mat);\n\n return mat;\n },\n\n decomposeMat4: (() => {\n\n const vec = new FloatArrayType(3);\n const matrix = new FloatArrayType(16);\n\n return function decompose(mat, position, quaternion, scale) {\n\n vec[0] = mat[0];\n vec[1] = mat[1];\n vec[2] = mat[2];\n\n let sx = math.lenVec3(vec);\n\n vec[0] = mat[4];\n vec[1] = mat[5];\n vec[2] = mat[6];\n\n const sy = math.lenVec3(vec);\n\n vec[8] = mat[8];\n vec[9] = mat[9];\n vec[10] = mat[10];\n\n const sz = math.lenVec3(vec);\n\n // if determine is negative, we need to invert one scale\n const det = math.determinantMat4(mat);\n\n if (det < 0) {\n sx = -sx;\n }\n\n position[0] = mat[12];\n position[1] = mat[13];\n position[2] = mat[14];\n\n // scale the rotation part\n matrix.set(mat);\n\n const invSX = 1 / sx;\n const invSY = 1 / sy;\n const invSZ = 1 / sz;\n\n matrix[0] *= invSX;\n matrix[1] *= invSX;\n matrix[2] *= invSX;\n\n matrix[4] *= invSY;\n matrix[5] *= invSY;\n matrix[6] *= invSY;\n\n matrix[8] *= invSZ;\n matrix[9] *= invSZ;\n matrix[10] *= invSZ;\n\n math.mat4ToQuaternion(matrix, quaternion);\n\n scale[0] = sx;\n scale[1] = sy;\n scale[2] = sz;\n\n return this;\n\n };\n\n })(),\n\n /** @private */\n getColMat4(mat, c) {\n const i = c * 4;\n return [mat[i], mat[i + 1], mat[i + 2], mat[i + 3]];\n },\n\n /** @private */\n setRowMat4(mat, r, v) {\n mat[r] = v[0];\n mat[r + 4] = v[1];\n mat[r + 8] = v[2];\n mat[r + 12] = v[3];\n },\n\n /**\n * Returns a 4x4 'lookat' viewing transform matrix.\n * @method lookAtMat4v\n * @param pos vec3 position of the viewer\n * @param target vec3 point the viewer is looking at\n * @param up vec3 pointing \"up\"\n * @param dest mat4 Optional, mat4 matrix will be written into\n *\n * @return {mat4} dest if specified, a new mat4 otherwise\n */\n lookAtMat4v(pos, target, up, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n\n const posx = pos[0];\n const posy = pos[1];\n const posz = pos[2];\n const upx = up[0];\n const upy = up[1];\n const upz = up[2];\n const targetx = target[0];\n const targety = target[1];\n const targetz = target[2];\n\n if (posx === targetx && posy === targety && posz === targetz) {\n return math.identityMat4();\n }\n\n let z0;\n let z1;\n let z2;\n let x0;\n let x1;\n let x2;\n let y0;\n let y1;\n let y2;\n let len;\n\n //vec3.direction(eye, center, z);\n z0 = posx - targetx;\n z1 = posy - targety;\n z2 = posz - targetz;\n\n // normalize (no check needed for 0 because of early return)\n len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);\n z0 *= len;\n z1 *= len;\n z2 *= len;\n\n //vec3.normalize(vec3.cross(up, z, x));\n x0 = upy * z2 - upz * z1;\n x1 = upz * z0 - upx * z2;\n x2 = upx * z1 - upy * z0;\n len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);\n if (!len) {\n x0 = 0;\n x1 = 0;\n x2 = 0;\n } else {\n len = 1 / len;\n x0 *= len;\n x1 *= len;\n x2 *= len;\n }\n\n //vec3.normalize(vec3.cross(z, x, y));\n y0 = z1 * x2 - z2 * x1;\n y1 = z2 * x0 - z0 * x2;\n y2 = z0 * x1 - z1 * x0;\n\n len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);\n if (!len) {\n y0 = 0;\n y1 = 0;\n y2 = 0;\n } else {\n len = 1 / len;\n y0 *= len;\n y1 *= len;\n y2 *= len;\n }\n\n dest[0] = x0;\n dest[1] = y0;\n dest[2] = z0;\n dest[3] = 0;\n dest[4] = x1;\n dest[5] = y1;\n dest[6] = z1;\n dest[7] = 0;\n dest[8] = x2;\n dest[9] = y2;\n dest[10] = z2;\n dest[11] = 0;\n dest[12] = -(x0 * posx + x1 * posy + x2 * posz);\n dest[13] = -(y0 * posx + y1 * posy + y2 * posz);\n dest[14] = -(z0 * posx + z1 * posy + z2 * posz);\n dest[15] = 1;\n\n return dest;\n },\n\n /**\n * Returns a 4x4 'lookat' viewing transform matrix.\n * @method lookAtMat4c\n * @static\n */\n lookAtMat4c(posx, posy, posz, targetx, targety, targetz, upx, upy, upz) {\n return math.lookAtMat4v([posx, posy, posz], [targetx, targety, targetz], [upx, upy, upz], []);\n },\n\n /**\n * Returns a 4x4 orthographic projection matrix.\n * @method orthoMat4c\n * @static\n */\n orthoMat4c(left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n const rl = (right - left);\n const tb = (top - bottom);\n const fn = (far - near);\n\n dest[0] = 2.0 / rl;\n dest[1] = 0.0;\n dest[2] = 0.0;\n dest[3] = 0.0;\n\n dest[4] = 0.0;\n dest[5] = 2.0 / tb;\n dest[6] = 0.0;\n dest[7] = 0.0;\n\n dest[8] = 0.0;\n dest[9] = 0.0;\n dest[10] = -2.0 / fn;\n dest[11] = 0.0;\n\n dest[12] = -(left + right) / rl;\n dest[13] = -(top + bottom) / tb;\n dest[14] = -(far + near) / fn;\n dest[15] = 1.0;\n\n return dest;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method frustumMat4v\n * @static\n */\n frustumMat4v(fmin, fmax, m) {\n if (!m) {\n m = math.mat4();\n }\n\n const fmin4 = [fmin[0], fmin[1], fmin[2], 0.0];\n const fmax4 = [fmax[0], fmax[1], fmax[2], 0.0];\n\n math.addVec4(fmax4, fmin4, tempMat1);\n math.subVec4(fmax4, fmin4, tempMat2);\n\n const t = 2.0 * fmin4[2];\n\n const tempMat20 = tempMat2[0];\n const tempMat21 = tempMat2[1];\n const tempMat22 = tempMat2[2];\n\n m[0] = t / tempMat20;\n m[1] = 0.0;\n m[2] = 0.0;\n m[3] = 0.0;\n\n m[4] = 0.0;\n m[5] = t / tempMat21;\n m[6] = 0.0;\n m[7] = 0.0;\n\n m[8] = tempMat1[0] / tempMat20;\n m[9] = tempMat1[1] / tempMat21;\n m[10] = -tempMat1[2] / tempMat22;\n m[11] = -1.0;\n\n m[12] = 0.0;\n m[13] = 0.0;\n m[14] = -t * fmax4[2] / tempMat22;\n m[15] = 0.0;\n\n return m;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method frustumMat4v\n * @static\n */\n frustumMat4(left, right, bottom, top, near, far, dest) {\n if (!dest) {\n dest = math.mat4();\n }\n const rl = (right - left);\n const tb = (top - bottom);\n const fn = (far - near);\n dest[0] = (near * 2) / rl;\n dest[1] = 0;\n dest[2] = 0;\n dest[3] = 0;\n dest[4] = 0;\n dest[5] = (near * 2) / tb;\n dest[6] = 0;\n dest[7] = 0;\n dest[8] = (right + left) / rl;\n dest[9] = (top + bottom) / tb;\n dest[10] = -(far + near) / fn;\n dest[11] = -1;\n dest[12] = 0;\n dest[13] = 0;\n dest[14] = -(far * near * 2) / fn;\n dest[15] = 0;\n return dest;\n },\n\n /**\n * Returns a 4x4 perspective projection matrix.\n * @method perspectiveMat4v\n * @static\n */\n perspectiveMat4(fovyrad, aspectratio, znear, zfar, m) {\n const pmin = [];\n const pmax = [];\n\n pmin[2] = znear;\n pmax[2] = zfar;\n\n pmax[1] = pmin[2] * Math.tan(fovyrad / 2.0);\n pmin[1] = -pmax[1];\n\n pmax[0] = pmax[1] * aspectratio;\n pmin[0] = -pmax[0];\n\n return math.frustumMat4v(pmin, pmax, m);\n },\n\n /**\n * Returns true if the two 4x4 matrices are the same.\n * @param m1\n * @param m2\n * @returns {boolean}\n */\n compareMat4(m1, m2) {\n return m1[0] === m2[0] &&\n m1[1] === m2[1] &&\n m1[2] === m2[2] &&\n m1[3] === m2[3] &&\n m1[4] === m2[4] &&\n m1[5] === m2[5] &&\n m1[6] === m2[6] &&\n m1[7] === m2[7] &&\n m1[8] === m2[8] &&\n m1[9] === m2[9] &&\n m1[10] === m2[10] &&\n m1[11] === m2[11] &&\n m1[12] === m2[12] &&\n m1[13] === m2[13] &&\n m1[14] === m2[14] &&\n m1[15] === m2[15];\n },\n\n /**\n * Transforms a three-element position by a 4x4 matrix.\n * @method transformPoint3\n * @static\n */\n transformPoint3(m, p, dest = math.vec3()) {\n\n const x = p[0];\n const y = p[1];\n const z = p[2];\n\n dest[0] = (m[0] * x) + (m[4] * y) + (m[8] * z) + m[12];\n dest[1] = (m[1] * x) + (m[5] * y) + (m[9] * z) + m[13];\n dest[2] = (m[2] * x) + (m[6] * y) + (m[10] * z) + m[14];\n\n return dest;\n },\n\n /**\n * Transforms a homogeneous coordinate by a 4x4 matrix.\n * @method transformPoint3\n * @static\n */\n transformPoint4(m, v, dest = math.vec4()) {\n dest[0] = m[0] * v[0] + m[4] * v[1] + m[8] * v[2] + m[12] * v[3];\n dest[1] = m[1] * v[0] + m[5] * v[1] + m[9] * v[2] + m[13] * v[3];\n dest[2] = m[2] * v[0] + m[6] * v[1] + m[10] * v[2] + m[14] * v[3];\n dest[3] = m[3] * v[0] + m[7] * v[1] + m[11] * v[2] + m[15] * v[3];\n\n return dest;\n },\n\n\n /**\n * Transforms an array of three-element positions by a 4x4 matrix.\n * @method transformPoints3\n * @static\n */\n transformPoints3(m, points, points2) {\n const result = points2 || [];\n const len = points.length;\n let p0;\n let p1;\n let p2;\n let pi;\n\n // cache values\n const m0 = m[0];\n\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n let r;\n\n for (let i = 0; i < len; ++i) {\n\n // cache values\n pi = points[i];\n\n p0 = pi[0];\n p1 = pi[1];\n p2 = pi[2];\n\n r = result[i] || (result[i] = [0, 0, 0]);\n\n r[0] = (m0 * p0) + (m4 * p1) + (m8 * p2) + m12;\n r[1] = (m1 * p0) + (m5 * p1) + (m9 * p2) + m13;\n r[2] = (m2 * p0) + (m6 * p1) + (m10 * p2) + m14;\n r[3] = (m3 * p0) + (m7 * p1) + (m11 * p2) + m15;\n }\n\n result.length = len;\n\n return result;\n },\n\n /**\n * Transforms an array of positions by a 4x4 matrix.\n * @method transformPositions3\n * @static\n */\n transformPositions3(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 3) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /**\n * Transforms an array of positions by a 4x4 matrix.\n * @method transformPositions4\n * @static\n */\n transformPositions4(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 4) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /**\n * Transforms a three-element vector by a 4x4 matrix.\n * @method transformVec3\n * @static\n */\n transformVec3(m, v, dest) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n dest = dest || this.vec3();\n dest[0] = (m[0] * v0) + (m[4] * v1) + (m[8] * v2);\n dest[1] = (m[1] * v0) + (m[5] * v1) + (m[9] * v2);\n dest[2] = (m[2] * v0) + (m[6] * v1) + (m[10] * v2);\n return dest;\n },\n\n /**\n * Transforms a four-element vector by a 4x4 matrix.\n * @method transformVec4\n * @static\n */\n transformVec4(m, v, dest) {\n const v0 = v[0];\n const v1 = v[1];\n const v2 = v[2];\n const v3 = v[3];\n dest = dest || math.vec4();\n dest[0] = m[0] * v0 + m[4] * v1 + m[8] * v2 + m[12] * v3;\n dest[1] = m[1] * v0 + m[5] * v1 + m[9] * v2 + m[13] * v3;\n dest[2] = m[2] * v0 + m[6] * v1 + m[10] * v2 + m[14] * v3;\n dest[3] = m[3] * v0 + m[7] * v1 + m[11] * v2 + m[15] * v3;\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the x-axis\n *\n * @method rotateVec3X\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3X(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[0];\n r[1] = p[1] * Math.cos(c) - p[2] * Math.sin(c);\n r[2] = p[1] * Math.sin(c) + p[2] * Math.cos(c);\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the y-axis\n *\n * @method rotateVec3Y\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3Y(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[2] * Math.sin(c) + p[0] * Math.cos(c);\n r[1] = p[1];\n r[2] = p[2] * Math.cos(c) - p[0] * Math.sin(c);\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Rotate a 3D vector around the z-axis\n *\n * @method rotateVec3Z\n * @param {Number[]} a The vec3 point to rotate\n * @param {Number[]} b The origin of the rotation\n * @param {Number} c The angle of rotation\n * @param {Number[]} dest The receiving vec3\n * @returns {Number[]} dest\n * @static\n */\n rotateVec3Z(a, b, c, dest) {\n const p = [];\n const r = [];\n\n //Translate point to the origin\n p[0] = a[0] - b[0];\n p[1] = a[1] - b[1];\n p[2] = a[2] - b[2];\n\n //perform rotation\n r[0] = p[0] * Math.cos(c) - p[1] * Math.sin(c);\n r[1] = p[0] * Math.sin(c) + p[1] * Math.cos(c);\n r[2] = p[2];\n\n //translate to correct position\n dest[0] = r[0] + b[0];\n dest[1] = r[1] + b[1];\n dest[2] = r[2] + b[2];\n\n return dest;\n },\n\n /**\n * Transforms a four-element vector by a 4x4 projection matrix.\n *\n * @method projectVec4\n * @param {Number[]} p 3D View-space coordinate\n * @param {Number[]} q 2D Projected coordinate\n * @returns {Number[]} 2D Projected coordinate\n * @static\n */\n projectVec4(p, q) {\n const f = 1.0 / p[3];\n q = q || math.vec2();\n q[0] = p[0] * f;\n q[1] = p[1] * f;\n return q;\n },\n\n /**\n * Unprojects a three-element vector.\n *\n * @method unprojectVec3\n * @param {Number[]} p 3D Projected coordinate\n * @param {Number[]} viewMat View matrix\n * @returns {Number[]} projMat Projection matrix\n * @static\n */\n unprojectVec3: ((() => {\n const mat = new FloatArrayType(16);\n const mat2 = new FloatArrayType(16);\n const mat3 = new FloatArrayType(16);\n return function (p, viewMat, projMat, q) {\n return this.transformVec3(this.mulMat4(this.inverseMat4(viewMat, mat), this.inverseMat4(projMat, mat2), mat3), p, q)\n };\n }))(),\n\n /**\n * Linearly interpolates between two 3D vectors.\n * @method lerpVec3\n * @static\n */\n lerpVec3(t, t1, t2, p1, p2, dest) {\n const result = dest || math.vec3();\n const f = (t - t1) / (t2 - t1);\n result[0] = p1[0] + (f * (p2[0] - p1[0]));\n result[1] = p1[1] + (f * (p2[1] - p1[1]));\n result[2] = p1[2] + (f * (p2[2] - p1[2]));\n return result;\n },\n\n /**\n * Linearly interpolates between two 4x4 matrices.\n * @method lerpMat4\n * @static\n */\n lerpMat4(t, t1, t2, m1, m2, dest) {\n const result = dest || math.mat4();\n const f = (t - t1) / (t2 - t1);\n result[0] = m1[0] + (f * (m2[0] - m1[0]));\n result[1] = m1[1] + (f * (m2[1] - m1[1]));\n result[2] = m1[2] + (f * (m2[2] - m1[2]));\n result[3] = m1[3] + (f * (m2[3] - m1[3]));\n result[4] = m1[4] + (f * (m2[4] - m1[4]));\n result[5] = m1[5] + (f * (m2[5] - m1[5]));\n result[6] = m1[6] + (f * (m2[6] - m1[6]));\n result[7] = m1[7] + (f * (m2[7] - m1[7]));\n result[8] = m1[8] + (f * (m2[8] - m1[8]));\n result[9] = m1[9] + (f * (m2[9] - m1[9]));\n result[10] = m1[10] + (f * (m2[10] - m1[10]));\n result[11] = m1[11] + (f * (m2[11] - m1[11]));\n result[12] = m1[12] + (f * (m2[12] - m1[12]));\n result[13] = m1[13] + (f * (m2[13] - m1[13]));\n result[14] = m1[14] + (f * (m2[14] - m1[14]));\n result[15] = m1[15] + (f * (m2[15] - m1[15]));\n return result;\n },\n\n\n /**\n * Flattens a two-dimensional array into a one-dimensional array.\n *\n * @method flatten\n * @static\n * @param {Array of Arrays} a A 2D array\n * @returns Flattened 1D array\n */\n flatten(a) {\n\n const result = [];\n\n let i;\n let leni;\n let j;\n let lenj;\n let item;\n\n for (i = 0, leni = a.length; i < leni; i++) {\n item = a[i];\n for (j = 0, lenj = item.length; j < lenj; j++) {\n result.push(item[j]);\n }\n }\n\n return result;\n },\n\n\n identityQuaternion(dest = math.vec4()) {\n dest[0] = 0.0;\n dest[1] = 0.0;\n dest[2] = 0.0;\n dest[3] = 1.0;\n return dest;\n },\n\n /**\n * Initializes a quaternion from Euler angles.\n *\n * @param {Number[]} euler The Euler angles.\n * @param {String} order Euler angle order: \"XYZ\", \"YXZ\", \"ZXY\" etc.\n * @param {Number[]} [dest] Destination quaternion, created by default.\n * @returns {Number[]} The quaternion.\n */\n eulerToQuaternion(euler, order, dest = math.vec4()) {\n // http://www.mathworks.com/matlabcentral/fileexchange/\n // \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\n //\tcontent/SpinCalc.m\n\n const a = (euler[0] * math.DEGTORAD) / 2;\n const b = (euler[1] * math.DEGTORAD) / 2;\n const c = (euler[2] * math.DEGTORAD) / 2;\n\n const c1 = Math.cos(a);\n const c2 = Math.cos(b);\n const c3 = Math.cos(c);\n const s1 = Math.sin(a);\n const s2 = Math.sin(b);\n const s3 = Math.sin(c);\n\n if (order === 'XYZ') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'YXZ') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n\n } else if (order === 'ZXY') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'ZYX') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n\n } else if (order === 'YZX') {\n\n dest[0] = s1 * c2 * c3 + c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 + s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 - s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 - s1 * s2 * s3;\n\n } else if (order === 'XZY') {\n\n dest[0] = s1 * c2 * c3 - c1 * s2 * s3;\n dest[1] = c1 * s2 * c3 - s1 * c2 * s3;\n dest[2] = c1 * c2 * s3 + s1 * s2 * c3;\n dest[3] = c1 * c2 * c3 + s1 * s2 * s3;\n }\n\n return dest;\n },\n\n mat4ToQuaternion(m, dest = math.vec4()) {\n // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\n\n // Assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\n\n const m11 = m[0];\n const m12 = m[4];\n const m13 = m[8];\n const m21 = m[1];\n const m22 = m[5];\n const m23 = m[9];\n const m31 = m[2];\n const m32 = m[6];\n const m33 = m[10];\n let s;\n\n const trace = m11 + m22 + m33;\n\n if (trace > 0) {\n\n s = 0.5 / Math.sqrt(trace + 1.0);\n\n dest[3] = 0.25 / s;\n dest[0] = (m32 - m23) * s;\n dest[1] = (m13 - m31) * s;\n dest[2] = (m21 - m12) * s;\n\n } else if (m11 > m22 && m11 > m33) {\n\n s = 2.0 * Math.sqrt(1.0 + m11 - m22 - m33);\n\n dest[3] = (m32 - m23) / s;\n dest[0] = 0.25 * s;\n dest[1] = (m12 + m21) / s;\n dest[2] = (m13 + m31) / s;\n\n } else if (m22 > m33) {\n\n s = 2.0 * Math.sqrt(1.0 + m22 - m11 - m33);\n\n dest[3] = (m13 - m31) / s;\n dest[0] = (m12 + m21) / s;\n dest[1] = 0.25 * s;\n dest[2] = (m23 + m32) / s;\n\n } else {\n\n s = 2.0 * Math.sqrt(1.0 + m33 - m11 - m22);\n\n dest[3] = (m21 - m12) / s;\n dest[0] = (m13 + m31) / s;\n dest[1] = (m23 + m32) / s;\n dest[2] = 0.25 * s;\n }\n\n return dest;\n },\n\n vec3PairToQuaternion(u, v, dest = math.vec4()) {\n const norm_u_norm_v = Math.sqrt(math.dotVec3(u, u) * math.dotVec3(v, v));\n let real_part = norm_u_norm_v + math.dotVec3(u, v);\n\n if (real_part < 0.00000001 * norm_u_norm_v) {\n\n // If u and v are exactly opposite, rotate 180 degrees\n // around an arbitrary orthogonal axis. Axis normalisation\n // can happen later, when we normalise the quaternion.\n\n real_part = 0.0;\n\n if (Math.abs(u[0]) > Math.abs(u[2])) {\n\n dest[0] = -u[1];\n dest[1] = u[0];\n dest[2] = 0;\n\n } else {\n dest[0] = 0;\n dest[1] = -u[2];\n dest[2] = u[1];\n }\n\n } else {\n\n // Otherwise, build quaternion the standard way.\n math.cross3Vec3(u, v, dest);\n }\n\n dest[3] = real_part;\n\n return math.normalizeQuaternion(dest);\n },\n\n angleAxisToQuaternion(angleAxis, dest = math.vec4()) {\n const halfAngle = angleAxis[3] / 2.0;\n const fsin = Math.sin(halfAngle);\n dest[0] = fsin * angleAxis[0];\n dest[1] = fsin * angleAxis[1];\n dest[2] = fsin * angleAxis[2];\n dest[3] = Math.cos(halfAngle);\n return dest;\n },\n\n quaternionToEuler: ((() => {\n const mat = new FloatArrayType(16);\n return (q, order, dest) => {\n dest = dest || math.vec3();\n math.quaternionToRotationMat4(q, mat);\n math.mat4ToEuler(mat, order, dest);\n return dest;\n };\n }))(),\n\n mulQuaternions(p, q, dest = math.vec4()) {\n const p0 = p[0];\n const p1 = p[1];\n const p2 = p[2];\n const p3 = p[3];\n const q0 = q[0];\n const q1 = q[1];\n const q2 = q[2];\n const q3 = q[3];\n dest[0] = p3 * q0 + p0 * q3 + p1 * q2 - p2 * q1;\n dest[1] = p3 * q1 + p1 * q3 + p2 * q0 - p0 * q2;\n dest[2] = p3 * q2 + p2 * q3 + p0 * q1 - p1 * q0;\n dest[3] = p3 * q3 - p0 * q0 - p1 * q1 - p2 * q2;\n return dest;\n },\n\n vec3ApplyQuaternion(q, vec, dest = math.vec3()) {\n const x = vec[0];\n const y = vec[1];\n const z = vec[2];\n\n const qx = q[0];\n const qy = q[1];\n const qz = q[2];\n const qw = q[3];\n\n // calculate quat * vector\n\n const ix = qw * x + qy * z - qz * y;\n const iy = qw * y + qz * x - qx * z;\n const iz = qw * z + qx * y - qy * x;\n const iw = -qx * x - qy * y - qz * z;\n\n // calculate result * inverse quat\n\n dest[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n dest[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n dest[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\n return dest;\n },\n\n quaternionToMat4(q, dest) {\n\n dest = math.identityMat4(dest);\n\n const q0 = q[0]; //x\n const q1 = q[1]; //y\n const q2 = q[2]; //z\n const q3 = q[3]; //w\n\n const tx = 2.0 * q0;\n const ty = 2.0 * q1;\n const tz = 2.0 * q2;\n\n const twx = tx * q3;\n const twy = ty * q3;\n const twz = tz * q3;\n\n const txx = tx * q0;\n const txy = ty * q0;\n const txz = tz * q0;\n\n const tyy = ty * q1;\n const tyz = tz * q1;\n const tzz = tz * q2;\n\n dest[0] = 1.0 - (tyy + tzz);\n dest[1] = txy + twz;\n dest[2] = txz - twy;\n\n dest[4] = txy - twz;\n dest[5] = 1.0 - (txx + tzz);\n dest[6] = tyz + twx;\n\n dest[8] = txz + twy;\n dest[9] = tyz - twx;\n\n dest[10] = 1.0 - (txx + tyy);\n\n return dest;\n },\n\n quaternionToRotationMat4(q, m) {\n const x = q[0];\n const y = q[1];\n const z = q[2];\n const w = q[3];\n\n const x2 = x + x;\n const y2 = y + y;\n const z2 = z + z;\n const xx = x * x2;\n const xy = x * y2;\n const xz = x * z2;\n const yy = y * y2;\n const yz = y * z2;\n const zz = z * z2;\n const wx = w * x2;\n const wy = w * y2;\n const wz = w * z2;\n\n m[0] = 1 - (yy + zz);\n m[4] = xy - wz;\n m[8] = xz + wy;\n\n m[1] = xy + wz;\n m[5] = 1 - (xx + zz);\n m[9] = yz - wx;\n\n m[2] = xz - wy;\n m[6] = yz + wx;\n m[10] = 1 - (xx + yy);\n\n // last column\n m[3] = 0;\n m[7] = 0;\n m[11] = 0;\n\n // bottom row\n m[12] = 0;\n m[13] = 0;\n m[14] = 0;\n m[15] = 1;\n\n return m;\n },\n\n normalizeQuaternion(q, dest = q) {\n const len = math.lenVec4([q[0], q[1], q[2], q[3]]);\n dest[0] = q[0] / len;\n dest[1] = q[1] / len;\n dest[2] = q[2] / len;\n dest[3] = q[3] / len;\n return dest;\n },\n\n conjugateQuaternion(q, dest = q) {\n dest[0] = -q[0];\n dest[1] = -q[1];\n dest[2] = -q[2];\n dest[3] = q[3];\n return dest;\n },\n\n inverseQuaternion(q, dest) {\n return math.normalizeQuaternion(math.conjugateQuaternion(q, dest));\n },\n\n quaternionToAngleAxis(q, angleAxis = math.vec4()) {\n q = math.normalizeQuaternion(q, tempVec4$6);\n const q3 = q[3];\n const angle = 2 * Math.acos(q3);\n const s = Math.sqrt(1 - q3 * q3);\n if (s < 0.001) { // test to avoid divide by zero, s is always positive due to sqrt\n angleAxis[0] = q[0];\n angleAxis[1] = q[1];\n angleAxis[2] = q[2];\n } else {\n angleAxis[0] = q[0] / s;\n angleAxis[1] = q[1] / s;\n angleAxis[2] = q[2] / s;\n }\n angleAxis[3] = angle; // * 57.295779579;\n return angleAxis;\n },\n\n //------------------------------------------------------------------------------------------------------------------\n // Boundaries\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns a new, uninitialized 3D axis-aligned bounding box.\n *\n * @private\n */\n AABB3(values) {\n return new FloatArrayType(values || 6);\n },\n\n /**\n * Returns a new, uninitialized 2D axis-aligned bounding box.\n *\n * @private\n */\n AABB2(values) {\n return new FloatArrayType(values || 4);\n },\n\n /**\n * Returns a new, uninitialized 3D oriented bounding box (OBB).\n *\n * @private\n */\n OBB3(values) {\n return new FloatArrayType(values || 32);\n },\n\n /**\n * Returns a new, uninitialized 2D oriented bounding box (OBB).\n *\n * @private\n */\n OBB2(values) {\n return new FloatArrayType(values || 16);\n },\n\n /** Returns a new 3D bounding sphere */\n Sphere3(x, y, z, r) {\n return new FloatArrayType([x, y, z, r]);\n },\n\n /**\n * Transforms an OBB3 by a 4x4 matrix.\n *\n * @private\n */\n transformOBB3(m, p, p2 = p) {\n let i;\n const len = p.length;\n\n let x;\n let y;\n let z;\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n for (i = 0; i < len; i += 4) {\n\n x = p[i + 0];\n y = p[i + 1];\n z = p[i + 2];\n\n p2[i + 0] = (m0 * x) + (m4 * y) + (m8 * z) + m12;\n p2[i + 1] = (m1 * x) + (m5 * y) + (m9 * z) + m13;\n p2[i + 2] = (m2 * x) + (m6 * y) + (m10 * z) + m14;\n p2[i + 3] = (m3 * x) + (m7 * y) + (m11 * z) + m15;\n }\n\n return p2;\n },\n\n /** Returns true if the first AABB contains the second AABB.\n * @param aabb1\n * @param aabb2\n * @returns {boolean}\n */\n containsAABB3: function (aabb1, aabb2) {\n const result = (\n aabb1[0] <= aabb2[0] && aabb2[3] <= aabb1[3] &&\n aabb1[1] <= aabb2[1] && aabb2[4] <= aabb1[4] &&\n aabb1[2] <= aabb2[2] && aabb2[5] <= aabb1[5]);\n return result;\n },\n\n\n /**\n * Gets the diagonal size of an AABB3 given as minima and maxima.\n *\n * @private\n */\n getAABB3Diag: ((() => {\n\n const min = new FloatArrayType(3);\n const max = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return aabb => {\n\n min[0] = aabb[0];\n min[1] = aabb[1];\n min[2] = aabb[2];\n\n max[0] = aabb[3];\n max[1] = aabb[4];\n max[2] = aabb[5];\n\n math.subVec3(max, min, tempVec3);\n\n return Math.abs(math.lenVec3(tempVec3));\n };\n }))(),\n\n /**\n * Get a diagonal boundary size that is symmetrical about the given point.\n *\n * @private\n */\n getAABB3DiagPoint: ((() => {\n\n const min = new FloatArrayType(3);\n const max = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return (aabb, p) => {\n\n min[0] = aabb[0];\n min[1] = aabb[1];\n min[2] = aabb[2];\n\n max[0] = aabb[3];\n max[1] = aabb[4];\n max[2] = aabb[5];\n\n const diagVec = math.subVec3(max, min, tempVec3);\n\n const xneg = p[0] - aabb[0];\n const xpos = aabb[3] - p[0];\n const yneg = p[1] - aabb[1];\n const ypos = aabb[4] - p[1];\n const zneg = p[2] - aabb[2];\n const zpos = aabb[5] - p[2];\n\n diagVec[0] += (xneg > xpos) ? xneg : xpos;\n diagVec[1] += (yneg > ypos) ? yneg : ypos;\n diagVec[2] += (zneg > zpos) ? zneg : zpos;\n\n return Math.abs(math.lenVec3(diagVec));\n };\n }))(),\n\n /**\n * Gets the area of an AABB.\n *\n * @private\n */\n getAABB3Area(aabb) {\n const width = (aabb[3] - aabb[0]);\n const height = (aabb[4] - aabb[1]);\n const depth = (aabb[5] - aabb[2]);\n return (width * height * depth);\n },\n\n /**\n * Gets the center of an AABB.\n *\n * @private\n */\n getAABB3Center(aabb, dest) {\n const r = dest || math.vec3();\n\n r[0] = (aabb[0] + aabb[3]) / 2;\n r[1] = (aabb[1] + aabb[4]) / 2;\n r[2] = (aabb[2] + aabb[5]) / 2;\n\n return r;\n },\n\n /**\n * Gets the center of a 2D AABB.\n *\n * @private\n */\n getAABB2Center(aabb, dest) {\n const r = dest || math.vec2();\n\n r[0] = (aabb[2] + aabb[0]) / 2;\n r[1] = (aabb[3] + aabb[1]) / 2;\n\n return r;\n },\n\n /**\n * Collapses a 3D axis-aligned boundary, ready to expand to fit 3D points.\n * Creates new AABB if none supplied.\n *\n * @private\n */\n collapseAABB3(aabb = math.AABB3()) {\n aabb[0] = math.MAX_DOUBLE;\n aabb[1] = math.MAX_DOUBLE;\n aabb[2] = math.MAX_DOUBLE;\n aabb[3] = math.MIN_DOUBLE;\n aabb[4] = math.MIN_DOUBLE;\n aabb[5] = math.MIN_DOUBLE;\n\n return aabb;\n },\n\n /**\n * Converts an axis-aligned 3D boundary into an oriented boundary consisting of\n * an array of eight 3D positions, one for each corner of the boundary.\n *\n * @private\n */\n AABB3ToOBB3(aabb, obb = math.OBB3()) {\n obb[0] = aabb[0];\n obb[1] = aabb[1];\n obb[2] = aabb[2];\n obb[3] = 1;\n\n obb[4] = aabb[3];\n obb[5] = aabb[1];\n obb[6] = aabb[2];\n obb[7] = 1;\n\n obb[8] = aabb[3];\n obb[9] = aabb[4];\n obb[10] = aabb[2];\n obb[11] = 1;\n\n obb[12] = aabb[0];\n obb[13] = aabb[4];\n obb[14] = aabb[2];\n obb[15] = 1;\n\n obb[16] = aabb[0];\n obb[17] = aabb[1];\n obb[18] = aabb[5];\n obb[19] = 1;\n\n obb[20] = aabb[3];\n obb[21] = aabb[1];\n obb[22] = aabb[5];\n obb[23] = 1;\n\n obb[24] = aabb[3];\n obb[25] = aabb[4];\n obb[26] = aabb[5];\n obb[27] = 1;\n\n obb[28] = aabb[0];\n obb[29] = aabb[4];\n obb[30] = aabb[5];\n obb[31] = 1;\n\n return obb;\n },\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the homogeneous 3D points (x,y,z,w) given in a flattened array.\n *\n * @private\n */\n positions3ToAABB3: ((() => {\n\n const p = new FloatArrayType(3);\n\n return (positions, aabb, positionsDecodeMatrix) => {\n aabb = aabb || math.AABB3();\n\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = math.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n let zmax = math.MIN_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = positions.length; i < len; i += 3) {\n\n if (positionsDecodeMatrix) {\n\n p[0] = positions[i + 0];\n p[1] = positions[i + 1];\n p[2] = positions[i + 2];\n\n math.decompressPosition(p, positionsDecodeMatrix, p);\n\n x = p[0];\n y = p[1];\n z = p[2];\n\n } else {\n x = positions[i + 0];\n y = positions[i + 1];\n z = positions[i + 2];\n }\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n };\n }))(),\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the homogeneous 3D points (x,y,z,w) given in a flattened array.\n *\n * @private\n */\n OBB3ToAABB3(obb, aabb = math.AABB3()) {\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = math.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n let zmax = math.MIN_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = obb.length; i < len; i += 4) {\n\n x = obb[i + 0];\n y = obb[i + 1];\n z = obb[i + 2];\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n },\n\n /**\n * Finds the minimum axis-aligned 3D boundary enclosing the given 3D points.\n *\n * @private\n */\n points3ToAABB3(points, aabb = math.AABB3()) {\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = math.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n let zmax = math.MIN_DOUBLE;\n\n let x;\n let y;\n let z;\n\n for (let i = 0, len = points.length; i < len; i++) {\n\n x = points[i][0];\n y = points[i][1];\n z = points[i][2];\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (z < zmin) {\n zmin = z;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n\n if (z > zmax) {\n zmax = z;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = zmin;\n aabb[3] = xmax;\n aabb[4] = ymax;\n aabb[5] = zmax;\n\n return aabb;\n },\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D points.\n *\n * @private\n */\n points3ToSphere3: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n\n return (points, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const numPoints = points.length;\n\n for (i = 0; i < numPoints; i++) {\n x += points[i][0];\n y += points[i][1];\n z += points[i][2];\n }\n\n sphere[0] = x / numPoints;\n sphere[1] = y / numPoints;\n sphere[2] = z / numPoints;\n\n let radius = 0;\n let dist;\n\n for (i = 0; i < numPoints; i++) {\n\n dist = Math.abs(math.lenVec3(math.subVec3(points[i], sphere, tempVec3)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D positions.\n *\n * @private\n */\n positions3ToSphere3: ((() => {\n\n const tempVec3a = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n\n return (positions, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const lenPositions = positions.length;\n let radius = 0;\n\n for (i = 0; i < lenPositions; i += 3) {\n x += positions[i];\n y += positions[i + 1];\n z += positions[i + 2];\n }\n\n const numPositions = lenPositions / 3;\n\n sphere[0] = x / numPositions;\n sphere[1] = y / numPositions;\n sphere[2] = z / numPositions;\n\n let dist;\n\n for (i = 0; i < lenPositions; i += 3) {\n\n tempVec3a[0] = positions[i];\n tempVec3a[1] = positions[i + 1];\n tempVec3a[2] = positions[i + 2];\n\n dist = Math.abs(math.lenVec3(math.subVec3(tempVec3a, sphere, tempVec3b)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Finds the minimum boundary sphere enclosing the given 3D points.\n *\n * @private\n */\n OBB3ToSphere3: ((() => {\n\n const point = new FloatArrayType(3);\n const tempVec3 = new FloatArrayType(3);\n\n return (points, sphere) => {\n\n sphere = sphere || math.vec4();\n\n let x = 0;\n let y = 0;\n let z = 0;\n\n let i;\n const lenPoints = points.length;\n const numPoints = lenPoints / 4;\n\n for (i = 0; i < lenPoints; i += 4) {\n x += points[i + 0];\n y += points[i + 1];\n z += points[i + 2];\n }\n\n sphere[0] = x / numPoints;\n sphere[1] = y / numPoints;\n sphere[2] = z / numPoints;\n\n let radius = 0;\n let dist;\n\n for (i = 0; i < lenPoints; i += 4) {\n\n point[0] = points[i + 0];\n point[1] = points[i + 1];\n point[2] = points[i + 2];\n\n dist = Math.abs(math.lenVec3(math.subVec3(point, sphere, tempVec3)));\n\n if (dist > radius) {\n radius = dist;\n }\n }\n\n sphere[3] = radius;\n\n return sphere;\n };\n }))(),\n\n /**\n * Gets the center of a bounding sphere.\n *\n * @private\n */\n getSphere3Center(sphere, dest = math.vec3()) {\n dest[0] = sphere[0];\n dest[1] = sphere[1];\n dest[2] = sphere[2];\n\n return dest;\n },\n\n /**\n * Gets the 3D center of the given flat array of 3D positions.\n *\n * @private\n */\n getPositionsCenter(positions, center = math.vec3()) {\n let xCenter = 0;\n let yCenter = 0;\n let zCenter = 0;\n for (var i = 0, len = positions.length; i < len; i += 3) {\n xCenter += positions[i + 0];\n yCenter += positions[i + 1];\n zCenter += positions[i + 2];\n }\n const numPositions = positions.length / 3;\n center[0] = xCenter / numPositions;\n center[1] = yCenter / numPositions;\n center[2] = zCenter / numPositions;\n return center;\n },\n\n /**\n * Expands the first axis-aligned 3D boundary to enclose the second, if required.\n *\n * @private\n */\n expandAABB3(aabb1, aabb2) {\n\n if (aabb1[0] > aabb2[0]) {\n aabb1[0] = aabb2[0];\n }\n\n if (aabb1[1] > aabb2[1]) {\n aabb1[1] = aabb2[1];\n }\n\n if (aabb1[2] > aabb2[2]) {\n aabb1[2] = aabb2[2];\n }\n\n if (aabb1[3] < aabb2[3]) {\n aabb1[3] = aabb2[3];\n }\n\n if (aabb1[4] < aabb2[4]) {\n aabb1[4] = aabb2[4];\n }\n\n if (aabb1[5] < aabb2[5]) {\n aabb1[5] = aabb2[5];\n }\n\n return aabb1;\n },\n\n /**\n * Expands an axis-aligned 3D boundary to enclose the given point, if needed.\n *\n * @private\n */\n expandAABB3Point3(aabb, p) {\n\n if (aabb[0] > p[0]) {\n aabb[0] = p[0];\n }\n\n if (aabb[1] > p[1]) {\n aabb[1] = p[1];\n }\n\n if (aabb[2] > p[2]) {\n aabb[2] = p[2];\n }\n\n if (aabb[3] < p[0]) {\n aabb[3] = p[0];\n }\n\n if (aabb[4] < p[1]) {\n aabb[4] = p[1];\n }\n\n if (aabb[5] < p[2]) {\n aabb[5] = p[2];\n }\n\n return aabb;\n },\n\n /**\n * Expands an axis-aligned 3D boundary to enclose the given points, if needed.\n *\n * @private\n */\n expandAABB3Points3(aabb, positions) {\n var x;\n var y;\n var z;\n for (var i = 0, len = positions.length; i < len; i += 3) {\n x = positions[i];\n y = positions[i + 1];\n z = positions[i + 2];\n if (aabb[0] > x) {\n aabb[0] = x;\n }\n if (aabb[1] > y) {\n aabb[1] = y;\n }\n if (aabb[2] > z) {\n aabb[2] = z;\n }\n if (aabb[3] < x) {\n aabb[3] = x;\n }\n if (aabb[4] < y) {\n aabb[4] = y;\n }\n if (aabb[5] < z) {\n aabb[5] = z;\n }\n }\n return aabb;\n },\n\n /**\n * Collapses a 2D axis-aligned boundary, ready to expand to fit 2D points.\n * Creates new AABB if none supplied.\n *\n * @private\n */\n collapseAABB2(aabb = math.AABB2()) {\n aabb[0] = math.MAX_DOUBLE;\n aabb[1] = math.MAX_DOUBLE;\n aabb[2] = math.MIN_DOUBLE;\n aabb[3] = math.MIN_DOUBLE;\n\n return aabb;\n },\n\n point3AABB3Intersect(aabb, p) {\n return aabb[0] > p[0] || aabb[3] < p[0] || aabb[1] > p[1] || aabb[4] < p[1] || aabb[2] > p[2] || aabb[5] < p[2];\n },\n\n /**\n *\n * @param dir\n * @param constant\n * @param aabb\n * @returns {number}\n */\n planeAABB3Intersect(dir, constant, aabb) {\n let min, max;\n if (dir[0] > 0) {\n min = dir[0] * aabb[0];\n max = dir[0] * aabb[3];\n } else {\n min = dir[0] * aabb[3];\n max = dir[0] * aabb[0];\n }\n if (dir[1] > 0) {\n min += dir[1] * aabb[1];\n max += dir[1] * aabb[4];\n } else {\n min += dir[1] * aabb[4];\n max += dir[1] * aabb[1];\n }\n if (dir[2] > 0) {\n min += dir[2] * aabb[2];\n max += dir[2] * aabb[5];\n } else {\n min += dir[2] * aabb[5];\n max += dir[2] * aabb[2];\n }\n const outside = (min <= -constant) && (max <= -constant);\n if (outside) {\n return -1;\n }\n\n const inside = (min >= -constant) && (max >= -constant);\n if (inside) {\n return 1;\n }\n\n return 0;\n },\n\n /**\n * Finds the minimum 2D projected axis-aligned boundary enclosing the given 3D points.\n *\n * @private\n */\n OBB3ToAABB2(points, aabb = math.AABB2()) {\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let xmax = math.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n\n let x;\n let y;\n let w;\n let f;\n\n for (let i = 0, len = points.length; i < len; i += 4) {\n\n x = points[i + 0];\n y = points[i + 1];\n w = points[i + 3] || 1.0;\n\n f = 1.0 / w;\n\n x *= f;\n y *= f;\n\n if (x < xmin) {\n xmin = x;\n }\n\n if (y < ymin) {\n ymin = y;\n }\n\n if (x > xmax) {\n xmax = x;\n }\n\n if (y > ymax) {\n ymax = y;\n }\n }\n\n aabb[0] = xmin;\n aabb[1] = ymin;\n aabb[2] = xmax;\n aabb[3] = ymax;\n\n return aabb;\n },\n\n /**\n * Expands the first axis-aligned 2D boundary to enclose the second, if required.\n *\n * @private\n */\n expandAABB2(aabb1, aabb2) {\n\n if (aabb1[0] > aabb2[0]) {\n aabb1[0] = aabb2[0];\n }\n\n if (aabb1[1] > aabb2[1]) {\n aabb1[1] = aabb2[1];\n }\n\n if (aabb1[2] < aabb2[2]) {\n aabb1[2] = aabb2[2];\n }\n\n if (aabb1[3] < aabb2[3]) {\n aabb1[3] = aabb2[3];\n }\n\n return aabb1;\n },\n\n /**\n * Expands an axis-aligned 2D boundary to enclose the given point, if required.\n *\n * @private\n */\n expandAABB2Point2(aabb, p) {\n\n if (aabb[0] > p[0]) {\n aabb[0] = p[0];\n }\n\n if (aabb[1] > p[1]) {\n aabb[1] = p[1];\n }\n\n if (aabb[2] < p[0]) {\n aabb[2] = p[0];\n }\n\n if (aabb[3] < p[1]) {\n aabb[3] = p[1];\n }\n\n return aabb;\n },\n\n AABB2ToCanvas(aabb, canvasWidth, canvasHeight, aabb2 = aabb) {\n const xmin = (aabb[0] + 1.0) * 0.5;\n const ymin = (aabb[1] + 1.0) * 0.5;\n const xmax = (aabb[2] + 1.0) * 0.5;\n const ymax = (aabb[3] + 1.0) * 0.5;\n\n aabb2[0] = Math.floor(xmin * canvasWidth);\n aabb2[1] = canvasHeight - Math.floor(ymax * canvasHeight);\n aabb2[2] = Math.floor(xmax * canvasWidth);\n aabb2[3] = canvasHeight - Math.floor(ymin * canvasHeight);\n\n return aabb2;\n },\n\n //------------------------------------------------------------------------------------------------------------------\n // Curves\n //------------------------------------------------------------------------------------------------------------------\n\n tangentQuadraticBezier(t, p0, p1, p2) {\n return 2 * (1 - t) * (p1 - p0) + 2 * t * (p2 - p1);\n },\n\n tangentQuadraticBezier3(t, p0, p1, p2, p3) {\n return -3 * p0 * (1 - t) * (1 - t) +\n 3 * p1 * (1 - t) * (1 - t) - 6 * t * p1 * (1 - t) +\n 6 * t * p2 * (1 - t) - 3 * t * t * p2 +\n 3 * t * t * p3;\n },\n\n tangentSpline(t) {\n const h00 = 6 * t * t - 6 * t;\n const h10 = 3 * t * t - 4 * t + 1;\n const h01 = -6 * t * t + 6 * t;\n const h11 = 3 * t * t - 2 * t;\n return h00 + h10 + h01 + h11;\n },\n\n catmullRomInterpolate(p0, p1, p2, p3, t) {\n const v0 = (p2 - p0) * 0.5;\n const v1 = (p3 - p1) * 0.5;\n const t2 = t * t;\n const t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n },\n\n// Bezier Curve formulii from http://en.wikipedia.org/wiki/B%C3%A9zier_curve\n\n// Quad Bezier Functions\n\n b2p0(t, p) {\n const k = 1 - t;\n return k * k * p;\n\n },\n\n b2p1(t, p) {\n return 2 * (1 - t) * t * p;\n },\n\n b2p2(t, p) {\n return t * t * p;\n },\n\n b2(t, p0, p1, p2) {\n return this.b2p0(t, p0) + this.b2p1(t, p1) + this.b2p2(t, p2);\n },\n\n// Cubic Bezier Functions\n\n b3p0(t, p) {\n const k = 1 - t;\n return k * k * k * p;\n },\n\n b3p1(t, p) {\n const k = 1 - t;\n return 3 * k * k * t * p;\n },\n\n b3p2(t, p) {\n const k = 1 - t;\n return 3 * k * t * t * p;\n },\n\n b3p3(t, p) {\n return t * t * t * p;\n },\n\n b3(t, p0, p1, p2, p3) {\n return this.b3p0(t, p0) + this.b3p1(t, p1) + this.b3p2(t, p2) + this.b3p3(t, p3);\n },\n\n //------------------------------------------------------------------------------------------------------------------\n // Geometry\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Calculates the normal vector of a triangle.\n *\n * @private\n */\n triangleNormal(a, b, c, normal = math.vec3()) {\n const p1x = b[0] - a[0];\n const p1y = b[1] - a[1];\n const p1z = b[2] - a[2];\n\n const p2x = c[0] - a[0];\n const p2y = c[1] - a[1];\n const p2z = c[2] - a[2];\n\n const p3x = p1y * p2z - p1z * p2y;\n const p3y = p1z * p2x - p1x * p2z;\n const p3z = p1x * p2y - p1y * p2x;\n\n const mag = Math.sqrt(p3x * p3x + p3y * p3y + p3z * p3z);\n if (mag === 0) {\n normal[0] = 0;\n normal[1] = 0;\n normal[2] = 0;\n } else {\n normal[0] = p3x / mag;\n normal[1] = p3y / mag;\n normal[2] = p3z / mag;\n }\n\n return normal\n },\n\n /**\n * Finds the intersection of a 3D ray with a 3D triangle.\n *\n * @private\n */\n rayTriangleIntersect: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n const tempVec3c = new FloatArrayType(3);\n const tempVec3d = new FloatArrayType(3);\n const tempVec3e = new FloatArrayType(3);\n\n return (origin, dir, a, b, c, isect) => {\n\n isect = isect || math.vec3();\n\n const EPSILON = 0.000001;\n\n const edge1 = math.subVec3(b, a, tempVec3);\n const edge2 = math.subVec3(c, a, tempVec3b);\n\n const pvec = math.cross3Vec3(dir, edge2, tempVec3c);\n const det = math.dotVec3(edge1, pvec);\n if (det < EPSILON) {\n return null;\n }\n\n const tvec = math.subVec3(origin, a, tempVec3d);\n const u = math.dotVec3(tvec, pvec);\n if (u < 0 || u > det) {\n return null;\n }\n\n const qvec = math.cross3Vec3(tvec, edge1, tempVec3e);\n const v = math.dotVec3(dir, qvec);\n if (v < 0 || u + v > det) {\n return null;\n }\n\n const t = math.dotVec3(edge2, qvec) / det;\n isect[0] = origin[0] + t * dir[0];\n isect[1] = origin[1] + t * dir[1];\n isect[2] = origin[2] + t * dir[2];\n\n return isect;\n };\n }))(),\n\n /**\n * Finds the intersection of a 3D ray with a plane defined by 3 points.\n *\n * @private\n */\n rayPlaneIntersect: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n const tempVec3c = new FloatArrayType(3);\n const tempVec3d = new FloatArrayType(3);\n\n return (origin, dir, a, b, c, isect) => {\n\n isect = isect || math.vec3();\n\n dir = math.normalizeVec3(dir, tempVec3);\n\n const edge1 = math.subVec3(b, a, tempVec3b);\n const edge2 = math.subVec3(c, a, tempVec3c);\n\n const n = math.cross3Vec3(edge1, edge2, tempVec3d);\n math.normalizeVec3(n, n);\n\n const d = -math.dotVec3(a, n);\n\n const t = -(math.dotVec3(origin, n) + d) / math.dotVec3(dir, n);\n\n isect[0] = origin[0] + t * dir[0];\n isect[1] = origin[1] + t * dir[1];\n isect[2] = origin[2] + t * dir[2];\n\n return isect;\n };\n }))(),\n\n /**\n * Gets barycentric coordinates from cartesian coordinates within a triangle.\n * Gets barycentric coordinates from cartesian coordinates within a triangle.\n *\n * @private\n */\n cartesianToBarycentric: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n const tempVec3c = new FloatArrayType(3);\n\n return (cartesian, a, b, c, dest) => {\n\n const v0 = math.subVec3(c, a, tempVec3);\n const v1 = math.subVec3(b, a, tempVec3b);\n const v2 = math.subVec3(cartesian, a, tempVec3c);\n\n const dot00 = math.dotVec3(v0, v0);\n const dot01 = math.dotVec3(v0, v1);\n const dot02 = math.dotVec3(v0, v2);\n const dot11 = math.dotVec3(v1, v1);\n const dot12 = math.dotVec3(v1, v2);\n\n const denom = (dot00 * dot11 - dot01 * dot01);\n\n // Colinear or singular triangle\n\n if (denom === 0) {\n\n // Arbitrary location outside of triangle\n\n return null;\n }\n\n const invDenom = 1 / denom;\n\n const u = (dot11 * dot02 - dot01 * dot12) * invDenom;\n const v = (dot00 * dot12 - dot01 * dot02) * invDenom;\n\n dest[0] = 1 - u - v;\n dest[1] = v;\n dest[2] = u;\n\n return dest;\n };\n }))(),\n\n /**\n * Returns true if the given barycentric coordinates are within their triangle.\n *\n * @private\n */\n barycentricInsideTriangle(bary) {\n\n const v = bary[1];\n const u = bary[2];\n\n return (u >= 0) && (v >= 0) && (u + v < 1);\n },\n\n /**\n * Gets cartesian coordinates from barycentric coordinates within a triangle.\n *\n * @private\n */\n barycentricToCartesian(bary, a, b, c, cartesian = math.vec3()) {\n const u = bary[0];\n const v = bary[1];\n const w = bary[2];\n\n cartesian[0] = a[0] * u + b[0] * v + c[0] * w;\n cartesian[1] = a[1] * u + b[1] * v + c[1] * w;\n cartesian[2] = a[2] * u + b[2] * v + c[2] * w;\n\n return cartesian;\n },\n\n\n /**\n * Given geometry defined as an array of positions, optional normals, option uv and an array of indices, returns\n * modified arrays that have duplicate vertices removed.\n *\n * Note: does not work well when co-incident vertices have same positions but different normals and UVs.\n *\n * @param positions\n * @param normals\n * @param uv\n * @param indices\n * @returns {{positions: Array, indices: Array}}\n * @private\n */\n mergeVertices(positions, normals, uv, indices) {\n const positionsMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n const indicesLookup = [];\n const uniquePositions = [];\n const uniqueNormals = normals ? [] : null;\n const uniqueUV = uv ? [] : null;\n const indices2 = [];\n let vx;\n let vy;\n let vz;\n let key;\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = 10 ** precisionPoints;\n let i;\n let len;\n let uvi = 0;\n for (i = 0, len = positions.length; i < len; i += 3) {\n vx = positions[i];\n vy = positions[i + 1];\n vz = positions[i + 2];\n key = `${Math.round(vx * precision)}_${Math.round(vy * precision)}_${Math.round(vz * precision)}`;\n if (positionsMap[key] === undefined) {\n positionsMap[key] = uniquePositions.length / 3;\n uniquePositions.push(vx);\n uniquePositions.push(vy);\n uniquePositions.push(vz);\n if (normals) {\n uniqueNormals.push(normals[i]);\n uniqueNormals.push(normals[i + 1]);\n uniqueNormals.push(normals[i + 2]);\n }\n if (uv) {\n uniqueUV.push(uv[uvi]);\n uniqueUV.push(uv[uvi + 1]);\n }\n }\n indicesLookup[i / 3] = positionsMap[key];\n uvi += 2;\n }\n for (i = 0, len = indices.length; i < len; i++) {\n indices2[i] = indicesLookup[indices[i]];\n }\n const result = {\n positions: uniquePositions,\n indices: indices2\n };\n if (uniqueNormals) {\n result.normals = uniqueNormals;\n }\n if (uniqueUV) {\n result.uv = uniqueUV;\n\n }\n return result;\n },\n\n /**\n * Builds normal vectors from positions and indices.\n *\n * @private\n */\n buildNormals: ((() => {\n\n const a = new FloatArrayType(3);\n const b = new FloatArrayType(3);\n const c = new FloatArrayType(3);\n const ab = new FloatArrayType(3);\n const ac = new FloatArrayType(3);\n const crossVec = new FloatArrayType(3);\n\n return (positions, indices, normals) => {\n\n let i;\n let len;\n const nvecs = new Array(positions.length / 3);\n let j0;\n let j1;\n let j2;\n\n for (i = 0, len = indices.length; i < len; i += 3) {\n\n j0 = indices[i];\n j1 = indices[i + 1];\n j2 = indices[i + 2];\n\n a[0] = positions[j0 * 3];\n a[1] = positions[j0 * 3 + 1];\n a[2] = positions[j0 * 3 + 2];\n\n b[0] = positions[j1 * 3];\n b[1] = positions[j1 * 3 + 1];\n b[2] = positions[j1 * 3 + 2];\n\n c[0] = positions[j2 * 3];\n c[1] = positions[j2 * 3 + 1];\n c[2] = positions[j2 * 3 + 2];\n\n math.subVec3(b, a, ab);\n math.subVec3(c, a, ac);\n\n const normVec = math.vec3();\n\n math.normalizeVec3(math.cross3Vec3(ab, ac, crossVec), normVec);\n\n if (!nvecs[j0]) {\n nvecs[j0] = [];\n }\n if (!nvecs[j1]) {\n nvecs[j1] = [];\n }\n if (!nvecs[j2]) {\n nvecs[j2] = [];\n }\n\n nvecs[j0].push(normVec);\n nvecs[j1].push(normVec);\n nvecs[j2].push(normVec);\n }\n\n normals = (normals && normals.length === positions.length) ? normals : new Float32Array(positions.length);\n\n let count;\n let x;\n let y;\n let z;\n\n for (i = 0, len = nvecs.length; i < len; i++) { // Now go through and average out everything\n\n count = nvecs[i].length;\n\n x = 0;\n y = 0;\n z = 0;\n\n for (let j = 0; j < count; j++) {\n x += nvecs[i][j][0];\n y += nvecs[i][j][1];\n z += nvecs[i][j][2];\n }\n\n normals[i * 3] = (x / count);\n normals[i * 3 + 1] = (y / count);\n normals[i * 3 + 2] = (z / count);\n }\n\n return normals;\n };\n }))(),\n\n /**\n * Builds vertex tangent vectors from positions, UVs and indices.\n *\n * @private\n */\n buildTangents: ((() => {\n\n const tempVec3 = new FloatArrayType(3);\n const tempVec3b = new FloatArrayType(3);\n const tempVec3c = new FloatArrayType(3);\n const tempVec3d = new FloatArrayType(3);\n const tempVec3e = new FloatArrayType(3);\n const tempVec3f = new FloatArrayType(3);\n const tempVec3g = new FloatArrayType(3);\n\n return (positions, indices, uv) => {\n\n const tangents = new Float32Array(positions.length);\n\n // The vertex arrays needs to be calculated\n // before the calculation of the tangents\n\n for (let location = 0; location < indices.length; location += 3) {\n\n // Recontructing each vertex and UV coordinate into the respective vectors\n\n let index = indices[location];\n\n const v0 = positions.subarray(index * 3, index * 3 + 3);\n const uv0 = uv.subarray(index * 2, index * 2 + 2);\n\n index = indices[location + 1];\n\n const v1 = positions.subarray(index * 3, index * 3 + 3);\n const uv1 = uv.subarray(index * 2, index * 2 + 2);\n\n index = indices[location + 2];\n\n const v2 = positions.subarray(index * 3, index * 3 + 3);\n const uv2 = uv.subarray(index * 2, index * 2 + 2);\n\n const deltaPos1 = math.subVec3(v1, v0, tempVec3);\n const deltaPos2 = math.subVec3(v2, v0, tempVec3b);\n\n const deltaUV1 = math.subVec2(uv1, uv0, tempVec3c);\n const deltaUV2 = math.subVec2(uv2, uv0, tempVec3d);\n\n const r = 1 / ((deltaUV1[0] * deltaUV2[1]) - (deltaUV1[1] * deltaUV2[0]));\n\n const tangent = math.mulVec3Scalar(\n math.subVec3(\n math.mulVec3Scalar(deltaPos1, deltaUV2[1], tempVec3e),\n math.mulVec3Scalar(deltaPos2, deltaUV1[1], tempVec3f),\n tempVec3g\n ),\n r,\n tempVec3f\n );\n\n // Average the value of the vectors\n\n let addTo;\n\n for (let v = 0; v < 3; v++) {\n addTo = indices[location + v] * 3;\n tangents[addTo] += tangent[0];\n tangents[addTo + 1] += tangent[1];\n tangents[addTo + 2] += tangent[2];\n }\n }\n\n return tangents;\n };\n }))(),\n\n /**\n * Builds vertex and index arrays needed by color-indexed triangle picking.\n *\n * @private\n */\n buildPickTriangles(positions, indices, compressGeometry) {\n\n const numIndices = indices.length;\n const pickPositions = compressGeometry ? new Uint16Array(numIndices * 9) : new Float32Array(numIndices * 9);\n const pickColors = new Uint8Array(numIndices * 12);\n let primIndex = 0;\n let vi;// Positions array index\n let pvi = 0;// Picking positions array index\n let pci = 0; // Picking color array index\n\n // Triangle indices\n let i;\n let r;\n let g;\n let b;\n let a;\n\n for (let location = 0; location < numIndices; location += 3) {\n\n // Primitive-indexed triangle pick color\n\n a = (primIndex >> 24 & 0xFF);\n b = (primIndex >> 16 & 0xFF);\n g = (primIndex >> 8 & 0xFF);\n r = (primIndex & 0xFF);\n\n // A\n\n i = indices[location];\n vi = i * 3;\n\n pickPositions[pvi++] = positions[vi];\n pickPositions[pvi++] = positions[vi + 1];\n pickPositions[pvi++] = positions[vi + 2];\n\n pickColors[pci++] = r;\n pickColors[pci++] = g;\n pickColors[pci++] = b;\n pickColors[pci++] = a;\n\n // B\n\n i = indices[location + 1];\n vi = i * 3;\n\n pickPositions[pvi++] = positions[vi];\n pickPositions[pvi++] = positions[vi + 1];\n pickPositions[pvi++] = positions[vi + 2];\n\n pickColors[pci++] = r;\n pickColors[pci++] = g;\n pickColors[pci++] = b;\n pickColors[pci++] = a;\n\n // C\n\n i = indices[location + 2];\n vi = i * 3;\n\n pickPositions[pvi++] = positions[vi];\n pickPositions[pvi++] = positions[vi + 1];\n pickPositions[pvi++] = positions[vi + 2];\n\n pickColors[pci++] = r;\n pickColors[pci++] = g;\n pickColors[pci++] = b;\n pickColors[pci++] = a;\n\n primIndex++;\n }\n\n return {\n positions: pickPositions,\n colors: pickColors\n };\n },\n\n /**\n * Converts surface-perpendicular face normals to vertex normals. Assumes that the mesh contains disjoint triangles\n * that don't share vertex array elements. Works by finding groups of vertices that have the same location and\n * averaging their normal vectors.\n *\n * @returns {{positions: Array, normals: *}}\n */\n faceToVertexNormals(positions, normals, options = {}) {\n const smoothNormalsAngleThreshold = options.smoothNormalsAngleThreshold || 20;\n const vertexMap = {};\n const vertexNormals = [];\n const vertexNormalAccum = {};\n let acc;\n let vx;\n let vy;\n let vz;\n let key;\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = 10 ** precisionPoints;\n let posi;\n let i;\n let j;\n let len;\n let a;\n let b;\n\n for (i = 0, len = positions.length; i < len; i += 3) {\n\n posi = i / 3;\n\n vx = positions[i];\n vy = positions[i + 1];\n vz = positions[i + 2];\n\n key = `${Math.round(vx * precision)}_${Math.round(vy * precision)}_${Math.round(vz * precision)}`;\n\n if (vertexMap[key] === undefined) {\n vertexMap[key] = [posi];\n } else {\n vertexMap[key].push(posi);\n }\n\n const normal = math.normalizeVec3([normals[i], normals[i + 1], normals[i + 2]]);\n\n vertexNormals[posi] = normal;\n\n acc = math.vec4([normal[0], normal[1], normal[2], 1]);\n\n vertexNormalAccum[posi] = acc;\n }\n\n for (key in vertexMap) {\n\n if (vertexMap.hasOwnProperty(key)) {\n\n const vertices = vertexMap[key];\n const numVerts = vertices.length;\n\n for (i = 0; i < numVerts; i++) {\n\n const ii = vertices[i];\n\n acc = vertexNormalAccum[ii];\n\n for (j = 0; j < numVerts; j++) {\n\n if (i === j) {\n continue;\n }\n\n const jj = vertices[j];\n\n a = vertexNormals[ii];\n b = vertexNormals[jj];\n\n const angle = Math.abs(math.angleVec3(a, b) / math.DEGTORAD);\n\n if (angle < smoothNormalsAngleThreshold) {\n\n acc[0] += b[0];\n acc[1] += b[1];\n acc[2] += b[2];\n acc[3] += 1.0;\n }\n }\n }\n }\n }\n\n for (i = 0, len = normals.length; i < len; i += 3) {\n\n acc = vertexNormalAccum[i / 3];\n\n normals[i + 0] = acc[0] / acc[3];\n normals[i + 1] = acc[1] / acc[3];\n normals[i + 2] = acc[2] / acc[3];\n\n }\n },\n\n //------------------------------------------------------------------------------------------------------------------\n // Ray casting\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n Transforms a ray by a matrix.\n @method transformRay\n @static\n @param {Number[]} matrix 4x4 matrix\n @param {Number[]} rayOrigin The ray origin\n @param {Number[]} rayDir The ray direction\n @param {Number[]} rayOriginDest The transformed ray origin\n @param {Number[]} rayDirDest The transformed ray direction\n */\n transformRay: ((() => {\n\n const tempVec4a = new FloatArrayType(4);\n const tempVec4b = new FloatArrayType(4);\n\n return (matrix, rayOrigin, rayDir, rayOriginDest, rayDirDest) => {\n\n tempVec4a[0] = rayOrigin[0];\n tempVec4a[1] = rayOrigin[1];\n tempVec4a[2] = rayOrigin[2];\n tempVec4a[3] = 1;\n\n math.transformVec4(matrix, tempVec4a, tempVec4b);\n\n rayOriginDest[0] = tempVec4b[0];\n rayOriginDest[1] = tempVec4b[1];\n rayOriginDest[2] = tempVec4b[2];\n\n tempVec4a[0] = rayDir[0];\n tempVec4a[1] = rayDir[1];\n tempVec4a[2] = rayDir[2];\n\n math.transformVec3(matrix, tempVec4a, tempVec4b);\n\n math.normalizeVec3(tempVec4b);\n\n rayDirDest[0] = tempVec4b[0];\n rayDirDest[1] = tempVec4b[1];\n rayDirDest[2] = tempVec4b[2];\n };\n }))(),\n\n /**\n Transforms a Canvas-space position into a World-space ray, in the context of a Camera.\n @method canvasPosToWorldRay\n @static\n @param {Number[]} viewMatrix View matrix\n @param {Number[]} projMatrix Projection matrix\n @param {Number[]} canvasPos The Canvas-space position.\n @param {Number[]} worldRayOrigin The World-space ray origin.\n @param {Number[]} worldRayDir The World-space ray direction.\n */\n canvasPosToWorldRay: ((() => {\n\n const tempMat4b = new FloatArrayType(16);\n const tempMat4c = new FloatArrayType(16);\n const tempVec4a = new FloatArrayType(4);\n const tempVec4b = new FloatArrayType(4);\n const tempVec4c = new FloatArrayType(4);\n const tempVec4d = new FloatArrayType(4);\n\n return (canvas, viewMatrix, projMatrix, canvasPos, worldRayOrigin, worldRayDir) => {\n\n const pvMat = math.mulMat4(projMatrix, viewMatrix, tempMat4b);\n const pvMatInverse = math.inverseMat4(pvMat, tempMat4c);\n\n // Calculate clip space coordinates, which will be in range\n // of x=[-1..1] and y=[-1..1], with y=(+1) at top\n\n const canvasWidth = canvas.width;\n const canvasHeight = canvas.height;\n\n const clipX = (canvasPos[0] - canvasWidth / 2) / (canvasWidth / 2); // Calculate clip space coordinates\n const clipY = -(canvasPos[1] - canvasHeight / 2) / (canvasHeight / 2);\n\n tempVec4a[0] = clipX;\n tempVec4a[1] = clipY;\n tempVec4a[2] = -1;\n tempVec4a[3] = 1;\n\n math.transformVec4(pvMatInverse, tempVec4a, tempVec4b);\n math.mulVec4Scalar(tempVec4b, 1 / tempVec4b[3]);\n\n tempVec4c[0] = clipX;\n tempVec4c[1] = clipY;\n tempVec4c[2] = 1;\n tempVec4c[3] = 1;\n\n math.transformVec4(pvMatInverse, tempVec4c, tempVec4d);\n math.mulVec4Scalar(tempVec4d, 1 / tempVec4d[3]);\n\n worldRayOrigin[0] = tempVec4d[0];\n worldRayOrigin[1] = tempVec4d[1];\n worldRayOrigin[2] = tempVec4d[2];\n\n math.subVec3(tempVec4d, tempVec4b, worldRayDir);\n\n math.normalizeVec3(worldRayDir);\n };\n }))(),\n\n /**\n Transforms a Canvas-space position to a Mesh's Local-space coordinate system, in the context of a Camera.\n @method canvasPosToLocalRay\n @static\n @param {Camera} camera The Camera.\n @param {Mesh} mesh The Mesh.\n @param {Number[]} viewMatrix View matrix\n @param {Number[]} projMatrix Projection matrix\n @param {Number[]} worldMatrix Modeling matrix\n @param {Number[]} canvasPos The Canvas-space position.\n @param {Number[]} localRayOrigin The Local-space ray origin.\n @param {Number[]} localRayDir The Local-space ray direction.\n */\n canvasPosToLocalRay: ((() => {\n\n const worldRayOrigin = new FloatArrayType(3);\n const worldRayDir = new FloatArrayType(3);\n\n return (canvas, viewMatrix, projMatrix, worldMatrix, canvasPos, localRayOrigin, localRayDir) => {\n math.canvasPosToWorldRay(canvas, viewMatrix, projMatrix, canvasPos, worldRayOrigin, worldRayDir);\n math.worldRayToLocalRay(worldMatrix, worldRayOrigin, worldRayDir, localRayOrigin, localRayDir);\n };\n }))(),\n\n /**\n Transforms a ray from World-space to a Mesh's Local-space coordinate system.\n @method worldRayToLocalRay\n @static\n @param {Number[]} worldMatrix The World transform matrix\n @param {Number[]} worldRayOrigin The World-space ray origin.\n @param {Number[]} worldRayDir The World-space ray direction.\n @param {Number[]} localRayOrigin The Local-space ray origin.\n @param {Number[]} localRayDir The Local-space ray direction.\n */\n worldRayToLocalRay: ((() => {\n\n const tempMat4 = new FloatArrayType(16);\n const tempVec4a = new FloatArrayType(4);\n const tempVec4b = new FloatArrayType(4);\n\n return (worldMatrix, worldRayOrigin, worldRayDir, localRayOrigin, localRayDir) => {\n\n const modelMatInverse = math.inverseMat4(worldMatrix, tempMat4);\n\n tempVec4a[0] = worldRayOrigin[0];\n tempVec4a[1] = worldRayOrigin[1];\n tempVec4a[2] = worldRayOrigin[2];\n tempVec4a[3] = 1;\n\n math.transformVec4(modelMatInverse, tempVec4a, tempVec4b);\n\n localRayOrigin[0] = tempVec4b[0];\n localRayOrigin[1] = tempVec4b[1];\n localRayOrigin[2] = tempVec4b[2];\n\n math.transformVec3(modelMatInverse, worldRayDir, localRayDir);\n };\n }))(),\n\n buildKDTree: ((() => {\n\n const KD_TREE_MAX_DEPTH = 10;\n const KD_TREE_MIN_TRIANGLES = 20;\n\n const dimLength = new Float32Array();\n\n function buildNode(triangles, indices, positions, depth) {\n const aabb = new FloatArrayType(6);\n\n const node = {\n triangles: null,\n left: null,\n right: null,\n leaf: false,\n splitDim: 0,\n aabb\n };\n\n aabb[0] = aabb[1] = aabb[2] = Number.POSITIVE_INFINITY;\n aabb[3] = aabb[4] = aabb[5] = Number.NEGATIVE_INFINITY;\n\n let t;\n let len;\n\n for (t = 0, len = triangles.length; t < len; ++t) {\n var ii = triangles[t] * 3;\n for (let j = 0; j < 3; ++j) {\n const pi = indices[ii + j] * 3;\n if (positions[pi] < aabb[0]) {\n aabb[0] = positions[pi];\n }\n if (positions[pi] > aabb[3]) {\n aabb[3] = positions[pi];\n }\n if (positions[pi + 1] < aabb[1]) {\n aabb[1] = positions[pi + 1];\n }\n if (positions[pi + 1] > aabb[4]) {\n aabb[4] = positions[pi + 1];\n }\n if (positions[pi + 2] < aabb[2]) {\n aabb[2] = positions[pi + 2];\n }\n if (positions[pi + 2] > aabb[5]) {\n aabb[5] = positions[pi + 2];\n }\n }\n }\n\n if (triangles.length < KD_TREE_MIN_TRIANGLES || depth > KD_TREE_MAX_DEPTH) {\n node.triangles = triangles;\n node.leaf = true;\n return node;\n }\n\n dimLength[0] = aabb[3] - aabb[0];\n dimLength[1] = aabb[4] - aabb[1];\n dimLength[2] = aabb[5] - aabb[2];\n\n let dim = 0;\n\n if (dimLength[1] > dimLength[dim]) {\n dim = 1;\n }\n\n if (dimLength[2] > dimLength[dim]) {\n dim = 2;\n }\n\n node.splitDim = dim;\n\n const mid = (aabb[dim] + aabb[dim + 3]) / 2;\n const left = new Array(triangles.length);\n let numLeft = 0;\n const right = new Array(triangles.length);\n let numRight = 0;\n\n for (t = 0, len = triangles.length; t < len; ++t) {\n\n var ii = triangles[t] * 3;\n const i0 = indices[ii];\n const i1 = indices[ii + 1];\n const i2 = indices[ii + 2];\n\n const pi0 = i0 * 3;\n const pi1 = i1 * 3;\n const pi2 = i2 * 3;\n\n if (positions[pi0 + dim] <= mid || positions[pi1 + dim] <= mid || positions[pi2 + dim] <= mid) {\n left[numLeft++] = triangles[t];\n } else {\n right[numRight++] = triangles[t];\n }\n }\n\n left.length = numLeft;\n right.length = numRight;\n\n node.left = buildNode(left, indices, positions, depth + 1);\n node.right = buildNode(right, indices, positions, depth + 1);\n\n return node;\n }\n\n return (indices, positions) => {\n const numTris = indices.length / 3;\n const triangles = new Array(numTris);\n for (let i = 0; i < numTris; ++i) {\n triangles[i] = i;\n }\n return buildNode(triangles, indices, positions, 0);\n };\n }))(),\n\n\n decompressPosition(position, decodeMatrix, dest) {\n dest = dest || position;\n dest[0] = position[0] * decodeMatrix[0] + decodeMatrix[12];\n dest[1] = position[1] * decodeMatrix[5] + decodeMatrix[13];\n dest[2] = position[2] * decodeMatrix[10] + decodeMatrix[14];\n },\n\n decompressPositions(positions, decodeMatrix, dest = new Float32Array(positions.length)) {\n for (let i = 0, len = positions.length; i < len; i += 3) {\n dest[i + 0] = positions[i + 0] * decodeMatrix[0] + decodeMatrix[12];\n dest[i + 1] = positions[i + 1] * decodeMatrix[5] + decodeMatrix[13];\n dest[i + 2] = positions[i + 2] * decodeMatrix[10] + decodeMatrix[14];\n }\n return dest;\n },\n\n decompressUV(uv, decodeMatrix, dest) {\n dest[0] = uv[0] * decodeMatrix[0] + decodeMatrix[6];\n dest[1] = uv[1] * decodeMatrix[4] + decodeMatrix[7];\n },\n\n decompressUVs(uvs, decodeMatrix, dest = new Float32Array(uvs.length)) {\n for (let i = 0, len = uvs.length; i < len; i += 3) {\n dest[i + 0] = uvs[i + 0] * decodeMatrix[0] + decodeMatrix[6];\n dest[i + 1] = uvs[i + 1] * decodeMatrix[4] + decodeMatrix[7];\n }\n return dest;\n },\n\n octDecodeVec2(oct, result) {\n let x = oct[0];\n let y = oct[1];\n x = (2 * x + 1) / 255;\n y = (2 * y + 1) / 255;\n const z = 1 - Math.abs(x) - Math.abs(y);\n if (z < 0) {\n x = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n y = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n }\n const length = Math.sqrt(x * x + y * y + z * z);\n result[0] = x / length;\n result[1] = y / length;\n result[2] = z / length;\n return result;\n },\n\n octDecodeVec2s(octs, result) {\n for (let i = 0, j = 0, len = octs.length; i < len; i += 2) {\n let x = octs[i + 0];\n let y = octs[i + 1];\n x = (2 * x + 1) / 255;\n y = (2 * y + 1) / 255;\n const z = 1 - Math.abs(x) - Math.abs(y);\n if (z < 0) {\n x = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n y = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n }\n const length = Math.sqrt(x * x + y * y + z * z);\n result[j + 0] = x / length;\n result[j + 1] = y / length;\n result[j + 2] = z / length;\n j += 3;\n }\n return result;\n }\n};\n\nmath.buildEdgeIndices = (function () {\n\n const uniquePositions = [];\n const indicesLookup = [];\n const indicesReverseLookup = [];\n const weldedIndices = [];\n\n // TODO: Optimize with caching, but need to cater to both compressed and uncompressed positions\n\n const faces = [];\n let numFaces = 0;\n const compa = new Uint16Array(3);\n const compb = new Uint16Array(3);\n const compc = new Uint16Array(3);\n const a = math.vec3();\n const b = math.vec3();\n const c = math.vec3();\n const cb = math.vec3();\n const ab = math.vec3();\n const cross = math.vec3();\n const normal = math.vec3();\n\n function weldVertices(positions, indices) {\n const positionsMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n let vx;\n let vy;\n let vz;\n let key;\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = Math.pow(10, precisionPoints);\n let i;\n let len;\n let lenUniquePositions = 0;\n for (i = 0, len = positions.length; i < len; i += 3) {\n vx = positions[i];\n vy = positions[i + 1];\n vz = positions[i + 2];\n key = Math.round(vx * precision) + '_' + Math.round(vy * precision) + '_' + Math.round(vz * precision);\n if (positionsMap[key] === undefined) {\n positionsMap[key] = lenUniquePositions / 3;\n uniquePositions[lenUniquePositions++] = vx;\n uniquePositions[lenUniquePositions++] = vy;\n uniquePositions[lenUniquePositions++] = vz;\n }\n indicesLookup[i / 3] = positionsMap[key];\n }\n for (i = 0, len = indices.length; i < len; i++) {\n weldedIndices[i] = indicesLookup[indices[i]];\n indicesReverseLookup[weldedIndices[i]] = indices[i];\n }\n }\n\n function buildFaces(numIndices, positionsDecodeMatrix) {\n numFaces = 0;\n for (let i = 0, len = numIndices; i < len; i += 3) {\n const ia = ((weldedIndices[i]) * 3);\n const ib = ((weldedIndices[i + 1]) * 3);\n const ic = ((weldedIndices[i + 2]) * 3);\n if (positionsDecodeMatrix) {\n compa[0] = uniquePositions[ia];\n compa[1] = uniquePositions[ia + 1];\n compa[2] = uniquePositions[ia + 2];\n compb[0] = uniquePositions[ib];\n compb[1] = uniquePositions[ib + 1];\n compb[2] = uniquePositions[ib + 2];\n compc[0] = uniquePositions[ic];\n compc[1] = uniquePositions[ic + 1];\n compc[2] = uniquePositions[ic + 2];\n // Decode\n math.decompressPosition(compa, positionsDecodeMatrix, a);\n math.decompressPosition(compb, positionsDecodeMatrix, b);\n math.decompressPosition(compc, positionsDecodeMatrix, c);\n } else {\n a[0] = uniquePositions[ia];\n a[1] = uniquePositions[ia + 1];\n a[2] = uniquePositions[ia + 2];\n b[0] = uniquePositions[ib];\n b[1] = uniquePositions[ib + 1];\n b[2] = uniquePositions[ib + 2];\n c[0] = uniquePositions[ic];\n c[1] = uniquePositions[ic + 1];\n c[2] = uniquePositions[ic + 2];\n }\n math.subVec3(c, b, cb);\n math.subVec3(a, b, ab);\n math.cross3Vec3(cb, ab, cross);\n math.normalizeVec3(cross, normal);\n const face = faces[numFaces] || (faces[numFaces] = {normal: math.vec3()});\n face.normal[0] = normal[0];\n face.normal[1] = normal[1];\n face.normal[2] = normal[2];\n numFaces++;\n }\n }\n\n return function (positions, indices, positionsDecodeMatrix, edgeThreshold) {\n weldVertices(positions, indices);\n buildFaces(indices.length, positionsDecodeMatrix);\n const edgeIndices = [];\n const thresholdDot = Math.cos(math.DEGTORAD * edgeThreshold);\n const edges = {};\n let edge1;\n let edge2;\n let index1;\n let index2;\n let key;\n let largeIndex = false;\n let edge;\n let normal1;\n let normal2;\n let dot;\n let ia;\n let ib;\n for (let i = 0, len = indices.length; i < len; i += 3) {\n const faceIndex = i / 3;\n for (let j = 0; j < 3; j++) {\n edge1 = weldedIndices[i + j];\n edge2 = weldedIndices[i + ((j + 1) % 3)];\n index1 = Math.min(edge1, edge2);\n index2 = Math.max(edge1, edge2);\n key = index1 + \",\" + index2;\n if (edges[key] === undefined) {\n edges[key] = {\n index1: index1,\n index2: index2,\n face1: faceIndex,\n face2: undefined\n };\n } else {\n edges[key].face2 = faceIndex;\n }\n }\n }\n for (key in edges) {\n edge = edges[key];\n // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n if (edge.face2 !== undefined) {\n normal1 = faces[edge.face1].normal;\n normal2 = faces[edge.face2].normal;\n dot = math.dotVec3(normal1, normal2);\n if (dot > thresholdDot) {\n continue;\n }\n }\n ia = indicesReverseLookup[edge.index1];\n ib = indicesReverseLookup[edge.index2];\n if (!largeIndex && ia > 65535 || ib > 65535) {\n largeIndex = true;\n }\n edgeIndices.push(ia);\n edgeIndices.push(ib);\n }\n return (largeIndex) ? new Uint32Array(edgeIndices) : new Uint16Array(edgeIndices);\n };\n})();\n\n// Fast queue that avoids using potentially inefficient array .shift() calls\n// Based on https://github.com/creationix/fastqueue\n\n/** @private */\nclass Queue {\n\n constructor() {\n\n this._head = [];\n this._headLength = 0;\n this._tail = [];\n this._index = 0;\n this._length = 0;\n }\n\n get length() {\n return this._length;\n }\n\n shift() {\n if (this._index >= this._headLength) {\n const t = this._head;\n t.length = 0;\n this._head = this._tail;\n this._tail = t;\n this._index = 0;\n this._headLength = this._head.length;\n if (!this._headLength) {\n return;\n }\n }\n const value = this._head[this._index];\n if (this._index < 0) {\n delete this._head[this._index++];\n }\n else {\n this._head[this._index++] = undefined;\n }\n this._length--;\n return value;\n }\n\n push(item) {\n this._length++;\n this._tail.push(item);\n return this;\n };\n\n unshift(item) {\n this._head[--this._index] = item;\n this._length++;\n return this;\n }\n}\n\n/**\n * xeokit runtime statistics.\n * @private\n * @type {{components: {models: number, objects: number, scenes: number, meshes: number}, memory: {indices: number, uvs: number, textures: number, materials: number, transforms: number, positions: number, programs: number, normals: number, meshes: number, colors: number}, build: {version: string}, client: {browser: string}, frame: {frameCount: number, useProgram: number, bindTexture: number, drawElements: number, bindArray: number, tasksRun: number, fps: number, drawArrays: number, tasksScheduled: number}}}\n */\nconst stats = {\n build: {\n version: \"0.8\"\n },\n client: {\n browser: (navigator && navigator.userAgent) ? navigator.userAgent : \"n/a\"\n },\n\n components: {\n scenes: 0,\n models: 0,\n meshes: 0,\n objects: 0\n },\n memory: {\n meshes: 0,\n positions: 0,\n colors: 0,\n normals: 0,\n uvs: 0,\n indices: 0,\n textures: 0,\n transforms: 0,\n materials: 0,\n programs: 0\n },\n frame: {\n frameCount: 0,\n fps: 0,\n useProgram: 0,\n bindTexture: 0,\n bindArray: 0,\n drawElements: 0,\n drawArrays: 0,\n tasksRun: 0,\n tasksScheduled: 0\n }\n};\n\n/**\n * @private\n */\nfunction xmlToJson(node, attributeRenamer) {\n if (node.nodeType === node.TEXT_NODE) {\n var v = node.nodeValue;\n if (v.match(/^\\s+$/) === null) {\n return v;\n }\n } else if (node.nodeType === node.ELEMENT_NODE ||\n node.nodeType === node.DOCUMENT_NODE) {\n var json = {type: node.nodeName, children: []};\n\n if (node.nodeType === node.ELEMENT_NODE) {\n for (var j = 0; j < node.attributes.length; j++) {\n var attribute = node.attributes[j];\n var nm = attributeRenamer[attribute.nodeName] || attribute.nodeName;\n json[nm] = attribute.nodeValue;\n }\n }\n\n for (var i = 0; i < node.childNodes.length; i++) {\n var item = node.childNodes[i];\n var j = xmlToJson(item, attributeRenamer);\n if (j) json.children.push(j);\n }\n\n return json;\n }\n}\n\n/**\n * @private\n */\nfunction clone(ob) {\n return JSON.parse(JSON.stringify(ob));\n}\n\n/**\n * @private\n */\nvar guidChars = [[\"0\", 10], [\"A\", 26], [\"a\", 26], [\"_\", 1], [\"$\", 1]].map(function (a) {\n var li = [];\n var st = a[0].charCodeAt(0);\n var en = st + a[1];\n for (var i = st; i < en; ++i) {\n li.push(i);\n }\n return String.fromCharCode.apply(null, li);\n}).join(\"\");\n\n/**\n * @private\n */\nfunction b64(v, len) {\n var r = (!len || len === 4) ? [0, 6, 12, 18] : [0, 6];\n return r.map(function (i) {\n return guidChars.substr(parseInt(v / (1 << i)) % 64, 1)\n }).reverse().join(\"\");\n}\n\n/**\n * @private\n */\nfunction compressGuid(g) {\n var bs = [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30].map(function (i) {\n return parseInt(g.substr(i, 2), 16);\n });\n return b64(bs[0], 2) + [1, 4, 7, 10, 13].map(function (i) {\n return b64((bs[i] << 16) + (bs[i + 1] << 8) + bs[i + 2]);\n }).join(\"\");\n}\n\n/**\n * @private\n */\nfunction findNodeOfType(m, t) {\n var li = [];\n var _ = function (n) {\n if (n.type === t) li.push(n);\n (n.children || []).forEach(function (c) {\n _(c);\n });\n };\n _(m);\n return li;\n}\n\n/**\n * @private\n */\nfunction timeout(dt) {\n return new Promise(function (resolve, reject) {\n setTimeout(resolve, dt);\n });\n}\n\n/**\n * @private\n */\nfunction httpRequest(args) {\n return new Promise(function (resolve, reject) {\n var xhr = new XMLHttpRequest();\n xhr.open(args.method || \"GET\", args.url, true);\n xhr.onload = function (e) {\n console.log(args.url, xhr.readyState, xhr.status);\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n resolve(xhr.responseXML);\n } else {\n reject(xhr.statusText);\n }\n }\n };\n xhr.send(null);\n });\n}\n\n/**\n * @private\n */\nconst queryString = function () {\n // This function is anonymous, is executed immediately and\n // the return value is assigned to QueryString!\n var query_string = {};\n var query = window.location.search.substring(1);\n var vars = query.split(\"&\");\n for (var i = 0; i < vars.length; i++) {\n var pair = vars[i].split(\"=\");\n // If first entry with this name\n if (typeof query_string[pair[0]] === \"undefined\") {\n query_string[pair[0]] = decodeURIComponent(pair[1]);\n // If second entry with this name\n } else if (typeof query_string[pair[0]] === \"string\") {\n var arr = [query_string[pair[0]], decodeURIComponent(pair[1])];\n query_string[pair[0]] = arr;\n // If third or later entry with this name\n } else {\n query_string[pair[0]].push(decodeURIComponent(pair[1]));\n }\n }\n return query_string;\n}();\n\n/**\n * @private\n */\nfunction loadJSON(url, ok, err) {\n // Avoid checking ok and err on each use.\n var defaultCallback = (_value) => undefined;\n ok = ok || defaultCallback;\n err = err || defaultCallback;\n\n var request = new XMLHttpRequest();\n request.overrideMimeType(\"application/json\");\n request.open('GET', url, true);\n request.addEventListener('load', function (event) {\n var response = event.target.response;\n if (this.status === 200) {\n var json;\n try {\n json = JSON.parse(response);\n } catch (e) {\n err(`utils.loadJSON(): Failed to parse JSON response - ${e}`);\n }\n ok(json);\n } else if (this.status === 0) {\n // Some browsers return HTTP Status 0 when using non-http protocol\n // e.g. 'file://' or 'data://'. Handle as success.\n console.warn('loadFile: HTTP Status 0 received.');\n try {\n ok(JSON.parse(response));\n } catch (e) {\n err(`utils.loadJSON(): Failed to parse JSON response - ${e}`);\n }\n } else {\n err(event);\n }\n }, false);\n\n request.addEventListener('error', function (event) {\n err(event);\n }, false);\n request.send(null);\n}\n\n/**\n * @private\n */\nfunction loadArraybuffer$1(url, ok, err) {\n // Check for data: URI\n var defaultCallback = (_value) => undefined;\n ok = ok || defaultCallback;\n err = err || defaultCallback;\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n const dataUriRegexResult = url.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n var data = dataUriRegexResult[3];\n data = window.decodeURIComponent(data);\n if (isBase64) {\n data = window.atob(data);\n }\n try {\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (var i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n window.setTimeout(function () {\n ok(buffer);\n }, 0);\n } catch (error) {\n window.setTimeout(function () {\n err(error);\n }, 0);\n }\n } else {\n const request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.responseType = 'arraybuffer';\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n ok(request.response);\n } else {\n err('loadArrayBuffer error : ' + request.response);\n }\n }\n };\n request.send(null);\n }\n}\n\n/**\n Tests if the given object is an array\n @private\n */\nfunction isArray(value) {\n return value && !(value.propertyIsEnumerable('length')) && typeof value === 'object' && typeof value.length === 'number';\n}\n\n/**\n Tests if the given value is a string\n @param value\n @returns {boolean}\n @private\n */\nfunction isString(value) {\n return (typeof value === 'string' || value instanceof String);\n}\n\n/**\n Tests if the given value is a number\n @param value\n @returns {boolean}\n @private\n */\nfunction isNumeric(value) {\n return !isNaN(parseFloat(value)) && isFinite(value);\n}\n\n/**\n Tests if the given value is an ID\n @param value\n @returns {boolean}\n @private\n */\nfunction isID(value) {\n return utils.isString(value) || utils.isNumeric(value);\n}\n\n/**\n Tests if the given components are the same, where the components can be either IDs or instances.\n @param c1\n @param c2\n @returns {boolean}\n @private\n */\nfunction isSameComponent(c1, c2) {\n if (!c1 || !c2) {\n return false;\n }\n const id1 = (utils.isNumeric(c1) || utils.isString(c1)) ? `${c1}` : c1.id;\n const id2 = (utils.isNumeric(c2) || utils.isString(c2)) ? `${c2}` : c2.id;\n return id1 === id2;\n}\n\n/**\n Tests if the given value is a function\n @param value\n @returns {boolean}\n @private\n */\nfunction isFunction(value) {\n return (typeof value === \"function\");\n}\n\n/**\n Tests if the given value is a JavaScript JSON object, eg, ````{ foo: \"bar\" }````.\n @param value\n @returns {boolean}\n @private\n */\nfunction isObject(value) {\n const objectConstructor = {}.constructor;\n return (!!value && value.constructor === objectConstructor);\n}\n\n/** Returns a shallow copy\n */\nfunction copy(o) {\n return utils.apply(o, {});\n}\n\n/** Add properties of o to o2, overwriting them on o2 if already there\n */\nfunction apply(o, o2) {\n for (const name in o) {\n if (o.hasOwnProperty(name)) {\n o2[name] = o[name];\n }\n }\n return o2;\n}\n\n/**\n Add non-null/defined properties of o to o2\n @private\n */\nfunction apply2(o, o2) {\n for (const name in o) {\n if (o.hasOwnProperty(name)) {\n if (o[name] !== undefined && o[name] !== null) {\n o2[name] = o[name];\n }\n }\n }\n return o2;\n}\n\n/**\n Add properties of o to o2 where undefined or null on o2\n @private\n */\nfunction applyIf(o, o2) {\n for (const name in o) {\n if (o.hasOwnProperty(name)) {\n if (o2[name] === undefined || o2[name] === null) {\n o2[name] = o[name];\n }\n }\n }\n return o2;\n}\n\n/**\n Returns true if the given map is empty.\n @param obj\n @returns {boolean}\n @private\n */\nfunction isEmptyObject(obj) {\n for (const name in obj) {\n if (obj.hasOwnProperty(name)) {\n return false;\n }\n }\n return true;\n}\n\n/**\n Returns the given ID as a string, in quotes if the ID was a string to begin with.\n\n This is useful for logging IDs.\n\n @param {Number| String} id The ID\n @returns {String}\n @private\n */\nfunction inQuotes(id) {\n return utils.isNumeric(id) ? (`${id}`) : (`'${id}'`);\n}\n\n/**\n Returns the concatenation of two typed arrays.\n @param a\n @param b\n @returns {*|a}\n @private\n */\nfunction concat(a, b) {\n const c = new a.constructor(a.length + b.length);\n c.set(a);\n c.set(b, a.length);\n return c;\n}\n\nfunction flattenParentChildHierarchy(root) {\n var list = [];\n\n function visit(node) {\n node.id = node.uuid;\n delete node.oid;\n list.push(node);\n var children = node.children;\n\n if (children) {\n for (var i = 0, len = children.length; i < len; i++) {\n const child = children[i];\n child.parent = node.id;\n visit(children[i]);\n }\n }\n node.children = [];\n }\n\n visit(root);\n return list;\n}\n\n/**\n * @private\n */\nconst utils = {\n xmlToJson: xmlToJson,\n clone: clone,\n compressGuid: compressGuid,\n findNodeOfType: findNodeOfType,\n timeout: timeout,\n httpRequest: httpRequest,\n loadJSON: loadJSON,\n loadArraybuffer: loadArraybuffer$1,\n queryString: queryString,\n isArray: isArray,\n isString: isString,\n isNumeric: isNumeric,\n isID: isID,\n isSameComponent: isSameComponent,\n isFunction: isFunction,\n isObject: isObject,\n copy: copy,\n apply: apply,\n apply2: apply2,\n applyIf: applyIf,\n isEmptyObject: isEmptyObject,\n inQuotes: inQuotes,\n concat: concat,\n flattenParentChildHierarchy: flattenParentChildHierarchy\n};\n\nconst scenesRenderInfo = {}; // Used for throttling FPS for each Scene\nconst sceneIDMap = new Map(); // Ensures unique scene IDs\nconst taskQueue = new Queue(); // Task queue, which is pumped on each frame; tasks are pushed to it with calls to xeokit.schedule\nconst tickEvent = {sceneId: null, time: null, startTime: null, prevTime: null, deltaTime: null};\nconst taskBudget = 10; // Millisecs we're allowed to spend on tasks in each frame\nconst fpsSamples = [];\nconst numFPSSamples = 30;\nlet lastTime = 0;\nlet elapsedTime;\nlet totalFPS = 0;\n\n/**\n * @private\n */\nfunction Core() {\n\n /**\n Semantic version number. The value for this is set by an expression that's concatenated to\n the end of the built binary by the xeokit build script.\n @property version\n @namespace xeokit\n @type {String}\n */\n this.version = \"1.0.0\";\n\n /**\n Existing {@link Scene}s , mapped to their IDs\n @property scenes\n @namespace xeokit\n @type {{Scene}}\n */\n this.scenes = {};\n\n this._superTypes = {}; // For each component type, a list of its supertypes, ordered upwards in the hierarchy.\n\n /**\n * Registers a scene on xeokit.\n * This is called within the xeokit.Scene constructor.\n * @private\n */\n this._addScene = function (scene) {\n if (scene.id) { // User-supplied ID\n if (core.scenes[scene.id]) {\n console.error(`[ERROR] Scene ${utils.inQuotes(scene.id)} already exists`);\n return;\n }\n } else { // Auto-generated ID\n scene.id = sceneIDMap.addItem({});\n }\n core.scenes[scene.id] = scene;\n const ticksPerOcclusionTest = scene.ticksPerOcclusionTest;\n const ticksPerRender = scene.ticksPerRender;\n scenesRenderInfo[scene.id] = {\n ticksPerOcclusionTest: ticksPerOcclusionTest,\n ticksPerRender: ticksPerRender,\n renderCountdown: ticksPerRender\n };\n stats.components.scenes++;\n scene.once(\"destroyed\", () => { // Unregister destroyed scenes\n sceneIDMap.removeItem(scene.id);\n delete core.scenes[scene.id];\n delete scenesRenderInfo[scene.id];\n stats.components.scenes--;\n });\n };\n\n /**\n * @private\n */\n this.clear = function () {\n let scene;\n for (const id in core.scenes) {\n if (core.scenes.hasOwnProperty(id)) {\n scene = core.scenes[id];\n // Only clear the default Scene\n // but destroy all the others\n if (id === \"default.scene\") {\n scene.clear();\n } else {\n scene.destroy();\n delete core.scenes[scene.id];\n }\n }\n }\n };\n\n /**\n * Schedule a task to run at the next frame.\n *\n * Internally, this pushes the task to a FIFO queue. Within each frame interval, xeokit processes the queue\n * for a certain period of time, popping tasks and running them. After each frame interval, tasks that did not\n * get a chance to run during the task are left in the queue to be run next time.\n *\n * @param {Function} callback Callback that runs the task.\n * @param {Object} [scope] Scope for the callback.\n */\n this.scheduleTask = function (callback, scope) {\n taskQueue.push(callback);\n taskQueue.push(scope);\n };\n\n this.runTasks = function (until = -1) { // Pops and processes tasks in the queue, until the given number of milliseconds has elapsed.\n let time = (new Date()).getTime();\n let callback;\n let scope;\n let tasksRun = 0;\n while (taskQueue.length > 0 && (until < 0 || time < until)) {\n callback = taskQueue.shift();\n scope = taskQueue.shift();\n if (scope) {\n callback.call(scope);\n } else {\n callback();\n }\n time = (new Date()).getTime();\n tasksRun++;\n }\n return tasksRun;\n };\n\n this.getNumTasks = function () {\n return taskQueue.length;\n };\n}\n\n/**\n * @private\n * @type {Core}\n */\nconst core = new Core();\n\n\nconst frame = function () {\n let time = Date.now();\n if (lastTime > 0) { // Log FPS stats\n elapsedTime = time - lastTime;\n var newFPS = 1000 / elapsedTime; // Moving average of FPS\n totalFPS += newFPS;\n fpsSamples.push(newFPS);\n if (fpsSamples.length >= numFPSSamples) {\n totalFPS -= fpsSamples.shift();\n }\n stats.frame.fps = Math.round(totalFPS / fpsSamples.length);\n }\n runTasks(time);\n fireTickEvents(time);\n renderScenes();\n lastTime = time;\n window.requestAnimationFrame(frame);\n};\n\nfunction runTasks(time) { // Process as many enqueued tasks as we can within the per-frame task budget\n const tasksRun = core.runTasks(time + taskBudget);\n const tasksScheduled = core.getNumTasks();\n stats.frame.tasksRun = tasksRun;\n stats.frame.tasksScheduled = tasksScheduled;\n stats.frame.tasksBudget = taskBudget;\n}\n\nfunction fireTickEvents(time) { // Fire tick event on each Scene\n tickEvent.time = time;\n for (var id in core.scenes) {\n if (core.scenes.hasOwnProperty(id)) {\n var scene = core.scenes[id];\n tickEvent.sceneId = id;\n tickEvent.startTime = scene.startTime;\n tickEvent.deltaTime = tickEvent.prevTime != null ? tickEvent.time - tickEvent.prevTime : 0;\n /**\n * Fired on each game loop iteration.\n *\n * @event tick\n * @param {String} sceneID The ID of this Scene.\n * @param {Number} startTime The time in seconds since 1970 that this Scene was instantiated.\n * @param {Number} time The time in seconds since 1970 of this \"tick\" event.\n * @param {Number} prevTime The time of the previous \"tick\" event from this Scene.\n * @param {Number} deltaTime The time in seconds since the previous \"tick\" event from this Scene.\n */\n scene.fire(\"tick\", tickEvent, true);\n }\n }\n tickEvent.prevTime = time;\n}\n\nfunction renderScenes() {\n const scenes = core.scenes;\n const forceRender = false;\n let scene;\n let renderInfo;\n let ticksPerOcclusionTest;\n let ticksPerRender;\n let id;\n for (id in scenes) {\n if (scenes.hasOwnProperty(id)) {\n\n scene = scenes[id];\n renderInfo = scenesRenderInfo[id];\n\n if (!renderInfo) {\n renderInfo = scenesRenderInfo[id] = {}; // FIXME\n }\n\n ticksPerOcclusionTest = scene.ticksPerOcclusionTest;\n if (renderInfo.ticksPerOcclusionTest !== ticksPerOcclusionTest) {\n renderInfo.ticksPerOcclusionTest = ticksPerOcclusionTest;\n renderInfo.renderCountdown = ticksPerOcclusionTest;\n }\n if (--scene.occlusionTestCountdown <= 0) {\n scene.doOcclusionTest();\n scene.occlusionTestCountdown = ticksPerOcclusionTest;\n }\n\n ticksPerRender = scene.ticksPerRender;\n if (renderInfo.ticksPerRender !== ticksPerRender) {\n renderInfo.ticksPerRender = ticksPerRender;\n renderInfo.renderCountdown = ticksPerRender;\n }\n if (--renderInfo.renderCountdown === 0) {\n scene.render(forceRender);\n renderInfo.renderCountdown = ticksPerRender;\n }\n }\n }\n}\n\nwindow.requestAnimationFrame(frame);\n\n/**\n * @desc Base class for all xeokit components.\n *\n * ## Component IDs\n *\n * Every Component has an ID that's unique within the parent {@link Scene}. xeokit generates\n * the IDs automatically by default, however you can also specify them yourself. In the example below, we're creating a\n * scene comprised of {@link Scene}, {@link Material}, {@link ReadableGeometry} and\n * {@link Mesh} components, while letting xeokit generate its own ID for\n * the {@link ReadableGeometry}:\n *\n *````JavaScript\n * import {Viewer, Mesh, buildTorusGeometry, ReadableGeometry, PhongMaterial, Texture, Fresnel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * id: \"myMaterial\",\n * ambient: [0.9, 0.3, 0.9],\n * shininess: 30,\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * specularFresnel: new Fresnel(viewer.scene, {\n * leftColor: [1.0, 1.0, 1.0],\n * rightColor: [0.0, 0.0, 0.0],\n * power: 4\n * })\n * })\n * });\n *````\n *\n * We can then find those components like this:\n *\n * ````javascript\n * // Find the Material\n * var material = viewer.scene.components[\"myMaterial\"];\n *\n * // Find all PhongMaterials in the Scene\n * var phongMaterials = viewer.scene.types[\"PhongMaterial\"];\n *\n * // Find our Material within the PhongMaterials\n * var materialAgain = phongMaterials[\"myMaterial\"];\n * ````\n *\n * ## Restriction on IDs\n *\n * Auto-generated IDs are of the form ````\"__0\"````, ````\"__1\"````, ````\"__2\"```` ... and so on.\n *\n * Scene maintains a map of these IDs, along with a counter that it increments each time it generates a new ID.\n *\n * If Scene has created the IDs listed above, and we then destroy the ````Component```` with ID ````\"__1\"````,\n * Scene will mark that ID as available, and will reuse it for the next default ID.\n *\n * Therefore, two restrictions your on IDs:\n *\n * * don't use IDs that begin with two underscores, and\n * * don't reuse auto-generated IDs of destroyed Components.\n *\n * ## Logging\n *\n * Components have methods to log ID-prefixed messages to the JavaScript console:\n *\n * ````javascript\n * material.log(\"Everything is fine, situation normal.\");\n * material.warn(\"Wait, whats that red light?\");\n * material.error(\"Aw, snap!\");\n * ````\n *\n * The logged messages will look like this in the console:\n *\n * ````text\n * [LOG] myMaterial: Everything is fine, situation normal.\n * [WARN] myMaterial: Wait, whats that red light..\n * [ERROR] myMaterial: Aw, snap!\n * ````\n *\n * ## Destruction\n *\n * Get notification of destruction of Components:\n *\n * ````javascript\n * material.once(\"destroyed\", function() {\n * this.log(\"Component was destroyed: \" + this.id);\n * });\n * ````\n *\n * Or get notification of destruction of any Component within its {@link Scene}:\n *\n * ````javascript\n * scene.on(\"componentDestroyed\", function(component) {\n * this.log(\"Component was destroyed: \" + component.id);\n * });\n * ````\n *\n * Then destroy a component like this:\n *\n * ````javascript\n * material.destroy();\n * ````\n */\nclass Component {\n\n /**\n @private\n */\n get type() {\n return \"Component\";\n }\n\n /**\n * @private\n */\n get isComponent() {\n return true;\n }\n\n constructor(owner = null, cfg = {}) {\n\n /**\n * The parent {@link Scene} that contains this Component.\n *\n * @property scene\n * @type {Scene}\n * @final\n */\n this.scene = null;\n\n if (this.type === \"Scene\") {\n this.scene = this;\n /**\n * The viewer that contains this Scene.\n * @property viewer\n * @type {Viewer}\n */\n this.viewer = cfg.viewer;\n } else {\n if (owner.type === \"Scene\") {\n this.scene = owner;\n } else if (owner instanceof Component) {\n this.scene = owner.scene;\n } else {\n throw \"Invalid param: owner must be a Component\"\n }\n this._owner = owner;\n this._renderer = this.scene._renderer;\n }\n\n this._dontClear = !!cfg.dontClear; // Prevent Scene#clear from destroying this component\n\n this._renderer = this.scene._renderer;\n\n /**\n Arbitrary, user-defined metadata on this component.\n\n @property metadata\n @type Object\n */\n this.meta = cfg.meta || {};\n\n\n /**\n * ID of this Component, unique within the {@link Scene}.\n *\n * Components are mapped by this ID in {@link Scene#components}.\n *\n * @property id\n * @type {String|Number}\n */\n this.id = cfg.id; // Auto-generated by Scene by default\n\n /**\n True as soon as this Component has been destroyed\n\n @property destroyed\n @type {Boolean}\n */\n this.destroyed = false;\n\n this._attached = {}; // Attached components with names.\n this._attachments = null; // Attached components keyed to IDs - lazy-instantiated\n this._subIdMap = null; // Subscription subId pool\n this._subIdEvents = null; // Subscription subIds mapped to event names\n this._eventSubs = null; // Event names mapped to subscribers\n this._eventSubsNum = null;\n this._events = null; // Maps names to events\n this._eventCallDepth = 0; // Helps us catch stack overflows from recursive events\n this._ownedComponents = null; // // Components created with #create - lazy-instantiated\n\n if (this !== this.scene) { // Don't add scene to itself\n this.scene._addComponent(this); // Assigns this component an automatic ID if not yet assigned\n }\n\n this._updateScheduled = false; // True when #_update will be called on next tick\n\n if (owner) {\n owner._own(this);\n }\n }\n\n // /**\n // * Unique ID for this Component within its {@link Scene}.\n // *\n // * @property\n // * @type {String}\n // */\n // get id() {\n // return this._id;\n // }\n\n /**\n Indicates that we need to redraw the scene.\n\n This is called by certain subclasses after they have made some sort of state update that requires the\n renderer to perform a redraw.\n\n For example: a {@link Mesh} calls this on itself whenever you update its\n {@link Mesh#layer} property, which manually controls its render order in\n relation to other Meshes.\n\n If this component has a ````castsShadow```` property that's set ````true````, then this will also indicate\n that the renderer needs to redraw shadow map associated with this component. Components like\n {@link DirLight} have that property set when they produce light that creates shadows, while\n components like {@link Mesh\"}}layer{{/crossLink}} have that property set when they cast shadows.\n\n @protected\n */\n glRedraw() {\n if (!this._renderer) { // Called from a constructor\n return;\n }\n this._renderer.imageDirty();\n if (this.castsShadow) { // Light source or object\n this._renderer.shadowsDirty();\n }\n }\n\n /**\n Indicates that we need to re-sort the renderer's state-ordered drawables list.\n\n For efficiency, the renderer keeps its list of drawables ordered so that runs of the same state updates can be\n combined. This method is called by certain subclasses after they have made some sort of state update that would\n require re-ordering of the drawables list.\n\n For example: a {@link DirLight} calls this on itself whenever you update {@link DirLight#dir}.\n\n @protected\n */\n glResort() {\n if (!this._renderer) { // Called from a constructor\n return;\n }\n this._renderer.needStateSort();\n }\n\n /**\n * The {@link Component} that owns the lifecycle of this Component, if any.\n *\n * When that component is destroyed, this component will be automatically destroyed also.\n *\n * Will be null if this Component has no owner.\n *\n * @property owner\n * @type {Component}\n */\n get owner() {\n return this._owner;\n }\n\n /**\n * Tests if this component is of the given type, or is a subclass of the given type.\n * @type {Boolean}\n */\n isType(type) {\n return this.type === type;\n }\n\n /**\n * Fires an event on this component.\n *\n * Notifies existing subscribers to the event, optionally retains the event to give to\n * any subsequent notifications on the event as they are made.\n *\n * @param {String} event The event type name\n * @param {Object} value The event parameters\n * @param {Boolean} [forget=false] When true, does not retain for subsequent subscribers\n */\n fire(event, value, forget) {\n if (!this._events) {\n this._events = {};\n }\n if (!this._eventSubs) {\n this._eventSubs = {};\n this._eventSubsNum = {};\n }\n if (forget !== true) {\n this._events[event] = value || true; // Save notification\n }\n const subs = this._eventSubs[event];\n let sub;\n if (subs) { // Notify subscriptions\n for (const subId in subs) {\n if (subs.hasOwnProperty(subId)) {\n sub = subs[subId];\n this._eventCallDepth++;\n if (this._eventCallDepth < 300) {\n sub.callback.call(sub.scope, value);\n } else {\n this.error(\"fire: potential stack overflow from recursive event '\" + event + \"' - dropping this event\");\n }\n this._eventCallDepth--;\n }\n }\n }\n }\n\n /**\n * Subscribes to an event on this component.\n *\n * The callback is be called with this component as scope.\n *\n * @param {String} event The event\n * @param {Function} callback Called fired on the event\n * @param {Object} [scope=this] Scope for the callback\n * @return {String} Handle to the subscription, which may be used to unsubscribe with {@link #off}.\n */\n on(event, callback, scope) {\n if (!this._events) {\n this._events = {};\n }\n if (!this._subIdMap) {\n this._subIdMap = new Map(); // Subscription subId pool\n }\n if (!this._subIdEvents) {\n this._subIdEvents = {};\n }\n if (!this._eventSubs) {\n this._eventSubs = {};\n }\n if (!this._eventSubsNum) {\n this._eventSubsNum = {};\n }\n let subs = this._eventSubs[event];\n if (!subs) {\n subs = {};\n this._eventSubs[event] = subs;\n this._eventSubsNum[event] = 1;\n } else {\n this._eventSubsNum[event]++;\n }\n const subId = this._subIdMap.addItem(); // Create unique subId\n subs[subId] = {\n callback: callback,\n scope: scope || this\n };\n this._subIdEvents[subId] = event;\n const value = this._events[event];\n if (value !== undefined) { // A publication exists, notify callback immediately\n callback.call(scope || this, value);\n }\n return subId;\n }\n\n /**\n * Cancels an event subscription that was previously made with {@link Component#on} or {@link Component#once}.\n *\n * @param {String} subId Subscription ID\n */\n off(subId) {\n if (subId === undefined || subId === null) {\n return;\n }\n if (!this._subIdEvents) {\n return;\n }\n const event = this._subIdEvents[subId];\n if (event) {\n delete this._subIdEvents[subId];\n const subs = this._eventSubs[event];\n if (subs) {\n delete subs[subId];\n this._eventSubsNum[event]--;\n }\n this._subIdMap.removeItem(subId); // Release subId\n }\n }\n\n /**\n * Subscribes to the next occurrence of the given event, then un-subscribes as soon as the event is subIdd.\n *\n * This is equivalent to calling {@link Component#on}, and then calling {@link Component#off} inside the callback function.\n *\n * @param {String} event Data event to listen to\n * @param {Function} callback Called when fresh data is available at the event\n * @param {Object} [scope=this] Scope for the callback\n */\n once(event, callback, scope) {\n const self = this;\n const subId = this.on(event,\n function (value) {\n self.off(subId);\n callback.call(scope || this, value);\n },\n scope);\n }\n\n /**\n * Returns true if there are any subscribers to the given event on this component.\n *\n * @param {String} event The event\n * @return {Boolean} True if there are any subscribers to the given event on this component.\n */\n hasSubs(event) {\n return (this._eventSubsNum && (this._eventSubsNum[event] > 0));\n }\n\n /**\n * Logs a console debugging message for this component.\n *\n * The console message will have this format: *````[LOG] [ : ````*\n *\n * Also fires the message as a \"log\" event on the parent {@link Scene}.\n *\n * @param {String} message The message to log\n */\n log(message) {\n message = \"[LOG]\" + this._message(message);\n window.console.log(message);\n this.scene.fire(\"log\", message);\n }\n\n _message(message) {\n return \" [\" + this.type + \" \" + utils.inQuotes(this.id) + \"]: \" + message;\n }\n\n /**\n * Logs a warning for this component to the JavaScript console.\n *\n * The console message will have this format: *````[WARN] [ =: ````*\n *\n * Also fires the message as a \"warn\" event on the parent {@link Scene}.\n *\n * @param {String} message The message to log\n */\n warn(message) {\n message = \"[WARN]\" + this._message(message);\n window.console.warn(message);\n this.scene.fire(\"warn\", message);\n }\n\n /**\n * Logs an error for this component to the JavaScript console.\n *\n * The console message will have this format: *````[ERROR] [ =: ````*\n *\n * Also fires the message as an \"error\" event on the parent {@link Scene}.\n *\n * @param {String} message The message to log\n */\n error(message) {\n message = \"[ERROR]\" + this._message(message);\n window.console.error(message);\n this.scene.fire(\"error\", message);\n }\n\n /**\n * Adds a child component to this.\n *\n * When component not given, attaches the scene's default instance for the given name (if any).\n * Publishes the new child component on this component, keyed to the given name.\n *\n * @param {*} params\n * @param {String} params.name component name\n * @param {Component} [params.component] The component\n * @param {String} [params.type] Optional expected type of base type of the child; when supplied, will\n * cause an exception if the given child is not the same type or a subtype of this.\n * @param {Boolean} [params.sceneDefault=false]\n * @param {Boolean} [params.sceneSingleton=false]\n * @param {Function} [params.onAttached] Optional callback called when component attached\n * @param {Function} [params.onAttached.callback] Callback function\n * @param {Function} [params.onAttached.scope] Optional scope for callback\n * @param {Function} [params.onDetached] Optional callback called when component is detached\n * @param {Function} [params.onDetached.callback] Callback function\n * @param {Function} [params.onDetached.scope] Optional scope for callback\n * @param {{String:Function}} [params.on] Callbacks to subscribe to properties on component\n * @param {Boolean} [params.recompiles=true] When true, fires \"dirty\" events on this component\n * @private\n */\n _attach(params) {\n\n const name = params.name;\n\n if (!name) {\n this.error(\"Component 'name' expected\");\n return;\n }\n\n let component = params.component;\n const sceneDefault = params.sceneDefault;\n const sceneSingleton = params.sceneSingleton;\n const type = params.type;\n const on = params.on;\n const recompiles = params.recompiles !== false;\n\n // True when child given as config object, where parent manages its instantiation and destruction\n let managingLifecycle = false;\n\n if (component) {\n\n if (utils.isNumeric(component) || utils.isString(component)) {\n\n // Component ID given\n // Both numeric and string IDs are supported\n\n const id = component;\n\n component = this.scene.components[id];\n\n if (!component) {\n\n // Quote string IDs in errors\n\n this.error(\"Component not found: \" + utils.inQuotes(id));\n return;\n }\n }\n }\n\n if (!component) {\n\n if (sceneSingleton === true) {\n\n // Using the first instance of the component type we find\n\n const instances = this.scene.types[type];\n for (const id2 in instances) {\n if (instances.hasOwnProperty) {\n component = instances[id2];\n break;\n }\n }\n\n if (!component) {\n this.error(\"Scene has no default component for '\" + name + \"'\");\n return null;\n }\n\n } else if (sceneDefault === true) {\n\n // Using a default scene component\n\n component = this.scene[name];\n\n if (!component) {\n this.error(\"Scene has no default component for '\" + name + \"'\");\n return null;\n }\n }\n }\n\n if (component) {\n\n if (component.scene.id !== this.scene.id) {\n this.error(\"Not in same scene: \" + component.type + \" \" + utils.inQuotes(component.id));\n return;\n }\n\n if (type) {\n\n if (!component.isType(type)) {\n this.error(\"Expected a \" + type + \" type or subtype: \" + component.type + \" \" + utils.inQuotes(component.id));\n return;\n }\n }\n }\n\n if (!this._attachments) {\n this._attachments = {};\n }\n\n const oldComponent = this._attached[name];\n let subs;\n let i;\n let len;\n\n if (oldComponent) {\n\n if (component && oldComponent.id === component.id) {\n\n // Reject attempt to reattach same component\n return;\n }\n\n const oldAttachment = this._attachments[oldComponent.id];\n\n // Unsubscribe from events on old component\n\n subs = oldAttachment.subs;\n\n for (i = 0, len = subs.length; i < len; i++) {\n oldComponent.off(subs[i]);\n }\n\n delete this._attached[name];\n delete this._attachments[oldComponent.id];\n\n const onDetached = oldAttachment.params.onDetached;\n if (onDetached) {\n if (utils.isFunction(onDetached)) {\n onDetached(oldComponent);\n } else {\n onDetached.scope ? onDetached.callback.call(onDetached.scope, oldComponent) : onDetached.callback(oldComponent);\n }\n }\n\n if (oldAttachment.managingLifecycle) {\n\n // Note that we just unsubscribed from all events fired by the child\n // component, so destroying it won't fire events back at us now.\n\n oldComponent.destroy();\n }\n }\n\n if (component) {\n\n // Set and publish the new component on this component\n\n const attachment = {\n params: params,\n component: component,\n subs: [],\n managingLifecycle: managingLifecycle\n };\n\n attachment.subs.push(\n component.once(\"destroyed\",\n function () {\n attachment.params.component = null;\n this._attach(attachment.params);\n },\n this));\n\n if (recompiles) {\n attachment.subs.push(\n component.on(\"dirty\",\n function () {\n this.fire(\"dirty\", this);\n },\n this));\n }\n\n this._attached[name] = component;\n this._attachments[component.id] = attachment;\n\n // Bind destruct listener to new component to remove it\n // from this component when destroyed\n\n const onAttached = params.onAttached;\n if (onAttached) {\n if (utils.isFunction(onAttached)) {\n onAttached(component);\n } else {\n onAttached.scope ? onAttached.callback.call(onAttached.scope, component) : onAttached.callback(component);\n }\n }\n\n if (on) {\n\n let event;\n let subIdr;\n let callback;\n let scope;\n\n for (event in on) {\n if (on.hasOwnProperty(event)) {\n\n subIdr = on[event];\n\n if (utils.isFunction(subIdr)) {\n callback = subIdr;\n scope = null;\n } else {\n callback = subIdr.callback;\n scope = subIdr.scope;\n }\n\n if (!callback) {\n continue;\n }\n\n attachment.subs.push(component.on(event, callback, scope));\n }\n }\n }\n }\n\n if (recompiles) {\n this.fire(\"dirty\", this); // FIXME: May trigger spurous mesh recompilations unless able to limit with param?\n }\n\n this.fire(name, component); // Component can be null\n\n return component;\n }\n\n _checkComponent(expectedType, component) {\n if (!component.isComponent) {\n if (utils.isID(component)) {\n const id = component;\n component = this.scene.components[id];\n if (!component) {\n this.error(\"Component not found: \" + id);\n return;\n }\n } else {\n this.error(\"Expected a Component or ID\");\n return;\n }\n }\n if (expectedType !== component.type) {\n this.error(\"Expected a \" + expectedType + \" Component\");\n return;\n }\n if (component.scene.id !== this.scene.id) {\n this.error(\"Not in same scene: \" + component.type);\n return;\n }\n return component;\n }\n\n _checkComponent2(expectedTypes, component) {\n if (!component.isComponent) {\n if (utils.isID(component)) {\n const id = component;\n component = this.scene.components[id];\n if (!component) {\n this.error(\"Component not found: \" + id);\n return;\n }\n } else {\n this.error(\"Expected a Component or ID\");\n return;\n }\n }\n if (component.scene.id !== this.scene.id) {\n this.error(\"Not in same scene: \" + component.type);\n return;\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (expectedTypes[i] === component.type) {\n return component;\n }\n }\n this.error(\"Expected component types: \" + expectedTypes);\n return null;\n }\n\n _own(component) {\n if (!this._ownedComponents) {\n this._ownedComponents = {};\n }\n if (!this._ownedComponents[component.id]) {\n this._ownedComponents[component.id] = component;\n }\n component.once(\"destroyed\", () => {\n delete this._ownedComponents[component.id];\n }, this);\n }\n\n /**\n * Protected method, called by sub-classes to queue a call to _update().\n * @protected\n * @param {Number} [priority=1]\n */\n _needUpdate(priority) {\n if (!this._updateScheduled) {\n this._updateScheduled = true;\n if (priority === 0) {\n this._doUpdate();\n } else {\n core.scheduleTask(this._doUpdate, this);\n }\n }\n }\n\n /**\n * @private\n */\n _doUpdate() {\n if (this._updateScheduled) {\n this._updateScheduled = false;\n if (this._update) {\n this._update();\n }\n }\n }\n\n /**\n * Protected virtual template method, optionally implemented\n * by sub-classes to perform a scheduled task.\n *\n * @protected\n */\n _update() {\n }\n\n /**\n * Destroys all {@link Component}s that are owned by this. These are Components that were instantiated with\n * this Component as their first constructor argument.\n */\n clear() {\n if (this._ownedComponents) {\n for (var id in this._ownedComponents) {\n if (this._ownedComponents.hasOwnProperty(id)) {\n const component = this._ownedComponents[id];\n component.destroy();\n delete this._ownedComponents[id];\n }\n }\n }\n }\n\n /**\n * Destroys this component.\n */\n destroy() {\n\n if (this.destroyed) {\n return;\n }\n\n /**\n * Fired when this Component is destroyed.\n * @event destroyed\n */\n this.fire(\"destroyed\", this.destroyed = true); // Must fire before we blow away subscription maps, below\n\n // Unsubscribe from child components and destroy then\n\n let id;\n let attachment;\n let component;\n let subs;\n let i;\n let len;\n\n if (this._attachments) {\n for (id in this._attachments) {\n if (this._attachments.hasOwnProperty(id)) {\n attachment = this._attachments[id];\n component = attachment.component;\n subs = attachment.subs;\n for (i = 0, len = subs.length; i < len; i++) {\n component.off(subs[i]);\n }\n if (attachment.managingLifecycle) {\n component.destroy();\n }\n }\n }\n }\n\n if (this._ownedComponents) {\n for (id in this._ownedComponents) {\n if (this._ownedComponents.hasOwnProperty(id)) {\n component = this._ownedComponents[id];\n component.destroy();\n delete this._ownedComponents[id];\n }\n }\n }\n\n this.scene._removeComponent(this);\n\n // Memory leak avoidance\n this._attached = {};\n this._attachments = null;\n this._subIdMap = null;\n this._subIdEvents = null;\n this._eventSubs = null;\n this._events = null;\n this._eventCallDepth = 0;\n this._ownedComponents = null;\n this._updateScheduled = false;\n }\n}\n\n/**\n * @private\n * @type {{PICKABLE: number, CLIPPABLE: number, BACKFACES: number, VISIBLE: number, SELECTED: number, OUTLINED: number, CULLED: number, RECEIVE_SHADOW: number, COLLIDABLE: number, XRAYED: number, CAST_SHADOW: number, EDGES: number, HIGHLIGHTED: number}}\n */\nconst ENTITY_FLAGS = {\n VISIBLE: 1,\n CULLED: 1 << 2,\n PICKABLE: 1 << 3,\n CLIPPABLE: 1 << 4,\n COLLIDABLE: 1 << 5,\n CAST_SHADOW: 1 << 6,\n RECEIVE_SHADOW: 1 << 7,\n XRAYED: 1 << 8,\n HIGHLIGHTED: 1 << 9,\n SELECTED: 1 << 10,\n EDGES: 1 << 11,\n BACKFACES: 1 << 12,\n TRANSPARENT: 1 << 13\n};\n\nconst tempFloatRGB = new Float32Array([0, 0, 0]);\nconst tempIntRGB = new Uint16Array([0, 0, 0]);\n\n/**\n * @private\n */\nclass PerformanceNode {\n\n /**\n * @private\n */\n constructor(model, isObject, id, meshes, flags, aabb) {\n\n this._isObject = isObject;\n\n /**\n * The {@link Scene} that contains this PerformanceNode.\n *\n * @property scene\n * @type {Scene}\n * @final\n */\n this.scene = model.scene;\n\n /**\n * The PerformanceModel that contains this PerformanceNode.\n * @property model\n * @type {PerformanceModel}\n * @final\n */\n this.model = model;\n\n /**\n * The PerformanceModelMesh instances contained by this PerformanceNode\n * @property meshes\n * @type {{Array of PerformanceModelMesh}}\n * @final\n */\n this.meshes = meshes;\n\n this._numTriangles = 0;\n\n for (var i = 0, len = this.meshes.length; i < len; i++) { // TODO: tidier way? Refactor?\n const mesh = this.meshes[i];\n mesh.parent = this;\n this._numTriangles += mesh.numTriangles;\n }\n\n /**\n * ID of this PerformanceNode, unique within the {@link Scene}.\n * @property id\n * @type {String|Number}\n * @final\n */\n this.id = id;\n\n /**\n * ID of the corresponding object within the originating system.\n *\n * @type {String}\n * @abstract\n */\n this.originalSystemId = math.unglobalizeObjectId(model.id, id);\n\n this._flags = flags;\n this._aabb = aabb;\n this._offsetAABB = math.AABB3(aabb);\n\n this._offset = math.vec3();\n\n if (this._isObject) {\n model.scene._registerObject(this);\n }\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Entity members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that PerformanceNode is an {@link Entity}.\n * @type {Boolean}\n */\n get isEntity() {\n return true;\n }\n\n /**\n * Always returns ````false```` because a PerformanceNode can never represent a model.\n *\n * @type {Boolean}\n */\n get isModel() {\n return false;\n }\n\n /**\n * Returns ````true```` if this PerformanceNode represents an object.\n *\n * When ````true```` the PerformanceNode will be registered by {@link PerformanceNode#id} in\n * {@link Scene#objects} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n */\n get isObject() {\n return this._isObject;\n }\n\n /**\n * World-space 3D axis-aligned bounding box (AABB) of this PerformanceNode.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Float64Array}\n */\n get aabb() {\n return this._offsetAABB;\n }\n\n /**\n * The approximate number of triangles in this PerformanceNode.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n /**\n * Sets if this PerformanceNode is visible.\n *\n * Only rendered when {@link PerformanceNode#visible} is ````true```` and {@link PerformanceNode#culled} is ````false````.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#visible} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n set visible(visible) {\n if (!!(this._flags & ENTITY_FLAGS.VISIBLE) === visible) {\n return; // Redundant update\n }\n if (visible) {\n this._flags = this._flags | ENTITY_FLAGS.VISIBLE;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.VISIBLE;\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setVisible(this._flags);\n }\n if (this._isObject) {\n this.model.scene._objectVisibilityUpdated(this);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this PerformanceNode is visible.\n *\n * Only rendered when {@link PerformanceNode#visible} is ````true```` and {@link PerformanceNode#culled} is ````false````.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#visible} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n get visible() {\n return this._getFlag(ENTITY_FLAGS.VISIBLE);\n }\n\n _getFlag(flag) {\n return !!(this._flags & flag);\n }\n\n /**\n * Sets if this PerformanceNode is highlighted.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#highlighted} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n */\n set highlighted(highlighted) {\n if (!!(this._flags & ENTITY_FLAGS.HIGHLIGHTED) === highlighted) {\n return; // Redundant update\n }\n if (highlighted) {\n this._flags = this._flags | ENTITY_FLAGS.HIGHLIGHTED;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.HIGHLIGHTED;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setHighlighted(this._flags);\n }\n if (this._isObject) {\n this.model.scene._objectHighlightedUpdated(this);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this PerformanceNode is highlighted.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#highlighted} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n */\n get highlighted() {\n return this._getFlag(ENTITY_FLAGS.HIGHLIGHTED);\n }\n\n /**\n * Sets if this PerformanceNode is xrayed.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#xrayed} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n */\n set xrayed(xrayed) {\n if (!!(this._flags & ENTITY_FLAGS.XRAYED) === xrayed) {\n return; // Redundant update\n }\n if (xrayed) {\n this._flags = this._flags | ENTITY_FLAGS.XRAYED;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.XRAYED;\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setXRayed(this._flags);\n }\n if (this._isObject) {\n this.model.scene._objectXRayedUpdated(this);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this PerformanceNode is xrayed.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#xrayed} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n */\n get xrayed() {\n return this._getFlag(ENTITY_FLAGS.XRAYED);\n }\n\n /**\n * Gets if this PerformanceNode is selected.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#selected} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n */\n set selected(selected) {\n if (!!(this._flags & ENTITY_FLAGS.SELECTED) === selected) {\n return; // Redundant update\n }\n if (selected) {\n this._flags = this._flags | ENTITY_FLAGS.SELECTED;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.SELECTED;\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setSelected(this._flags);\n }\n if (this._isObject) {\n this.model.scene._objectSelectedUpdated(this);\n }\n this.model.glRedraw();\n }\n\n /**\n * Sets if this PerformanceNode is selected.\n *\n * When both {@link PerformanceNode#isObject} and {@link PerformanceNode#selected} are ````true```` the PerformanceNode will be\n * registered by {@link PerformanceNode#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n */\n get selected() {\n return this._getFlag(ENTITY_FLAGS.SELECTED);\n }\n\n /**\n * Sets if this PerformanceNode's edges are enhanced.\n *\n * @type {Boolean}\n */\n set edges(edges) {\n if (!!(this._flags & ENTITY_FLAGS.EDGES) === edges) {\n return; // Redundant update\n }\n if (edges) {\n this._flags = this._flags | ENTITY_FLAGS.EDGES;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.EDGES;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setEdges(this._flags);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this PerformanceNode's edges are enhanced.\n *\n * @type {Boolean}\n */\n get edges() {\n return this._getFlag(ENTITY_FLAGS.EDGES);\n }\n\n /**\n * Sets if this PerformanceNode is culled.\n *\n * Only rendered when {@link PerformanceNode#visible} is ````true```` and {@link PerformanceNode#culled} is ````false````.\n *\n * @type {Boolean}\n */\n set culled(culled) {\n if (!!(this._flags & ENTITY_FLAGS.CULLED) === culled) {\n return; // Redundant update\n }\n if (culled) {\n this._flags = this._flags | ENTITY_FLAGS.CULLED;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.CULLED;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setCulled(this._flags);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this PerformanceNode is culled.\n *\n * Only rendered when {@link PerformanceNode#visible} is ````true```` and {@link PerformanceNode#culled} is ````false````.\n *\n * @type {Boolean}\n */\n get culled() {\n return this._getFlag(ENTITY_FLAGS.CULLED);\n }\n\n /**\n * Sets if this PerformanceNode is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n set clippable(clippable) {\n if ((!!(this._flags & ENTITY_FLAGS.CLIPPABLE)) === clippable) {\n return; // Redundant update\n }\n if (clippable) {\n this._flags = this._flags | ENTITY_FLAGS.CLIPPABLE;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.CLIPPABLE;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setClippable(this._flags);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets if this PerformanceNode is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._getFlag(ENTITY_FLAGS.CLIPPABLE);\n }\n\n /**\n * Sets if this PerformanceNode is included in boundary calculations.\n *\n * @type {Boolean}\n */\n set collidable(collidable) {\n if (!!(this._flags & ENTITY_FLAGS.COLLIDABLE) === collidable) {\n return; // Redundant update\n }\n if (collidable) {\n this._flags = this._flags | ENTITY_FLAGS.COLLIDABLE;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.COLLIDABLE;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setCollidable(this._flags);\n }\n }\n\n /**\n * Gets if this PerformanceNode is included in boundary calculations.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._getFlag(ENTITY_FLAGS.COLLIDABLE);\n }\n\n /**\n * Sets if this PerformanceNode is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n set pickable(pickable) {\n if (!!(this._flags & ENTITY_FLAGS.PICKABLE) === pickable) {\n return; // Redundant update\n }\n if (pickable) {\n this._flags = this._flags | ENTITY_FLAGS.PICKABLE;\n } else {\n this._flags = this._flags & ~ENTITY_FLAGS.PICKABLE;\n }\n for (var i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setPickable(this._flags);\n }\n }\n\n /**\n * Gets if this PerformanceNode is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n get pickable() {\n return this._getFlag(ENTITY_FLAGS.PICKABLE);\n }\n\n /**\n * Sets the PerformanceNode's RGB colorize color.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n set colorize(color) { // [0..1, 0..1, 0..1]\n if (color) {\n tempIntRGB[0] = Math.floor(color[0] * 255.0); // Quantize\n tempIntRGB[1] = Math.floor(color[1] * 255.0);\n tempIntRGB[2] = Math.floor(color[2] * 255.0);\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setColorize(tempIntRGB);\n }\n } else {\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setColorize(null);\n }\n }\n if (this._isObject) {\n const colorized = (!!color);\n this.scene._objectColorizeUpdated(this, colorized);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets the PerformanceNode's RGB colorize color.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n get colorize() { // [0..1, 0..1, 0..1]\n if (this.meshes.length === 0) {\n return null;\n }\n const colorize = this.meshes[0]._colorize;\n tempFloatRGB[0] = colorize[0] / 255.0; // Unquantize\n tempFloatRGB[1] = colorize[1] / 255.0;\n tempFloatRGB[2] = colorize[2] / 255.0;\n return tempFloatRGB;\n }\n\n /**\n * Sets the PerformanceNode's opacity factor, multiplies by the PerformanceNode's rendered fragment alphas.\n *\n * This is a factor in range ````[0..1]````.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n if (this.meshes.length === 0) {\n return;\n }\n const opacityUpdated = (opacity !== null && opacity !== undefined);\n const lastOpacityQuantized = this.meshes[0]._colorize[3];\n let opacityQuantized = 255;\n if (opacityUpdated) {\n if (opacity < 0) {\n opacity = 0;\n } else if (opacity > 1) {\n opacity = 1;\n }\n opacityQuantized = Math.floor(opacity * 255.0); // Quantize\n if (lastOpacityQuantized === opacityQuantized) {\n return;\n }\n } else {\n opacityQuantized = 255.0;\n if (lastOpacityQuantized === opacityQuantized) {\n return;\n }\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setOpacity(opacityQuantized, this._flags);\n }\n if (this._isObject) {\n this.scene._objectOpacityUpdated(this, opacityUpdated);\n }\n this.model.glRedraw();\n }\n\n /**\n * Gets the PerformanceNode's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n if (this.meshes.length > 0) {\n return (this.meshes[0]._colorize[3] / 255.0);\n } else {\n return 1.0;\n }\n }\n\n /**\n * Sets the PerformanceNode's 3D World-space offset.\n *\n * The offset dynamically translates the PerformanceNode in World-space.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * Provide a null or undefined value to reset to the default value.\n *\n * @type {Number[]}\n */\n set offset(offset) {\n if (offset) {\n this._offset[0] = offset[0];\n this._offset[1] = offset[1];\n this._offset[2] = offset[2];\n } else {\n this._offset[0] = 0;\n this._offset[1] = 0;\n this._offset[2] = 0;\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._setOffset(this._offset);\n }\n this._offsetAABB[0] = this._aabb[0] + this._offset[0];\n this._offsetAABB[1] = this._aabb[1] + this._offset[1];\n this._offsetAABB[2] = this._aabb[2] + this._offset[2];\n this._offsetAABB[3] = this._aabb[3] + this._offset[0];\n this._offsetAABB[4] = this._aabb[4] + this._offset[1];\n this._offsetAABB[5] = this._aabb[5] + this._offset[2];\n this.scene._aabbDirty = true;\n this.scene._objectOffsetUpdated(this, offset);\n this.model._aabbDirty = true;\n this.model.glRedraw();\n }\n\n /**\n * Gets the PerformanceNode's 3D World-space offset.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get offset() {\n return this._offset;\n }\n\n /**\n * Sets if to this PerformanceNode casts shadows.\n *\n * @type {Boolean}\n */\n set castsShadow(pickable) { // TODO\n\n }\n\n /**\n * Gets if this PerformanceNode casts shadows.\n *\n * @type {Boolean}\n */\n get castsShadow() { // TODO\n return false;\n }\n\n /**\n * Whether or not this PerformanceNode can have shadows cast upon it\n *\n * @type {Boolean}\n */\n set receivesShadow(pickable) { // TODO\n\n }\n\n /**\n * Whether or not this PerformanceNode can have shadows cast upon it\n *\n * @type {Boolean}\n */\n get receivesShadow() { // TODO\n return false;\n }\n\n /**\n * Gets if Scalable Ambient Obscurance (SAO) will apply to this PerformanceNode.\n *\n * SAO is configured by the Scene's {@link SAO} component.\n *\n * @type {Boolean}\n * @abstract\n */\n get saoEnabled() {\n return this.model.saoEnabled;\n }\n\n _finalize() {\n const scene = this.model.scene;\n if (this._isObject) {\n if (this.visible) {\n scene._objectVisibilityUpdated(this);\n }\n if (this.highlighted) {\n scene._objectHighlightedUpdated(this);\n }\n if (this.xrayed) {\n scene._objectXRayedUpdated(this);\n }\n if (this.selected) {\n scene._objectSelectedUpdated(this);\n }\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._finalize(this._flags);\n }\n }\n\n _destroy() { // Called by PerformanceModel\n const scene = this.model.scene;\n if (this._isObject) {\n scene._deregisterObject(this);\n if (this.visible) {\n scene._objectVisibilityUpdated(this, false);\n }\n if (this.xrayed) {\n scene._objectXRayedUpdated(this);\n }\n if (this.selected) {\n scene._objectSelectedUpdated(this);\n }\n if (this.highlighted) {\n scene._objectHighlightedUpdated(this);\n }\n this.scene._objectColorizeUpdated(this, false);\n this.scene._objectOpacityUpdated(this, false);\n this.scene._objectOffsetUpdated(this, false);\n }\n for (let i = 0, len = this.meshes.length; i < len; i++) {\n this.meshes[i]._destroy();\n }\n scene._aabbDirty = true;\n }\n\n}\n\nconst tempVec3a$$ = math.vec3();\n\n/**\n * Given a view matrix and a relative-to-center (RTC) coordinate origin, returns a view matrix\n * to transform RTC coordinates to View-space.\n *\n * The returned view matrix is\n *\n * @private\n */\nconst createRTCViewMat = (function () {\n\n const tempMat = new Float32Array(16);\n const rtcCenterWorld = new Float64Array(4);\n const rtcCenterView = new Float64Array(4);\n\n return function (viewMat, rtcCenter, rtcViewMat = tempMat) {\n rtcCenterWorld[0] = rtcCenter[0];\n rtcCenterWorld[1] = rtcCenter[1];\n rtcCenterWorld[2] = rtcCenter[2];\n rtcCenterWorld[3] = 1;\n math.transformVec4(viewMat, rtcCenterWorld, rtcCenterView);\n math.setMat4Translation(viewMat, rtcCenterView, rtcViewMat);\n return rtcViewMat;\n }\n}());\n\n/**\n * Converts a World-space 3D position to RTC.\n *\n * Given a double-precision World-space position, returns a double-precision relative-to-center (RTC) center pos\n * and a single-precision offset fom that center.\n * @private\n * @param {Float64Array} worldPos The World-space position.\n * @param {Float64Array} rtcCenter Double-precision relative-to-center (RTC) center pos.\n * @param {Float32Array} rtcPos Single-precision offset fom that center.\n */\nfunction worldToRTCPos(worldPos, rtcCenter, rtcPos) {\n\n const xHigh = Float32Array.from([worldPos[0]])[0];\n const xLow = worldPos[0] - xHigh;\n\n const yHigh = Float32Array.from([worldPos[1]])[0];\n const yLow = worldPos[1] - yHigh;\n\n const zHigh = Float32Array.from([worldPos[2]])[0];\n const zLow = worldPos[2] - zHigh;\n\n rtcCenter[0] = xHigh;\n rtcCenter[1] = yHigh;\n rtcCenter[2] = zHigh;\n\n rtcPos[0] = xLow;\n rtcPos[1] = yLow;\n rtcPos[2] = zLow;\n}\n\n\n/**\n * Converts a flat array of double-precision positions to RTC positions.\n *\n * Returns the RTC positions, along with a computed RTC center for those positions.\n *\n * When computing the RTC position, this function uses a modulus operation to ensure that, whenever possible,\n * identical RTC positions are reused for different positions arrays.\n *\n * @private\n * @param {Float64Array} worldPositions Flat array of World-space 3D positions.\n * @param {Float64Array} rtcPositions Outputs the computed flat array of 3D RTC positions.\n * @param {Float64Array} rtcCenter Outputs the computed double-precision relative-to-center (RTC) center pos.\n * @param {Number} [cellSize=10000000] The size of each coordinate cell within the RTC coordinate system.\n * @returns {Boolean} ````True```` if the positions actually needed conversion to RTC, else ````false````. When\n * ````false````, we can safely ignore the data returned in ````rtcPositions```` and ````rtcCenter````,\n * since ````rtcCenter```` will equal ````[0,0,0]````, and ````rtcPositions```` will contain identical values to ````positions````.\n */\nfunction worldToRTCPositions(worldPositions, rtcPositions, rtcCenter, cellSize = 10000000) {\n\n const center = math.getPositionsCenter(worldPositions, tempVec3a$$);\n\n const rtcCenterX = Math.round(center[0] / cellSize) * cellSize;\n const rtcCenterY = Math.round(center[1] / cellSize) * cellSize;\n const rtcCenterZ = Math.round(center[2] / cellSize) * cellSize;\n\n for (let i = 0, len = worldPositions.length; i < len; i += 3) {\n rtcPositions[i + 0] = worldPositions[i + 0] - rtcCenterX;\n rtcPositions[i + 1] = worldPositions[i + 1] - rtcCenterY;\n rtcPositions[i + 2] = worldPositions[i + 2] - rtcCenterZ;\n }\n\n rtcCenter[0] = rtcCenterX;\n rtcCenter[1] = rtcCenterY;\n rtcCenter[2] = rtcCenterZ;\n\n const rtcNeeded = (rtcCenter[0] !== 0 || rtcCenter[1] !== 0 || rtcCenter[2] !== 0);\n\n return rtcNeeded;\n}\n\n/**\n * Given a 3D plane defined by distance from origin and direction, and an RTC center position,\n * return a plane position that is relative to the RTC center.\n *\n * @private\n * @param dist\n * @param dir\n * @param rtcCenter\n * @param rtcPlanePos\n * @returns {*}\n */\nfunction getPlaneRTCPos(dist, dir, rtcCenter, rtcPlanePos) {\n const rtcCenterToPlaneDist = math.dotVec3(dir, rtcCenter) + dist;\n const dirNormalized = math.normalizeVec3(dir, tempVec3a$$);\n math.mulVec3Scalar(dirNormalized, -rtcCenterToPlaneDist, rtcPlanePos);\n return rtcPlanePos;\n}\n\nconst tempVec4a$8 = math.vec4();\nconst tempVec4b$8 = math.vec4();\n\n\n/**\n * @desc Tracks the World, View and Canvas coordinates, and visibility, of a position within a {@link Scene}.\n *\n * ## Position\n *\n * A Marker holds its position in the World, View and Canvas coordinate systems in three properties:\n *\n * * {@link Marker#worldPos} holds the Marker's 3D World-space coordinates. This property can be dynamically updated. The Marker will fire a \"worldPos\" event whenever this property changes.\n * * {@link Marker#viewPos} holds the Marker's 3D View-space coordinates. This property is read-only, and is automatically updated from {@link Marker#worldPos} and the current {@link Camera} position. The Marker will fire a \"viewPos\" event whenever this property changes.\n * * {@link Marker#canvasPos} holds the Marker's 2D Canvas-space coordinates. This property is read-only, and is automatically updated from {@link Marker#canvasPos} and the current {@link Camera} position and projection. The Marker will fire a \"canvasPos\" event whenever this property changes.\n *\n * ## Visibility\n *\n * {@link Marker#visible} indicates if the Marker is currently visible. The Marker will fire a \"visible\" event whenever {@link Marker#visible} changes.\n *\n * This property will be ````false```` when:\n *\n * * {@link Marker#entity} is set to an {@link Entity}, and {@link Entity#visible} is ````false````,\n * * {@link Marker#occludable} is ````true```` and the Marker is occluded by some {@link Entity} in the 3D view, or\n * * {@link Marker#canvasPos} is outside the boundary of the {@link Canvas}.\n *\n * ## Usage\n *\n * In the example below, we'll create a Marker that's associated with a {@link Mesh} (which a type of {@link Entity}).\n *\n * We'll configure our Marker to\n * become invisible whenever it's occluded by any Entities in the canvas.\n *\n * We'll also demonstrate how to query the Marker's visibility status and position (in the World, View and\n * Canvas coordinate systems), and how to subscribe to change events on those properties.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#Markers_SimpleExample)]\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin, Marker} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Create the torus Mesh\n * // Recall that a Mesh is an Entity\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0,0,0],\n * radius: 1.0,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * backfaces: true\n * })\n * });\n *\n * // Create the Marker, associated with our Mesh Entity\n * const myMarker = new Marker({\n * entity: entity,\n * worldPos: [10,0,0],\n * occludable: true\n * });\n *\n * // Get the Marker's current World, View and Canvas coordinates\n * const worldPos = myMarker.worldPos; // 3D World-space position\n * const viewPos = myMarker.viewPos; // 3D View-space position\n * const canvasPos = myMarker.canvasPos; // 2D Canvas-space position\n *\n * const visible = myMarker.visible;\n *\n * // Listen for change of the Marker's 3D World-space position\n * myMarker.on(\"worldPos\", function(worldPos) {\n * //...\n * });\n *\n * // Listen for change of the Marker's 3D View-space position, which happens\n * // when either worldPos was updated or the Camera was moved\n * myMarker.on(\"viewPos\", function(viewPos) {\n * //...\n * });\n *\n * // Listen for change of the Marker's 2D Canvas-space position, which happens\n * // when worldPos or viewPos was updated, or Camera's projection was updated\n * myMarker.on(\"canvasPos\", function(canvasPos) {\n * //...\n * });\n *\n * // Listen for change of Marker visibility. The Marker becomes invisible when it falls outside the canvas,\n * // has an Entity that is also invisible, or when an Entity occludes the Marker's position in the 3D view.\n * myMarker.on(\"visible\", function(visible) { // Marker visibility has changed\n * if (visible) {\n * this.log(\"Marker is visible\");\n * } else {\n * this.log(\"Marker is invisible\");\n * }\n * });\n *\n * // Listen for destruction of Marker\n * myMarker.on(\"destroyed\", () => {\n * //...\n * });\n * ````\n */\nclass Marker extends Component {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this Marker as well.\n * @param {*} [cfg] Marker configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Entity} [cfg.entity] Entity to associate this Marker with. When the Marker has an Entity, then {@link Marker#visible} will always be ````false```` if {@link Entity#visible} is false.\n * @param {Boolean} [cfg.occludable=false] Indicates whether or not this Marker is hidden (ie. {@link Marker#visible} is ````false```` whenever occluded by {@link Entity}s in the {@link Scene}.\n * @param {Number[]} [cfg.worldPos=[0,0,0]] World-space 3D Marker position.\n */\n constructor(owner, cfg) {\n\n super(owner, cfg);\n\n this._entity = null;\n this._visible = null;\n this._worldPos = math.vec3();\n this._rtcCenter = math.vec3();\n this._rtcPos = math.vec3();\n this._viewPos = math.vec3();\n this._canvasPos = math.vec2();\n this._occludable = false;\n\n this._onCameraViewMatrix = this.scene.camera.on(\"matrix\", () => {\n this._viewPosDirty = true;\n this._needUpdate();\n });\n\n this._onCameraProjMatrix = this.scene.camera.on(\"projMatrix\", () => {\n this._canvasPosDirty = true;\n this._needUpdate();\n });\n\n this._onEntityDestroyed = null;\n this._onEntityModelDestroyed = null;\n\n this._renderer.addMarker(this);\n\n this.entity = cfg.entity;\n this.worldPos = cfg.worldPos;\n this.occludable = cfg.occludable;\n }\n\n _update() { // this._needUpdate() schedules this for next tick\n if (this._viewPosDirty) {\n math.transformPoint3(this.scene.camera.viewMatrix, this._worldPos, this._viewPos);\n this._viewPosDirty = false;\n this._canvasPosDirty = true;\n this.fire(\"viewPos\", this._viewPos);\n }\n if (this._canvasPosDirty) {\n tempVec4a$8.set(this._viewPos);\n tempVec4a$8[3] = 1.0;\n math.transformPoint4(this.scene.camera.projMatrix, tempVec4a$8, tempVec4b$8);\n const aabb = this.scene.canvas.boundary;\n this._canvasPos[0] = Math.floor((1 + tempVec4b$8[0] / tempVec4b$8[3]) * aabb[2] / 2);\n this._canvasPos[1] = Math.floor((1 - tempVec4b$8[1] / tempVec4b$8[3]) * aabb[3] / 2);\n this._canvasPosDirty = false;\n this.fire(\"canvasPos\", this._canvasPos);\n }\n }\n\n _setVisible(visible) { // Called by VisibilityTester and this._entity.on(\"destroyed\"..)\n if (this._visible === visible) ;\n this._visible = visible;\n this.fire(\"visible\", this._visible);\n }\n\n /**\n * Sets the {@link Entity} this Marker is associated with.\n *\n * An Entity is optional. When the Marker has an Entity, then {@link Marker#visible} will always be ````false````\n * if {@link Entity#visible} is false.\n *\n * @type {Entity}\n */\n set entity(entity) {\n if (this._entity) {\n if (this._entity === entity) {\n return;\n }\n if (this._onEntityDestroyed !== null) {\n this._entity.off(this._onEntityDestroyed);\n this._onEntityDestroyed = null;\n }\n if (this._onEntityModelDestroyed !== null) {\n this._entity.model.off(this._onEntityModelDestroyed);\n this._onEntityModelDestroyed = null;\n }\n }\n this._entity = entity;\n if (this._entity) {\n if (this._entity instanceof PerformanceNode) {\n this._onEntityModelDestroyed = this._entity.model.on(\"destroyed\", () => { // PerformanceNode does not fire events, and cannot exist beyond its PerformanceModel\n this._entity = null; // Marker now may become visible, if it was synched to invisible Entity\n this._onEntityModelDestroyed = null;\n });\n } else {\n this._onEntityDestroyed = this._entity.on(\"destroyed\", () => {\n this._entity = null;\n this._onEntityDestroyed = null;\n });\n }\n }\n this.fire(\"entity\", this._entity, true /* forget */);\n }\n\n /**\n * Gets the {@link Entity} this Marker is associated with.\n *\n * @type {Entity}\n */\n get entity() {\n return this._entity;\n }\n\n /**\n * Sets whether occlusion testing is performed for this Marker.\n *\n * When this is ````true````, then {@link Marker#visible} will be ````false```` whenever the Marker is occluded by an {@link Entity} in the 3D view.\n *\n * The {@link Scene} periodically occlusion-tests all Markers on every 20th \"tick\" (which represents a rendered frame). We\n * can adjust that frequency via property {@link Scene#ticksPerOcclusionTest}.\n *\n * @type {Boolean}\n */\n set occludable(occludable) {\n occludable = !!occludable;\n if (occludable === this._occludable) {\n return;\n }\n this._occludable = occludable;\n }\n\n /**\n * Gets whether occlusion testing is performed for this Marker.\n *\n * When this is ````true````, then {@link Marker#visible} will be ````false```` whenever the Marker is occluded by an {@link Entity} in the 3D view.\n *\n * @type {Boolean}\n */\n get occludable() {\n return this._occludable;\n }\n\n /**\n * Sets the World-space 3D position of this Marker.\n *\n * Fires a \"worldPos\" event with new World position.\n *\n * @type {Number[]}\n */\n set worldPos(worldPos) {\n this._worldPos.set(worldPos || [0, 0, 0]);\n worldToRTCPos(this._worldPos, this._rtcCenter, this._rtcPos);\n if (this._occludable) {\n this._renderer.markerWorldPosUpdated(this);\n }\n this._viewPosDirty = true;\n this.fire(\"worldPos\", this._worldPos);\n }\n\n /**\n * Gets the World-space 3D position of this Marker.\n *\n * @type {Number[]}\n */\n get worldPos() {\n return this._worldPos;\n }\n\n /**\n * Gets the RTC center of this Marker.\n *\n * This is automatically calculated from {@link Marker#worldPos}.\n *\n * @type {Number[]}\n */\n get rtcCenter() {\n return this._rtcCenter;\n }\n\n /**\n * Gets the RTC position of this Marker.\n *\n * This is automatically calculated from {@link Marker#worldPos}.\n *\n * @type {Number[]}\n */\n get rtcPos() {\n return this._rtcPos;\n }\n\n /**\n * View-space 3D coordinates of this Marker.\n *\n * This property is read-only and is automatically calculated from {@link Marker#worldPos} and the current {@link Camera} position.\n *\n * The Marker fires a \"viewPos\" event whenever this property changes.\n *\n * @type {Number[]}\n * @final\n */\n get viewPos() {\n this._update();\n return this._viewPos;\n }\n\n /**\n * Canvas-space 2D coordinates of this Marker.\n *\n * This property is read-only and is automatically calculated from {@link Marker#worldPos} and the current {@link Camera} position and projection.\n *\n * The Marker fires a \"canvasPos\" event whenever this property changes.\n *\n * @type {Number[]}\n * @final\n */\n get canvasPos() {\n this._update();\n return this._canvasPos;\n }\n\n /**\n * Indicates if this Marker is currently visible.\n *\n * This is read-only and is automatically calculated.\n *\n * The Marker is **invisible** whenever:\n *\n * * {@link Marker#canvasPos} is currently outside the canvas,\n * * {@link Marker#entity} is set to an {@link Entity} that has {@link Entity#visible} ````false````, or\n * * or {@link Marker#occludable} is ````true```` and the Marker is currently occluded by an Entity in the 3D view.\n *\n * The Marker fires a \"visible\" event whenever this property changes.\n *\n * @type {Boolean}\n * @final\n */\n get visible() {\n return !!this._visible;\n }\n\n /**\n * Destroys this Marker.\n */\n destroy() {\n this.fire(\"destroyed\", true);\n this.scene.camera.off(this._onCameraViewMatrix);\n this.scene.camera.off(this._onCameraProjMatrix);\n if (this._entity) {\n if (this._onEntityDestroyed !== null) {\n this._entity.off(this._onEntityDestroyed);\n }\n if (this._onEntityModelDestroyed !== null) {\n this._entity.model.off(this._onEntityModelDestroyed);\n }\n }\n this._renderer.removeMarker(this);\n super.destroy();\n }\n}\n\n/** @private */\nclass Wire {\n\n constructor(parentElement, cfg = {}) {\n\n this._wire = document.createElement('div');\n this._wire.className += this._wire.className ? ' viewer-ruler-wire' : 'viewer-ruler-wire';\n this._visible = true;\n\n var wire = this._wire;\n var style = wire.style;\n\n this._thickness = cfg.thickness || 1.0;\n\n style.border = \"solid \" + this._thickness + \"px \" + (cfg.color || \"black\");\n style.position = \"absolute\";\n style[\"z-index\"] = \"2000001\";\n style.width = 0 + \"px\";\n style.height = 0 + \"px\";\n style.visibility = \"visible\";\n style.top = 0 + \"px\";\n style.left = 0 + \"px\";\n style[\"pointer-events\"] = \"none\";\n style['-webkit-transform-origin'] = \"0 0\";\n style['-moz-transform-origin'] = \"0 0\";\n style['-ms-transform-origin'] = \"0 0\";\n style['-o-transform-origin'] = \"0 0\";\n style['transform-origin'] = \"0 0\";\n style['-webkit-transform'] = 'rotate(0deg)';\n style['-moz-transform'] = 'rotate(0deg)';\n style['-ms-transform'] = 'rotate(0deg)';\n style['-o-transform'] = 'rotate(0deg)';\n style['transform'] = 'rotate(0deg)';\n style[\"opacity\"] = 1.0;\n\n parentElement.appendChild(wire);\n\n this._x1 = 0;\n this._y1 = 0;\n this._x2 = 0;\n this._y2 = 0;\n\n this._update();\n }\n\n _update() {\n\n var length = Math.abs(Math.sqrt((this._x1 - this._x2) * (this._x1 - this._x2) + (this._y1 - this._y2) * (this._y1 - this._y2)));\n var angle = Math.atan2(this._y2 - this._y1, this._x2 - this._x1) * 180.0 / Math.PI;\n\n var style = this._wire.style;\n style[\"width\"] = Math.round(length) + 'px';\n style[\"left\"] = Math.round(this._x1) + 'px';\n style[\"top\"] = Math.round(this._y1) + 'px';\n style['-webkit-transform'] = 'rotate(' + angle + 'deg)';\n style['-moz-transform'] = 'rotate(' + angle + 'deg)';\n style['-ms-transform'] = 'rotate(' + angle + 'deg)';\n style['-o-transform'] = 'rotate(' + angle + 'deg)';\n style['transform'] = 'rotate(' + angle + 'deg)';\n style[\"pointer-events\"] = \"none\";\n }\n\n setStartAndEnd(x1, y1, x2, y2) {\n this._x1 = x1;\n this._y1 = y1;\n this._x2 = x2;\n this._y2 = y2;\n this._update();\n }\n\n setColor(color) {\n this._wire.style.border = \"solid \" + this._thickness + \"px \" + (color || \"black\");\n }\n\n setOpacity(opacity) {\n this._wire.style.opacity = opacity;\n }\n\n setVisible(visible) {\n visible = !!visible;\n if (this._visible === visible) {\n return;\n }\n this._visible = visible;\n this._wire.style.visibility = this._visible ? \"visible\" : \"hidden\";\n }\n\n destroy(visible) {\n this._wire.parentElement.removeChild(this._wire);\n }\n}\n\n/** @private */\nclass Dot {\n\n constructor(parentElement, cfg = {}) {\n\n this._x = 0;\n this._y = 0;\n\n this._visible = true;\n this._dot = document.createElement('div');\n this._dot.className += this._dot.className ? ' viewer-ruler-dot' : 'viewer-ruler-dot';\n\n var dot = this._dot;\n var style = dot.style;\n\n style[\"border-radius\"] = 25 + \"px\";\n style.border = \"solid 2px white\";\n style.background = \"lightgreen\";\n style.position = \"absolute\";\n style[\"z-index\"] = \"40000005\";\n style.width = 8 + \"px\";\n style.height = 8 + \"px\";\n style.visibility = \"visible\";\n style.top = 0 + \"px\";\n style.left = 0 + \"px\";\n style[\"box-shadow\"] = \"0 2px 5px 0 #182A3D;\";\n style[\"pointer-events\"] = \"none\";\n style[\"opacity\"] = 1.0;\n\n parentElement.appendChild(dot);\n\n this.setPos(cfg.x || 0, cfg.y || 0);\n this.setFillColor(cfg.fillColor);\n this.setBorderColor(cfg.borderColor);\n this.setClickable(false);\n }\n\n setPos(x, y) {\n this._x = x;\n this._y = y;\n var style = this._dot.style;\n style[\"left\"] = (Math.round(x) - 5) + 'px';\n style[\"top\"] = (Math.round(y) - 5) + 'px';\n }\n\n setFillColor(color) {\n this._dot.style.background = color || \"lightgreen\";\n }\n\n setBorderColor(color) {\n this._dot.style.border = \"solid 2px\" + (color || \"black\");\n }\n\n setOpacity(opacity) {\n this._dot.style.opacity = opacity;\n }\n\n setVisible(visible) {\n if (this._visible === visible) {\n return;\n }\n this._visible = !!visible;\n this._dot.style.visibility = this._visible ? \"visible\" : \"hidden\";\n }\n\n setClickable(clickable) {\n this._dot.style[\"pointer-events\"] = (!!clickable) ? \"all\" : \"none\";\n }\n\n destroy() {\n this.setVisible(false);\n this._dot.parentElement.removeChild(this._dot);\n }\n}\n\n/** @private */\nclass Label {\n\n constructor(parentElement, cfg = {}) {\n\n this._prefix = cfg.prefix || \"\";\n this._x = 0;\n this._y = 0;\n this._visible = true;\n\n this._label = document.createElement('div');\n this._label.className += this._label.className ? ' viewer-ruler-label' : 'viewer-ruler-label';\n\n var label = this._label;\n var style = label.style;\n\n style[\"border-radius\"] = 5 + \"px\";\n style.color = \"white\";\n style.padding = \"4px\";\n style.border = \"solid 0px white\";\n style.background = \"lightgreen\";\n style.position = \"absolute\";\n style[\"z-index\"] = \"5000005\";\n style.width = \"auto\";\n style.height = \"auto\";\n style.visibility = \"visible\";\n style.top = 0 + \"px\";\n style.left = 0 + \"px\";\n style[\"pointer-events\"] = \"none\";\n style[\"opacity\"] = 1.0;\n label.innerText = \"\";\n\n parentElement.appendChild(label);\n\n this.setPos(cfg.x || 0, cfg.y || 0);\n this.setFillColor(cfg.fillColor);\n this.setBorderColor(cfg.borderColor);\n this.setText(cfg.text);\n }\n\n setPos(x, y) {\n this._x = x;\n this._y = y;\n var style = this._label.style;\n style[\"left\"] = (Math.round(x) - 20) + 'px';\n style[\"top\"] = (Math.round(y) - 12) + 'px';\n }\n\n setPosOnWire(x1, y1, x2, y2) {\n var x = x1 + ((x2 - x1) * 0.5);\n var y = y1 + ((y2 - y1) * 0.5);\n var style = this._label.style;\n style[\"left\"] = (Math.round(x) - 20) + 'px';\n style[\"top\"] = (Math.round(y) - 12) + 'px';\n }\n\n setPosBetweenWires(x1, y1, x2, y2, x3, y3) {\n var x = (x1 + x2 + x3) / 3;\n var y = (y1 + y2 + y3) / 3;\n var style = this._label.style;\n style[\"left\"] = (Math.round(x) - 20) + 'px';\n style[\"top\"] = (Math.round(y) - 12) + 'px';\n }\n\n setText(text) {\n this._label.innerHTML = this._prefix + (text || \"\");\n }\n\n setFillColor(color) {\n this._label.style.background = color || \"lightgreen\";\n }\n\n setBorderColor(color) {\n this._label.style.border = \"solid 2px\" + (color || \"black\");\n }\n\n setOpacity(opacity) {\n this._label.style.opacity = opacity;\n }\n\n setVisible(visible) {\n if (this._visible === visible) {\n return;\n }\n this._visible = !!visible;\n this._label.style.visibility = this._visible ? \"visible\" : \"hidden\";\n }\n\n destroy() {\n this._label.parentElement.removeChild(this._label);\n }\n}\n\nvar originVec = math.vec3();\nvar targetVec = math.vec3();\n\n/**\n * @desc Measures the angle indicated by three 3D points.\n *\n * See {@link AngleMeasurementsPlugin} for more info.\n */\nclass AngleMeasurement extends Component {\n\n /**\n * @private\n */\n constructor(plugin, cfg = {}) {\n\n super(plugin.viewer.scene, cfg);\n\n /**\n * The {@link AngleMeasurementsPlugin} that owns this AngleMeasurement.\n * @type {AngleMeasurementsPlugin}\n */\n this.plugin = plugin;\n\n this._container = cfg.container;\n if (!this._container) {\n throw \"config missing: container\";\n }\n\n var scene = this.plugin.viewer.scene;\n\n this._originMarker = new Marker(scene, cfg.origin);\n this._cornerMarker = new Marker(scene, cfg.corner);\n this._targetMarker = new Marker(scene, cfg.target);\n\n this._originWorld = math.vec3();\n this._cornerWorld = math.vec3();\n this._targetWorld = math.vec3();\n\n this._wp = new Float64Array(12);\n this._vp = new Float64Array(12);\n this._pp = new Float64Array(12);\n this._cp = new Int16Array(6);\n\n this._originDot = new Dot(this._container, {});\n this._cornerDot = new Dot(this._container, {});\n this._targetDot = new Dot(this._container, {});\n\n this._originWire = new Wire(this._container, {color: \"blue\", thickness: 1});\n this._targetWire = new Wire(this._container, {color: \"red\", thickness: 1});\n\n this._angleLabel = new Label(this._container, {fillColor: \"#00BBFF\", prefix: \"\", text: \"\"});\n\n this._wpDirty = false;\n this._vpDirty = false;\n this._cpDirty = false;\n\n this._visible = false;\n this._originVisible = false;\n this._cornerVisible = false;\n this._targetVisible = false;\n\n this._originWireVisible = false;\n this._targetWireVisible = false;\n\n this._angleVisible = false;\n\n this._originMarker.on(\"worldPos\", (value) => {\n this._originWorld.set(value || [0, 0, 0]);\n this._wpDirty = true;\n this._needUpdate(0); // No lag\n });\n\n this._cornerMarker.on(\"worldPos\", (value) => {\n this._cornerWorld.set(value || [0, 0, 0]);\n this._wpDirty = true;\n this._needUpdate(0); // No lag\n });\n\n this._targetMarker.on(\"worldPos\", (value) => {\n this._targetWorld.set(value || [0, 0, 0]);\n this._wpDirty = true;\n this._needUpdate(0); // No lag\n });\n\n this._onViewMatrix = scene.camera.on(\"viewMatrix\", () => {\n this._vpDirty = true;\n this._needUpdate(0); // No lag\n });\n\n this._onProjMatrix = scene.camera.on(\"projMatrix\", () => {\n this._cpDirty = true;\n this._needUpdate();\n });\n\n this._onCanvasBoundary = scene.canvas.on(\"boundary\", () => {\n this._cpDirty = true;\n this._needUpdate(0); // No lag\n });\n\n this.approximate = cfg.approximate;\n this.visible = cfg.visible;\n\n this.originVisible = cfg.originVisible;\n this.cornerVisible = cfg.cornerVisible;\n this.targetVisible = cfg.targetVisible;\n\n this.originWireVisible = cfg.originWireVisible;\n this.targetWireVisible = cfg.targetWireVisible;\n\n this.angleVisible = cfg.angleVisible;\n }\n\n _update() {\n\n if (!this._visible) {\n return;\n }\n\n const scene = this.plugin.viewer.scene;\n\n if (this._wpDirty) {\n\n this._wp[0] = this._originWorld[0];\n this._wp[1] = this._originWorld[1];\n this._wp[2] = this._originWorld[2];\n this._wp[3] = 1.0;\n\n this._wp[4] = this._cornerWorld[0];\n this._wp[5] = this._cornerWorld[1];\n this._wp[6] = this._cornerWorld[2];\n this._wp[7] = 1.0;\n\n this._wp[8] = this._targetWorld[0];\n this._wp[9] = this._targetWorld[1];\n this._wp[10] = this._targetWorld[2];\n this._wp[11] = 1.0;\n\n this._wpDirty = false;\n this._vpDirty = true;\n }\n\n if (this._vpDirty) {\n\n math.transformPositions4(scene.camera.viewMatrix, this._wp, this._vp);\n\n this._vp[3] = 1.0;\n this._vp[7] = 1.0;\n this._vp[11] = 1.0;\n\n this._vpDirty = false;\n this._cpDirty = true;\n }\n\n if (this._cpDirty) {\n\n const near = -0.3;\n const zOrigin = this._originMarker.viewPos[2];\n const zCorner = this._cornerMarker.viewPos[2];\n const zTarget = this._targetMarker.viewPos[2];\n\n if (zOrigin > near || zCorner > near || zTarget > near) {\n\n this._originDot.setVisible(false);\n this._cornerDot.setVisible(false);\n this._targetDot.setVisible(false);\n\n this._originWire.setVisible(false);\n this._targetWire.setVisible(false);\n\n this._angleLabel.setVisible(false);\n\n return;\n }\n\n math.transformPositions4(scene.camera.project.matrix, this._vp, this._pp);\n\n var pp = this._pp;\n var cp = this._cp;\n\n var canvas = scene.canvas.canvas;\n var offsets = canvas.getBoundingClientRect();\n var top = offsets.top;\n var left = offsets.left;\n var aabb = scene.canvas.boundary;\n var canvasWidth = aabb[2];\n var canvasHeight = aabb[3];\n var j = 0;\n\n for (var i = 0, len = pp.length; i < len; i += 4) {\n cp[j] = left + Math.floor((1 + pp[i + 0] / pp[i + 3]) * canvasWidth / 2);\n cp[j + 1] = top + Math.floor((1 - pp[i + 1] / pp[i + 3]) * canvasHeight / 2);\n j += 2;\n }\n\n this._originDot.setPos(cp[0], cp[1]);\n this._cornerDot.setPos(cp[2], cp[3]);\n this._targetDot.setPos(cp[4], cp[5]);\n\n this._originWire.setStartAndEnd(cp[0], cp[1], cp[2], cp[3]);\n this._targetWire.setStartAndEnd(cp[2], cp[3], cp[4], cp[5]);\n\n this._angleLabel.setPosBetweenWires(cp[0], cp[1], cp[2], cp[3], cp[4], cp[5]);\n\n math.subVec3(this._originWorld, this._cornerWorld, originVec);\n math.subVec3(this._targetWorld, this._cornerWorld, targetVec);\n\n var validVecs =\n (originVec[0] !== 0 || originVec[1] !== 0 || originVec[2] !== 0) &&\n (targetVec[0] !== 0 || targetVec[1] !== 0 || targetVec[2] !== 0);\n\n if (validVecs) {\n\n const tilde = this._approximate ? \" ~ \" : \" = \";\n\n math.normalizeVec3(originVec);\n math.normalizeVec3(targetVec);\n const angle = Math.abs(math.angleVec3(originVec, targetVec));\n this._angle = angle / math.DEGTORAD;\n this._angleLabel.setText(tilde + this._angle.toFixed(2) + \"°\");\n } else {\n this._angleLabel.setText(\"\");\n }\n\n // this._angleLabel.setText((Math.abs(math.lenVec3(math.subVec3(this._targetWorld, this._originWorld, distVec3)) * scale).toFixed(2)) + unitAbbrev);\n\n this._originDot.setVisible(this._visible && this._originVisible);\n this._cornerDot.setVisible(this._visible && this._cornerVisible);\n this._targetDot.setVisible(this._visible && this._targetVisible);\n\n this._originWire.setVisible(this._visible && this._originWireVisible);\n this._targetWire.setVisible(this._visible && this._targetWireVisible);\n\n this._angleLabel.setVisible(this._visible && this._angleVisible);\n\n this._cpDirty = false;\n }\n }\n\n /**\n * Sets whether this AngleMeasurement indicates that its measurement is approximate.\n *\n * This is ````true```` by default.\n *\n * @type {Boolean}\n */\n set approximate(approximate) {\n approximate = approximate !== false;\n if (this._approximate === approximate) {\n return;\n }\n this._approximate = approximate;\n this._cpDirty = true;\n this._needUpdate(0);\n }\n\n /**\n * Gets whether this AngleMeasurement indicates that its measurement is approximate.\n *\n * This is ````true```` by default.\n *\n * @type {Boolean}\n */\n get approximate() {\n return this._approximate;\n }\n\n /**\n * Gets the origin {@link Marker}.\n *\n * @type {Marker}\n */\n get origin() {\n return this._originMarker;\n }\n\n /**\n * Gets the corner {@link Marker}.\n *\n * @type {Marker}\n */\n get corner() {\n return this._cornerMarker;\n }\n\n /**\n * Gets the target {@link Marker}.\n *\n * @type {Marker}\n */\n get target() {\n return this._targetMarker;\n }\n\n /**\n * Gets the angle between two connected 3D line segments, given\n * as three positions on the surface(s) of one or more {@link Entity}s.\n *\n * @type {Number}\n */\n get angle() {\n this._update();\n return this._angle;\n }\n\n /**\n * Sets whether this AngleMeasurement is visible or not.\n *\n * @type Boolean\n */\n set visible(value) {\n value = value !== false;\n this._visible = value;\n this._originDot.setVisible(this._visible && this._originVisible);\n this._cornerDot.setVisible(this._visible && this._cornerVisible);\n this._targetDot.setVisible(this._visible && this._targetVisible);\n this._originWire.setVisible(this._visible && this._originWireVisible);\n this._targetWire.setVisible(this._visible && this._targetWireVisible);\n this._angleLabel.setVisible(this._visible && this._angleVisible);\n }\n\n /**\n * Gets whether this AngleMeasurement is visible or not.\n *\n * @type Boolean\n */\n get visible() {\n return this._visible;\n }\n\n /**\n * Sets if the origin {@link Marker} is visible.\n *\n * @type {Boolean}\n */\n set originVisible(value) {\n value = value !== false;\n this._originVisible = value;\n this._originDot.setVisible(this._visible && this._originVisible);\n }\n\n /**\n * Gets if the origin {@link Marker} is visible.\n *\n * @type {Boolean}\n */\n get originVisible() {\n return this._originVisible;\n }\n\n /**\n * Sets if the corner {@link Marker} is visible.\n *\n * @type {Boolean}\n */\n set cornerVisible(value) {\n value = value !== false;\n this._cornerVisible = value;\n this._cornerDot.setVisible(this._visible && this._cornerVisible);\n }\n\n /**\n * Gets if the corner {@link Marker} is visible.\n *\n * @type {Boolean}\n */\n get cornerVisible() {\n return this._cornerVisible;\n }\n\n /**\n * Sets if the target {@link Marker} is visible.\n *\n * @type {Boolean}\n */\n set targetVisible(value) {\n value = value !== false;\n this._targetVisible = value;\n this._targetDot.setVisible(this._visible && this._targetVisible);\n }\n\n /**\n * Gets if the target {@link Marker} is visible.\n *\n * @type {Boolean}\n */\n get targetVisible() {\n return this._targetVisible;\n }\n\n /**\n * Sets if the wire between the origin and the corner is visible.\n *\n * @type {Boolean}\n */\n set originWireVisible(value) {\n value = value !== false;\n this._originWireVisible = value;\n this._originWire.setVisible(this._visible && this._originWireVisible);\n }\n\n /**\n * Gets if the wire between the origin and the corner is visible.\n *\n * @type {Boolean}\n */\n get originWireVisible() {\n return this._originWireVisible;\n }\n\n /**\n * Sets if the wire between the target and the corner is visible.\n *\n * @type {Boolean}\n */\n set targetWireVisible(value) {\n value = value !== false;\n this._targetWireVisible = value;\n this._targetWire.setVisible(this._visible && this._targetWireVisible);\n }\n\n /**\n * Gets if the wire between the target and the corner is visible.\n *\n * @type {Boolean}\n */\n get targetWireVisible() {\n return this._targetWireVisible;\n }\n\n /**\n * Sets if the angle label is visible.\n *\n * @type {Boolean}\n */\n set angleVisible(value) {\n value = value !== false;\n this._angleVisible = value;\n this._angleLabel.setVisible(this._visible && this._angleVisible);\n }\n\n /**\n * Gets if the angle label is visible.\n *\n * @type {Boolean}\n */\n get angleVisible() {\n return this._angleVisible;\n }\n\n /**\n * @private\n */\n destroy() {\n\n const scene = this.plugin.viewer.scene;\n\n if (this._onViewMatrix) {\n scene.camera.off(this._onViewMatrix);\n }\n if (this._onProjMatrix) {\n scene.camera.off(this._onProjMatrix);\n }\n if (this._onCanvasBoundary) {\n scene.canvas.off(this._onCanvasBoundary);\n }\n\n this._originDot.destroy();\n this._cornerDot.destroy();\n this._targetDot.destroy();\n\n this._originWire.destroy();\n this._targetWire.destroy();\n\n this._angleLabel.destroy();\n\n super.destroy();\n }\n}\n\nconst HOVERING$1 = 0;\nconst FINDING_ORIGIN$1 = 1;\nconst FINDING_CORNER = 2;\nconst FINDING_TARGET$1 = 3;\n\n/**\n * Creates {@link AngleMeasurement}s from mouse and touch input.\n *\n * Belongs to a {@link AngleMeasurementsPlugin}. Located at {@link AngleMeasurementsPlugin#control}.\n *\n * Once the AngleMeasurementControl is activated, the first click on any {@link Entity} begins constructing a {@link AngleMeasurement}, fixing its origin to that Entity. The next click on any Entity will complete the AngleMeasurement, fixing its target to that second Entity. The AngleMeasurementControl will then wait for the next click on any Entity, to begin constructing another AngleMeasurement, and so on, until deactivated.\n *\n * See {@link AngleMeasurementsPlugin} for more info.\n */\nclass AngleMeasurementsControl extends Component {\n\n /**\n * @private\n */\n constructor(plugin) {\n\n super(plugin.viewer.scene);\n\n /**\n * The {@link AngleMeasurementsPlugin} that owns this AngleMeasurementsControl.\n * @type {AngleMeasurementsPlugin}\n */\n this.plugin = plugin;\n\n this._active = false;\n this._state = HOVERING$1;\n this._currentAngleMeasurement = null;\n this._previousAngleMeasurement = null;\n this._onhoverSurface = null;\n this._onHoverNothing = null;\n }\n\n /** Gets if this AngleMeasurementsControl is currently active, where it is responding to input.\n *\n * @returns {boolean}\n */\n get active() {\n return this._active;\n }\n\n /**\n * Activates this AngleMeasurementsControl, ready to respond to input.\n */\n activate() {\n\n if (this._active) {\n return;\n }\n\n const cameraControl = this.plugin.viewer.cameraControl;\n\n let over = false;\n let entity = null;\n let worldPos = math.vec3();\n const hoverCanvasPos = math.vec2();\n\n const pickSurfacePrecisionEnabled = this.plugin.viewer.scene.pickSurfacePrecisionEnabled;\n\n this._onhoverSurface = cameraControl.on(\"hoverSurface\", e => {\n\n over = true;\n entity = e.entity;\n worldPos.set(e.worldPos);\n hoverCanvasPos.set(e.canvasPos);\n\n if (this._state === HOVERING$1) {\n document.body.style.cursor = \"pointer\";\n return;\n }\n\n if (this._currentAngleMeasurement) {\n switch (this._state) {\n case FINDING_CORNER:\n this._currentAngleMeasurement.originWireVisible = true;\n this._currentAngleMeasurement.targetWireVisible = false;\n this._currentAngleMeasurement.cornerVisible = true;\n this._currentAngleMeasurement.angleVisible = false;\n this._currentAngleMeasurement.corner.entity = e.entity;\n this._currentAngleMeasurement.corner.worldPos = e.worldPos;\n document.body.style.cursor = \"pointer\";\n break;\n case FINDING_TARGET$1:\n this._currentAngleMeasurement.targetWireVisible = true;\n this._currentAngleMeasurement.targetVisible = true;\n this._currentAngleMeasurement.angleVisible = true;\n this._currentAngleMeasurement.target.entity = e.entity;\n this._currentAngleMeasurement.target.worldPos = e.worldPos;\n document.body.style.cursor = \"pointer\";\n break;\n }\n }\n });\n\n let lastX;\n let lastY;\n const tolerance = 5;\n\n this._onInputMouseDown = this.plugin.viewer.scene.input.on(\"mousedown\", (coords) => {\n lastX = coords[0];\n lastY = coords[1];\n });\n\n this._onInputMouseUp = this.plugin.viewer.scene.input.on(\"mouseup\", (coords) => {\n\n if (coords[0] > lastX + tolerance || coords[0] < lastX - tolerance || coords[1] > lastY + tolerance || coords[1] < lastY - tolerance) {\n return;\n }\n\n switch (this._state) {\n\n case HOVERING$1:\n if (this._previousAngleMeasurement) {\n this._previousAngleMeasurement.originVisible = true;\n this._previousAngleMeasurement.cornerVisible = true;\n this._previousAngleMeasurement.targetVisible = true;\n }\n if (over) {\n if (pickSurfacePrecisionEnabled) {\n const pickResult = this.plugin.viewer.scene.pick({\n canvasPos: hoverCanvasPos,\n pickSurface: true,\n pickSurfacePrecision: true\n });\n if (pickResult && pickResult.worldPos) {\n worldPos.set(pickResult.worldPos);\n }\n }\n this._currentAngleMeasurement = this.plugin.createMeasurement({\n id: math.createUUID(),\n origin: {\n entity: entity,\n worldPos: worldPos\n },\n corner: {\n entity: entity,\n worldPos: worldPos\n },\n target: {\n entity: entity,\n worldPos: worldPos\n },\n approximate: true\n });\n this._currentAngleMeasurement.originVisible = true;\n this._currentAngleMeasurement.originWireVisible = true;\n this._currentAngleMeasurement.cornerVisible = false;\n this._currentAngleMeasurement.targetWireVisible = false;\n this._currentAngleMeasurement.targetVisible = false;\n this._currentAngleMeasurement.angleVisible = false;\n this._previousAngleMeasurement = this._currentAngleMeasurement;\n this._state = FINDING_CORNER;\n }\n break;\n\n case FINDING_CORNER:\n if (over) {\n if (pickSurfacePrecisionEnabled) {\n const pickResult = this.plugin.viewer.scene.pick({\n canvasPos: hoverCanvasPos,\n pickSurface: true,\n pickSurfacePrecision: true\n });\n if (pickResult && pickResult.worldPos) {\n this._currentAngleMeasurement.corner.worldPos = pickResult.worldPos;\n }\n }\n this._currentAngleMeasurement.targetWireVisible = false;\n this._currentAngleMeasurement.targetVisible = true;\n this._currentAngleMeasurement.angleVisible = true;\n this._state = FINDING_TARGET$1;\n } else {\n if (this._currentAngleMeasurement) {\n this._currentAngleMeasurement.destroy();\n this._currentAngleMeasurement = null;\n this._previousAngleMeasurement = null;\n this._state = HOVERING$1;\n }\n }\n break;\n\n case FINDING_TARGET$1:\n if (over) {\n if (pickSurfacePrecisionEnabled) {\n const pickResult = this.plugin.viewer.scene.pick({\n canvasPos: hoverCanvasPos,\n pickSurface: true,\n pickSurfacePrecision: true\n });\n if (pickResult && pickResult.worldPos) {\n this._currentAngleMeasurement.target.worldPos = pickResult.worldPos;\n this._currentAngleMeasurement.approximate = false;\n }\n }\n this._currentAngleMeasurement.targetVisible = true;\n this._currentAngleMeasurement.angleVisible = true;\n this._currentAngleMeasurement = null;\n this._previousAngleMeasurement = null;\n this._state = HOVERING$1;\n } else {\n if (this._currentAngleMeasurement) {\n this._currentAngleMeasurement.destroy();\n this._currentAngleMeasurement = null;\n this._previousAngleMeasurement = null;\n this._state = HOVERING$1;\n }\n }\n break;\n }\n });\n\n this._onHoverNothing = cameraControl.on(\"hoverOff\", e => {\n over = false;\n if (this._currentAngleMeasurement) {\n switch (this._state) {\n case HOVERING$1:\n case FINDING_ORIGIN$1:\n this._currentAngleMeasurement.originVisible = false;\n break;\n case FINDING_CORNER:\n this._currentAngleMeasurement.cornerVisible = false;\n this._currentAngleMeasurement.originWireVisible = false;\n this._currentAngleMeasurement.targetVisible = false;\n this._currentAngleMeasurement.targetWireVisible = false;\n this._currentAngleMeasurement.angleVisible = false;\n break;\n case FINDING_TARGET$1:\n this._currentAngleMeasurement.targetVisible = false;\n this._currentAngleMeasurement.targetWireVisible = false;\n this._currentAngleMeasurement.angleVisible = false;\n break;\n\n }\n document.body.style.cursor = \"default\";\n }\n });\n\n this._active = true;\n }\n\n /**\n * Deactivates this AngleMeasurementsControl, making it unresponsive to input.\n *\n * Destroys any {@link AngleMeasurement} under construction.\n */\n deactivate() {\n\n if (!this._active) {\n return;\n }\n\n this.reset();\n\n const cameraControl = this.plugin.viewer.cameraControl;\n const input = this.plugin.viewer.scene.input;\n\n input.off(this._onInputMouseDown);\n input.off(this._onInputMouseUp);\n\n cameraControl.off(this._onhoverSurface);\n cameraControl.off(this._onHoverNothing);\n\n this._currentAngleMeasurement = null;\n\n this._active = false;\n }\n\n /**\n * Resets this AngleMeasurementsControl.\n *\n * Destroys any {@link AngleMeasurement} under construction.\n *\n * Does nothing if the AngleMeasurementsControl is not active.\n */\n reset() {\n \n if (!this._active) {\n return;\n }\n \n if (this._currentAngleMeasurement) {\n this._currentAngleMeasurement.destroy();\n this._currentAngleMeasurement = null;\n }\n \n this._previousAngleMeasurement = null;\n \n this._state = HOVERING$1;\n }\n\n /**\n * @private\n */\n destroy() {\n this.deactivate();\n super.destroy();\n }\n\n}\n\n/**\n * {@link Viewer} plugin for measuring angles.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)\n *\n * * [[Example 1: Model with angle measurements](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_modelWithMeasurements)]\n * * [[Example 2: Create angle measurements with mouse](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)]\n *\n * ## Overview\n *\n * * An {@link AngleMeasurement} shows the angle between two connected 3D line segments, given\n * as three positions on the surface(s) of one or more {@link Entity}s.\n * * As shown on the screen capture above, a AngleMeasurement has two wires that show the line segments, with a label that shows the angle between them.\n * * Create AngleMeasurements programmatically with {@link AngleMeasurementsPlugin#createMeasurement}.\n * * Create AngleMeasurements interactively using the {@link AngleMeasurementsControl}, located at {@link AngleMeasurementsPlugin#control}.\n * * Existing AngleMeasurements are registered by ID in {@link AngleMeasurementsPlugin#measurements}.\n * * Destroy AngleMeasurements using {@link AngleMeasurementsPlugin#destroyMeasurement}.\n * * Configure global measurement units and scale via {@link Metrics}, located at {@link Scene#metrics}\n *\n * ## Example 1: Creating AngleMeasurements Programmatically\n *\n * In our first example, we'll use an {@link XKTLoaderPlugin} to load a model, and then use a AngleMeasurementsPlugin to programmatically create two {@link AngleMeasurement}s.\n *\n * Note how each AngleMeasurement has ````origin````, ````corner```` and ````target````, which each indicate a 3D World-space\n * position on the surface of an {@link Entity}. These can be aon the same Entity, or on different Entitys.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_modelWithMeasurements)]\n *\n * ````JavaScript\n * import {Viewer, XKTLoaderPlugin, AngleMeasurementsPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-2.37, 18.97, -26.12];\n * viewer.scene.camera.look = [10.97, 5.82, -11.22];\n * viewer.scene.camera.up = [0.36, 0.83, 0.40];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const angleMeasurements = new AngleMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * const myMeasurement1 = angleMeasurements.createMeasurement({\n * id: \"myAngleMeasurement1\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [0.044, 5.998, 17.767]\n * },\n * corner: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [0.044, 5.998, 17.767]\n * },\n * target: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [4.738, 3.172, 17.768]\n * },\n * visible: true\n * });\n *\n * const myMeasurement2 = angleMeasurements.createMeasurement({\n * id: \"myAngleMeasurement2\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FNr2\"],\n * worldPos: [0.457, 2.532, 17.766]\n * },\n * corner: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FNr2\"],\n * worldPos: [0.457, 2.532, 17.766]\n * },\n * target: {\n * entity: viewer.scene.objects[\"1CZILmCaHETO8tf3SgGEXu\"],\n * worldPos: [0.436, 0.001, 22.135]\n * },\n * visible: true\n * });\n * });\n * ````\n *\n * ## Example 2: Creating AngleMeasurements Interactively\n *\n * In our second example, we'll use an {@link XKTLoaderPlugin} to load a model, then we'll use the AngleMeasurementsPlugin's {@link AngleMeasurementsControl} to interactively create {@link AngleMeasurement}s with mouse or touch input.\n *\n * After we've activated the AngleMeasurementsControl, the first click on any {@link Entity} begins constructing a AngleMeasurement, fixing its\n * origin to that Entity. The next click on any Entity will fix the AngleMeasurement's corner, and the next click after\n * that will fix its target and complete the AngleMeasurement.\n *\n * The AngleMeasurementControl will then wait for the next click on any Entity, to begin constructing\n * another AngleMeasurement, and so on, until deactivated again.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_angle_createWithMouse)]\n *\n * ````JavaScript\n * import {Viewer, XKTLoaderPlugin, AngleMeasurementsPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-2.37, 18.97, -26.12];\n * viewer.scene.camera.look = [10.97, 5.82, -11.22];\n * viewer.scene.camera.up = [0.36, 0.83, 0.40];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const angleMeasurements = new AngleMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * angleMeasurements.control.activate(); // <------------ Activate the AngleMeasurementsControl\n * ````\n */\nclass AngleMeasurementsPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} [cfg] Plugin configuration.\n * @param {String} [cfg.id=\"AngleMeasurements\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {HTMLElement} [cfg.container] Container DOM element for markers and labels. Defaults to ````document.body````.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"AngleMeasurements\", viewer);\n\n this._container = cfg.container || document.body;\n\n this._control = new AngleMeasurementsControl(this);\n\n this._measurements = {};\n }\n\n /**\n * @private\n */\n send(name, value) {\n\n }\n\n /**\n * Gets the {@link AngleMeasurementsControl}, which creates {@link AngleMeasurement}s from user input.\n *\n * @type {AngleMeasurementsControl}\n */\n get control() {\n return this._control;\n }\n\n /**\n * Gets the existing {@link AngleMeasurement}s, each mapped to its {@link AngleMeasurement#id}.\n *\n * @type {{String:AngleMeasurement}}\n */\n get measurements() {\n return this._measurements;\n }\n\n /**\n * Creates an {@link AngleMeasurement}.\n *\n * The AngleMeasurement is then registered by {@link AngleMeasurement#id} in {@link AngleMeasurementsPlugin#measurements}.\n *\n * @param {Object} params {@link AngleMeasurement} configuration.\n * @param {String} params.id Unique ID to assign to {@link AngleMeasurement#id}. The AngleMeasurement will be registered by this in {@link AngleMeasurementsPlugin#measurements} and {@link Scene.components}. Must be unique among all components in the {@link Viewer}.\n * @param {Number[]} params.origin.worldPos Origin World-space 3D position.\n * @param {Entity} params.origin.entity Origin Entity.\n * @param {Number[]} params.corner.worldPos Corner World-space 3D position.\n * @param {Entity} params.corner.entity Corner Entity.\n * @param {Number[]} params.target.worldPos Target World-space 3D position.\n * @param {Entity} params.target.entity Target Entity.\n * @param {Boolean} [params.visible=true] Whether to initially show the {@link AngleMeasurement}.\n * @returns {AngleMeasurement} The new {@link AngleMeasurement}.\n */\n createMeasurement(params = {}) {\n if (this.viewer.scene.components[params.id]) {\n this.error(\"Viewer scene component with this ID already exists: \" + params.id);\n delete params.id;\n }\n const origin = params.origin;\n const corner = params.corner;\n const target = params.target;\n const measurement = new AngleMeasurement(this, {\n id: params.id,\n plugin: this,\n container: this._container,\n origin: {\n entity: origin.entity,\n worldPos: origin.worldPos\n },\n corner: {\n entity: corner.entity,\n worldPos: corner.worldPos\n },\n target: {\n entity: target.entity,\n worldPos: target.worldPos\n },\n\n visible: params.visible,\n originVisible: true,\n originWireVisible: true,\n cornerVisible: true,\n targetWireVisible: true,\n targetVisible: true,\n });\n this._measurements[measurement.id] = measurement;\n measurement.on(\"destroyed\", () => {\n delete this._measurements[measurement.id];\n });\n return measurement;\n }\n\n /**\n * Destroys a {@link AngleMeasurement}.\n *\n * @param {String} id ID of AngleMeasurement to destroy.\n */\n destroyMeasurement(id) {\n const measurement = this._measurements[id];\n if (!measurement) {\n this.log(\"AngleMeasurement not found: \" + id);\n return;\n }\n measurement.destroy();\n }\n\n /**\n * Destroys all {@link AngleMeasurement}s.\n */\n clear() {\n const ids = Object.keys(this._measurements);\n for (var i = 0, len = ids.length; i < len; i++) {\n this.destroyMeasurement(ids[i]);\n }\n }\n\n /**\n * Destroys this AngleMeasurementsPlugin.\n *\n * Destroys all {@link AngleMeasurement}s first.\n */\n destroy() {\n this.clear();\n super.destroy();\n }\n}\n\n/**\n * A {@link Marker} with an HTML label attached to it, managed by an {@link AnnotationsPlugin}.\n *\n * See {@link AnnotationsPlugin} for more info.\n */\nclass Annotation extends Marker {\n\n /**\n * @private\n */\n constructor(owner, cfg) {\n\n super(owner, cfg);\n\n /**\n * The {@link AnnotationsPlugin} this Annotation was created by.\n * @type {AnnotationsPlugin}\n */\n this.plugin = cfg.plugin;\n\n this._container = cfg.container;\n if (!this._container) {\n throw \"config missing: container\";\n }\n\n if ((!cfg.markerElement) && (!cfg.markerHTML)) {\n throw \"config missing: need either markerElement or markerHTML\";\n }\n if ((!cfg.labelElement) && (!cfg.labelHTML)) {\n throw \"config missing: need either labelElement or labelHTML\";\n }\n\n this._htmlDirty = false;\n\n if (cfg.markerElement) {\n this._marker = cfg.markerElement;\n this._marker.addEventListener(\"click\", this._onMouseClickedExternalMarker = () => {\n this.plugin.fire(\"markerClicked\", this);\n });\n this._marker.addEventListener(\"mouseenter\", this._onMouseEnterExternalMarker = () => {\n this.plugin.fire(\"markerMouseEnter\", this);\n });\n this._marker.addEventListener(\"mouseleave\", this._onMouseLeaveExternalMarker = () => {\n this.plugin.fire(\"markerMouseLeave\", this);\n });\n this._markerExternal = true; // Don't destroy marker when destroying Annotation\n } else {\n this._markerHTML = cfg.markerHTML;\n this._htmlDirty = true;\n this._markerExternal = false;\n }\n\n if (cfg.labelElement) {\n this._label = cfg.labelElement;\n this._labelExternal = true; // Don't destroy marker when destroying Annotation\n } else {\n this._labelHTML = cfg.labelHTML;\n this._htmlDirty = true;\n this._labelExternal = false;\n }\n\n this._markerShown = !!cfg.markerShown;\n this._labelShown = !!cfg.labelShown;\n this._values = cfg.values || {};\n this._layoutDirty = true;\n this._visibilityDirty = true;\n\n this._buildHTML();\n\n this._onTick = this.scene.on(\"tick\", () => {\n if (this._htmlDirty) {\n this._buildHTML();\n this._htmlDirty = false;\n this._layoutDirty = true;\n this._visibilityDirty = true;\n }\n if (this._layoutDirty || this._visibilityDirty) {\n if (this._markerShown || this._labelShown) {\n this._updatePosition();\n this._layoutDirty = false;\n }\n }\n if (this._visibilityDirty) {\n this._marker.style.visibility = (this.visible && this._markerShown) ? \"visible\" : \"hidden\";\n this._label.style.visibility = (this.visible && this._markerShown && this._labelShown) ? \"visible\" : \"hidden\";\n this._visibilityDirty = false;\n }\n });\n\n this.on(\"canvasPos\", () => {\n this._layoutDirty = true;\n });\n\n this.on(\"visible\", () => {\n this._visibilityDirty = true;\n });\n\n this.setMarkerShown(cfg.markerShown !== false);\n this.setLabelShown(cfg.labelShown);\n\n /**\n * Optional World-space position for {@link Camera#eye}, used when this Annotation is associated with a {@link Camera} position.\n *\n * Undefined by default.\n *\n * @type {Number[]} Eye position.\n */\n this.eye = cfg.eye ? cfg.eye.slice() : null;\n\n /**\n * Optional World-space position for {@link Camera#look}, used when this Annotation is associated with a {@link Camera} position.\n *\n * Undefined by default.\n *\n * @type {Number[]} The \"look\" vector.\n */\n this.look = cfg.look ? cfg.look.slice() : null;\n\n /**\n * Optional World-space position for {@link Camera#up}, used when this Annotation is associated with a {@link Camera} position.\n *\n * Undefined by default.\n *\n * @type {Number[]} The \"up\" vector.\n */\n this.up = cfg.up ? cfg.up.slice() : null;\n\n /**\n * Optional projection type for {@link Camera#projection}, used when this Annotation is associated with a {@link Camera} position.\n *\n * Undefined by default.\n *\n * @type {String} The projection type - \"perspective\" or \"ortho\"..\n */\n this.projection = cfg.projection;\n }\n\n /**\n * @private\n */\n _buildHTML() {\n if (!this._markerExternal) {\n if (this._marker) {\n this._container.removeChild(this._marker);\n this._marker = null;\n }\n let markerHTML = this._markerHTML || \"

\"; // Make marker\n if (utils.isArray(markerHTML)) {\n markerHTML = markerHTML.join(\"\");\n }\n markerHTML = this._renderTemplate(markerHTML);\n const markerFragment = document.createRange().createContextualFragment(markerHTML);\n this._marker = markerFragment.firstChild;\n this._container.appendChild(this._marker);\n this._marker.style.visibility = this._markerShown ? \"visible\" : \"hidden\";\n this._marker.addEventListener(\"click\", () => {\n this.plugin.fire(\"markerClicked\", this);\n });\n this._marker.addEventListener(\"mouseenter\", () => {\n this.plugin.fire(\"markerMouseEnter\", this);\n });\n this._marker.addEventListener(\"mouseleave\", () => {\n this.plugin.fire(\"markerMouseLeave\", this);\n });\n }\n if (!this._labelExternal) {\n if (this._label) {\n this._container.removeChild(this._label);\n this._label = null;\n }\n let labelHTML = this._labelHTML || \"

\"; // Make label\n if (utils.isArray(labelHTML)) {\n labelHTML = labelHTML.join(\"\");\n }\n labelHTML = this._renderTemplate(labelHTML);\n const labelFragment = document.createRange().createContextualFragment(labelHTML);\n this._label = labelFragment.firstChild;\n this._container.appendChild(this._label);\n this._label.style.visibility = (this._markerShown && this._labelShown) ? \"visible\" : \"hidden\";\n }\n }\n\n /**\n * @private\n */\n _updatePosition() {\n const boundary = this.scene.canvas.boundary;\n const left = boundary[0];\n const top = boundary[1];\n const canvasPos = this.canvasPos;\n this._marker.style.left = (Math.floor(left + canvasPos[0]) - 12) + \"px\";\n this._marker.style.top = (Math.floor(top + canvasPos[1]) - 12) + \"px\";\n this._marker.style[\"z-index\"] = 90005 + Math.floor(this._viewPos[2]) + 1;\n const offsetX = 20;\n const offsetY = -17;\n this._label.style.left = 20 + Math.floor(left + canvasPos[0] + offsetX) + \"px\";\n this._label.style.top = Math.floor(top + canvasPos[1] + offsetY) + \"px\";\n this._label.style[\"z-index\"] = 90005 + Math.floor(this._viewPos[2]) + 1;\n }\n\n /**\n * @private\n */\n _renderTemplate(template) {\n for (var key in this._values) {\n if (this._values.hasOwnProperty(key)) {\n const value = this._values[key];\n template = template.replace(new RegExp('{{' + key + '}}', 'g'), value);\n }\n }\n return template;\n }\n\n /**\n * Sets whether or not to show this Annotation's marker.\n *\n * The marker shows the Annotation's position.\n *\n * The marker is only visible when both this property and {@link Annotation#visible} are ````true````.\n *\n * See {@link AnnotationsPlugin} for more info.\n *\n * @param {Boolean} shown Whether to show the marker.\n */\n setMarkerShown(shown) {\n shown = !!shown;\n if (this._markerShown === shown) {\n return;\n }\n this._markerShown = shown;\n this._visibilityDirty = true;\n }\n\n /**\n * Gets whether or not to show this Annotation's marker.\n *\n * The marker shows the Annotation's position.\n *\n * The marker is only visible when both this property and {@link Annotation#visible} are ````true````.\n *\n * See {@link AnnotationsPlugin} for more info.\n *\n * @returns {Boolean} Whether to show the marker.\n */\n getMarkerShown() {\n return this._markerShown;\n }\n\n /**\n * Sets whether or not to show this Annotation's label.\n *\n * The label is only visible when both this property and {@link Annotation#visible} are ````true````.\n *\n * See {@link AnnotationsPlugin} for more info.\n *\n * @param {Boolean} shown Whether to show the label.\n */\n setLabelShown(shown) {\n shown = !!shown;\n if (this._labelShown === shown) {\n return;\n }\n this._labelShown = shown;\n this._visibilityDirty = true;\n }\n\n /**\n * Gets whether or not to show this Annotation's label.\n *\n * The label is only visible when both this property and {@link Annotation#visible} are ````true````.\n *\n * See {@link AnnotationsPlugin} for more info.\n *\n * @returns {Boolean} Whether to show the label.\n */\n getLabelShown() {\n return this._labelShown;\n }\n\n /**\n * Sets the value of a field within the HTML templates for either the Annotation's marker or label.\n *\n * See {@link AnnotationsPlugin} for more info.\n *\n * @param {String} key Identifies the field.\n * @param {String} value The field's value.\n */\n setField(key, value) {\n this._values[key] = value || \"\";\n this._htmlDirty = true;\n }\n\n /**\n * Gets the value of a field within the HTML templates for either the Annotation's marker or label.\n *\n * See {@link AnnotationsPlugin} for more info.\n *\n * @param {String} key Identifies the field.\n * @returns {String} The field's value.\n */\n getField(key) {\n return this._values[key];\n }\n\n /**\n * Sets values for multiple placeholders within the Annotation's HTML templates for marker and label.\n *\n * See {@link AnnotationsPlugin} for more info.\n *\n * @param {{String:(String|Number)}} values Map of field values.\n */\n setValues(values) {\n for (var key in values) {\n if (values.hasOwnProperty(key)) {\n const value = values[key];\n this.setField(key, value);\n }\n }\n }\n\n /**\n * Gets the values that were set for the placeholders within this Annotation's HTML marker and label templates.\n *\n * See {@link AnnotationsPlugin} for more info.\n *\n * @RETURNS {{String:(String|Number)}} Map of field values.\n */\n getValues() {\n return this._values;\n }\n\n /**\n * Destroys this Annotation.\n *\n * You can also call {@link AnnotationsPlugin#destroyAnnotation}.\n */\n destroy() {\n if (this._marker) {\n if (!this._markerExternal) {\n this._marker.parentNode.removeChild(this._marker);\n } else {\n this._marker.removeEventListener(\"click\", this._onMouseClickedExternalMarker);\n this._marker.removeEventListener(\"mouseenter\", this._onMouseEnterExternalMarker);\n this._marker.removeEventListener(\"mouseleave\", this._onMouseLeaveExternalMarker);\n this._marker = null;\n }\n }\n if (this._label) {\n if (!this._labelExternal) {\n this._label.parentNode.removeChild(this._label);\n }\n this._label = null;\n }\n this.scene.off(this._onTick);\n super.destroy();\n }\n}\n\nconst tempVec3a$_ = math.vec3();\nconst tempVec3b$9 = math.vec3();\nconst tempVec3c$6 = math.vec3();\n\n/**\n * {@link Viewer} plugin that creates {@link Annotation}s.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/#annotations_clickFlyToPosition)\n *\n * * [[Example 1: Create annotations with mouse](https://xeokit.github.io/xeokit-sdk/examples/#annotations_createWithMouse)]\n * * [[Example 2: Click annotations to toggle labels](https://xeokit.github.io/xeokit-sdk/examples/#annotations_clickShowLabels)]\n * * [[Example 3: Hover annotations to show labels](https://xeokit.github.io/xeokit-sdk/examples/#annotations_hoverShowLabels)]\n * * [[Example 4: Click annotations to fly to viewpoint](https://xeokit.github.io/xeokit-sdk/examples/#annotations_clickFlyToPosition)]\n * * [[Example 5: Create Annotations with externally-created elements](https://xeokit.github.io/xeokit-sdk/examples/#annotations_externalElements)]\n *\n * ## Overview\n *\n * * An {@link Annotation} is a 3D position with a label attached.\n * * Annotations render themselves with HTML elements that float over the canvas; customize the appearance of\n * individual Annotations using HTML template; configure default appearance by setting templates on the AnnotationsPlugin.\n * * Dynamically insert data values into each Annotation's HTML templates; configure default values on the AnnotationsPlugin.\n * * Optionally configure Annotation with externally-created DOM elements for markers and labels; these override templates and data values.\n * * Optionally configure Annotations to hide themselves whenever occluded by {@link Entity}s.\n * * Optionally configure each Annotation with a position we can jump or fly the {@link Camera} to.\n *\n * ## Example 1: Loading a model and creating an annotation\n *\n * In the example below, we'll use an {@link XKTLoaderPlugin} to load a model, and an AnnotationsPlugin\n * to create an {@link Annotation} on it.\n *\n * We'll configure the AnnotationsPlugin with default HTML templates for each Annotation's position (its \"marker\") and\n * label, along with some default data values to insert into them.\n *\n * When we create our Annotation, we'll give it some specific data values to insert into the templates, overriding some of\n * the defaults we configured on the plugin. Note the correspondence between the placeholders in the templates\n * and the keys in the values map.\n *\n * We'll also configure the Annotation to hide itself whenever it's position is occluded by any {@link Entity}s (this is default behavior). The\n * {@link Scene} periodically occlusion-tests all Annotations on every 20th \"tick\" (which represents a rendered frame). We\n * can adjust that frequency via property {@link Scene#ticksPerOcclusionTest}.\n *\n * Finally, we'll query the Annotation's position occlusion/visibility status, and subscribe to change events on those properties.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#annotations_clickShowLabels)]\n *\n * ````JavaScript\n * import {Viewer, XKTLoaderPlugin,AnnotationsPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-2.37, 18.97, -26.12];\n * viewer.scene.camera.look = [10.97, 5.82, -11.22];\n * viewer.scene.camera.up = [0.36, 0.83, 0.40];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const annotations = new AnnotationsPlugin(viewer, {\n *\n * // Default HTML template for marker position\n * markerHTML: \"
{{glyph}}
\",\n *\n * // Default HTML template for label\n * labelHTML: \"
\" +\n * \"
{{title}}
{{description}}
\",\n *\n * // Default values to insert into the marker and label templates\n * values: {\n * markerBGColor: \"red\",\n * labelBGColor: \"red\",\n * glyph: \"X\",\n * title: \"Untitled\",\n * description: \"No description\"\n * }\n * });\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/geometry.xkt\"\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * const entity = viewer.scene.meshes[\"\"];\n *\n * // Create an annotation\n * const myAnnotation1 = annotations.createAnnotation({\n *\n * id: \"myAnnotation\",\n *\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"], // Optional, associate with an Entity\n *\n * worldPos: [0, 0, 0], // 3D World-space position\n *\n * occludable: true, // Optional, default, makes Annotation invisible when occluded by Entities\n * markerShown: true, // Optional, default is true, makes position visible (when not occluded)\n * labelShown: true // Optional, default is false, makes label visible (when not occluded)\n *\n * values: { // Optional, overrides AnnotationPlugin's defaults\n * glyph: \"A\",\n * title: \"My Annotation\",\n * description: \"This is my annotation.\"\n * }\n * });\n *\n * // Listen for change of the Annotation's 3D World-space position\n *\n * myAnnotation1.on(\"worldPos\", function(worldPos) {\n * //...\n * });\n *\n * // Listen for change of the Annotation's 3D View-space position, which happens\n * // when either worldPos was updated or the Camera was moved\n *\n * myAnnotation1.on(\"viewPos\", function(viewPos) {\n * //...\n * });\n *\n * // Listen for change of the Annotation's 2D Canvas-space position, which happens\n * // when worldPos or viewPos was updated, or Camera's projection was updated\n *\n * myAnnotation1.on(\"canvasPos\", function(canvasPos) {\n * //...\n * });\n *\n * // Listen for change of Annotation visibility. The Annotation becomes invisible when it falls outside the canvas,\n * // or its position is occluded by some Entity. Note that, when not occluded, the position is only\n * // shown when Annotation#markerShown is true, and the label is only shown when Annotation#labelShown is true.\n *\n * myAnnotation1.on(\"visible\", function(visible) { // Marker visibility has changed\n * if (visible) {\n * this.log(\"Annotation is visible\");\n * } else {\n * this.log(\"Annotation is invisible\");\n * }\n * });\n *\n * // Listen for destruction of the Annotation\n *\n * myAnnotation1.on(\"destroyed\", () => {\n * //...\n * });\n * });\n * ````\n *\n * Let's query our {@link Annotation}'s current position in the World, View and Canvas coordinate systems:\n *\n * ````javascript\n * const worldPos = myAnnotation.worldPos; // [x,y,z]\n * const viewPos = myAnnotation.viewPos; // [x,y,z]\n * const canvasPos = myAnnotation.canvasPos; // [x,y]\n * ````\n *\n * We can query it's current visibility, which is ````false```` when its position is occluded by some {@link Entity}:\n *\n * ````\n * const visible = myAnnotation1.visible;\n * ````\n *\n * To listen for change events on our Annotation's position and visibility:\n *\n * ````javascript\n * // World-space position changes when we assign a new value to Annotation#worldPos\n * myAnnotation1.on(\"worldPos\", (worldPos) => {\n * //...\n * });\n *\n * // View-space position changes when either worldPos was updated or the Camera was moved\n * myAnnotation1.on(\"viewPos\", (viewPos) => {\n * //...\n * });\n *\n * // Canvas-space position changes when worldPos or viewPos was updated, or Camera's projection was updated\n * myAnnotation1.on(\"canvasPos\", (canvasPos) => {\n * //...\n * });\n *\n * // Annotation is invisible when its position falls off the canvas or is occluded by some Entity\n * myAnnotation1.on(\"visible\", (visible) => {\n * //...\n * });\n * ````\n *\n * Finally, let's dynamically update the values for a couple of placeholders in our Annotation's label:\n *\n * ```` javascript\n * myAnnotation1.setValues({\n * title: \"Here's a new title\",\n * description: \"Here's a new description\"\n * });\n * ````\n *\n *\n * ## Example 2: Creating an Annotation with a unique appearance\n *\n * Now let's create a second {@link Annotation}, this time with its own custom HTML label template, which includes\n * an image. In the Annotation's values, we'll also provide a new title and description, custom colors for the marker\n * and label, plus a URL for the image in the label template. To render its marker, the Annotation will fall back\n * on the AnnotationPlugin's default marker template.\n *\n * ````javascript\n * const myAnnotation2 = annotations.createAnnotation({\n *\n * id: \"myAnnotation2\",\n *\n * worldPos: [-0.163, 1.810, 7.977],\n *\n * occludable: true,\n * markerShown: true,\n * labelShown: true,\n *\n * // Custom label template is the same as the Annotation's, with the addition of an image element\n * labelHTML: \"
\\\n *
{{title}}
\\\n *
{{description}}
\\\n *
myImage\\\n *
\",\n *\n * // Custom template values override all the AnnotationPlugin's defaults, and includes an additional value\n * // for the image element's URL\n * values: {\n * glyph: \"A3\",\n * title: \"The West wall\",\n * description: \"Annotations can contain
custom HTML like this
image:\",\n * markerBGColor: \"green\",\n * labelBGColor: \"green\",\n * imageSrc: \"https://xeokit.io/img/docs/BIMServerLoaderPlugin/schependomlaan.png\"\n * }\n * });\n * ````\n *\n * ## Example 3: Creating an Annotation with a camera position\n *\n * We can optionally configure each {@link Annotation} with a position to fly or jump the {@link Camera} to.\n *\n * Let's create another Annotation, this time providing it with ````eye````, ````look```` and ````up```` properties\n * indicating a viewpoint on whatever it's annotating:\n *\n * ````javascript\n * const myAnnotation3 = annotations.createAnnotation({\n *\n * id: \"myAnnotation3\",\n *\n * worldPos: [-0.163, 3.810, 7.977],\n *\n * eye: [0,0,-10],\n * look: [-0.163, 3.810, 7.977],\n * up: [0,1,0];\n *\n * occludable: true,\n * markerShown: true,\n * labelShown: true,\n *\n * labelHTML: \"
\\\n *
{{title}}
\\\n *
{{description}}
\\\n *
myImage\\\n *
\",\n *\n * values: {\n * glyph: \"A3\",\n * title: \"The West wall\",\n * description: \"Annotations can contain
custom HTML like this
image:\",\n * markerBGColor: \"green\",\n * labelBGColor: \"green\",\n * imageSrc: \"https://xeokit.io/img/docs/BIMServerLoaderPlugin/schependomlaan.png\"\n * }\n * });\n * ````\n *\n * Now we can fly the {@link Camera} to the Annotation's viewpoint, like this:\n *\n * ````javascript\n * viewer.cameraFlight.flyTo(myAnnotation3);\n * ````\n *\n * Or jump the Camera, like this:\n *\n * ````javascript\n * viewer.cameraFlight.jumpTo(myAnnotation3);\n * ````\n *\n * ## Example 4: Creating an Annotation using externally-created DOM elements\n *\n * Now let's create another {@link Annotation}, this time providing it with pre-existing DOM elements for its marker\n * and label. Note that AnnotationsPlugin will ignore any ````markerHTML````, ````labelHTML````\n * or ````values```` properties when provide ````markerElementId```` or ````labelElementId````.\n *\n * ````javascript\n * const myAnnotation2 = annotations.createAnnotation({\n *\n * id: \"myAnnotation2\",\n *\n * worldPos: [-0.163, 1.810, 7.977],\n *\n * occludable: true,\n * markerShown: true,\n * labelShown: true,\n *\n * markerElementId: \"myMarkerElement\",\n * labelElementId: \"myLabelElement\"\n * });\n * ````\n *\n * ## Example 5: Creating annotations by clicking on objects\n *\n * AnnotationsPlugin makes it easy to create {@link Annotation}s on the surfaces of {@link Entity}s as we click on them.\n *\n * The {@link AnnotationsPlugin#createAnnotation} method can accept a {@link PickResult} returned\n * by {@link Scene#pick}, from which it initializes the {@link Annotation}'s {@link Annotation#worldPos} and\n * {@link Annotation#entity}. Note that this only works when {@link Scene#pick} was configured to perform a 3D\n * surface-intersection pick (see {@link Scene#pick} for more info).\n *\n * Let's now extend our example to create an Annotation wherever we click on the surface of of our model:\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#annotations_createWithMouse)]\n *\n * ````javascript\n * var i = 1; // Used to create unique Annotation IDs\n *\n * viewer.scene.input.on(\"mouseclicked\", (coords) => {\n *\n * var pickRecord = viewer.scene.pick({\n * canvasPos: coords,\n * pickSurface: true // <<------ This causes picking to find the intersection point on the entity\n * });\n *\n * if (pickRecord) {\n *\n * const annotation = annotations.createAnnotation({\n * id: \"myAnnotationOnClick\" + i,\n * pickRecord: pickRecord,\n * occludable: true, // Optional, default is true\n * markerShown: true, // Optional, default is true\n * labelShown: true, // Optional, default is true\n * values: { // HTML template values\n * glyph: \"A\" + i,\n * title: \"My annotation \" + i,\n * description: \"My description \" + i\n * },\n });\n *\n * i++;\n * }\n * });\n * ````\n *\n * Note that when the Annotation is occludable, there is potential for the {@link Annotation#worldPos} to become\n * visually embedded within the surface of its Entity when viewed from a distance. This happens as a result of limited\n * GPU accuracy GPU accuracy, especially when the near and far view-space clipping planes, specified by {@link Perspective#near}\n * and {@link Perspective#far}, or {@link Ortho#near} and {@link Perspective#far}, are far away from each other.\n *\n * To prevent this, we can offset Annotations from their Entity surfaces by an amount that we set\n * on {@link AnnotationsPlugin#surfaceOffset}:\n *\n * ````javascript\n * annotations.surfaceOffset = 0.3; // Default value\n * ````\n *\n * Annotations subsequently created with {@link AnnotationsPlugin#createAnnotation} using a {@link PickResult} will then\n * be offset by that amount.\n *\n * Another thing we can do to prevent this unwanted occlusion is keep the distance between the view-space clipping\n * planes to a minimum, which improves the accuracy of the Annotation occlusion test. In general, a good default\n * value for ````Perspective#far```` and ````Ortho#far```` is around ````2.000````.\n */\nclass AnnotationsPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"Annotations\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {String} [cfg.markerHTML] HTML text template for Annotation markers. Defaults to ````
````. Ignored on {@link Annotation}s configured with a ````markerElementId````.\n * @param {String} [cfg.labelHTML] HTML text template for Annotation labels. Defaults to ````
````. Ignored on {@link Annotation}s configured with a ````labelElementId````.\n * @param {HTMLElement} [cfg.container] Container DOM element for markers and labels. Defaults to ````document.body````.\n * @param {{String:(String|Number)}} [cfg.values={}] Map of default values to insert into the HTML templates for the marker and label.\n * @param {Number} [cfg.surfaceOffset=0.3] The amount by which each {@link Annotation} is offset from the surface of\n * its {@link Entity} when we create the Annotation by supplying a {@link PickResult} to {@link AnnotationsPlugin#createAnnotation}.\n */\n constructor(viewer, cfg) {\n\n super(\"Annotations\", viewer);\n\n this._labelHTML = cfg.labelHTML || \"
\";\n this._markerHTML = cfg.markerHTML || \"
\";\n this._container = cfg.container || document.body;\n this._values = cfg.values || {};\n\n /**\n * The {@link Annotation}s created by {@link AnnotationsPlugin#createAnnotation}, each mapped to its {@link Annotation#id}.\n * @type {{String:Annotation}}\n */\n this.annotations = {};\n\n this.surfaceOffset = cfg.surfaceOffset;\n }\n\n /**\n * @private\n */\n send(name, value) {\n switch (name) {\n case \"clearAnnotations\":\n this.clear();\n break;\n }\n }\n\n /**\n * Sets the amount by which each {@link Annotation} is offset from the surface of its {@link Entity}, when we\n * create the Annotation by supplying a {@link PickResult} to {@link AnnotationsPlugin#createAnnotation}.\n *\n * See the class comments for more info.\n *\n * This is ````0.3```` by default.\n *\n * @param {Number} surfaceOffset The surface offset.\n */\n set surfaceOffset(surfaceOffset) {\n if (surfaceOffset === undefined || surfaceOffset === null) {\n surfaceOffset = 0.3;\n }\n this._surfaceOffset = surfaceOffset;\n }\n\n /**\n * Gets the amount by which an {@link Annotation} is offset from the surface of its {@link Entity} when\n * created by {@link AnnotationsPlugin#createAnnotation}, when we\n * create the Annotation by supplying a {@link PickResult} to {@link AnnotationsPlugin#createAnnotation}.\n *\n * This is ````0.3```` by default.\n *\n * @returns {Number} The surface offset.\n */\n get surfaceOffset() {\n return this._surfaceOffset;\n }\n\n /**\n * Creates an {@link Annotation}.\n *\n * The Annotation is then registered by {@link Annotation#id} in {@link AnnotationsPlugin#annotations}.\n *\n * @param {Object} params Annotation configuration.\n * @param {String} params.id Unique ID to assign to {@link Annotation#id}. The Annotation will be registered by this in {@link AnnotationsPlugin#annotations} and {@link Scene.components}. Must be unique among all components in the {@link Viewer}.\n * @param {String} [params.markerElementId] ID of pre-existing DOM element to render the marker. This overrides ````markerHTML```` and does not support ````values```` (data is baked into the label DOM element).\n * @param {String} [params.labelElementId] ID of pre-existing DOM element to render the label. This overrides ````labelHTML```` and does not support ````values```` (data is baked into the label DOM element).\n * @param {String} [params.markerHTML] HTML text template for the Annotation marker. Defaults to the marker HTML given to the AnnotationsPlugin constructor. Ignored if you provide ````markerElementId````.\n * @param {String} [params.labelHTML] HTML text template for the Annotation label. Defaults to the label HTML given to the AnnotationsPlugin constructor. Ignored if you provide ````labelElementId````.\n * @param {Number[]} [params.worldPos=[0,0,0]] World-space position of the Annotation marker, assigned to {@link Annotation#worldPos}.\n * @param {Entity} [params.entity] Optional {@link Entity} to associate the Annotation with. Causes {@link Annotation#visible} to be ````false```` whenever {@link Entity#visible} is also ````false````.\n * @param {PickResult} [params.pickResult] Sets the Annotation's World-space position and direction vector from the given {@link PickResult}'s {@link PickResult#worldPos} and {@link PickResult#worldNormal}, and the Annotation's Entity from {@link PickResult#entity}. Causes ````worldPos```` and ````entity```` parameters to be ignored, if they are also given.\n * @param {Boolean} [params.occludable=false] Indicates whether or not the {@link Annotation} marker and label are hidden whenever the marker occluded by {@link Entity}s in the {@link Scene}. The\n * {@link Scene} periodically occlusion-tests all Annotations on every 20th \"tick\" (which represents a rendered frame). We can adjust that frequency via property {@link Scene#ticksPerOcclusionTest}.\n * @param {{String:(String|Number)}} [params.values={}] Map of values to insert into the HTML templates for the marker and label. These will be inserted in addition to any values given to the AnnotationsPlugin constructor.\n * @param {Boolean} [params.markerShown=true] Whether to initially show the {@link Annotation} marker.\n * @param {Boolean} [params.labelShown=false] Whether to initially show the {@link Annotation} label.\n * @param {Number[]} [params.eye] Optional World-space position for {@link Camera#eye}, used when this Annotation is associated with a {@link Camera} position.\n * @param {Number[]} [params.look] Optional World-space position for {@link Camera#look}, used when this Annotation is associated with a {@link Camera} position.\n * @param {Number[]} [params.up] Optional World-space position for {@link Camera#up}, used when this Annotation is associated with a {@link Camera} position.\n * @param {String} [params.projection] Optional projection type for {@link Camera#projection}, used when this Annotation is associated with a {@link Camera} position.\n * @returns {Annotation} The new {@link Annotation}.\n */\n createAnnotation(params) {\n if (this.viewer.scene.components[params.id]) {\n this.error(\"Viewer component with this ID already exists: \" + params.id);\n delete params.id;\n }\n var worldPos;\n var entity;\n params.pickResult = params.pickResult || params.pickRecord;\n if (params.pickResult) {\n const pickResult = params.pickResult;\n if (!pickResult.worldPos || !pickResult.worldNormal) {\n this.error(\"Param 'pickResult' does not have both worldPos and worldNormal\");\n } else {\n const normalizedWorldNormal = math.normalizeVec3(pickResult.worldNormal, tempVec3a$_);\n const offsetVec = math.mulVec3Scalar(normalizedWorldNormal, this._surfaceOffset, tempVec3b$9);\n const offsetWorldPos = math.addVec3(pickResult.worldPos, offsetVec, tempVec3c$6);\n worldPos = offsetWorldPos;\n entity = pickResult.entity;\n }\n } else {\n worldPos = params.worldPos;\n entity = params.entity;\n }\n\n var markerElement = null;\n if (params.markerElementId) {\n markerElement = document.getElementById(params.markerElementId);\n if (!markerElement) {\n this.error(\"Can't find DOM element for 'markerElementId' value '\" + params.markerElementId + \"' - defaulting to internally-generated empty DIV\");\n }\n }\n\n var labelElement = null;\n if (params.labelElementId) {\n labelElement = document.getElementById(params.labelElementId);\n if (!labelElement) {\n this.error(\"Can't find DOM element for 'labelElementId' value '\" + params.labelElementId + \"' - defaulting to internally-generated empty DIV\");\n }\n }\n\n const annotation = new Annotation(this.viewer.scene, {\n id: params.id,\n plugin: this,\n entity: entity,\n worldPos: worldPos,\n container: this._container,\n markerElement: markerElement,\n labelElement: labelElement,\n markerHTML: params.markerHTML || this._markerHTML,\n labelHTML: params.labelHTML || this._labelHTML,\n occludable: params.occludable,\n values: utils.apply(params.values, utils.apply(this._values, {})),\n markerShown: params.markerShown,\n labelShown: params.labelShown,\n eye: params.eye,\n look: params.look,\n up: params.up,\n projection: params.projection,\n visible: (params.visible !== false)\n });\n this.annotations[annotation.id] = annotation;\n annotation.on(\"destroyed\", () => {\n delete this.annotations[annotation.id];\n this.fire(\"annotationDestroyed\", annotation.id);\n });\n this.fire(\"annotationCreated\", annotation.id);\n return annotation;\n }\n\n /**\n * Destroys an {@link Annotation}.\n *\n * @param {String} id ID of Annotation to destroy.\n */\n destroyAnnotation(id) {\n var annotation = this.annotations[id];\n if (!annotation) {\n this.log(\"Annotation not found: \" + id);\n return;\n }\n annotation.destroy();\n }\n\n /**\n * Destroys all {@link Annotation}s.\n */\n clear() {\n const ids = Object.keys(this.annotations);\n for (var i = 0, len = ids.length; i < len; i++) {\n this.destroyAnnotation(ids[i]);\n }\n }\n\n /**\n * Destroys this AnnotationsPlugin.\n *\n * Destroys all {@link Annotation}s first.\n */\n destroy() {\n this.clear();\n super.destroy();\n }\n}\n\nconst defaultCSS = \".sk-fading-circle {\\\n background: transparent;\\\n margin: 20px auto;\\\n width: 50px;\\\n height:50px;\\\n position: relative;\\\n }\\\n .sk-fading-circle .sk-circle {\\\n width: 120%;\\\n height: 120%;\\\n position: absolute;\\\n left: 0;\\\n top: 0;\\\n }\\\n .sk-fading-circle .sk-circle:before {\\\n content: '';\\\n display: block;\\\n margin: 0 auto;\\\n width: 15%;\\\n height: 15%;\\\n background-color: #ff8800;\\\n border-radius: 100%;\\\n -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;\\\n animation: sk-circleFadeDelay 1.2s infinite ease-in-out both;\\\n }\\\n .sk-fading-circle .sk-circle2 {\\\n -webkit-transform: rotate(30deg);\\\n -ms-transform: rotate(30deg);\\\n transform: rotate(30deg);\\\n }\\\n .sk-fading-circle .sk-circle3 {\\\n -webkit-transform: rotate(60deg);\\\n -ms-transform: rotate(60deg);\\\n transform: rotate(60deg);\\\n }\\\n .sk-fading-circle .sk-circle4 {\\\n -webkit-transform: rotate(90deg);\\\n -ms-transform: rotate(90deg);\\\n transform: rotate(90deg);\\\n }\\\n .sk-fading-circle .sk-circle5 {\\\n -webkit-transform: rotate(120deg);\\\n -ms-transform: rotate(120deg);\\\n transform: rotate(120deg);\\\n }\\\n .sk-fading-circle .sk-circle6 {\\\n -webkit-transform: rotate(150deg);\\\n -ms-transform: rotate(150deg);\\\n transform: rotate(150deg);\\\n }\\\n .sk-fading-circle .sk-circle7 {\\\n -webkit-transform: rotate(180deg);\\\n -ms-transform: rotate(180deg);\\\n transform: rotate(180deg);\\\n }\\\n .sk-fading-circle .sk-circle8 {\\\n -webkit-transform: rotate(210deg);\\\n -ms-transform: rotate(210deg);\\\n transform: rotate(210deg);\\\n }\\\n .sk-fading-circle .sk-circle9 {\\\n -webkit-transform: rotate(240deg);\\\n -ms-transform: rotate(240deg);\\\n transform: rotate(240deg);\\\n }\\\n .sk-fading-circle .sk-circle10 {\\\n -webkit-transform: rotate(270deg);\\\n -ms-transform: rotate(270deg);\\\n transform: rotate(270deg);\\\n }\\\n .sk-fading-circle .sk-circle11 {\\\n -webkit-transform: rotate(300deg);\\\n -ms-transform: rotate(300deg);\\\n transform: rotate(300deg);\\\n }\\\n .sk-fading-circle .sk-circle12 {\\\n -webkit-transform: rotate(330deg);\\\n -ms-transform: rotate(330deg);\\\n transform: rotate(330deg);\\\n }\\\n .sk-fading-circle .sk-circle2:before {\\\n -webkit-animation-delay: -1.1s;\\\n animation-delay: -1.1s;\\\n }\\\n .sk-fading-circle .sk-circle3:before {\\\n -webkit-animation-delay: -1s;\\\n animation-delay: -1s;\\\n }\\\n .sk-fading-circle .sk-circle4:before {\\\n -webkit-animation-delay: -0.9s;\\\n animation-delay: -0.9s;\\\n }\\\n .sk-fading-circle .sk-circle5:before {\\\n -webkit-animation-delay: -0.8s;\\\n animation-delay: -0.8s;\\\n }\\\n .sk-fading-circle .sk-circle6:before {\\\n -webkit-animation-delay: -0.7s;\\\n animation-delay: -0.7s;\\\n }\\\n .sk-fading-circle .sk-circle7:before {\\\n -webkit-animation-delay: -0.6s;\\\n animation-delay: -0.6s;\\\n }\\\n .sk-fading-circle .sk-circle8:before {\\\n -webkit-animation-delay: -0.5s;\\\n animation-delay: -0.5s;\\\n }\\\n .sk-fading-circle .sk-circle9:before {\\\n -webkit-animation-delay: -0.4s;\\\n animation-delay: -0.4s;\\\n }\\\n .sk-fading-circle .sk-circle10:before {\\\n -webkit-animation-delay: -0.3s;\\\n animation-delay: -0.3s;\\\n }\\\n .sk-fading-circle .sk-circle11:before {\\\n -webkit-animation-delay: -0.2s;\\\n animation-delay: -0.2s;\\\n }\\\n .sk-fading-circle .sk-circle12:before {\\\n -webkit-animation-delay: -0.1s;\\\n animation-delay: -0.1s;\\\n }\\\n @-webkit-keyframes sk-circleFadeDelay {\\\n 0%, 39%, 100% { opacity: 0; }\\\n 40% { opacity: 1; }\\\n }\\\n @keyframes sk-circleFadeDelay {\\\n 0%, 39%, 100% { opacity: 0; }\\\n 40% { opacity: 1; }\\\n }\";\n\n/**\n * @desc Displays a progress animation at the center of its {@link Canvas} while things are loading or otherwise busy.\n *\n *\n * * Located at {@link Canvas#spinner}.\n * * Automatically shown while things are loading, however may also be shown by application code wanting to indicate busyness.\n * * {@link Spinner#processes} holds the count of active processes. As a process starts, it increments {@link Spinner#processes}, then decrements it on completion or failure.\n * * A Spinner is only visible while {@link Spinner#processes} is greater than zero.\n *\n * ````javascript\n * var spinner = viewer.scene.canvas.spinner;\n *\n * // Increment count of busy processes represented by the spinner;\n * // assuming the count was zero, this now shows the spinner\n * spinner.processes++;\n *\n * // Increment the count again, by some other process; spinner already visible, now requires two decrements\n * // before it becomes invisible again\n * spinner.processes++;\n *\n * // Decrement the count; count still greater than zero, so spinner remains visible\n * spinner.process--;\n *\n * // Decrement the count; count now zero, so spinner becomes invisible\n * spinner.process--;\n * ````\n */\nclass Spinner extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Spinner\";\n }\n\n /**\n @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._canvas = cfg.canvas;\n this._element = null;\n this._isCustom = false; // True when the element is custom HTML\n\n if (cfg.elementId) { // Custom spinner element supplied\n this._element = document.getElementById(cfg.elementId);\n if (!this._element) {\n this.error(\"Can't find given Spinner HTML element: '\" + cfg.elementId + \"' - will automatically create default element\");\n } else {\n this._adjustPosition();\n }\n }\n\n if (!this._element) {\n this._createDefaultSpinner();\n }\n\n this.processes = 0;\n }\n\n /** @private */\n _createDefaultSpinner() {\n this._injectDefaultCSS();\n const element = document.createElement('div');\n const style = element.style;\n style[\"z-index\"] = \"9000\";\n style.position = \"absolute\";\n element.innerHTML = '
\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
\\\n
';\n this._canvas.parentElement.appendChild(element);\n this._element = element;\n this._isCustom = false;\n this._adjustPosition();\n }\n\n /**\n * @private\n */\n _injectDefaultCSS() {\n const elementId = \"xeokit-spinner-css\";\n if (document.getElementById(elementId)) {\n return;\n }\n const defaultCSSNode = document.createElement('style');\n defaultCSSNode.innerHTML = defaultCSS;\n defaultCSSNode.id = elementId;\n document.body.appendChild(defaultCSSNode);\n }\n\n /**\n * @private\n */\n _adjustPosition() { // (Re)positions spinner DIV over the center of the canvas - called by Canvas\n if (this._isCustom) {\n return;\n }\n const canvas = this._canvas;\n const element = this._element;\n const style = element.style;\n style[\"left\"] = (canvas.offsetLeft + (canvas.clientWidth * 0.5) - (element.clientWidth * 0.5)) + \"px\";\n style[\"top\"] = (canvas.offsetTop + (canvas.clientHeight * 0.5) - (element.clientHeight * 0.5)) + \"px\";\n }\n\n /**\n * Sets the number of processes this Spinner represents.\n *\n * The Spinner is visible while this property is greater than zero.\n *\n * Increment this property whenever you commence some process during which you want the Spinner to be visible, then decrement it again when the process is complete.\n *\n * Clamps to zero if you attempt to set to to a negative value.\n *\n * Fires a {@link Spinner#processes:event} event on change.\n\n * Default value is ````0````.\n *\n * @param {Number} value New processes count.\n */\n set processes(value) {\n value = value || 0;\n if (this._processes === value) {\n return;\n }\n if (value < 0) {\n return;\n }\n const prevValue = this._processes;\n this._processes = value;\n const element = this._element;\n if (element) {\n element.style[\"visibility\"] = (this._processes > 0) ? \"visible\" : \"hidden\";\n }\n /**\n Fired whenever this Spinner's {@link Spinner#visible} property changes.\n\n @event processes\n @param value The property's new value\n */\n this.fire(\"processes\", this._processes);\n if (this._processes === 0 && this._processes !== prevValue) {\n /**\n Fired whenever this Spinner's {@link Spinner#visible} property becomes zero.\n\n @event zeroProcesses\n */\n this.fire(\"zeroProcesses\", this._processes);\n }\n }\n\n /**\n * Gets the number of processes this Spinner represents.\n *\n * The Spinner is visible while this property is greater than zero.\n *\n * @returns {Number} Current processes count.\n */\n get processes() {\n return this._processes;\n }\n\n _destroy() {\n if (this._element && (!this._isCustom)) {\n this._element.parentNode.removeChild(this._element);\n this._element = null;\n }\n const styleElement = document.getElementById(\"xeokit-spinner-css\");\n if (styleElement) {\n styleElement.parentNode.removeChild(styleElement);\n }\n }\n}\n\n/**\n * @private\n * @type {{WEBGL: boolean, SUPPORTED_EXTENSIONS: {}}}\n */\nconst WEBGL_INFO$1 = {\n WEBGL: false,\n SUPPORTED_EXTENSIONS: {}\n};\n\nconst canvas = document.createElement(\"canvas\");\n\nif (canvas) {\n\n const gl = canvas.getContext(\"webgl\", {antialias: true}) || canvas.getContext(\"experimental-webgl\", {antialias: true});\n\n WEBGL_INFO$1.WEBGL = !!gl;\n\n if (WEBGL_INFO$1.WEBGL) {\n WEBGL_INFO$1.ANTIALIAS = gl.getContextAttributes().antialias;\n if (gl.getShaderPrecisionFormat) {\n if (gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT).precision > 0) {\n WEBGL_INFO$1.FS_MAX_FLOAT_PRECISION = \"highp\";\n } else if (gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT).precision > 0) {\n WEBGL_INFO$1.FS_MAX_FLOAT_PRECISION = \"mediump\";\n } else {\n WEBGL_INFO$1.FS_MAX_FLOAT_PRECISION = \"lowp\";\n }\n } else {\n WEBGL_INFO$1.FS_MAX_FLOAT_PRECISION = \"mediump\";\n }\n WEBGL_INFO$1.DEPTH_BUFFER_BITS = gl.getParameter(gl.DEPTH_BITS);\n WEBGL_INFO$1.MAX_TEXTURE_SIZE = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n WEBGL_INFO$1.MAX_CUBE_MAP_SIZE = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);\n WEBGL_INFO$1.MAX_RENDERBUFFER_SIZE = gl.getParameter(gl.MAX_RENDERBUFFER_SIZE);\n WEBGL_INFO$1.MAX_TEXTURE_UNITS = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);\n WEBGL_INFO$1.MAX_TEXTURE_IMAGE_UNITS = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n WEBGL_INFO$1.MAX_VERTEX_ATTRIBS = gl.getParameter(gl.MAX_VERTEX_ATTRIBS);\n WEBGL_INFO$1.MAX_VERTEX_UNIFORM_VECTORS = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);\n WEBGL_INFO$1.MAX_FRAGMENT_UNIFORM_VECTORS = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS);\n WEBGL_INFO$1.MAX_VARYING_VECTORS = gl.getParameter(gl.MAX_VARYING_VECTORS);\n gl.getSupportedExtensions().forEach(function (ext) {\n WEBGL_INFO$1.SUPPORTED_EXTENSIONS[ext] = true;\n });\n WEBGL_INFO$1.depthTexturesSupported = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"];\n }\n}\n\nconst WEBGL_CONTEXT_NAMES = [\n \"webgl\",\n \"experimental-webgl\",\n \"webkit-3d\",\n \"moz-webgl\",\n \"moz-glweb20\"\n];\n\n/**\n * @desc Manages its {@link Scene}'s HTML canvas.\n *\n * * Provides the HTML canvas element in {@link Canvas#canvas}.\n * * Has a {@link Spinner}, provided at {@link Canvas#spinner}, which manages the loading progress indicator.\n */\nclass Canvas extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Canvas\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._backgroundColor = math.vec3([\n cfg.backgroundColor ? cfg.backgroundColor[0] : 1,\n cfg.backgroundColor ? cfg.backgroundColor[1] : 1,\n cfg.backgroundColor ? cfg.backgroundColor[2] : 1]);\n this._backgroundColorFromAmbientLight = !!cfg.backgroundColorFromAmbientLight;\n\n /**\n * The HTML canvas.\n *\n * @property canvas\n * @type {HTMLCanvasElement}\n * @final\n */\n this.canvas = cfg.canvas;\n\n /**\n * The WebGL rendering context.\n *\n * @property gl\n * @type {WebGLRenderingContext}\n * @final\n */\n this.gl = null;\n\n /**\n * True when WebGL 2 support is enabled.\n *\n * @property webgl2\n * @type {Boolean}\n * @final\n */\n this.webgl2 = false; // Will set true in _initWebGL if WebGL is requested and we succeed in getting it.\n\n /**\n * Indicates if this Canvas is transparent.\n *\n * @property transparent\n * @type {Boolean}\n * @default {false}\n * @final\n */\n this.transparent = !!cfg.transparent;\n\n /**\n * Attributes for the WebGL context\n *\n * @type {{}|*}\n */\n this.contextAttr = cfg.contextAttr || {};\n this.contextAttr.alpha = this.transparent;\n\n this.contextAttr.preserveDrawingBuffer = !!this.contextAttr.preserveDrawingBuffer;\n this.contextAttr.stencil = false;\n this.contextAttr.premultipliedAlpha = (!!this.contextAttr.premultipliedAlpha); // False by default: https://github.com/xeokit/xeokit-sdk/issues/251\n this.contextAttr.antialias = (this.contextAttr.antialias !== false);\n\n // If the canvas uses css styles to specify the sizes make sure the basic\n // width and height attributes match or the WebGL context will use 300 x 150\n\n this.canvas.width = this.canvas.clientWidth;\n this.canvas.height = this.canvas.clientHeight;\n\n /**\n * Boundary of the Canvas in absolute browser window coordinates.\n *\n * ### Usage:\n *\n * ````javascript\n * var boundary = myScene.canvas.boundary;\n *\n * var xmin = boundary[0];\n * var ymin = boundary[1];\n * var width = boundary[2];\n * var height = boundary[3];\n * ````\n *\n * @property boundary\n * @type {{Number[]}}\n * @final\n */\n this.boundary = [\n this.canvas.offsetLeft, this.canvas.offsetTop,\n this.canvas.clientWidth, this.canvas.clientHeight\n ];\n\n // Get WebGL context\n\n this._initWebGL(cfg);\n\n // Bind context loss and recovery handlers\n\n const self = this;\n\n this.canvas.addEventListener(\"webglcontextlost\", this._webglcontextlostListener = function (event) {\n console.time(\"webglcontextrestored\");\n self.scene._webglContextLost();\n /**\n * Fired whenever the WebGL context has been lost\n * @event webglcontextlost\n */\n self.fire(\"webglcontextlost\");\n event.preventDefault();\n },\n false);\n\n this.canvas.addEventListener(\"webglcontextrestored\", this._webglcontextrestoredListener = function (event) {\n self._initWebGL();\n if (self.gl) {\n self.scene._webglContextRestored(self.gl);\n /**\n * Fired whenever the WebGL context has been restored again after having previously being lost\n * @event webglContextRestored\n * @param value The WebGL context object\n */\n self.fire(\"webglcontextrestored\", self.gl);\n event.preventDefault();\n }\n console.timeEnd(\"webglcontextrestored\");\n },\n false);\n\n // Publish canvas size and position changes on each scene tick\n\n let lastWindowWidth = null;\n let lastWindowHeight = null;\n\n let lastCanvasWidth = null;\n let lastCanvasHeight = null;\n\n let lastCanvasOffsetLeft = null;\n let lastCanvasOffsetTop = null;\n\n let lastParent = null;\n\n this._tick = this.scene.on(\"tick\", function () {\n\n const canvas = self.canvas;\n\n const newWindowSize = (window.innerWidth !== lastWindowWidth || window.innerHeight !== lastWindowHeight);\n const newCanvasSize = (canvas.clientWidth !== lastCanvasWidth || canvas.clientHeight !== lastCanvasHeight);\n const newCanvasPos = (canvas.offsetLeft !== lastCanvasOffsetLeft || canvas.offsetTop !== lastCanvasOffsetTop);\n\n const parent = canvas.parentElement;\n const newParent = (parent !== lastParent);\n\n if (newWindowSize || newCanvasSize || newCanvasPos || newParent) {\n\n self._spinner._adjustPosition();\n\n if (newCanvasSize || newCanvasPos) {\n\n const newWidth = canvas.clientWidth;\n const newHeight = canvas.clientHeight;\n\n // TODO: Wasteful to re-count pixel size of each canvas on each canvas' resize\n if (newCanvasSize) {\n let countPixels = 0;\n let scene;\n for (const sceneId in core.scenes) {\n if (core.scenes.hasOwnProperty(sceneId)) {\n scene = core.scenes[sceneId];\n countPixels += scene.canvas.canvas.clientWidth * scene.canvas.canvas.clientHeight;\n }\n }\n stats.memory.pixels = countPixels;\n\n canvas.width = canvas.clientWidth;\n canvas.height = canvas.clientHeight;\n }\n\n const boundary = self.boundary;\n\n boundary[0] = canvas.offsetLeft;\n boundary[1] = canvas.offsetTop;\n boundary[2] = newWidth;\n boundary[3] = newHeight;\n\n /**\n * Fired whenever this Canvas's {@link Canvas/boundary} property changes.\n *\n * @event boundary\n * @param value The property's new value\n */\n self.fire(\"boundary\", boundary);\n\n lastCanvasWidth = newWidth;\n lastCanvasHeight = newHeight;\n }\n\n if (newWindowSize) {\n lastWindowWidth = window.innerWidth;\n lastWindowHeight = window.innerHeight;\n }\n\n if (newCanvasPos) {\n lastCanvasOffsetLeft = canvas.offsetLeft;\n lastCanvasOffsetTop = canvas.offsetTop;\n }\n\n lastParent = parent;\n }\n });\n\n this._spinner = new Spinner(this.scene, {\n canvas: this.canvas,\n elementId: cfg.spinnerElementId\n });\n }\n\n /**\n * Creates a default canvas in the DOM.\n * @private\n */\n _createCanvas() {\n\n const canvasId = \"xeokit-canvas-\" + math.createUUID();\n const body = document.getElementsByTagName(\"body\")[0];\n const div = document.createElement('div');\n\n const style = div.style;\n style.height = \"100%\";\n style.width = \"100%\";\n style.padding = \"0\";\n style.margin = \"0\";\n style.background = \"rgba(0,0,0,0);\";\n style.float = \"left\";\n style.left = \"0\";\n style.top = \"0\";\n style.position = \"absolute\";\n style.opacity = \"1.0\";\n style[\"z-index\"] = \"-10000\";\n\n div.innerHTML += '';\n\n body.appendChild(div);\n\n this.canvas = document.getElementById(canvasId);\n }\n\n _getElementXY(e) {\n let x = 0, y = 0;\n while (e) {\n x += (e.offsetLeft - e.scrollLeft);\n y += (e.offsetTop - e.scrollTop);\n e = e.offsetParent;\n }\n return {x: x, y: y};\n }\n\n /**\n * Initialises the WebGL context\n * @private\n */\n _initWebGL() {\n\n // Default context attribute values\n\n if (!this.gl) {\n for (let i = 0; !this.gl && i < WEBGL_CONTEXT_NAMES.length; i++) {\n try {\n this.gl = this.canvas.getContext(WEBGL_CONTEXT_NAMES[i], this.contextAttr);\n } catch (e) { // Try with next context name\n }\n }\n }\n\n if (!this.gl) {\n\n this.error('Failed to get a WebGL context');\n\n /**\n * Fired whenever the canvas failed to get a WebGL context, which probably means that WebGL\n * is either unsupported or has been disabled.\n * @event webglContextFailed\n */\n this.fire(\"webglContextFailed\", true, true);\n }\n\n if (this.gl) {\n // Setup extension (if necessary) and hints for fragment shader derivative functions\n if (this.webgl2) {\n this.gl.hint(this.gl.FRAGMENT_SHADER_DERIVATIVE_HINT, this.gl.FASTEST);\n } else {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_standard_derivatives\"]) {\n const ext = this.gl.getExtension(\"OES_standard_derivatives\");\n this.gl.hint(ext.FRAGMENT_SHADER_DERIVATIVE_HINT_OES, this.gl.FASTEST);\n }\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n this.gl.getExtension('EXT_frag_depth');\n }\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"]) {\n this.gl.getExtension('WEBGL_depth_texture');\n }\n }\n }\n }\n\n /**\n * Sets if the canvas background color is derived from an {@link AmbientLight}.\n *\n * This only has effect when the canvas is not transparent. When not enabled, the background color\n * will be the canvas element's HTML/CSS background color.\n *\n * Default value is ````true````.\n *\n * @type {Boolean}\n */\n set backgroundColorFromAmbientLight(backgroundColorFromAmbientLight) {\n this._backgroundColorFromAmbientLight = (backgroundColorFromAmbientLight !== false);\n }\n\n /**\n * Gets whether the canvas clear color will be derived from {@link AmbientLight} or {@link Canvas#backgroundColor}\n * when {@link Canvas#transparent} is ```true```.\n *\n * When {@link Canvas#transparent} is ```true``` and this is ````true````, then the canvas clear color will\n * be taken from the {@link Scene}'s ambient light color.\n *\n * When {@link Canvas#transparent} is ```true``` and this is ````false````, then the canvas clear color will\n * be taken from {@link Canvas#backgroundColor}.\n *\n * Default value is ````true````.\n *\n * @type {Boolean}\n */\n get backgroundColorFromAmbientLight() {\n return this._backgroundColorFromAmbientLight;\n }\n\n /**\n * Sets the canvas clear color.\n *\n * Default value is ````[1, 1, 1]````.\n *\n * @type {Number[]}\n */\n set backgroundColor(value) {\n if (value) {\n this._backgroundColor[0] = value[0];\n this._backgroundColor[1] = value[1];\n this._backgroundColor[2] = value[2];\n } else {\n this._backgroundColor[0] = 1.0;\n this._backgroundColor[1] = 1.0;\n this._backgroundColor[2] = 1.0;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the canvas clear color.\n *\n * Default value is ````[1, 1, 1]````.\n *\n * @type {Number[]}\n */\n get backgroundColor() {\n return this._backgroundColor;\n }\n\n /**\n * @private\n * @deprecated\n */\n getSnapshot(params) {\n throw \"Canvas#getSnapshot() has been replaced by Viewer#getSnapshot() - use that method instead.\";\n }\n\n /**\n * Reads colors of pixels from the last rendered frame.\n *\n * Call this method like this:\n *\n * ````JavaScript\n *\n * // Ignore transparent pixels (default is false)\n * var opaqueOnly = true;\n *\n * var colors = new Float32Array(8);\n *\n * viewer.scene.canvas.readPixels([ 100, 22, 12, 33 ], colors, 2, opaqueOnly);\n * ````\n *\n * Then the r,g,b components of the colors will be set to the colors at those pixels.\n *\n * @param {Number[]} pixels\n * @param {Number[]} colors\n * @param {Number} size\n * @param {Boolean} opaqueOnly\n */\n readPixels(pixels, colors, size, opaqueOnly) {\n return this.scene._renderer.readPixels(pixels, colors, size, opaqueOnly);\n }\n\n /**\n * Simulates lost WebGL context.\n */\n loseWebGLContext() {\n if (this.canvas.loseContext) {\n this.canvas.loseContext();\n }\n }\n\n /**\n * The busy {@link Spinner} for this Canvas.\n *\n * @property spinner\n * @type Spinner\n * @final\n */\n get spinner() {\n return this._spinner;\n }\n\n destroy() {\n this.scene.off(this._tick);\n this._spinner._destroy();\n // Memory leak avoidance\n this.canvas.removeEventListener(\"webglcontextlost\", this._webglcontextlostListener);\n this.canvas.removeEventListener(\"webglcontextrestored\", this._webglcontextrestoredListener);\n this.gl = null;\n super.destroy();\n }\n}\n\n/**\n * @desc Provides rendering context to {@link Drawable\"}s as xeokit renders them for a frame.\n *\n * Also creates RTC viewing and picking matrices, caching and reusing matrices within each frame.\n *\n * @private\n */\nclass FrameContext {\n\n constructor(scene) {\n\n this._scene = scene;\n\n this._matPool = [];\n this._matPoolNextFreeIndex = 0;\n\n this._rtcViewMats = {};\n this._rtcPickViewMats = {};\n\n this.reset();\n }\n\n /**\n * Called by the renderer before each frame.\n * @private\n */\n reset() {\n\n this._matPoolNextFreeIndex = 0;\n this._rtcViewMats = {};\n this._rtcPickViewMats = {};\n\n /**\n * The WebGL rendering context.\n * @type {WebGLRenderingContext}\n */\n this.gl = this._scene.canvas.gl;\n\n /**\n * ID of the last {@link WebGLProgram} that was bound during the current frame.\n * @property lastProgramId\n * @type {Number}\n */\n this.lastProgramId = null;\n\n /**\n * Whether to render a quality representation for triangle surfaces.\n *\n * When ````false````, we'll render them with a fast vertex-shaded Gouraud-shaded representation, which\n * is great for zillions of objects.\n *\n * When ````true````, we'll render them at a better visual quality, using smooth, per-fragment shading\n * and a more realistic lighting model.\n *\n * @property quality\n * @default false\n * @type {Boolean}\n */\n this.pbrEnabled = false;\n\n /**\n * Whether SAO is currently enabled during the current frame.\n * @property withSAO\n * @default false\n * @type {Boolean}\n */\n this.withSAO = false;\n\n /**\n * Whether backfaces are currently enabled during the current frame.\n * @property backfaces\n * @default false\n * @type {Boolean}\n */\n this.backfaces = false;\n\n /**\n * The vertex winding order for what we currently consider to be a backface during current\n * frame: true == \"cw\", false == \"ccw\".\n * @property frontFace\n * @default true\n * @type {Boolean}\n */\n this.frontface = true;\n\n /**\n * The next available texture unit to bind a {@link Texture} to.\n * @defauilt 0\n * @property textureUnit\n * @type {number}\n */\n this.textureUnit = 0;\n\n /**\n * Performance statistic that counts how many times the renderer has called ````gl.drawElements()```` has been\n * called so far within the current frame.\n * @default 0\n * @property drawElements\n * @type {number}\n */\n this.drawElements = 0;\n\n /**\n * Performance statistic that counts how many times ````gl.drawArrays()```` has been called so far within\n * the current frame.\n * @default 0\n * @property drawArrays\n * @type {number}\n */\n this.drawArrays = 0;\n\n /**\n * Performance statistic that counts how many times ````gl.useProgram()```` has been called so far within\n * the current frame.\n * @default 0\n * @property useProgram\n * @type {number}\n */\n this.useProgram = 0;\n\n /**\n * Statistic that counts how many times ````gl.bindTexture()```` has been called so far within the current frame.\n * @default 0\n * @property bindTexture\n * @type {number}\n */\n this.bindTexture = 0;\n\n /**\n * Counts how many times the renderer has called ````gl.bindArray()```` so far within the current frame.\n * @defaulr 0\n * @property bindArray\n * @type {number}\n */\n this.bindArray = 0;\n\n /**\n * Indicates which pass the renderer is currently rendering.\n *\n * See {@link Scene/passes:property\"}}Scene#passes{{/crossLink}}, which configures how many passes we render\n * per frame, which typically set to ````2```` when rendering a stereo view.\n *\n * @property pass\n * @type {number}\n */\n this.pass = 0;\n\n /**\n * The 4x4 viewing transform matrix the renderer is currently using when rendering castsShadows.\n *\n * This sets the viewpoint to look from the point of view of each {@link DirLight}\n * or {@link PointLight} that casts a shadow.\n *\n * @property shadowViewMatrix\n * @type {Number[]}\n */\n this.shadowViewMatrix = null;\n\n /**\n * The 4x4 viewing projection matrix the renderer is currently using when rendering shadows.\n *\n * @property shadowProjMatrix\n * @type {Number[]}\n */\n this.shadowProjMatrix = null;\n\n /**\n * The 4x4 viewing transform matrix the renderer is currently using when rendering a ray-pick.\n *\n * This sets the viewpoint to look along the ray given to {@link Scene/pick:method\"}}Scene#pick(){{/crossLink}}\n * when picking with a ray.\n *\n * @property pickViewMatrix\n * @type {Number[]}\n */\n this.pickViewMatrix = null;\n\n /**\n * The 4x4 orthographic projection transform matrix the renderer is currently using when rendering a ray-pick.\n *\n * @property pickProjMatrix\n * @type {Number[]}\n */\n this.pickProjMatrix = null;\n\n /**\n * Distance to the near clipping plane when rendering depth fragments for GPU-accelerated 3D picking.\n *\n * @property pickZNear\n * @type {Number|*}\n */\n this.pickZNear = 0.01;\n\n /**\n * Distance to the far clipping plane when rendering depth fragments for GPU-accelerated 3D picking.\n *\n * @property pickZFar\n * @type {Number|*}\n */\n this.pickZFar = 5000;\n\n /**\n * Whether or not the renderer is currently picking invisible objects.\n *\n * @property pickInvisible\n * @type {Number}\n */\n this.pickInvisible = false;\n\n /** The current line width.\n *\n * @property lineWidth\n * @type Number\n */\n this.lineWidth = 1;\n }\n\n /**\n * Get View matrix for the given RTC center.\n */\n getRTCViewMatrix(rtcCenterHash, rtcCenter) {\n let rtcViewMat = this._rtcViewMats[rtcCenterHash];\n if (!rtcViewMat) {\n rtcViewMat = this._getNewMat();\n createRTCViewMat(this._scene.camera.viewMatrix, rtcCenter, rtcViewMat);\n this._rtcViewMats[rtcCenterHash] = rtcViewMat;\n }\n return rtcViewMat;\n }\n\n /**\n * Get picking View RTC matrix for the given RTC center.\n */\n getRTCPickViewMatrix(rtcCenterHash, rtcCenter) {\n let rtcPickViewMat = this._rtcPickViewMats[rtcCenterHash];\n if (!rtcPickViewMat) {\n rtcPickViewMat = this._getNewMat();\n const pickViewMat = this.pickViewMatrix || this._scene.camera.viewMatrix;\n createRTCViewMat(pickViewMat, rtcCenter, rtcPickViewMat);\n this._rtcPickViewMats[rtcCenterHash] = rtcPickViewMat;\n }\n return rtcPickViewMat;\n }\n\n _getNewMat() {\n let mat = this._matPool[this._matPoolNextFreeIndex];\n if (!mat) {\n mat = math.mat4();\n this._matPool[this._matPoolNextFreeIndex] = mat;\n }\n this._matPoolNextFreeIndex++;\n return mat;\n }\n}\n\n/*\n * Canvas2Image v0.1\n * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com\n * MIT License [http://www.opensource.org/licenses/mit-license.php]\n *\n * Modified by @xeolabs to permit vertical flipping, so that snapshot can be taken from WebGL frame buffers,\n * which vertically flip image data as part of the way that WebGL renders textures.\n */\n\n/**\n * @private\n */\nconst Canvas2Image = (function () {\n // check if we have canvas support\n const oCanvas = document.createElement(\"canvas\"), sc = String.fromCharCode;\n\n // no canvas, bail out.\n if (!oCanvas.getContext) {\n return {\n saveAsBMP: function () {\n },\n saveAsPNG: function () {\n },\n saveAsJPEG: function () {\n }\n }\n }\n\n const bHasImageData = !!(oCanvas.getContext(\"2d\").getImageData), bHasDataURL = !!(oCanvas.toDataURL),\n bHasBase64 = !!(window.btoa);\n\n // ok, we're good\n const readCanvasData = function (oCanvas) {\n const iWidth = parseInt(oCanvas.width), iHeight = parseInt(oCanvas.height);\n return oCanvas.getContext(\"2d\").getImageData(0, 0, iWidth, iHeight);\n };\n\n // base64 encodes either a string or an array of charcodes\n const encodeData = function (data) {\n let i, aData, strData = \"\";\n\n if (typeof data == \"string\") {\n strData = data;\n } else {\n aData = data;\n for (i = 0; i < aData.length; i++) {\n strData += sc(aData[i]);\n }\n }\n return btoa(strData);\n };\n\n // creates a base64 encoded string containing BMP data takes an imagedata object as argument\n const createBMP = function (oData) {\n let strHeader = '';\n const iWidth = oData.width;\n const iHeight = oData.height;\n\n strHeader += 'BM';\n\n let iFileSize = iWidth * iHeight * 4 + 54; // total header size = 54 bytes\n strHeader += sc(iFileSize % 256);\n iFileSize = Math.floor(iFileSize / 256);\n strHeader += sc(iFileSize % 256);\n iFileSize = Math.floor(iFileSize / 256);\n strHeader += sc(iFileSize % 256);\n iFileSize = Math.floor(iFileSize / 256);\n strHeader += sc(iFileSize % 256);\n\n strHeader += sc(0, 0, 0, 0, 54, 0, 0, 0); // data offset\n strHeader += sc(40, 0, 0, 0); // info header size\n\n let iImageWidth = iWidth;\n strHeader += sc(iImageWidth % 256);\n iImageWidth = Math.floor(iImageWidth / 256);\n strHeader += sc(iImageWidth % 256);\n iImageWidth = Math.floor(iImageWidth / 256);\n strHeader += sc(iImageWidth % 256);\n iImageWidth = Math.floor(iImageWidth / 256);\n strHeader += sc(iImageWidth % 256);\n\n let iImageHeight = iHeight;\n strHeader += sc(iImageHeight % 256);\n iImageHeight = Math.floor(iImageHeight / 256);\n strHeader += sc(iImageHeight % 256);\n iImageHeight = Math.floor(iImageHeight / 256);\n strHeader += sc(iImageHeight % 256);\n iImageHeight = Math.floor(iImageHeight / 256);\n strHeader += sc(iImageHeight % 256);\n\n strHeader += sc(1, 0, 32, 0); // num of planes & num of bits per pixel\n strHeader += sc(0, 0, 0, 0); // compression = none\n\n let iDataSize = iWidth * iHeight * 4;\n strHeader += sc(iDataSize % 256);\n iDataSize = Math.floor(iDataSize / 256);\n strHeader += sc(iDataSize % 256);\n iDataSize = Math.floor(iDataSize / 256);\n strHeader += sc(iDataSize % 256);\n iDataSize = Math.floor(iDataSize / 256);\n strHeader += sc(iDataSize % 256);\n\n strHeader += sc(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); // these bytes are not used\n\n const aImgData = oData.data;\n let strPixelData = \"\";\n let x;\n let y = iHeight;\n let iOffsetX;\n let iOffsetY;\n let strPixelRow;\n\n do {\n iOffsetY = iWidth * (y - 1) * 4;\n strPixelRow = \"\";\n for (x = 0; x < iWidth; x++) {\n iOffsetX = 4 * x;\n strPixelRow += sc(\n aImgData[iOffsetY + iOffsetX + 2], // B\n aImgData[iOffsetY + iOffsetX + 1], // G\n aImgData[iOffsetY + iOffsetX], // R\n aImgData[iOffsetY + iOffsetX + 3] // A\n );\n }\n strPixelData += strPixelRow;\n } while (--y);\n\n return encodeData(strHeader + strPixelData);\n };\n\n // sends the generated file to the client\n const saveFile = function (strData) {\n if (!window.open(strData)) {\n document.location.href = strData;\n }\n };\n\n const makeDataURI = function (strData, strMime) {\n return \"data:\" + strMime + \";base64,\" + strData;\n };\n\n // generates a object containing the imagedata\n const makeImageObject = function (strSource) {\n const oImgElement = document.createElement(\"img\");\n oImgElement.src = strSource;\n return oImgElement;\n };\n\n const scaleCanvas = function (oCanvas, iWidth, iHeight, flipy) {\n if (iWidth && iHeight) {\n const oSaveCanvas = document.createElement(\"canvas\");\n oSaveCanvas.width = iWidth;\n oSaveCanvas.height = iHeight;\n oSaveCanvas.style.width = iWidth + \"px\";\n oSaveCanvas.style.height = iHeight + \"px\";\n const oSaveCtx = oSaveCanvas.getContext(\"2d\");\n if (flipy) {\n oSaveCtx.save();\n oSaveCtx.scale(1.0, -1.0);\n oSaveCtx.imageSmoothingEnabled = true;\n oSaveCtx.drawImage(oCanvas, 0, 0, oCanvas.width, oCanvas.height, 0, 0, iWidth, -iHeight);\n oSaveCtx.restore();\n } else {\n oSaveCtx.imageSmoothingEnabled = true;\n oSaveCtx.drawImage(oCanvas, 0, 0, oCanvas.width, oCanvas.height, 0, 0, iWidth, iHeight);\n }\n return oSaveCanvas;\n }\n return oCanvas;\n };\n\n return {\n saveAsPNG: function (oCanvas, bReturnImg, iWidth, iHeight, flipy) {\n if (!bHasDataURL) return false;\n const oScaledCanvas = scaleCanvas(oCanvas, iWidth, iHeight, flipy);\n const strMime = \"image/png\";\n const strData = oScaledCanvas.toDataURL(strMime);\n if (bReturnImg) {\n return makeImageObject(strData);\n } else {\n saveFile(strData);\n }\n return true;\n },\n\n saveAsJPEG: function (oCanvas, bReturnImg, iWidth, iHeight, flipy) {\n if (!bHasDataURL) return false;\n const oScaledCanvas = scaleCanvas(oCanvas, iWidth, iHeight, flipy);\n const strMime = \"image/jpeg\";\n const strData = oScaledCanvas.toDataURL(strMime);\n // check if browser actually supports jpeg by looking for the mime type in the data uri. if not, return false\n if (strData.indexOf(strMime) != 5) return false;\n if (bReturnImg) {\n return makeImageObject(strData);\n } else {\n saveFile(strData);\n }\n return true;\n },\n\n saveAsBMP: function (oCanvas, bReturnImg, iWidth, iHeight, flipy) {\n if (!(bHasDataURL && bHasImageData && bHasBase64)) return false;\n const oScaledCanvas = scaleCanvas(oCanvas, iWidth, iHeight, flipy);\n const strMime = \"image/bmp\";\n const oData = readCanvasData(oScaledCanvas), strImgData = createBMP(oData);\n if (bReturnImg) {\n return makeImageObject(makeDataURI(strImgData, strMime));\n } else {\n saveFile(makeDataURI(strImgData, strMime));\n }\n return true;\n }\n };\n})();\n\n/**\n * @desc Represents a WebGL render buffer.\n * @private\n */\nclass RenderBuffer {\n\n constructor(canvas, gl, options) {\n options = options || {};\n this.gl = gl;\n this.allocated = false;\n this.canvas = canvas;\n this.buffer = null;\n this.bound = false;\n this.size = options.size;\n this._hasDepthTexture = !!options.depthTexture;\n }\n\n setSize(size) {\n this.size = size;\n }\n\n webglContextRestored(gl) {\n this.gl = gl;\n this.buffer = null;\n this.allocated = false;\n this.bound = false;\n }\n\n bind() {\n this._touch();\n if (this.bound) {\n return;\n }\n const gl = this.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, this.buffer.framebuf);\n this.bound = true;\n }\n\n _touch() {\n\n let width;\n let height;\n const gl = this.gl;\n\n if (this.size) {\n width = this.size[0];\n height = this.size[1];\n\n } else {\n width = gl.drawingBufferWidth;\n height = gl.drawingBufferHeight;\n }\n\n if (this.buffer) {\n\n if (this.buffer.width === width && this.buffer.height === height) {\n return;\n\n } else {\n gl.deleteTexture(this.buffer.texture);\n gl.deleteFramebuffer(this.buffer.framebuf);\n gl.deleteRenderbuffer(this.buffer.renderbuf);\n }\n }\n\n const colorTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, colorTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n\n let depthTexture;\n\n if (this._hasDepthTexture) {\n depthTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, depthTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT, width, height, 0, gl.DEPTH_COMPONENT, gl.UNSIGNED_INT, null);\n }\n\n const renderbuf = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuf);\n gl.renderbufferStorage(gl.RENDERBUFFER, gl.DEPTH_COMPONENT16, width, height);\n\n const framebuf = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuf);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, colorTexture, 0);\n\n if (this._hasDepthTexture) {\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture, 0);\n } else {\n gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.RENDERBUFFER, renderbuf);\n }\n\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindRenderbuffer(gl.RENDERBUFFER, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n // Verify framebuffer is OK\n\n gl.bindFramebuffer(gl.FRAMEBUFFER, framebuf);\n if (!gl.isFramebuffer(framebuf)) {\n throw \"Invalid framebuffer\";\n }\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n\n const status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n\n switch (status) {\n\n case gl.FRAMEBUFFER_COMPLETE:\n break;\n\n case gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n throw \"Incomplete framebuffer: FRAMEBUFFER_INCOMPLETE_ATTACHMENT\";\n\n case gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n throw \"Incomplete framebuffer: FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\";\n\n case gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n throw \"Incomplete framebuffer: FRAMEBUFFER_INCOMPLETE_DIMENSIONS\";\n\n case gl.FRAMEBUFFER_UNSUPPORTED:\n throw \"Incomplete framebuffer: FRAMEBUFFER_UNSUPPORTED\";\n\n default:\n throw \"Incomplete framebuffer: \" + status;\n }\n\n this.buffer = {\n framebuf: framebuf,\n renderbuf: renderbuf,\n texture: colorTexture,\n depthTexture: depthTexture,\n width: width,\n height: height\n };\n\n this.bound = false;\n }\n\n clear() {\n if (!this.bound) {\n throw \"Render buffer not bound\";\n }\n const gl = this.gl;\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n }\n\n read(pickX, pickY) {\n const x = pickX;\n const y = this.gl.drawingBufferHeight - pickY;\n const pix = new Uint8Array(4);\n const gl = this.gl;\n gl.readPixels(x, y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pix);\n return pix;\n }\n\n readImage(params) {\n\n const gl = this.gl;\n const imageDataCache = this._getImageDataCache();\n const pixelData = imageDataCache.pixelData;\n const canvas = imageDataCache.canvas;\n const imageData = imageDataCache.imageData;\n const context = imageDataCache.context;\n\n gl.readPixels(0, 0, this.buffer.width, this.buffer.height, gl.RGBA, gl.UNSIGNED_BYTE, pixelData);\n\n imageData.data.set(pixelData);\n context.putImageData(imageData, 0, 0);\n\n const imageWidth = params.width || canvas.width;\n const imageHeight = params.height || canvas.height;\n const format = params.format || \"jpeg\";\n const flipy = true; // Account for WebGL texture flipping\n\n let image;\n\n switch (format) {\n case \"jpeg\":\n image = Canvas2Image.saveAsJPEG(canvas, true, imageWidth, imageHeight, flipy);\n break;\n case \"png\":\n image = Canvas2Image.saveAsPNG(canvas, true, imageWidth, imageHeight, flipy);\n break;\n case \"bmp\":\n image = Canvas2Image.saveAsBMP(canvas, true, imageWidth, imageHeight, flipy);\n break;\n default:\n console.error(\"Unsupported image format: '\" + format + \"' - supported types are 'jpeg', 'bmp' and 'png' - defaulting to 'jpeg'\");\n image = Canvas2Image.saveAsJPEG(canvas, true, imageWidth, imageHeight, flipy);\n }\n\n return image.src;\n }\n\n _getImageDataCache() {\n\n const bufferWidth = this.buffer.width;\n const bufferHeight = this.buffer.height;\n\n let imageDataCache = this._imageDataCache;\n\n if (imageDataCache) {\n if (imageDataCache.width !== bufferWidth || imageDataCache.height !== bufferHeight) {\n this._imageDataCache = null;\n imageDataCache = null;\n }\n }\n\n if (!imageDataCache) {\n\n const canvas = document.createElement('canvas');\n canvas.width = bufferWidth;\n canvas.height = bufferHeight;\n\n const context = canvas.getContext('2d');\n const imageData = context.createImageData(bufferWidth, bufferHeight);\n\n imageDataCache = {\n pixelData: new Uint8Array(bufferWidth * bufferHeight * 4),\n canvas: canvas,\n context: context,\n imageData: imageData,\n width: bufferWidth,\n height: bufferHeight\n };\n\n this._imageDataCache = imageDataCache;\n }\n\n return imageDataCache;\n }\n\n unbind() {\n const gl = this.gl;\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n this.bound = false;\n }\n\n getTexture() {\n const self = this;\n return this._texture || (this._texture = {\n renderBuffer: this,\n bind: function (unit) {\n if (self.buffer && self.buffer.texture) {\n self.gl.activeTexture(self.gl[\"TEXTURE\" + unit]);\n self.gl.bindTexture(self.gl.TEXTURE_2D, self.buffer.texture);\n return true;\n }\n return false;\n },\n unbind: function (unit) {\n if (self.buffer && self.buffer.texture) {\n self.gl.activeTexture(self.gl[\"TEXTURE\" + unit]);\n self.gl.bindTexture(self.gl.TEXTURE_2D, null);\n }\n }\n });\n }\n\n hasDepthTexture() {\n return this._hasDepthTexture;\n }\n\n getDepthTexture() {\n if (!this._hasDepthTexture) {\n return null;\n }\n const self = this;\n return this._depthTexture || (this._dethTexture = {\n renderBuffer: this,\n bind: function (unit) {\n if (self.buffer && self.buffer.depthTexture) {\n self.gl.activeTexture(self.gl[\"TEXTURE\" + unit]);\n self.gl.bindTexture(self.gl.TEXTURE_2D, self.buffer.depthTexture);\n return true;\n }\n return false;\n },\n unbind: function (unit) {\n if (self.buffer && self.buffer.depthTexture) {\n self.gl.activeTexture(self.gl[\"TEXTURE\" + unit]);\n self.gl.bindTexture(self.gl.TEXTURE_2D, null);\n }\n }\n });\n }\n\n destroy() {\n if (this.allocated) {\n const gl = this.gl;\n gl.deleteTexture(this.buffer.texture);\n gl.deleteTexture(this.buffer.depthTexture);\n gl.deleteFramebuffer(this.buffer.framebuf);\n gl.deleteRenderbuffer(this.buffer.renderbuf);\n this.allocated = false;\n this.buffer = null;\n this.bound = false;\n }\n this._imageDataCache = null;\n this._texture = null;\n this._depthTexture = null;\n }\n}\n\n/**\n * @desc Pick result returned by {@link Scene#pick}.\n *\n */\nclass PickResult {\n\n /**\n * @private\n * @param value\n */\n constructor() {\n\n /**\n * Picked entity.\n * Null when no entity was picked.\n * @property entity\n * @type {Entity|*}\n */\n this.entity = null;\n\n /**\n * Type of primitive that was picked - usually \"triangle\".\n * Null when no primitive was picked.\n * @property primitive\n * @type {String}\n */\n this.primitive = null;\n\n /**\n * Index of primitive that was picked.\n * -1 when no entity was picked.\n * @property primIndex\n * @type {number}\n */\n this.primIndex = -1;\n\n /**\n * True when the picked surface position is full precision.\n * When false, the picked surface position should be regarded as approximate.\n * Full-precision surface picking is performed with the {@link Scene#pick} method's ````pickSurfacePrecision```` option.\n * @property pickSurfacePrecision\n * @type {Boolean}\n */\n this.pickSurfacePrecision = false;\n\n this._canvasPos = new Int16Array([0, 0]);\n this._origin = new Float64Array([0, 0, 0]);\n this._direction = new Float64Array([0, 0, 0]);\n this._indices = new Int32Array(3);\n this._localPos = new Float64Array([0, 0, 0]);\n this._worldPos = new Float64Array([0, 0, 0]);\n this._viewPos = new Float64Array([0, 0, 0]);\n this._bary = new Float64Array([0, 0, 0]);\n this._worldNormal = new Float64Array([0, 0, 0]);\n this._uv = new Float64Array([0, 0]);\n\n this.reset();\n }\n\n /**\n * Canvas coordinates when picking with a 2D pointer.\n * @property canvasPos\n * @type {Number[]}\n */\n get canvasPos() {\n return this._gotCanvasPos ? this._canvasPos : null;\n }\n\n /**\n * @private\n * @param value\n */\n set canvasPos(value) {\n if (value) {\n this._canvasPos[0] = value[0];\n this._canvasPos[1] = value[1];\n this._gotCanvasPos = true;\n } else {\n this._gotCanvasPos = false;\n }\n }\n\n /**\n * World-space 3D ray origin when raypicked.\n * @property origin\n * @type {Number[]}\n */\n get origin() {\n return this._gotOrigin ? this._origin : null;\n }\n\n /**\n * @private\n * @param value\n */\n set origin(value) {\n if (value) {\n this._origin[0] = value[0];\n this._origin[1] = value[1];\n this._origin[2] = value[2];\n this._gotOrigin = true;\n } else {\n this._gotOrigin = false;\n }\n }\n\n /**\n * World-space 3D ray direction when raypicked.\n * @property direction\n * @type {Number[]}\n */\n get direction() {\n return this._gotDirection ? this._direction : null;\n }\n\n /**\n * @private\n * @param value\n */\n set direction(value) {\n if (value) {\n this._direction[0] = value[0];\n this._direction[1] = value[1];\n this._direction[2] = value[2];\n this._gotDirection = true;\n } else {\n this._gotDirection = false;\n }\n }\n \n /**\n * Picked triangle's vertex indices.\n * Only defined when an entity and triangle was picked.\n * @property indices\n * @type {Int32Array}\n */\n get indices() {\n return this.entity && this._gotIndices ? this._indices : null;\n }\n\n /**\n * @private\n * @param value\n */\n set indices(value) {\n if (value) {\n this._indices[0] = value[0];\n this._indices[1] = value[1];\n this._indices[2] = value[2];\n this._gotIndices = true;\n } else {\n this._gotIndices = false;\n }\n }\n\n /**\n * Picked Local-space point on surface.\n * Only defined when an entity and a point on its surface was picked.\n * @property localPos\n * @type {Number[]}\n */\n get localPos() {\n return this.entity && this._gotLocalPos ? this._localPos : null;\n }\n\n /**\n * @private\n * @param value\n */\n set localPos(value) {\n if (value) {\n this._localPos[0] = value[0];\n this._localPos[1] = value[1];\n this._localPos[2] = value[2];\n this._gotLocalPos = true;\n } else {\n this._gotLocalPos = false;\n }\n }\n\n /**\n * Picked World-space point on surface.\n * Only defined when an entity and a point on its surface was picked.\n * @property worldPos\n * @type {Number[]}\n */\n get worldPos() {\n return this.entity && this._gotWorldPos ? this._worldPos : null;\n }\n\n /**\n * @private\n * @param value\n */\n set worldPos(value) {\n if (value) {\n this._worldPos[0] = value[0];\n this._worldPos[1] = value[1];\n this._worldPos[2] = value[2];\n this._gotWorldPos = true;\n } else {\n this._gotWorldPos = false;\n }\n }\n\n /**\n * Picked View-space point on surface.\n * Only defined when an entity and a point on its surface was picked.\n * @property viewPos\n * @type {Number[]}\n */\n get viewPos() {\n return this.entity && this._gotViewPos ? this._viewPos : null;\n }\n\n /**\n * @private\n * @param value\n */\n set viewPos(value) {\n if (value) {\n this._viewPos[0] = value[0];\n this._viewPos[1] = value[1];\n this._viewPos[2] = value[2];\n this._gotViewPos = true;\n } else {\n this._gotViewPos = false;\n }\n }\n\n /**\n * Barycentric coordinate within picked triangle.\n * Only defined when an entity and a point on its surface was picked.\n * @property bary\n * @type {Number[]}\n */\n get bary() {\n return this.entity && this._gotBary ? this._bary : null;\n }\n\n /**\n * @private\n * @param value\n */\n set bary(value) {\n if (value) {\n this._bary[0] = value[0];\n this._bary[1] = value[1];\n this._bary[2] = value[2];\n this._gotBary = true;\n } else {\n this._gotBary = false;\n }\n }\n\n /**\n * Normal vector at picked position on surface.\n * Only defined when an entity and a point on its surface was picked.\n * @property worldNormal\n * @type {Number[]}\n */\n get worldNormal() {\n return this.entity && this._gotWorldNormal ? this._worldNormal : null;\n }\n\n /**\n * @private\n * @param value\n */\n set worldNormal(value) {\n if (value) {\n this._worldNormal[0] = value[0];\n this._worldNormal[1] = value[1];\n this._worldNormal[2] = value[2];\n this._gotWorldNormal = true;\n } else {\n this._gotWorldNormal = false;\n }\n }\n\n /**\n * UV coordinates at picked position on surface.\n * Only defined when an entity and a point on its surface was picked.\n * @property uv\n * @type {Number[]}\n */\n get uv() {\n return this.entity && this._gotUV ? this._uv : null;\n }\n\n /**\n * @private\n * @param value\n */\n set uv(value) {\n if (value) {\n this._uv[0] = value[0];\n this._uv[1] = value[1];\n this._gotUV = true;\n } else {\n this._gotUV = false;\n }\n }\n\n /**\n * @private\n */\n reset() {\n this.entity = null;\n this.primIndex = -1;\n this.primitive = null;\n this.pickSurfacePrecision = false;\n this._gotCanvasPos = false;\n this._gotOrigin = false;\n this._gotDirection = false;\n this._gotIndices = false;\n this._gotLocalPos = false;\n this._gotWorldPos = false;\n this._gotViewPos = false;\n this._gotBary = false;\n this._gotWorldNormal = false;\n this._gotUV = false;\n }\n}\n\n/**\n * @desc Represents a vertex or fragment stage within a {@link Program}.\n * @private\n */\nclass Shader {\n\n constructor(gl, type, source) {\n\n this.allocated = false;\n this.compiled = false;\n this.handle = gl.createShader(type);\n\n if (!this.handle) {\n this.errors = [\n \"Failed to allocate\"\n ];\n return;\n }\n\n this.allocated = true;\n\n gl.shaderSource(this.handle, source);\n gl.compileShader(this.handle);\n\n this.compiled = gl.getShaderParameter(this.handle, gl.COMPILE_STATUS);\n\n if (!this.compiled) {\n\n if (!gl.isContextLost()) { // Handled explicitly elsewhere, so won't re-handle here\n\n const lines = source.split(\"\\n\");\n const numberedLines = [];\n for (let i = 0; i < lines.length; i++) {\n numberedLines.push((i + 1) + \": \" + lines[i] + \"\\n\");\n }\n this.errors = [];\n this.errors.push(\"\");\n this.errors.push(gl.getShaderInfoLog(this.handle));\n this.errors = this.errors.concat(numberedLines.join(\"\"));\n }\n }\n }\n\n destroy() {\n\n }\n}\n\n/**\n * @desc A low-level component that represents a WebGL Sampler.\n * @private\n */\nclass Sampler {\n\n constructor(gl, location) {\n this.bindTexture = function (texture, unit) {\n if (texture.bind(unit)) {\n gl.uniform1i(location, unit);\n return true;\n }\n return false;\n };\n }\n}\n\n/**\n * @desc Represents a WebGL vertex attribute buffer (VBO).\n * @private\n * @param gl {WebGLRenderingContext} The WebGL rendering context.\n */\nclass Attribute {\n\n constructor(gl, location) {\n this._gl = gl;\n this.location = location;\n }\n\n bindArrayBuffer(arrayBuf) {\n if (!arrayBuf) {\n return;\n }\n arrayBuf.bind();\n this._gl.enableVertexAttribArray(this.location);\n this._gl.vertexAttribPointer(this.location, arrayBuf.itemSize, arrayBuf.itemType, arrayBuf.normalized, arrayBuf.stride, arrayBuf.offset);\n }\n}\n\nconst ids$4 = new Map({});\n\nfunction joinSansComments(srcLines) {\n const src = [];\n let line;\n let n;\n for (let i = 0, len = srcLines.length; i < len; i++) {\n line = srcLines[i];\n n = line.indexOf(\"/\");\n if (n > 0) {\n if (line.charAt(n + 1) === \"/\") {\n line = line.substring(0, n);\n }\n }\n src.push(line);\n }\n return src.join(\"\\n\");\n}\n\nfunction logErrors(errors) {\n console.error(errors.join(\"\\n\"));\n}\n\n/**\n * @desc Represents a WebGL program.\n * @private\n */\nclass Program {\n\n constructor(gl, shaderSource) {\n this.id = ids$4.addItem({});\n this.source = shaderSource;\n this.init(gl);\n }\n\n init(gl) {\n this.gl = gl;\n this.allocated = false;\n this.compiled = false;\n this.linked = false;\n this.validated = false;\n this.errors = null;\n this.uniforms = {};\n this.samplers = {};\n this.attributes = {};\n this._vertexShader = new Shader(gl, gl.VERTEX_SHADER, joinSansComments(this.source.vertex));\n this._fragmentShader = new Shader(gl, gl.FRAGMENT_SHADER, joinSansComments(this.source.fragment));\n if (!this._vertexShader.allocated) {\n this.errors = [\"Vertex shader failed to allocate\"].concat(this._vertexShader.errors);\n logErrors(this.errors);\n return;\n }\n if (!this._fragmentShader.allocated) {\n this.errors = [\"Fragment shader failed to allocate\"].concat(this._fragmentShader.errors);\n logErrors(this.errors);\n return;\n }\n this.allocated = true;\n if (!this._vertexShader.compiled) {\n this.errors = [\"Vertex shader failed to compile\"].concat(this._vertexShader.errors);\n logErrors(this.errors);\n return;\n }\n if (!this._fragmentShader.compiled) {\n this.errors = [\"Fragment shader failed to compile\"].concat(this._fragmentShader.errors);\n logErrors(this.errors);\n return;\n }\n this.compiled = true;\n let a;\n let i;\n let u;\n let uName;\n let location;\n this.handle = gl.createProgram();\n if (!this.handle) {\n this.errors = [\"Failed to allocate program\"];\n return;\n }\n gl.attachShader(this.handle, this._vertexShader.handle);\n gl.attachShader(this.handle, this._fragmentShader.handle);\n gl.linkProgram(this.handle);\n this.linked = gl.getProgramParameter(this.handle, gl.LINK_STATUS);\n // HACK: Disable validation temporarily: https://github.com/xeolabs/xeokit/issues/5\n // Perhaps we should defer validation until render-time, when the program has values set for all inputs?\n this.validated = true;\n if (!this.linked || !this.validated) {\n this.errors = [];\n this.errors.push(\"\");\n this.errors.push(gl.getProgramInfoLog(this.handle));\n this.errors.push(\"\\nVertex shader:\\n\");\n this.errors = this.errors.concat(this.source.vertex);\n this.errors.push(\"\\nFragment shader:\\n\");\n this.errors = this.errors.concat(this.source.fragment);\n logErrors(this.errors);\n return;\n }\n const numUniforms = gl.getProgramParameter(this.handle, gl.ACTIVE_UNIFORMS);\n for (i = 0; i < numUniforms; ++i) {\n u = gl.getActiveUniform(this.handle, i);\n if (u) {\n uName = u.name;\n if (uName[uName.length - 1] === \"\\u0000\") {\n uName = uName.substr(0, uName.length - 1);\n }\n location = gl.getUniformLocation(this.handle, uName);\n if ((u.type === gl.SAMPLER_2D) || (u.type === gl.SAMPLER_CUBE) || (u.type === 35682)) {\n this.samplers[uName] = new Sampler(gl, location);\n } else {\n this.uniforms[uName] = location;\n }\n }\n }\n const numAttribs = gl.getProgramParameter(this.handle, gl.ACTIVE_ATTRIBUTES);\n for (i = 0; i < numAttribs; i++) {\n a = gl.getActiveAttrib(this.handle, i);\n if (a) {\n location = gl.getAttribLocation(this.handle, a.name);\n this.attributes[a.name] = new Attribute(gl, location);\n }\n }\n this.allocated = true;\n }\n\n bind() {\n if (!this.allocated) {\n return;\n }\n this.gl.useProgram(this.handle);\n }\n\n getLocation(name) {\n if (!this.allocated) {\n return;\n }\n return this.uniforms[name];\n }\n\n getAttribute(name) {\n if (!this.allocated) {\n return;\n }\n return this.attributes[name];\n }\n\n bindTexture(name, texture, unit) {\n if (!this.allocated) {\n return false;\n }\n const sampler = this.samplers[name];\n if (sampler) {\n return sampler.bindTexture(texture, unit);\n } else {\n return false;\n }\n }\n\n destroy() {\n if (!this.allocated) {\n return;\n }\n ids$4.removeItem(this.id);\n this.gl.deleteProgram(this.handle);\n this.gl.deleteShader(this._vertexShader.handle);\n this.gl.deleteShader(this._fragmentShader.handle);\n this.handle = null;\n this.attributes = null;\n this.uniforms = null;\n this.samplers = null;\n this.allocated = false;\n }\n}\n\n/**\n * @desc Represents a WebGL ArrayBuffer.\n *\n * @private\n */\nclass ArrayBuf {\n\n constructor(gl, type, data, numItems, itemSize, usage, normalized, stride, offset) {\n\n this._gl = gl;\n this.type = type;\n this.allocated = false;\n\n switch (data.constructor) {\n\n case Uint8Array:\n this.itemType = gl.UNSIGNED_BYTE;\n this.itemByteSize = 1;\n break;\n\n case Int8Array:\n this.itemType = gl.BYTE;\n this.itemByteSize = 1;\n break;\n\n case Uint16Array:\n this.itemType = gl.UNSIGNED_SHORT;\n this.itemByteSize = 2;\n break;\n\n case Int16Array:\n this.itemType = gl.SHORT;\n this.itemByteSize = 2;\n break;\n\n case Uint32Array:\n this.itemType = gl.UNSIGNED_INT;\n this.itemByteSize = 4;\n break;\n\n case Int32Array:\n this.itemType = gl.INT;\n this.itemByteSize = 4;\n break;\n\n default:\n this.itemType = gl.FLOAT;\n this.itemByteSize = 4;\n }\n\n this.usage = usage;\n this.length = 0;\n this.dataLength = numItems;\n this.numItems = 0;\n this.itemSize = itemSize;\n this.normalized = !!normalized;\n this.stride = stride || 0;\n this.offset = offset || 0;\n\n this._allocate(data);\n }\n\n _allocate(data) {\n this.allocated = false;\n this._handle = this._gl.createBuffer();\n if (!this._handle) {\n throw \"Failed to allocate WebGL ArrayBuffer\";\n }\n if (this._handle) {\n this._gl.bindBuffer(this.type, this._handle);\n this._gl.bufferData(this.type, data.length > this.dataLength ? data.slice(0, this.dataLength) : data, this.usage);\n this._gl.bindBuffer(this.type, null);\n this.length = data.length;\n this.numItems = this.length / this.itemSize;\n this.allocated = true;\n }\n }\n\n setData(data, offset) {\n if (!this.allocated) {\n return;\n }\n if (data.length + (offset || 0) > this.length) { // Needs reallocation\n this.destroy();\n this._allocate(data);\n } else { // No reallocation needed\n this._gl.bindBuffer(this.type, this._handle);\n if (offset || offset === 0) {\n this._gl.bufferSubData(this.type, offset * this.itemByteSize, data);\n } else {\n this._gl.bufferData(this.type, data, this.usage);\n }\n this._gl.bindBuffer(this.type, null);\n }\n }\n\n bind() {\n if (!this.allocated) {\n return;\n }\n this._gl.bindBuffer(this.type, this._handle);\n }\n\n unbind() {\n if (!this.allocated) {\n return;\n }\n this._gl.bindBuffer(this.type, null);\n }\n\n destroy() {\n if (!this.allocated) {\n return;\n }\n this._gl.deleteBuffer(this._handle);\n this._handle = null;\n this.allocated = false;\n }\n}\n\nclass OcclusionLayer {\n\n constructor(scene, rtcCenter) {\n\n this.scene = scene;\n this.aabb = math.AABB3();\n this.rtcCenter = math.vec3(rtcCenter);\n this.rtcCenterHash = this.rtcCenter.join();\n this.numMarkers = 0;\n this.markers = {};\n this.markerList = []; // Ordered array of Markers\n this.markerIndices = {}; // ID map of Marker indices in _markerList\n this.positions = []; // Packed array of World-space marker positions\n this.indices = []; // Indices corresponding to array above\n this.positionsBuf = null;\n this.lenPositionsBuf = 0;\n this.indicesBuf = null;\n this.sectionPlanesActive = [];\n this.culledBySectionPlanes = false;\n this.occlusionTestList = []; // List of\n this.lenOcclusionTestList = 0;\n this.pixels = [];\n this.aabbDirty = false;\n this.markerListDirty = false;\n this.positionsDirty = true;\n this.occlusionTestListDirty = false;\n }\n\n addMarker(marker) {\n this.markers[marker.id] = marker;\n this.markerListDirty = true;\n this.numMarkers++;\n }\n\n markerWorldPosUpdated(marker) {\n if (!this.markers[marker.id]) { // Not added\n return;\n }\n const i = this.markerIndices[marker.id];\n this.positions[i * 3 + 0] = marker.worldPos[0];\n this.positions[i * 3 + 1] = marker.worldPos[1];\n this.positions[i * 3 + 2] = marker.worldPos[2];\n this.positionsDirty = true; // TODO: avoid reallocating VBO each time\n }\n\n removeMarker(marker) {\n delete this.markers[marker.id];\n this.markerListDirty = true;\n this.numMarkers--;\n }\n\n update() {\n if (this.markerListDirty) {\n this._buildMarkerList();\n this.markerListDirty = false;\n this.positionsDirty = true;\n this.occlusionTestListDirty = true;\n }\n if (this.positionsDirty) { ////////////// TODO: Don't rebuild this when positions change, very wasteful\n this._buildPositions();\n this.positionsDirty = false;\n this.aabbDirty = true;\n this.vbosDirty = true;\n }\n if (this.aabbDirty) {\n this._buildAABB();\n this.aabbDirty = false;\n }\n if (this.vbosDirty) {\n this._buildVBOs();\n this.vbosDirty = false;\n }\n if (this.occlusionTestListDirty) {\n this._buildOcclusionTestList();\n }\n this._updateActiveSectionPlanes();\n }\n\n _buildMarkerList() {\n this.numMarkers = 0;\n for (var id in this.markers) {\n if (this.markers.hasOwnProperty(id)) {\n this.markerList[this.numMarkers] = this.markers[id];\n this.markerIndices[id] = this.numMarkers;\n this.numMarkers++;\n }\n }\n this.markerList.length = this.numMarkers;\n }\n\n _buildPositions() {\n let j = 0;\n for (let i = 0; i < this.numMarkers; i++) {\n if (this.markerList[i]) {\n const marker = this.markerList[i];\n const worldPos = marker.worldPos;\n this.positions[j++] = worldPos[0];\n this.positions[j++] = worldPos[1];\n this.positions[j++] = worldPos[2];\n this.indices[i] = i;\n }\n }\n this.positions.length = this.numMarkers * 3;\n this.indices.length = this.numMarkers;\n }\n\n _buildAABB() {\n const aabb = this.aabb;\n math.collapseAABB3(aabb);\n math.expandAABB3Points3(aabb, this.positions);\n const rtcCenter = this.rtcCenter;\n aabb[0] += rtcCenter[0];\n aabb[1] += rtcCenter[1];\n aabb[2] += rtcCenter[2];\n aabb[3] += rtcCenter[0];\n aabb[4] += rtcCenter[1];\n aabb[5] += rtcCenter[2];\n }\n\n _buildVBOs() {\n if (this.positionsBuf) {\n if (this.lenPositionsBuf === this.positions.length) { // Just updating buffer elements, don't need to reallocate\n this.positionsBuf.setData(this.positions); // Indices don't need updating\n return;\n }\n this.positionsBuf.destroy();\n this.positionsBuf = null;\n this.indicesBuf.destroy();\n this.indicesBuf = null;\n }\n const gl = this.scene.canvas.gl;\n const lenPositions = this.numMarkers * 3;\n const lenIndices = this.numMarkers;\n this.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this.positions), lenPositions, 3, gl.STATIC_DRAW);\n this.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, new Uint16Array(this.indices), lenIndices, 1, gl.STATIC_DRAW);\n this.lenPositionsBuf = this.positions.length;\n }\n\n _buildOcclusionTestList() {\n const canvas = this.scene.canvas;\n const near = this.scene.camera.perspective.near; // Assume near enough to ortho near\n const boundary = canvas.boundary;\n const canvasWidth = boundary[2];\n const canvasHeight = boundary[3];\n let lenPixels = 0;\n this.lenOcclusionTestList = 0;\n for (let i = 0; i < this.numMarkers; i++) {\n const marker = this.markerList[i];\n const viewPos = marker.viewPos;\n if (viewPos[2] > -near) { // Clipped by near plane\n marker._setVisible(false);\n continue;\n }\n const canvasPos = marker.canvasPos;\n const canvasX = canvasPos[0];\n const canvasY = canvasPos[1];\n if ((canvasX + 10) < 0 || (canvasY + 10) < 0 || (canvasX - 10) > canvasWidth || (canvasY - 10) > canvasHeight) {\n marker._setVisible(false);\n continue;\n }\n if (marker.entity && !marker.entity.visible) {\n marker._setVisible(false);\n continue;\n }\n if (marker.occludable) {\n this.occlusionTestList[this.lenOcclusionTestList++] = marker;\n this.pixels[lenPixels++] = canvasX;\n this.pixels[lenPixels++] = canvasY;\n continue;\n }\n marker._setVisible(true);\n }\n }\n\n _updateActiveSectionPlanes() {\n const sectionPlanes = this.scene._sectionPlanesState.sectionPlanes;\n const numSectionPlanes = sectionPlanes.length;\n if (numSectionPlanes > 0) {\n for (let i = 0; i < numSectionPlanes; i++) {\n const sectionPlane = sectionPlanes[i];\n if (!sectionPlane.active) {\n this.sectionPlanesActive[i] = false;\n } else {\n const intersect = math.planeAABB3Intersect(sectionPlane.dir, sectionPlane.dist, this.aabb);\n const outside = (intersect === -1);\n if (outside) {\n this.culledBySectionPlanes = true;\n return;\n }\n const intersecting = (intersect === 0);\n this.sectionPlanesActive[i] = intersecting;\n }\n }\n }\n this.culledBySectionPlanes = false;\n }\n\n destroy() {\n this.markers = {};\n this.markerList.length = 0;\n if (this.positionsBuf) {\n this.positionsBuf.destroy();\n }\n if (this.indicesBuf) {\n this.indicesBuf.destroy();\n }\n }\n}\n\nconst MARKER_COLOR = math.vec3([1.0, 0.0, 0.0]);\nconst POINT_SIZE = 20;\n\nconst tempVec3a$Z = math.vec3();\n\n/**\n * Manages occlusion testing. Private member of a Renderer.\n */\nclass OcclusionTester {\n\n constructor(scene) {\n\n this._scene = scene;\n\n this._occlusionLayers = {};\n this._occlusionLayersList = [];\n this._occlusionLayersListDirty = false;\n\n this._shaderSource = null;\n this._program = null;\n\n this._shaderSourceHash = null;\n\n this._shaderSourceDirty = true; // Need to build shader source code ?\n this._programDirty = false; // Need to build shader program ?\n\n this._markersToOcclusionLayersMap = {};\n\n this._onCameraViewMatrix = scene.camera.on(\"viewMatrix\", () => {\n this._occlusionTestListDirty = true;\n });\n\n this._onCameraProjMatrix = scene.camera.on(\"projMatrix\", () => {\n this._occlusionTestListDirty = true;\n });\n\n this._onCanvasBoundary = scene.canvas.on(\"boundary\", () => {\n this._occlusionTestListDirty = true;\n });\n }\n\n /**\n * Adds a Marker for occlusion testing.\n * @param marker\n */\n addMarker(marker) {\n const rtcCenterHash = marker.rtcCenter.join();\n let occlusionLayer = this._occlusionLayers[rtcCenterHash];\n if (!occlusionLayer) {\n occlusionLayer = new OcclusionLayer(this._scene, marker.rtcCenter);\n this._occlusionLayers[occlusionLayer.rtcCenterHash] = occlusionLayer;\n this._occlusionLayersListDirty = true;\n }\n occlusionLayer.addMarker(marker);\n this._markersToOcclusionLayersMap[marker.id] = occlusionLayer;\n this._occlusionTestListDirty = true;\n }\n\n /**\n * Notifies OcclusionTester that a Marker has updated its World-space position.\n * @param marker\n */\n markerWorldPosUpdated(marker) {\n const occlusionLayer = this._markersToOcclusionLayersMap[marker.id];\n if (!occlusionLayer) {\n marker.error(\"Marker has not been added to OcclusionTester\");\n return;\n }\n const rtcCenterHash = marker.rtcCenter.join();\n if (rtcCenterHash !== occlusionLayer.rtcCenterHash) {\n if (occlusionLayer.numMarkers === 1) {\n occlusionLayer.destroy();\n delete this._occlusionLayers[occlusionLayer.rtcCenterHash];\n this._occlusionLayersListDirty = true;\n } else {\n occlusionLayer.removeMarker(marker);\n }\n let newOcclusionLayer = this._occlusionLayers[rtcCenterHash];\n if (!newOcclusionLayer) {\n newOcclusionLayer = new OcclusionLayer(this._scene, marker.rtcCenter);\n this._occlusionLayers[rtcCenterHash] = occlusionLayer;\n this._occlusionLayersListDirty = true;\n }\n newOcclusionLayer.addMarker(marker);\n this._markersToOcclusionLayersMap[marker.id] = newOcclusionLayer;\n } else {\n occlusionLayer.markerWorldPosUpdated(marker);\n }\n }\n\n /**\n * Removes a Marker from occlusion testing.\n * @param marker\n */\n removeMarker(marker) {\n const rtcCenterHash = marker.rtcCenter.join();\n let occlusionLayer = this._occlusionLayers[rtcCenterHash];\n if (!occlusionLayer) {\n return;\n }\n if (occlusionLayer.numMarkers === 1) {\n occlusionLayer.destroy();\n delete this._occlusionLayers[occlusionLayer.rtcCenterHash];\n this._occlusionLayersListDirty = true;\n } else {\n occlusionLayer.removeMarker(marker);\n }\n delete this._markersToOcclusionLayersMap[marker.id];\n }\n\n /**\n * Returns true if an occlusion test is needed.\n *\n * @returns {boolean}\n */\n get needOcclusionTest() {\n return this._occlusionTestListDirty;\n }\n\n /**\n * Binds the render buffer. After calling this, the caller then renders object silhouettes to the render buffer,\n * then calls drawMarkers() and doOcclusionTest().\n */\n bindRenderBuf() {\n\n const shaderSourceHash = [this._scene.canvas.canvas.id, this._scene._sectionPlanesState.getHash()].join(\";\");\n\n if (shaderSourceHash !== this._shaderSourceHash) {\n this._shaderSourceHash = shaderSourceHash;\n this._shaderSourceDirty = true;\n }\n\n if (this._shaderSourceDirty) {\n this._buildShaderSource();\n this._shaderSourceDirty = false;\n this._programDirty = true;\n }\n\n if (this._programDirty) {\n this._buildProgram();\n this._programDirty = false;\n this._occlusionTestListDirty = true;\n }\n\n if (this._occlusionLayersListDirty) {\n this._buildOcclusionLayersList();\n this._occlusionLayersListDirty = false;\n }\n\n if (this._occlusionTestListDirty) {\n for (let i = 0, len = this._occlusionLayersList.length; i < len; i++) {\n const occlusionLayer = this._occlusionLayersList[i];\n occlusionLayer.occlusionTestListDirty = true;\n }\n this._occlusionTestListDirty = false;\n }\n\n {\n this._readPixelBuf = this._readPixelBuf || (this._readPixelBuf = new RenderBuffer(this._scene.canvas.canvas, this._scene.canvas.gl));\n this._readPixelBuf.bind();\n this._readPixelBuf.clear();\n }\n }\n\n _buildOcclusionLayersList() {\n let numOcclusionLayers = 0;\n for (let rtcCenterHash in this._occlusionLayers) {\n if (this._occlusionLayers.hasOwnProperty(rtcCenterHash)) {\n this._occlusionLayersList[numOcclusionLayers++] = this._occlusionLayers[rtcCenterHash];\n }\n }\n this._occlusionLayersList.length = numOcclusionLayers;\n }\n\n _buildShaderSource() {\n this._shaderSource = {\n vertex: this._buildVertexShaderSource(),\n fragment: this._buildFragmentShaderSource()\n };\n }\n\n _buildVertexShaderSource() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// OcclusionTester vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"attribute vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 worldPosition = vec4(position, 1.0); \");\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition;\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n }\n src.push(\" vec4 clipPos = projMatrix * viewPosition;\");\n src.push(\" gl_Position = clipPos;\");\n src.push(\" gl_PointSize = \" + POINT_SIZE + \".0;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShaderSource() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// OcclusionTester fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); \");\n src.push(\"}\");\n return src;\n }\n\n _buildProgram() {\n if (this._program) {\n this._program.destroy();\n }\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n this._program = new Program(gl, this._shaderSource);\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n const sectionPlanes = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n /**\n * Draws {@link Marker}s to the render buffer.\n */\n drawMarkers() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const sectionPlanesState = scene._sectionPlanesState;\n const camera = scene.camera;\n const project = scene.camera.project;\n\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"] && scene.logarithmicDepthBufferEnabled) {\n gl.getExtension('EXT_frag_depth');\n }\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera._project._state.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n for (let i = 0, len = this._occlusionLayersList.length; i < len; i++) {\n\n const occlusionLayer = this._occlusionLayersList[i];\n\n occlusionLayer.update();\n\n if (occlusionLayer.culledBySectionPlanes) {\n continue;\n }\n\n const rtcCenter = occlusionLayer.rtcCenter;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, createRTCViewMat(camera.viewMatrix, rtcCenter));\n\n const numSectionPlanes = sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = sectionPlanesState.sectionPlanes;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = occlusionLayer.sectionPlanesActive[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$Z));\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n this._aPosition.bindArrayBuffer(occlusionLayer.positionsBuf);\n\n const indicesBuf = occlusionLayer.indicesBuf;\n indicesBuf.bind();\n gl.drawElements(gl.POINTS, indicesBuf.numItems, indicesBuf.itemType, 0);\n }\n }\n\n /**\n * Sets visibilities of {@link Marker}s according to whether or not they are obscured by anything in the render buffer.\n */\n doOcclusionTest() {\n\n {\n\n const markerR = MARKER_COLOR[0] * 255;\n const markerG = MARKER_COLOR[1] * 255;\n const markerB = MARKER_COLOR[2] * 255;\n\n for (let i = 0, len = this._occlusionLayersList.length; i < len; i++) {\n\n const occlusionLayer = this._occlusionLayersList[i];\n\n for (let i = 0; i < occlusionLayer.lenOcclusionTestList; i++) {\n\n const marker = occlusionLayer.occlusionTestList[i];\n const j = i * 2;\n const color = this._readPixelBuf.read(occlusionLayer.pixels[j], occlusionLayer.pixels[j + 1]);\n const visible = (color[0] === markerR) && (color[1] === markerG) && (color[2] === markerB);\n\n marker._setVisible(visible);\n }\n }\n }\n }\n\n /**\n * Unbinds render buffer.\n */\n unbindRenderBuf() {\n {\n this._readPixelBuf.unbind();\n }\n }\n\n /**\n * Destroys this OcclusionTester.\n */\n destroy() {\n if (this.destroyed) {\n return;\n }\n for (let i = 0, len = this._occlusionLayersList.length; i < len; i++) {\n const occlusionLayer = this._occlusionLayersList[i];\n occlusionLayer.destroy();\n }\n\n if (this._program) {\n this._program.destroy();\n }\n\n this._scene.camera.off(this._onCameraViewMatrix);\n this._scene.camera.off(this._onCameraProjMatrix);\n this._scene.canvas.off(this._onCanvasBoundary);\n this.destroyed = true;\n }\n}\n\nconst tempVec2 = math.vec2();\n\n/**\n * SAO implementation inspired from previous SAO work in THREE.js by ludobaka / ludobaka.github.io and bhouston\n * @private\n */\nclass SAOOcclusionRenderer {\n\n constructor(scene) {\n\n this._scene = scene;\n\n this._numSamples = null;\n\n // The program\n\n this._program = null;\n this._programError = false;\n\n // Variable locations\n\n this._aPosition = null;\n this._aUV = null;\n\n this._uDepthTexture = \"uDepthTexture\";\n\n this._uCameraNear = null;\n this._uCameraFar = null;\n this._uCameraProjectionMatrix = null;\n this._uCameraInverseProjectionMatrix = null;\n\n this._uScale = null;\n this._uIntensity = null;\n this._uBias = null;\n this._uKernelRadius = null;\n this._uMinResolution = null;\n this._uRandomSeed = null;\n\n // VBOs\n\n this._uvBuf = null;\n this._positionsBuf = null;\n this._indicesBuf = null;\n }\n\n render(depthRenderBuffer) {\n\n this._build();\n\n if (this._programError) {\n return;\n }\n\n if (!this._getInverseProjectMat) { // HACK: scene.camera not defined until render time\n this._getInverseProjectMat = (() => {\n let projMatDirty = true;\n this._scene.camera.on(\"projMatrix\", function () {\n projMatDirty = true;\n });\n const inverseProjectMat = math.mat4();\n return () => {\n if (projMatDirty) {\n math.inverseMat4(scene.camera.projMatrix, inverseProjectMat);\n }\n return inverseProjectMat;\n }\n })();\n }\n\n const gl = this._scene.canvas.gl;\n const program = this._program;\n const scene = this._scene;\n const sao = scene.sao;\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n const projectState = scene.camera.project._state;\n const near = projectState.near;\n const far = projectState.far;\n const projectionMatrix = projectState.matrix;\n const inverseProjectionMatrix = this._getInverseProjectMat();\n const randomSeed = Math.random();\n const perspective = (scene.camera.projection === \"perspective\");\n\n tempVec2[0] = viewportWidth;\n tempVec2[1] = viewportHeight;\n\n gl.getExtension(\"OES_standard_derivatives\");\n\n gl.viewport(0, 0, viewportWidth, viewportHeight);\n gl.clearColor(0, 0, 0, 1);\n gl.disable(gl.DEPTH_TEST);\n gl.disable(gl.BLEND);\n gl.frontFace(gl.CCW);\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n program.bind();\n\n gl.uniform1f(this._uCameraNear, near);\n gl.uniform1f(this._uCameraFar, far);\n\n gl.uniformMatrix4fv(this._uCameraProjectionMatrix, false, projectionMatrix);\n gl.uniformMatrix4fv(this._uCameraInverseProjectionMatrix, false, inverseProjectionMatrix);\n\n gl.uniform1i(this._uPerspective, perspective);\n\n gl.uniform1f(this._uScale, sao.scale * (far / 5));\n gl.uniform1f(this._uIntensity, sao.intensity);\n gl.uniform1f(this._uBias, sao.bias);\n gl.uniform1f(this._uKernelRadius, sao.kernelRadius);\n gl.uniform1f(this._uMinResolution, sao.minResolution);\n gl.uniform2fv(this._uViewport, tempVec2);\n gl.uniform1f(this._uRandomSeed, randomSeed);\n\n const depthTexture = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"]\n ? depthRenderBuffer.getDepthTexture()\n : depthRenderBuffer.getTexture();\n\n program.bindTexture(this._uDepthTexture, depthTexture, 0);\n\n this._aUV.bindArrayBuffer(this._uvBuf);\n this._aPosition.bindArrayBuffer(this._positionsBuf);\n this._indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, this._indicesBuf.numItems, this._indicesBuf.itemType, 0);\n }\n\n _build() {\n\n let dirty = false;\n\n const sao = this._scene.sao;\n\n if (sao.numSamples !== this._numSamples) {\n this._numSamples = Math.floor(sao.numSamples);\n dirty = true;\n }\n\n if (!dirty) {\n return;\n }\n\n const gl = this._scene.canvas.gl;\n\n if (this._program) {\n this._program.destroy();\n this._program = null;\n }\n\n this._program = new Program(gl, {\n\n vertex: [`precision highp float;\n precision highp int;\n \n attribute vec3 aPosition;\n attribute vec2 aUV; \n \n varying vec2 vUV;\n \n void main () {\n gl_Position = vec4(aPosition, 1.0);\n vUV = aUV;\n }`],\n\n fragment: [\n `#extension GL_OES_standard_derivatives : require \n precision highp float;\n precision highp int; \n \n #define NORMAL_TEXTURE 0\n #define PI 3.14159265359\n #define PI2 6.28318530718\n #define EPSILON 1e-6\n #define NUM_SAMPLES ${this._numSamples}\n #define NUM_RINGS 4 \n \n varying vec2 vUV;\n \n uniform sampler2D uDepthTexture;\n \n uniform float uCameraNear;\n uniform float uCameraFar;\n uniform mat4 uProjectMatrix;\n uniform mat4 uInverseProjectMatrix;\n \n uniform bool uPerspective;\n\n uniform float uScale;\n uniform float uIntensity;\n uniform float uBias;\n uniform float uKernelRadius;\n uniform float uMinResolution;\n uniform vec2 uViewport;\n uniform float uRandomSeed;\n\n float pow2( const in float x ) { return x*x; }\n \n highp float rand( const in vec2 uv ) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n return fract(sin(sn) * c);\n }\n\n vec3 packNormalToRGB( const in vec3 normal ) {\n return normalize( normal ) * 0.5 + 0.5;\n }\n\n vec3 unpackRGBToNormal( const in vec3 rgb ) {\n return 2.0 * rgb.xyz - 1.0;\n }\n\n const float packUpscale = 256. / 255.;\n const float unpackDownScale = 255. / 256.; \n\n const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\n const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. ); \n\n const float shiftRights = 1. / 256.;\n\n vec4 packFloatToRGBA( const in float v ) {\n vec4 r = vec4( fract( v * packFactors ), v );\n r.yzw -= r.xyz * shiftRights; \n return r * packUpscale;\n }\n\n float unpackRGBAToFloat( const in vec4 v ) { \n return dot( floor( v * 255.0 + 0.5 ) / 255.0, unPackFactors );\n }\n \n float perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n return ( near * far ) / ( ( far - near ) * invClipZ - far );\n }\n\n float orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n return linearClipZ * ( near - far ) - near;\n }\n \n float getDepth( const in vec2 screenPosition ) {`\n + (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"] ? `return texture2D(uDepthTexture, screenPosition).r;` : `return unpackRGBAToFloat(texture2D( uDepthTexture, screenPosition));`) +\n `}\n\n float getViewZ( const in float depth ) {\n if (uPerspective) {\n return perspectiveDepthToViewZ( depth, uCameraNear, uCameraFar );\n } else {\n return orthographicDepthToViewZ( depth, uCameraNear, uCameraFar );\n }\n }\n\n vec3 getViewPos( const in vec2 screenPos, const in float depth, const in float viewZ ) {\n \tfloat clipW = uProjectMatrix[2][3] * viewZ + uProjectMatrix[3][3];\n \tvec4 clipPosition = vec4( ( vec3( screenPos, depth ) - 0.5 ) * 2.0, 1.0 );\n \tclipPosition *= clipW; \n \treturn ( uInverseProjectMatrix * clipPosition ).xyz;\n }\n\n vec3 getViewNormal( const in vec3 viewPosition, const in vec2 screenPos ) { \n return normalize( cross( dFdx( viewPosition ), dFdy( viewPosition ) ) );\n }\n\n float scaleDividedByCameraFar;\n float minResolutionMultipliedByCameraFar;\n\n float getOcclusion( const in vec3 centerViewPosition, const in vec3 centerViewNormal, const in vec3 sampleViewPosition ) {\n \tvec3 viewDelta = sampleViewPosition - centerViewPosition;\n \tfloat viewDistance = length( viewDelta );\n \tfloat scaledScreenDistance = scaleDividedByCameraFar * viewDistance;\n \treturn max(0.0, (dot(centerViewNormal, viewDelta) - minResolutionMultipliedByCameraFar) / scaledScreenDistance - uBias) / (1.0 + pow2( scaledScreenDistance ) );\n }\n\n const float ANGLE_STEP = PI2 * float( NUM_RINGS ) / float( NUM_SAMPLES );\n const float INV_NUM_SAMPLES = 1.0 / float( NUM_SAMPLES );\n\n float getAmbientOcclusion( const in vec3 centerViewPosition ) {\n \n \tscaleDividedByCameraFar = uScale / uCameraFar;\n \tminResolutionMultipliedByCameraFar = uMinResolution * uCameraFar;\n \tvec3 centerViewNormal = getViewNormal( centerViewPosition, vUV );\n\n \tfloat angle = rand( vUV + uRandomSeed ) * PI2;\n \tvec2 radius = vec2( uKernelRadius * INV_NUM_SAMPLES ) / uViewport;\n \tvec2 radiusStep = radius;\n\n \tfloat occlusionSum = 0.0;\n \tfloat weightSum = 0.0;\n\n \tfor( int i = 0; i < NUM_SAMPLES; i ++ ) {\n \t\tvec2 sampleUv = vUV + vec2( cos( angle ), sin( angle ) ) * radius;\n \t\tradius += radiusStep;\n \t\tangle += ANGLE_STEP;\n\n \t\tfloat sampleDepth = getDepth( sampleUv );\n \t\tif( sampleDepth >= ( 1.0 - EPSILON ) ) {\n \t\t\tcontinue;\n \t\t}\n\n \t\tfloat sampleViewZ = getViewZ( sampleDepth );\n \t\tvec3 sampleViewPosition = getViewPos( sampleUv, sampleDepth, sampleViewZ );\n \t\tocclusionSum += getOcclusion( centerViewPosition, centerViewNormal, sampleViewPosition );\n \t\tweightSum += 1.0;\n \t}\n\n \tif( weightSum == 0.0 ) discard;\n\n \treturn occlusionSum * ( uIntensity / weightSum );\n }\n\n void main() {\n \n \tfloat centerDepth = getDepth( vUV );\n \t\n \tif( centerDepth >= ( 1.0 - EPSILON ) ) {\n \t\tdiscard;\n \t}\n\n \tfloat centerViewZ = getViewZ( centerDepth );\n \tvec3 viewPosition = getViewPos( vUV, centerDepth, centerViewZ );\n\n \tfloat ambientOcclusion = getAmbientOcclusion( viewPosition );\n \n \tgl_FragColor = packFloatToRGBA( 1.0- ambientOcclusion );\n }`]\n });\n\n if (this._program.errors) {\n console.error(this._program.errors.join(\"\\n\"));\n this._programError = true;\n return;\n }\n\n const uv = new Float32Array([1, 1, 0, 1, 0, 0, 1, 0]);\n const positions = new Float32Array([1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0]);\n const indices = new Uint8Array([0, 1, 2, 0, 2, 3]);\n\n this._positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, positions.length, 3, gl.STATIC_DRAW);\n this._uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, uv, uv.length, 2, gl.STATIC_DRAW);\n this._indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, indices, indices.length, 1, gl.STATIC_DRAW);\n\n this._program.bind();\n\n this._uCameraNear = this._program.getLocation(\"uCameraNear\");\n this._uCameraFar = this._program.getLocation(\"uCameraFar\");\n\n this._uCameraProjectionMatrix = this._program.getLocation(\"uProjectMatrix\");\n this._uCameraInverseProjectionMatrix = this._program.getLocation(\"uInverseProjectMatrix\");\n\n this._uPerspective = this._program.getLocation(\"uPerspective\");\n\n this._uScale = this._program.getLocation(\"uScale\");\n this._uIntensity = this._program.getLocation(\"uIntensity\");\n this._uBias = this._program.getLocation(\"uBias\");\n this._uKernelRadius = this._program.getLocation(\"uKernelRadius\");\n this._uMinResolution = this._program.getLocation(\"uMinResolution\");\n this._uViewport = this._program.getLocation(\"uViewport\");\n this._uRandomSeed = this._program.getLocation(\"uRandomSeed\");\n\n this._aPosition = this._program.getAttribute(\"aPosition\");\n this._aUV = this._program.getAttribute(\"aUV\");\n\n this._dirty = false;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n this._program = null;\n }\n }\n}\n\nconst blurStdDev = 4;\nconst blurDepthCutoff = 0.01;\nconst KERNEL_RADIUS = 16;\n\nconst sampleOffsetsVert = new Float32Array(createSampleOffsets(KERNEL_RADIUS + 1, [0, 1]));\nconst sampleOffsetsHor = new Float32Array(createSampleOffsets(KERNEL_RADIUS + 1, [1, 0]));\nconst sampleWeights = new Float32Array(createSampleWeights(KERNEL_RADIUS + 1, blurStdDev));\n\nconst tempVec2a = new Float32Array(2);\n\n/**\n * SAO implementation inspired from previous SAO work in THREE.js by ludobaka / ludobaka.github.io and bhouston\n * @private\n */\nclass SAODepthLimitedBlurRenderer {\n\n constructor(scene) {\n\n this._scene = scene;\n\n // The program\n\n this._program = null;\n this._programError = false;\n\n // Variable locations\n\n this._aPosition = null;\n this._aUV = null;\n\n this._uDepthTexture = \"uDepthTexture\";\n this._uOcclusionTexture = \"uOcclusionTexture\";\n\n this._uViewport = null;\n this._uCameraNear = null;\n this._uCameraFar = null;\n this._uCameraProjectionMatrix = null;\n this._uCameraInverseProjectionMatrix = null;\n\n this._uScale = null;\n this._uIntensity = null;\n this._uBias = null;\n this._uKernelRadius = null;\n this._uMinResolution = null;\n\n // VBOs\n\n this._uvBuf = null;\n this._positionsBuf = null;\n this._indicesBuf = null;\n\n this.init();\n }\n\n init() {\n\n // Create program & VBOs, locate attributes and uniforms\n\n const gl = this._scene.canvas.gl;\n\n this._program = new Program(gl, {\n\n vertex: [\n `precision highp float;\n precision highp int;\n \n attribute vec3 aPosition;\n attribute vec2 aUV;\n uniform vec2 uViewport;\n varying vec2 vUV;\n varying vec2 vInvSize;\n void main () {\n vUV = aUV;\n vInvSize = 1.0 / uViewport;\n gl_Position = vec4(aPosition, 1.0);\n }`],\n\n fragment: [\n `precision highp float;\n precision highp int;\n \n #define PI 3.14159265359\n #define PI2 6.28318530718\n #define EPSILON 1e-6\n\n #define KERNEL_RADIUS ${KERNEL_RADIUS}\n\n varying vec2 vUV;\n varying vec2 vInvSize;\n \n uniform sampler2D uDepthTexture;\n uniform sampler2D uOcclusionTexture; \n \n uniform float uCameraNear;\n uniform float uCameraFar; \n uniform float uDepthCutoff;\n\n uniform vec2 uSampleOffsets[ KERNEL_RADIUS + 1 ];\n uniform float uSampleWeights[ KERNEL_RADIUS + 1 ];\n\n const float unpackDownscale = 255. / 256.; \n\n const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\n const vec4 unpackFactors = unpackDownscale / vec4( packFactors, 1. ); \n\n const float packUpscale = 256. / 255.;\n \n const float shiftRights = 1. / 256.;\n \n float unpackRGBAToFloat( const in vec4 v ) {\n return dot( floor( v * 255.0 + 0.5 ) / 255.0, unpackFactors );\n } \n\n vec4 packFloatToRGBA( const in float v ) {\n vec4 r = vec4( fract( v * packFactors ), v );\n r.yzw -= r.xyz * shiftRights; \n return r * packUpscale;\n }\n\n float viewZToOrthographicDepth( const in float viewZ) {\n return ( viewZ + uCameraNear ) / ( uCameraNear - uCameraFar );\n }\n \n float orthographicDepthToViewZ( const in float linearClipZ) {\n return linearClipZ * ( uCameraNear - uCameraFar ) - uCameraNear;\n }\n\n float viewZToPerspectiveDepth( const in float viewZ) {\n return (( uCameraNear + viewZ ) * uCameraFar ) / (( uCameraFar - uCameraNear ) * viewZ );\n }\n \n float perspectiveDepthToViewZ( const in float invClipZ) {\n return ( uCameraNear * uCameraFar ) / ( ( uCameraFar - uCameraNear ) * invClipZ - uCameraFar );\n }\n\n float getDepth( const in vec2 screenPosition ) {`\n + (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"] ? `return texture2D(uDepthTexture, screenPosition).r;` : `return unpackRGBAToFloat(texture2D( uDepthTexture, screenPosition));`) +\n `}\n\n float getViewZ( const in float depth ) {\n return perspectiveDepthToViewZ( depth );\n }\n\n void main() {\n \n float depth = getDepth( vUV );\n if( depth >= ( 1.0 - EPSILON ) ) {\n discard;\n }\n\n float centerViewZ = -getViewZ( depth );\n bool rBreak = false;\n bool lBreak = false;\n\n float weightSum = uSampleWeights[0];\n float occlusionSum = unpackRGBAToFloat(texture2D( uOcclusionTexture, vUV )) * weightSum;\n\n for( int i = 1; i <= KERNEL_RADIUS; i ++ ) {\n\n float sampleWeight = uSampleWeights[i];\n vec2 sampleUVOffset = uSampleOffsets[i] * vInvSize;\n\n vec2 sampleUV = vUV + sampleUVOffset;\n float viewZ = -getViewZ( getDepth( sampleUV ) );\n\n if( abs( viewZ - centerViewZ ) > uDepthCutoff ) {\n rBreak = true;\n }\n\n if( ! rBreak ) {\n occlusionSum += unpackRGBAToFloat(texture2D( uOcclusionTexture, sampleUV )) * sampleWeight;\n weightSum += sampleWeight;\n }\n\n sampleUV = vUV - sampleUVOffset;\n viewZ = -getViewZ( getDepth( sampleUV ) );\n\n if( abs( viewZ - centerViewZ ) > uDepthCutoff ) {\n lBreak = true;\n }\n\n if( ! lBreak ) {\n occlusionSum += unpackRGBAToFloat(texture2D( uOcclusionTexture, sampleUV )) * sampleWeight;\n weightSum += sampleWeight;\n }\n }\n\n gl_FragColor = packFloatToRGBA(occlusionSum / weightSum);\n }`]\n });\n\n if (this._program.errors) {\n console.error(this._program.errors.join(\"\\n\"));\n this._programError = true;\n return;\n }\n\n const uv = new Float32Array([1, 1, 0, 1, 0, 0, 1, 0]);\n const positions = new Float32Array([1, 1, 0, -1, 1, 0, -1, -1, 0, 1, -1, 0]);\n const indices = new Uint8Array([0, 1, 2, 0, 2, 3]);\n\n this._positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, positions.length, 3, gl.STATIC_DRAW);\n this._uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, uv, uv.length, 2, gl.STATIC_DRAW);\n this._indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, indices, indices.length, 1, gl.STATIC_DRAW);\n\n this._program.bind();\n\n this._uViewport = this._program.getLocation(\"uViewport\");\n\n this._uCameraNear = this._program.getLocation(\"uCameraNear\");\n this._uCameraFar = this._program.getLocation(\"uCameraFar\");\n\n this._uDepthCutoff = this._program.getLocation(\"uDepthCutoff\");\n\n this._uSampleOffsets = gl.getUniformLocation(this._program.handle, \"uSampleOffsets\");\n this._uSampleWeights = gl.getUniformLocation(this._program.handle, \"uSampleWeights\");\n\n this._aPosition = this._program.getAttribute(\"aPosition\");\n this._aUV = this._program.getAttribute(\"aUV\");\n }\n\n render(depthRenderBuffer, occlusionRenderBuffer, direction) {\n\n if (this._programError) {\n return;\n }\n\n if (!this._getInverseProjectMat) { // HACK: scene.camera not defined until render time\n this._getInverseProjectMat = (() => {\n let projMatDirty = true;\n this._scene.camera.on(\"projMatrix\", function () {\n projMatDirty = true;\n });\n const inverseProjectMat = math.mat4();\n return () => {\n if (projMatDirty) {\n math.inverseMat4(scene.camera.projMatrix, inverseProjectMat);\n }\n return inverseProjectMat;\n }\n })();\n }\n\n const gl = this._scene.canvas.gl;\n const program = this._program;\n const scene = this._scene;\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n const projectState = scene.camera.project._state;\n const near = projectState.near;\n const far = projectState.far;\n\n gl.viewport(0, 0, viewportWidth, viewportHeight);\n gl.clearColor(0, 0, 0, 1);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.BLEND);\n gl.frontFace(gl.CCW);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n program.bind();\n\n tempVec2a[0] = viewportWidth;\n tempVec2a[1] = viewportHeight;\n\n gl.uniform2fv(this._uViewport, tempVec2a);\n gl.uniform1f(this._uCameraNear, near);\n gl.uniform1f(this._uCameraFar, far);\n\n gl.uniform1f(this._uDepthCutoff, blurDepthCutoff);\n\n if (direction === 0) {// Horizontal\n gl.uniform2fv(this._uSampleOffsets, sampleOffsetsHor);\n } else { // Vertical\n gl.uniform2fv(this._uSampleOffsets, sampleOffsetsVert);\n }\n\n gl.uniform1fv(this._uSampleWeights, sampleWeights);\n\n const depthTexture = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"]\n ? depthRenderBuffer.getDepthTexture()\n : depthRenderBuffer.getTexture();\n\n const occlusionTexture = occlusionRenderBuffer.getTexture();\n\n program.bindTexture(this._uDepthTexture, depthTexture, 0);\n program.bindTexture(this._uOcclusionTexture, occlusionTexture, 1);\n\n this._aUV.bindArrayBuffer(this._uvBuf);\n this._aPosition.bindArrayBuffer(this._positionsBuf);\n this._indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, this._indicesBuf.numItems, this._indicesBuf.itemType, 0);\n }\n\n destroy() {\n this._program.destroy();\n }\n}\n\nfunction createSampleWeights(kernelRadius, stdDev) {\n const weights = [];\n for (let i = 0; i <= kernelRadius; i++) {\n weights.push(gaussian(i, stdDev));\n }\n return weights; // TODO: Optimize\n}\n\nfunction gaussian(x, stdDev) {\n return Math.exp(-(x * x) / (2.0 * (stdDev * stdDev))) / (Math.sqrt(2.0 * Math.PI) * stdDev);\n}\n\nfunction createSampleOffsets(kernelRadius, uvIncrement) {\n const offsets = [];\n for (let i = 0; i <= kernelRadius; i++) {\n offsets.push(uvIncrement[0] * i);\n offsets.push(uvIncrement[1] * i);\n }\n return offsets;\n}\n\n/**\n * @private\n */\nconst Renderer = function (scene, options) {\n\n options = options || {};\n\n const frameCtx = new FrameContext(scene);\n const canvas = scene.canvas.canvas;\n const gl = scene.canvas.gl;\n const canvasTransparent = (!!options.transparent);\n const alphaDepthMask = options.alphaDepthMask;\n\n const pickIDs = new Map({});\n\n let drawableTypeInfo = {};\n let drawables = {};\n\n let drawableListDirty = true;\n let stateSortDirty = true;\n let imageDirty = true;\n\n const saoDepthRenderBuffer = new RenderBuffer(canvas, gl, {\n depthTexture: WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"]\n });\n const occlusionRenderBuffer1 = new RenderBuffer(canvas, gl);\n const occlusionRenderBuffer2 = new RenderBuffer(canvas, gl);\n\n const pickBuffer = new RenderBuffer(canvas, gl);\n const snapshotBuffer = new RenderBuffer(canvas, gl);\n\n let snapshotBound = false;\n\n const saoOcclusionRenderer = new SAOOcclusionRenderer(scene);\n const saoDepthLimitedBlurRenderer = new SAODepthLimitedBlurRenderer(scene);\n\n this._occlusionTester = null; // Lazy-created in #addMarker()\n\n this.needStateSort = function () {\n stateSortDirty = true;\n };\n\n this.shadowsDirty = function () {\n };\n\n this.imageDirty = function () {\n imageDirty = true;\n };\n\n this.webglContextLost = function () {\n };\n\n this.webglContextRestored = function (gl) {\n\n pickBuffer.webglContextRestored(gl);\n snapshotBuffer.webglContextRestored(gl);\n saoDepthRenderBuffer.webglContextRestored(gl);\n occlusionRenderBuffer1.webglContextRestored(gl);\n occlusionRenderBuffer2.webglContextRestored(gl);\n\n saoOcclusionRenderer.init();\n saoDepthLimitedBlurRenderer.init();\n\n imageDirty = true;\n };\n\n /**\n * Inserts a drawable into this renderer.\n * @private\n */\n this.addDrawable = function (id, drawable) {\n const type = drawable.type;\n if (!type) {\n console.error(\"Renderer#addDrawable() : drawable with ID \" + id + \" has no 'type' - ignoring\");\n return;\n }\n let drawableInfo = drawableTypeInfo[type];\n if (!drawableInfo) {\n drawableInfo = {\n type: drawable.type,\n count: 0,\n isStateSortable: drawable.isStateSortable,\n stateSortCompare: drawable.stateSortCompare,\n drawableMap: {},\n drawableListPreCull: [],\n drawableList: []\n };\n drawableTypeInfo[type] = drawableInfo;\n }\n drawableInfo.count++;\n drawableInfo.drawableMap[id] = drawable;\n drawables[id] = drawable;\n drawableListDirty = true;\n };\n\n /**\n * Removes a drawable from this renderer.\n * @private\n */\n this.removeDrawable = function (id) {\n const drawable = drawables[id];\n if (!drawable) {\n console.error(\"Renderer#removeDrawable() : drawable not found with ID \" + id + \" - ignoring\");\n return;\n }\n const type = drawable.type;\n const drawableInfo = drawableTypeInfo[type];\n if (--drawableInfo.count <= 0) {\n delete drawableTypeInfo[type];\n } else {\n delete drawableInfo.drawableMap[id];\n }\n delete drawables[id];\n drawableListDirty = true;\n };\n\n /**\n * Gets a unique pick ID for the given Pickable. A Pickable can be a {@link Mesh} or a {@link PerformanceMesh}.\n * @returns {Number} New pick ID.\n */\n this.getPickID = function (entity) {\n return pickIDs.addItem(entity);\n };\n\n /**\n * Released a pick ID for reuse.\n * @param {Number} pickID Pick ID to release.\n */\n this.putPickID = function (pickID) {\n pickIDs.removeItem(pickID);\n };\n\n /**\n * Clears the canvas.\n * @private\n */\n this.clear = function (params) {\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n if (canvasTransparent) {\n gl.clearColor(1, 1, 1, 1);\n } else {\n const backgroundColor = scene.canvas.backgroundColorFromAmbientLight ? this.lights.getAmbientColorAndIntensity() : scene.canvas.backgroundColor;\n gl.clearColor(backgroundColor[0], backgroundColor[1], backgroundColor[2], 1.0);\n }\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n };\n\n /**\n * Renders inserted drawables.\n * @private\n */\n this.render = function (params) {\n params = params || {};\n if (params.force) {\n imageDirty = true;\n }\n updateDrawlist();\n if (imageDirty) {\n draw(params);\n stats.frame.frameCount++;\n imageDirty = false;\n }\n };\n\n function updateDrawlist() { // Prepares state-sorted array of drawables from maps of inserted drawables\n if (drawableListDirty) {\n buildDrawableList();\n drawableListDirty = false;\n stateSortDirty = true;\n }\n if (stateSortDirty) {\n sortDrawableList();\n stateSortDirty = false;\n imageDirty = true;\n }\n if (imageDirty) { // Image is usually dirty because the camera moved\n cullDrawableList();\n }\n }\n\n function buildDrawableList() {\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n const drawableInfo = drawableTypeInfo[type];\n const drawableMap = drawableInfo.drawableMap;\n const drawableListPreCull = drawableInfo.drawableListPreCull;\n let lenDrawableList = 0;\n for (let id in drawableMap) {\n if (drawableMap.hasOwnProperty(id)) {\n drawableListPreCull[lenDrawableList++] = drawableMap[id];\n }\n }\n drawableListPreCull.length = lenDrawableList;\n }\n }\n }\n\n function sortDrawableList() {\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n const drawableInfo = drawableTypeInfo[type];\n if (drawableInfo.isStateSortable) {\n drawableInfo.drawableListPreCull.sort(drawableInfo.stateSortCompare);\n }\n }\n }\n }\n\n function cullDrawableList() {\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n const drawableInfo = drawableTypeInfo[type];\n const drawableListPreCull = drawableInfo.drawableListPreCull;\n const drawableList = drawableInfo.drawableList;\n let lenDrawableList = 0;\n for (let i = 0, len = drawableListPreCull.length; i < len; i++) {\n const drawable = drawableListPreCull[i];\n drawable.rebuildRenderFlags();\n if (!drawable.renderFlags.culled) {\n drawableList[lenDrawableList++] = drawable;\n }\n }\n drawableList.length = lenDrawableList;\n }\n }\n }\n\n function draw(params) {\n\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"]) { // In case context lost/recovered\n gl.getExtension(\"OES_element_index_uint\");\n }\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n gl.getExtension('EXT_frag_depth');\n }\n\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"]) {\n gl.getExtension('WEBGL_depth_texture');\n }\n\n const sao = scene.sao;\n\n if (sao.possible) {\n drawSAOBuffers(params);\n }\n\n drawShadowMaps();\n\n drawColor(params);\n }\n\n function drawSAOBuffers(params) {\n\n const sao = scene.sao;\n\n // Render depth buffer\n\n saoDepthRenderBuffer.bind();\n saoDepthRenderBuffer.clear();\n drawDepth(params);\n saoDepthRenderBuffer.unbind();\n\n // Render occlusion buffer\n\n occlusionRenderBuffer1.bind();\n occlusionRenderBuffer1.clear();\n saoOcclusionRenderer.render(saoDepthRenderBuffer);\n occlusionRenderBuffer1.unbind();\n\n if (sao.blur) {\n\n // Horizontally blur occlusion buffer 1 into occlusion buffer 2\n\n occlusionRenderBuffer2.bind();\n occlusionRenderBuffer2.clear();\n saoDepthLimitedBlurRenderer.render(saoDepthRenderBuffer, occlusionRenderBuffer1, 0);\n occlusionRenderBuffer2.unbind();\n\n // Vertically blur occlusion buffer 2 back into occlusion buffer 1\n\n occlusionRenderBuffer1.bind();\n occlusionRenderBuffer1.clear();\n saoDepthLimitedBlurRenderer.render(saoDepthRenderBuffer, occlusionRenderBuffer2, 1);\n occlusionRenderBuffer1.unbind();\n }\n }\n\n function drawDepth(params) {\n\n frameCtx.reset();\n frameCtx.pass = params.pass;\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.DEPTH_TEST);\n gl.frontFace(gl.CCW);\n gl.enable(gl.CULL_FACE);\n gl.depthMask(true);\n\n if (params.clear !== false) {\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n }\n\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n\n for (let i = 0, len = drawableList.length; i < len; i++) {\n\n const drawable = drawableList[i];\n\n if (drawable.culled === true || drawable.visible === false || !drawable.drawDepth) {\n continue;\n }\n\n if (drawable.renderFlags.colorOpaque) {\n drawable.drawDepth(frameCtx);\n }\n }\n }\n }\n\n // const numVertexAttribs = WEBGL_INFO.MAX_VERTEX_ATTRIBS; // Fixes https://github.com/xeokit/xeokit-sdk/issues/174\n // for (let ii = 0; ii < numVertexAttribs; ii++) {\n // gl.disableVertexAttribArray(ii);\n // }\n\n }\n\n function drawShadowMaps() {\n\n let lights = scene._lightsState.lights;\n\n for (let i = 0, len = lights.length; i < len; i++) {\n const light = lights[i];\n if (!light.castsShadow) {\n continue;\n }\n drawShadowMap(light);\n }\n }\n\n function drawShadowMap(light) {\n\n const castsShadow = light.castsShadow;\n\n if (!castsShadow) {\n return;\n }\n\n const shadowRenderBuf = light.getShadowRenderBuf();\n\n if (!shadowRenderBuf) {\n return;\n }\n\n shadowRenderBuf.bind();\n\n frameCtx.reset();\n\n frameCtx.backfaces = true;\n frameCtx.frontface = true;\n frameCtx.shadowViewMatrix = light.getShadowViewMatrix();\n frameCtx.shadowProjMatrix = light.getShadowProjMatrix();\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n gl.clearColor(0, 0, 0, 1);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.BLEND);\n\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n for (let type in drawableTypeInfo) {\n\n if (drawableTypeInfo.hasOwnProperty(type)) {\n\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n\n for (let i = 0, len = drawableList.length; i < len; i++) {\n\n const drawable = drawableList[i];\n\n if (drawable.visible === false || !drawable.castsShadow || !drawable.drawShadow) {\n continue;\n }\n\n if (drawable.renderFlags.colorOpaque) { // Transparent objects don't cast shadows (yet)\n drawable.drawShadow(frameCtx);\n }\n }\n }\n }\n\n shadowRenderBuf.unbind();\n }\n\n const drawColor = (function () { // Draws the drawables in drawableListSorted\n\n const normalDrawSAOBin = [];\n const normalEdgesOpaqueBin = [];\n const normalFillTransparentBin = [];\n const normalEdgesTransparentBin = [];\n\n const xrayedFillOpaqueBin = [];\n const xrayEdgesOpaqueBin = [];\n const xrayedFillTransparentBin = [];\n const xrayEdgesTransparentBin = [];\n\n const highlightedFillOpaqueBin = [];\n const highlightedEdgesOpaqueBin = [];\n const highlightedFillTransparentBin = [];\n const highlightedEdgesTransparentBin = [];\n\n const selectedFillOpaqueBin = [];\n const selectedEdgesOpaqueBin = [];\n const selectedFillTransparentBin = [];\n const selectedEdgesTransparentBin = [];\n\n return function (params) {\n\n const ambientColorAndIntensity = scene._lightsState.getAmbientColorAndIntensity();\n\n frameCtx.reset();\n frameCtx.pass = params.pass;\n frameCtx.withSAO = false;\n frameCtx.pbrEnabled = !!scene.pbrEnabled;\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n if (canvasTransparent) {\n gl.clearColor(0, 0, 0, 0);\n } else {\n const backgroundColor = scene.canvas.backgroundColorFromAmbientLight ? ambientColorAndIntensity : scene.canvas.backgroundColor;\n gl.clearColor(backgroundColor[0], backgroundColor[1], backgroundColor[2], 1.0);\n }\n\n gl.enable(gl.DEPTH_TEST);\n gl.frontFace(gl.CCW);\n gl.enable(gl.CULL_FACE);\n gl.depthMask(true);\n gl.lineWidth(1);\n\n frameCtx.lineWidth = 1;\n\n const saoPossible = scene.sao.possible;\n frameCtx.occlusionTexture = saoPossible ? occlusionRenderBuffer1.getTexture() : null;\n\n let i;\n let len;\n let drawable;\n\n const startTime = Date.now();\n\n if (params.clear !== false) {\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n }\n\n let normalDrawSAOBinLen = 0;\n let normalEdgesOpaqueBinLen = 0;\n let normalFillTransparentBinLen = 0;\n let normalEdgesTransparentBinLen = 0;\n\n let xrayedFillOpaqueBinLen = 0;\n let xrayEdgesOpaqueBinLen = 0;\n let xrayedFillTransparentBinLen = 0;\n let xrayEdgesTransparentBinLen = 0;\n\n let highlightedFillOpaqueBinLen = 0;\n let highlightedEdgesOpaqueBinLen = 0;\n let highlightedFillTransparentBinLen = 0;\n let highlightedEdgesTransparentBinLen = 0;\n\n let selectedFillOpaqueBinLen = 0;\n let selectedEdgesOpaqueBinLen = 0;\n let selectedFillTransparentBinLen = 0;\n let selectedEdgesTransparentBinLen = 0;\n\n //------------------------------------------------------------------------------------------------------\n // Render normal opaque solids, defer others to bins to render after\n //------------------------------------------------------------------------------------------------------\n\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n\n for (i = 0, len = drawableList.length; i < len; i++) {\n\n drawable = drawableList[i];\n\n if (drawable.culled === true || drawable.visible === false) {\n continue;\n }\n\n const renderFlags = drawable.renderFlags;\n\n if (renderFlags.colorOpaque) {\n if (saoPossible && drawable.saoEnabled) {\n normalDrawSAOBin[normalDrawSAOBinLen++] = drawable;\n } else {\n drawable.drawColorOpaque(frameCtx);\n }\n }\n\n if (renderFlags.colorTransparent) {\n normalFillTransparentBin[normalFillTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.xrayedSilhouetteTransparent) {\n xrayedFillTransparentBin[xrayedFillTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.xrayedSilhouetteOpaque) {\n xrayedFillOpaqueBin[xrayedFillOpaqueBinLen++] = drawable;\n }\n\n if (renderFlags.highlightedSilhouetteTransparent) {\n highlightedFillTransparentBin[highlightedFillTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.highlightedSilhouetteOpaque) {\n highlightedFillOpaqueBin[highlightedFillOpaqueBinLen++] = drawable;\n }\n\n if (renderFlags.selectedSilhouetteTransparent) {\n selectedFillTransparentBin[selectedFillTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.selectedSilhouetteOpaque) {\n selectedFillOpaqueBin[selectedFillOpaqueBinLen++] = drawable;\n }\n\n if (renderFlags.edgesOpaque) {\n normalEdgesOpaqueBin[normalEdgesOpaqueBinLen++] = drawable;\n }\n\n if (renderFlags.edgesTransparent) {\n normalEdgesTransparentBin[normalEdgesTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.selectedEdgesTransparent) {\n selectedEdgesTransparentBin[selectedEdgesTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.selectedEdgesOpaque) {\n selectedEdgesOpaqueBin[selectedEdgesOpaqueBinLen++] = drawable;\n }\n\n if (renderFlags.xrayedEdgesTransparent) {\n xrayEdgesTransparentBin[xrayEdgesTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.xrayedEdgesOpaque) {\n xrayEdgesOpaqueBin[xrayEdgesOpaqueBinLen++] = drawable;\n }\n\n if (renderFlags.highlightedEdgesTransparent) {\n highlightedEdgesTransparentBin[highlightedEdgesTransparentBinLen++] = drawable;\n }\n\n if (renderFlags.highlightedEdgesOpaque) {\n highlightedEdgesOpaqueBin[highlightedEdgesOpaqueBinLen++] = drawable;\n }\n }\n }\n }\n\n //------------------------------------------------------------------------------------------------------\n // Render deferred bins\n //------------------------------------------------------------------------------------------------------\n\n if (normalDrawSAOBinLen > 0) {\n frameCtx.withSAO = true;\n for (i = 0; i < normalDrawSAOBinLen; i++) {\n normalDrawSAOBin[i].drawColorOpaque(frameCtx);\n }\n }\n\n if (normalEdgesOpaqueBinLen > 0) {\n for (i = 0; i < normalEdgesOpaqueBinLen; i++) {\n normalEdgesOpaqueBin[i].drawEdgesColorOpaque(frameCtx);\n }\n }\n\n if (xrayedFillOpaqueBinLen > 0) {\n for (i = 0; i < xrayedFillOpaqueBinLen; i++) {\n xrayedFillOpaqueBin[i].drawSilhouetteXRayed(frameCtx);\n }\n }\n\n if (xrayEdgesOpaqueBinLen > 0) {\n for (i = 0; i < xrayEdgesOpaqueBinLen; i++) {\n xrayEdgesOpaqueBin[i].drawEdgesXRayed(frameCtx);\n }\n }\n\n if (xrayedFillTransparentBinLen > 0 || xrayEdgesTransparentBinLen > 0 || normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {\n gl.enable(gl.CULL_FACE);\n gl.enable(gl.BLEND);\n\n if (canvasTransparent) {\n gl.blendEquation(gl.FUNC_ADD);\n gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n } else {\n gl.blendEquation(gl.FUNC_ADD);\n gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n }\n\n frameCtx.backfaces = false;\n if (!alphaDepthMask) {\n gl.depthMask(false);\n }\n if (xrayEdgesTransparentBinLen > 0) {\n for (i = 0; i < xrayEdgesTransparentBinLen; i++) {\n xrayEdgesTransparentBin[i].drawEdgesXRayed(frameCtx);\n }\n }\n if (xrayedFillTransparentBinLen > 0) {\n for (i = 0; i < xrayedFillTransparentBinLen; i++) {\n xrayedFillTransparentBin[i].drawSilhouetteXRayed(frameCtx);\n }\n }\n if (normalFillTransparentBinLen > 0 || normalEdgesTransparentBinLen > 0) {\n gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n }\n if (normalEdgesTransparentBinLen > 0) {\n for (i = 0; i < normalEdgesTransparentBinLen; i++) {\n drawable = normalEdgesTransparentBin[i];\n drawable.drawEdgesColorTransparent(frameCtx);\n }\n }\n if (normalFillTransparentBinLen > 0) {\n for (i = 0; i < normalFillTransparentBinLen; i++) {\n drawable = normalFillTransparentBin[i];\n drawable.drawColorTransparent(frameCtx);\n }\n }\n gl.disable(gl.BLEND);\n if (!alphaDepthMask) {\n gl.depthMask(true);\n }\n }\n\n if (highlightedFillOpaqueBinLen > 0 || highlightedEdgesOpaqueBinLen > 0) {\n frameCtx.lastProgramId = null;\n gl.clear(gl.DEPTH_BUFFER_BIT);\n if (highlightedEdgesOpaqueBinLen > 0) {\n for (i = 0; i < highlightedEdgesOpaqueBinLen; i++) {\n highlightedEdgesOpaqueBin[i].drawEdgesHighlighted(frameCtx);\n }\n }\n if (highlightedFillOpaqueBinLen > 0) {\n for (i = 0; i < highlightedFillOpaqueBinLen; i++) {\n highlightedFillOpaqueBin[i].drawSilhouetteHighlighted(frameCtx);\n }\n }\n }\n\n if (highlightedFillTransparentBinLen > 0 || highlightedEdgesTransparentBinLen > 0 || highlightedFillOpaqueBinLen > 0) {\n frameCtx.lastProgramId = null;\n gl.clear(gl.DEPTH_BUFFER_BIT);\n gl.enable(gl.CULL_FACE);\n gl.enable(gl.BLEND);\n\n if (canvasTransparent) {\n gl.blendEquation(gl.FUNC_ADD);\n gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n } else {\n gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n }\n\n if (highlightedEdgesTransparentBinLen > 0) {\n for (i = 0; i < highlightedEdgesTransparentBinLen; i++) {\n highlightedEdgesTransparentBin[i].drawEdgesHighlighted(frameCtx);\n }\n }\n if (highlightedFillTransparentBinLen > 0) {\n for (i = 0; i < highlightedFillTransparentBinLen; i++) {\n highlightedFillTransparentBin[i].drawSilhouetteHighlighted(frameCtx);\n }\n }\n gl.disable(gl.BLEND);\n }\n\n if (selectedFillOpaqueBinLen > 0 || selectedEdgesOpaqueBinLen > 0) {\n frameCtx.lastProgramId = null;\n gl.clear(gl.DEPTH_BUFFER_BIT);\n if (selectedEdgesOpaqueBinLen > 0) {\n for (i = 0; i < selectedEdgesOpaqueBinLen; i++) {\n selectedEdgesOpaqueBin[i].drawEdgesSelected(frameCtx);\n }\n }\n if (selectedFillOpaqueBinLen > 0) {\n for (i = 0; i < selectedFillOpaqueBinLen; i++) {\n selectedFillOpaqueBin[i].drawSilhouetteSelected(frameCtx);\n }\n }\n }\n\n if (selectedFillTransparentBinLen > 0 || selectedEdgesTransparentBinLen > 0) {\n frameCtx.lastProgramId = null;\n gl.clear(gl.DEPTH_BUFFER_BIT);\n gl.enable(gl.CULL_FACE);\n gl.enable(gl.BLEND);\n\n if (canvasTransparent) {\n gl.blendEquation(gl.FUNC_ADD);\n gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n } else {\n gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\n }\n\n if (selectedEdgesTransparentBinLen > 0) {\n for (i = 0; i < selectedEdgesTransparentBinLen; i++) {\n selectedEdgesTransparentBin[i].drawEdgesSelected(frameCtx);\n }\n }\n if (selectedFillTransparentBinLen > 0) {\n for (i = 0; i < selectedFillTransparentBinLen; i++) {\n selectedFillTransparentBin[i].drawSilhouetteSelected(frameCtx);\n }\n }\n gl.disable(gl.BLEND);\n }\n\n const endTime = Date.now();\n const frameStats = stats.frame;\n\n frameStats.renderTime = (endTime - startTime) / 1000.0;\n frameStats.drawElements = frameCtx.drawElements;\n frameStats.useProgram = frameCtx.useProgram;\n frameStats.bindTexture = frameCtx.bindTexture;\n frameStats.bindArray = frameCtx.bindArray;\n\n const numTextureUnits = WEBGL_INFO$1.MAX_TEXTURE_UNITS;\n for (let ii = 0; ii < numTextureUnits; ii++) {\n gl.activeTexture(gl.TEXTURE0 + ii);\n }\n gl.bindTexture(gl.TEXTURE_CUBE_MAP, null);\n gl.bindTexture(gl.TEXTURE_2D, null);\n\n const numVertexAttribs = WEBGL_INFO$1.MAX_VERTEX_ATTRIBS; // Fixes https://github.com/xeokit/xeokit-sdk/issues/174\n for (let ii = 0; ii < numVertexAttribs; ii++) {\n gl.disableVertexAttribArray(ii);\n }\n };\n })();\n\n /**\n * Picks an Entity.\n * @private\n */\n this.pick = (function () {\n\n const tempVec3a = math.vec3();\n const tempMat4a = math.mat4();\n const tempMat4b = math.mat4();\n\n const randomVec3 = math.vec3();\n const up = math.vec3([0, 1, 0]);\n const _pickResult = new PickResult();\n\n const nearAndFar = math.vec2();\n\n const canvasPos = math.vec3();\n\n const worldRayOrigin = math.vec3();\n const worldRayDir = math.vec3();\n const worldSurfacePos = math.vec3();\n const worldSurfaceNormal = math.vec3();\n\n return function (params, pickResult = _pickResult) {\n\n pickResult.reset();\n\n updateDrawlist();\n\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"]) { // In case context lost/recovered\n gl.getExtension(\"OES_element_index_uint\");\n }\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n gl.getExtension('EXT_frag_depth');\n }\n\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"]) {\n gl.getExtension('WEBGL_depth_texture');\n }\n\n let look;\n let pickViewMatrix = null;\n let pickProjMatrix = null;\n\n pickResult.pickSurface = params.pickSurface;\n\n if (params.canvasPos) {\n\n canvasPos[0] = params.canvasPos[0];\n canvasPos[1] = params.canvasPos[1];\n\n pickViewMatrix = scene.camera.viewMatrix;\n pickProjMatrix = scene.camera.projMatrix;\n\n pickResult.canvasPos = params.canvasPos;\n\n } else {\n\n // Picking with arbitrary World-space ray\n // Align camera along ray and fire ray through center of canvas\n\n const pickFrustumMatrix = math.frustumMat4(-1, 1, -1, 1, 0.01, scene.camera.project.far, tempMat4a);\n\n if (params.matrix) {\n\n pickViewMatrix = params.matrix;\n pickProjMatrix = pickFrustumMatrix;\n\n } else {\n\n worldRayOrigin.set(params.origin || [0, 0, 0]);\n worldRayDir.set(params.direction || [0, 0, 1]);\n\n look = math.addVec3(worldRayOrigin, worldRayDir, tempVec3a);\n\n randomVec3[0] = Math.random();\n randomVec3[1] = Math.random();\n randomVec3[2] = Math.random();\n\n math.normalizeVec3(randomVec3);\n math.cross3Vec3(worldRayDir, randomVec3, up);\n\n pickViewMatrix = math.lookAtMat4v(worldRayOrigin, look, up, tempMat4b);\n pickProjMatrix = pickFrustumMatrix;\n\n pickResult.origin = worldRayOrigin;\n pickResult.direction = worldRayDir;\n }\n\n canvasPos[0] = canvas.clientWidth * 0.5;\n canvasPos[1] = canvas.clientHeight * 0.5;\n }\n\n pickBuffer.bind();\n\n const pickable = gpuPickPickable(canvasPos, pickViewMatrix, pickProjMatrix, params);\n\n if (!pickable) {\n pickBuffer.unbind();\n return null;\n }\n\n const pickedEntity = (pickable.delegatePickedEntity) ? pickable.delegatePickedEntity() : pickable;\n\n if (!pickedEntity) {\n pickBuffer.unbind();\n return null;\n }\n\n if (params.pickSurface) {\n\n if (params.pickSurfacePrecision && scene.pickSurfacePrecisionEnabled) {\n\n // JavaScript-based ray-picking - slow and precise\n\n if (params.canvasPos) {\n math.canvasPosToWorldRay(scene.canvas.canvas, pickViewMatrix, pickProjMatrix, canvasPos, worldRayOrigin, worldRayDir);\n }\n\n if (pickable.precisionRayPickSurface(worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal)) {\n\n pickResult.worldPos = worldSurfacePos;\n\n if (params.pickSurfaceNormal !== false) {\n pickResult.worldNormal = worldSurfaceNormal;\n }\n\n // if (params.pickSurfaceNormal !== false) {\n // gpuPickWorldNormal(pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult);\n // }\n\n pickResult.pickSurfacePrecision = true;\n }\n\n } else {\n\n // GPU-based ray-picking - fast and imprecise\n\n if (pickable.canPickTriangle && pickable.canPickTriangle()) {\n\n gpuPickTriangle(pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult);\n\n pickable.pickTriangleSurface(pickViewMatrix, pickProjMatrix, pickResult);\n\n pickResult.pickSurfacePrecision = false;\n\n } else {\n\n if (pickable.canPickWorldPos && pickable.canPickWorldPos()) {\n\n nearAndFar[0] = scene.camera.project.near;\n nearAndFar[1] = scene.camera.project.far;\n\n gpuPickWorldPos(pickable, canvasPos, pickViewMatrix, pickProjMatrix, nearAndFar, pickResult);\n\n if (params.pickSurfaceNormal !== false) {\n gpuPickWorldNormal(pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult);\n }\n\n pickResult.pickSurfacePrecision = false;\n }\n }\n }\n }\n\n pickBuffer.unbind();\n\n pickResult.entity = pickedEntity;\n\n return pickResult;\n };\n })();\n\n function gpuPickPickable(canvasPos, pickViewMatrix, pickProjMatrix, params) {\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickViewMatrix = pickViewMatrix;\n frameCtx.pickProjMatrix = pickProjMatrix;\n frameCtx.pickInvisible = !!params.pickInvisible;\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n const includeEntityIds = params.includeEntityIds;\n const excludeEntityIds = params.excludeEntityIds;\n\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n\n for (let i = 0, len = drawableList.length; i < len; i++) {\n\n const drawable = drawableList[i];\n\n if (!drawable.drawPickMesh || drawable.culled === true || (params.pickInvisible !== true && drawable.visible === false) || drawable.pickable === false) {\n continue;\n }\n if (includeEntityIds && !includeEntityIds[drawable.id]) { // TODO: push this logic into drawable\n continue;\n }\n if (excludeEntityIds && excludeEntityIds[drawable.id]) {\n continue;\n }\n\n drawable.drawPickMesh(frameCtx);\n }\n }\n }\n\n const pix = pickBuffer.read(Math.round(canvasPos[0]), Math.round(canvasPos[1]));\n let pickID = pix[0] + (pix[1] * 256) + (pix[2] * 256 * 256) + (pix[3] * 256 * 256 * 256);\n\n if (pickID < 0) {\n return;\n }\n\n const pickable = pickIDs.items[pickID];\n\n return pickable;\n }\n\n function gpuPickTriangle(pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult) {\n\n if (!pickable.drawPickTriangles) {\n return;\n }\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickViewMatrix = pickViewMatrix; // Can be null\n frameCtx.pickProjMatrix = pickProjMatrix; // Can be null\n // frameCtx.pickInvisible = !!params.pickInvisible;\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n pickable.drawPickTriangles(frameCtx);\n\n const pix = pickBuffer.read(canvasPos[0], canvasPos[1]);\n\n let primIndex = pix[0] + (pix[1] * 256) + (pix[2] * 256 * 256) + (pix[3] * 256 * 256 * 256);\n\n primIndex *= 3; // Convert from triangle number to first vertex in indices\n\n pickResult.primIndex = primIndex;\n }\n\n const gpuPickWorldPos = (function () {\n\n const tempVec4a = math.vec4();\n const tempVec4b = math.vec4();\n const tempVec4c = math.vec4();\n const tempVec4d = math.vec4();\n const tempVec4e = math.vec4();\n const tempMat4a = math.mat4();\n const tempMat4b = math.mat4();\n const tempMat4c = math.mat4();\n\n return function (pickable, canvasPos, pickViewMatrix, pickProjMatrix, nearAndFar, pickResult) {\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickViewMatrix = pickViewMatrix;\n frameCtx.pickProjMatrix = pickProjMatrix;\n frameCtx.pickZNear = nearAndFar[0];\n frameCtx.pickZFar = nearAndFar[1];\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n pickable.drawPickDepths(frameCtx); // Draw color-encoded fragment screen-space depths\n\n const pix = pickBuffer.read(Math.round(canvasPos[0]), Math.round(canvasPos[1]));\n\n const screenZ = unpackDepth(pix); // Get screen-space Z at the given canvas coords\n\n // Calculate clip space coordinates, which will be in range of x=[-1..1] and y=[-1..1], with y=(+1) at top\n const x = (canvasPos[0] - canvas.width / 2) / (canvas.width / 2);\n const y = -(canvasPos[1] - canvas.height / 2) / (canvas.height / 2);\n\n const rtcCenter = pickable.rtcCenter;\n let pvMat;\n\n if (rtcCenter) {\n const rtcPickViewMat = createRTCViewMat(pickViewMatrix, rtcCenter, tempMat4a);\n pvMat = math.mulMat4(pickProjMatrix, rtcPickViewMat, tempMat4b);\n\n } else {\n pvMat = math.mulMat4(pickProjMatrix, pickViewMatrix, tempMat4b);\n }\n\n const pvMatInverse = math.inverseMat4(pvMat, tempMat4c);\n\n tempVec4a[0] = x;\n tempVec4a[1] = y;\n tempVec4a[2] = -1;\n tempVec4a[3] = 1;\n\n let world1 = math.transformVec4(pvMatInverse, tempVec4a);\n world1 = math.mulVec4Scalar(world1, 1 / world1[3]);\n\n tempVec4b[0] = x;\n tempVec4b[1] = y;\n tempVec4b[2] = 1;\n tempVec4b[3] = 1;\n\n let world2 = math.transformVec4(pvMatInverse, tempVec4b);\n world2 = math.mulVec4Scalar(world2, 1 / world2[3]);\n\n const dir = math.subVec3(world2, world1, tempVec4c);\n const worldPos = math.addVec3(world1, math.mulVec4Scalar(dir, screenZ, tempVec4d), tempVec4e);\n\n if (rtcCenter) {\n math.addVec3(worldPos, rtcCenter);\n }\n\n pickResult.worldPos = worldPos;\n }\n })();\n\n function unpackDepth(depthZ) {\n const vec = [depthZ[0] / 256.0, depthZ[1] / 256.0, depthZ[2] / 256.0, depthZ[3] / 256.0];\n const bitShift = [1.0 / (256.0 * 256.0 * 256.0), 1.0 / (256.0 * 256.0), 1.0 / 256.0, 1.0];\n return math.dotVec4(vec, bitShift);\n }\n\n function gpuPickWorldNormal(pickable, canvasPos, pickViewMatrix, pickProjMatrix, pickResult) {\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n frameCtx.pickViewMatrix = pickViewMatrix;\n frameCtx.pickProjMatrix = pickProjMatrix;\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n pickable.drawPickNormals(frameCtx); // Draw color-encoded fragment World-space normals\n\n const pix = pickBuffer.read(Math.round(canvasPos[0]), Math.round(canvasPos[1]));\n\n const worldNormal = [(pix[0] / 256.0) - 0.5, (pix[1] / 256.0) - 0.5, (pix[2] / 256.0) - 0.5];\n\n math.normalizeVec3(worldNormal);\n\n pickResult.worldNormal = worldNormal;\n }\n\n /**\n * Adds a {@link Marker} for occlusion testing.\n * @param marker\n */\n this.addMarker = function (marker) {\n this._occlusionTester = this._occlusionTester || new OcclusionTester(scene);\n this._occlusionTester.addMarker(marker);\n scene.occlusionTestCountdown = 0;\n };\n\n /**\n * Notifies that a {@link Marker#worldPos} has updated.\n * @param marker\n */\n this.markerWorldPosUpdated = function (marker) {\n this._occlusionTester.markerWorldPosUpdated(marker);\n };\n\n /**\n * Removes a {@link Marker} from occlusion testing.\n * @param marker\n */\n this.removeMarker = function (marker) {\n this._occlusionTester.removeMarker(marker);\n };\n\n /**\n * Performs an occlusion test for all added {@link Marker}s, updating\n * their {@link Marker#visible} properties accordingly.\n */\n this.doOcclusionTest = function () {\n\n if (this._occlusionTester && this._occlusionTester.needOcclusionTest) {\n\n updateDrawlist();\n\n this._occlusionTester.bindRenderBuf();\n\n frameCtx.reset();\n frameCtx.backfaces = true;\n frameCtx.frontface = true; // \"ccw\"\n\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.DEPTH_TEST);\n gl.disable(gl.CULL_FACE);\n gl.disable(gl.BLEND);\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);\n\n for (let type in drawableTypeInfo) {\n if (drawableTypeInfo.hasOwnProperty(type)) {\n const drawableInfo = drawableTypeInfo[type];\n const drawableList = drawableInfo.drawableList;\n for (let i = 0, len = drawableList.length; i < len; i++) {\n const drawable = drawableList[i];\n if (!drawable.drawOcclusion || drawable.culled === true || drawable.visible === false || drawable.pickable === false) { // TODO: Option to exclude transparent?\n continue;\n }\n\n drawable.drawOcclusion(frameCtx);\n }\n }\n }\n\n this._occlusionTester.drawMarkers(frameCtx);\n this._occlusionTester.doOcclusionTest(); // Updates Marker \"visible\" properties\n this._occlusionTester.unbindRenderBuf();\n }\n };\n\n /**\n * Read pixels from the renderer's current output. Performs a force-render first.\n * @param pixels\n * @param colors\n * @param len\n * @param opaqueOnly\n * @private\n */\n this.readPixels = function (pixels, colors, len, opaqueOnly) {\n snapshotBuffer.bind();\n snapshotBuffer.clear();\n this.render({force: true, opaqueOnly: opaqueOnly});\n let color;\n let i;\n let j;\n let k;\n for (i = 0; i < len; i++) {\n j = i * 2;\n k = i * 4;\n color = snapshotBuffer.read(pixels[j], pixels[j + 1]);\n colors[k] = color[0];\n colors[k + 1] = color[1];\n colors[k + 2] = color[2];\n colors[k + 3] = color[3];\n }\n snapshotBuffer.unbind();\n imageDirty = true;\n };\n\n /**\n * Enter snapshot mode.\n *\n * Switches rendering to a hidden snapshot canvas.\n *\n * Exit snapshot mode using endSnapshot().\n */\n this.beginSnapshot = function () {\n snapshotBuffer.bind();\n snapshotBuffer.clear();\n snapshotBound = true;\n };\n\n /**\n * When in snapshot mode, renders a frame of the current Scene state to the snapshot canvas.\n */\n this.renderSnapshot = function () {\n if (!snapshotBound) {\n return;\n }\n snapshotBuffer.clear();\n this.render({force: true, opaqueOnly: false});\n imageDirty = true;\n };\n\n /**\n * When in snapshot mode, gets an image of the snapshot canvas.\n *\n * @private\n * @returns {String} The image data URI.\n */\n this.readSnapshot = function (params) {\n const imageDataURI = snapshotBuffer.readImage(params);\n return imageDataURI;\n };\n\n /**\n * Exists snapshot mode.\n *\n * Switches rendering back to the main canvas.\n */\n this.endSnapshot = function () {\n if (!snapshotBound) {\n return;\n }\n snapshotBuffer.unbind();\n snapshotBound = false;\n };\n\n /**\n * Destroys this renderer.\n * @private\n */\n this.destroy = function () {\n\n drawableTypeInfo = {};\n drawables = {};\n\n pickBuffer.destroy();\n snapshotBuffer.destroy();\n saoDepthRenderBuffer.destroy();\n occlusionRenderBuffer1.destroy();\n occlusionRenderBuffer2.destroy();\n\n saoOcclusionRenderer.destroy();\n saoDepthLimitedBlurRenderer.destroy();\n\n if (this._occlusionTester) {\n this._occlusionTester.destroy();\n }\n };\n};\n\n/**\n * @desc Meditates mouse, touch and keyboard events for various interaction controls.\n *\n * Ordinarily, you would only use this component as a utility to help manage input events and state for your\n * own custom input handlers.\n *\n * * Located at {@link Scene#input}\n * * Used by (at least) {@link CameraControl}\n *\n * ## Usage\n *\n * Subscribing to mouse events on the canvas:\n *\n * ````javascript\n * import {Viewer} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * const input = viewer.scene.input;\n *\n * const onMouseDown = input.on(\"mousedown\", (canvasCoords) => {\n * console.log(\"Mouse down at: x=\" + canvasCoords[0] + \", y=\" + coords[1]);\n * });\n *\n * const onMouseUp = input.on(\"mouseup\", (canvasCoords) => {\n * console.log(\"Mouse up at: x=\" + canvasCoords[0] + \", y=\" + canvasCoords[1]);\n * });\n *\n * const onMouseClicked = input.on(\"mouseclicked\", (canvasCoords) => {\n * console.log(\"Mouse clicked at: x=\" + canvasCoords[0] + \", y=\" + canvasCoords[1]);\n * });\n *\n * const onDblClick = input.on(\"dblclick\", (canvasCoords) => {\n * console.log(\"Double-click at: x=\" + canvasCoords[0] + \", y=\" + canvasCoords[1]);\n * });\n * ````\n *\n * Subscribing to keyboard events on the canvas:\n *\n * ````javascript\n * const onKeyDown = input.on(\"keydown\", (keyCode) => {\n * switch (keyCode) {\n * case this.KEY_A:\n * console.log(\"The 'A' key is down\");\n * break;\n *\n * case this.KEY_B:\n * console.log(\"The 'B' key is down\");\n * break;\n *\n * case this.KEY_C:\n * console.log(\"The 'C' key is down\");\n * break;\n *\n * default:\n * console.log(\"Some other key is down\");\n * }\n * });\n *\n * const onKeyUp = input.on(\"keyup\", (keyCode) => {\n * switch (keyCode) {\n * case this.KEY_A:\n * console.log(\"The 'A' key is up\");\n * break;\n *\n * case this.KEY_B:\n * console.log(\"The 'B' key is up\");\n * break;\n *\n * case this.KEY_C:\n * console.log(\"The 'C' key is up\");\n * break;\n *\n * default:\n * console.log(\"Some other key is up\");\n * }\n * });\n * ````\n *\n * Checking if keys are down:\n *\n * ````javascript\n * const isCtrlDown = input.ctrlDown;\n * const isAltDown = input.altDown;\n * const shiftDown = input.shiftDown;\n * //...\n *\n * const isAKeyDown = input.keyDown[input.KEY_A];\n * const isBKeyDown = input.keyDown[input.KEY_B];\n * const isShiftKeyDown = input.keyDown[input.KEY_SHIFT];\n * //...\n *\n * ````\n * Unsubscribing from events:\n *\n * ````javascript\n * input.off(onMouseDown);\n * input.off(onMouseUp);\n * //...\n * ````\n *\n * ## Disabling all events\n *\n * Event handling is enabled by default.\n *\n * To disable all events:\n *\n * ````javascript\n * myViewer.scene.input.setEnabled(false);\n * ````\n * To enable all events again:\n *\n * ````javascript\n * myViewer.scene.input.setEnabled(true);\n * ````\n *\n * ## Disabling keyboard input\n *\n * When the mouse is over the canvas, the canvas will consume keyboard events. Therefore, sometimes we need\n * to disable keyboard control, so that other UI elements can get those events.\n *\n * To disable keyboard events:\n *\n * ````javascript\n * myViewer.scene.input.setKeyboardEnabled(false);\n * ````\n *\n * To enable keyboard events again:\n *\n * ````javascript\n * myViewer.scene.input.setKeyboardEnabled(true)\n * ````\n */\nclass Input extends Component {\n\n /**\n * @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n /**\n * Code for the BACKSPACE key.\n * @property KEY_BACKSPACE\n * @final\n * @type {Number}\n */\n this.KEY_BACKSPACE = 8;\n\n /**\n * Code for the TAB key.\n * @property KEY_TAB\n * @final\n * @type {Number}\n */\n this.KEY_TAB = 9;\n\n /**\n * Code for the ENTER key.\n * @property KEY_ENTER\n * @final\n * @type {Number}\n */\n this.KEY_ENTER = 13;\n\n /**\n * Code for the SHIFT key.\n * @property KEY_SHIFT\n * @final\n * @type {Number}\n */\n this.KEY_SHIFT = 16;\n\n /**\n * Code for the CTRL key.\n * @property KEY_CTRL\n * @final\n * @type {Number}\n */\n this.KEY_CTRL = 17;\n\n /**\n * Code for the ALT key.\n * @property KEY_ALT\n * @final\n * @type {Number}\n */\n this.KEY_ALT = 18;\n\n /**\n * Code for the PAUSE_BREAK key.\n * @property KEY_PAUSE_BREAK\n * @final\n * @type {Number}\n */\n this.KEY_PAUSE_BREAK = 19;\n\n /**\n * Code for the CAPS_LOCK key.\n * @property KEY_CAPS_LOCK\n * @final\n * @type {Number}\n */\n this.KEY_CAPS_LOCK = 20;\n\n /**\n * Code for the ESCAPE key.\n * @property KEY_ESCAPE\n * @final\n * @type {Number}\n */\n this.KEY_ESCAPE = 27;\n\n /**\n * Code for the PAGE_UP key.\n * @property KEY_PAGE_UP\n * @final\n * @type {Number}\n */\n this.KEY_PAGE_UP = 33;\n\n /**\n * Code for the PAGE_DOWN key.\n * @property KEY_PAGE_DOWN\n * @final\n * @type {Number}\n */\n this.KEY_PAGE_DOWN = 34;\n\n /**\n * Code for the END key.\n * @property KEY_END\n * @final\n * @type {Number}\n */\n this.KEY_END = 35;\n\n /**\n * Code for the HOME key.\n * @property KEY_HOME\n * @final\n * @type {Number}\n */\n this.KEY_HOME = 36;\n\n /**\n * Code for the LEFT_ARROW key.\n * @property KEY_LEFT_ARROW\n * @final\n * @type {Number}\n */\n this.KEY_LEFT_ARROW = 37;\n\n /**\n * Code for the UP_ARROW key.\n * @property KEY_UP_ARROW\n * @final\n * @type {Number}\n */\n this.KEY_UP_ARROW = 38;\n\n /**\n * Code for the RIGHT_ARROW key.\n * @property KEY_RIGHT_ARROW\n * @final\n * @type {Number}\n */\n this.KEY_RIGHT_ARROW = 39;\n\n /**\n * Code for the DOWN_ARROW key.\n * @property KEY_DOWN_ARROW\n * @final\n * @type {Number}\n */\n this.KEY_DOWN_ARROW = 40;\n\n /**\n * Code for the INSERT key.\n * @property KEY_INSERT\n * @final\n * @type {Number}\n */\n this.KEY_INSERT = 45;\n\n /**\n * Code for the DELETE key.\n * @property KEY_DELETE\n * @final\n * @type {Number}\n */\n this.KEY_DELETE = 46;\n\n /**\n * Code for the 0 key.\n * @property KEY_NUM_0\n * @final\n * @type {Number}\n */\n this.KEY_NUM_0 = 48;\n\n /**\n * Code for the 1 key.\n * @property KEY_NUM_1\n * @final\n * @type {Number}\n */\n this.KEY_NUM_1 = 49;\n\n /**\n * Code for the 2 key.\n * @property KEY_NUM_2\n * @final\n * @type {Number}\n */\n this.KEY_NUM_2 = 50;\n\n /**\n * Code for the 3 key.\n * @property KEY_NUM_3\n * @final\n * @type {Number}\n */\n this.KEY_NUM_3 = 51;\n\n /**\n * Code for the 4 key.\n * @property KEY_NUM_4\n * @final\n * @type {Number}\n */\n this.KEY_NUM_4 = 52;\n\n /**\n * Code for the 5 key.\n * @property KEY_NUM_5\n * @final\n * @type {Number}\n */\n this.KEY_NUM_5 = 53;\n\n /**\n * Code for the 6 key.\n * @property KEY_NUM_6\n * @final\n * @type {Number}\n */\n this.KEY_NUM_6 = 54;\n\n /**\n * Code for the 7 key.\n * @property KEY_NUM_7\n * @final\n * @type {Number}\n */\n this.KEY_NUM_7 = 55;\n\n /**\n * Code for the 8 key.\n * @property KEY_NUM_8\n * @final\n * @type {Number}\n */\n this.KEY_NUM_8 = 56;\n\n /**\n * Code for the 9 key.\n * @property KEY_NUM_9\n * @final\n * @type {Number}\n */\n this.KEY_NUM_9 = 57;\n\n /**\n * Code for the A key.\n * @property KEY_A\n * @final\n * @type {Number}\n */\n this.KEY_A = 65;\n\n /**\n * Code for the B key.\n * @property KEY_B\n * @final\n * @type {Number}\n */\n this.KEY_B = 66;\n\n /**\n * Code for the C key.\n * @property KEY_C\n * @final\n * @type {Number}\n */\n this.KEY_C = 67;\n\n /**\n * Code for the D key.\n * @property KEY_D\n * @final\n * @type {Number}\n */\n this.KEY_D = 68;\n\n /**\n * Code for the E key.\n * @property KEY_E\n * @final\n * @type {Number}\n */\n this.KEY_E = 69;\n\n /**\n * Code for the F key.\n * @property KEY_F\n * @final\n * @type {Number}\n */\n this.KEY_F = 70;\n\n /**\n * Code for the G key.\n * @property KEY_G\n * @final\n * @type {Number}\n */\n this.KEY_G = 71;\n\n /**\n * Code for the H key.\n * @property KEY_H\n * @final\n * @type {Number}\n */\n this.KEY_H = 72;\n\n /**\n * Code for the I key.\n * @property KEY_I\n * @final\n * @type {Number}\n */\n this.KEY_I = 73;\n\n /**\n * Code for the J key.\n * @property KEY_J\n * @final\n * @type {Number}\n */\n this.KEY_J = 74;\n\n /**\n * Code for the K key.\n * @property KEY_K\n * @final\n * @type {Number}\n */\n this.KEY_K = 75;\n\n /**\n * Code for the L key.\n * @property KEY_L\n * @final\n * @type {Number}\n */\n this.KEY_L = 76;\n\n /**\n * Code for the M key.\n * @property KEY_M\n * @final\n * @type {Number}\n */\n this.KEY_M = 77;\n\n /**\n * Code for the N key.\n * @property KEY_N\n * @final\n * @type {Number}\n */\n this.KEY_N = 78;\n\n /**\n * Code for the O key.\n * @property KEY_O\n * @final\n * @type {Number}\n */\n this.KEY_O = 79;\n\n /**\n * Code for the P key.\n * @property KEY_P\n * @final\n * @type {Number}\n */\n this.KEY_P = 80;\n\n /**\n * Code for the Q key.\n * @property KEY_Q\n * @final\n * @type {Number}\n */\n this.KEY_Q = 81;\n\n /**\n * Code for the R key.\n * @property KEY_R\n * @final\n * @type {Number}\n */\n this.KEY_R = 82;\n\n /**\n * Code for the S key.\n * @property KEY_S\n * @final\n * @type {Number}\n */\n this.KEY_S = 83;\n\n /**\n * Code for the T key.\n * @property KEY_T\n * @final\n * @type {Number}\n */\n this.KEY_T = 84;\n\n /**\n * Code for the U key.\n * @property KEY_U\n * @final\n * @type {Number}\n */\n this.KEY_U = 85;\n\n /**\n * Code for the V key.\n * @property KEY_V\n * @final\n * @type {Number}\n */\n this.KEY_V = 86;\n\n /**\n * Code for the W key.\n * @property KEY_W\n * @final\n * @type {Number}\n */\n this.KEY_W = 87;\n\n /**\n * Code for the X key.\n * @property KEY_X\n * @final\n * @type {Number}\n */\n this.KEY_X = 88;\n\n /**\n * Code for the Y key.\n * @property KEY_Y\n * @final\n * @type {Number}\n */\n this.KEY_Y = 89;\n\n /**\n * Code for the Z key.\n * @property KEY_Z\n * @final\n * @type {Number}\n */\n this.KEY_Z = 90;\n\n /**\n * Code for the LEFT_WINDOW key.\n * @property KEY_LEFT_WINDOW\n * @final\n * @type {Number}\n */\n this.KEY_LEFT_WINDOW = 91;\n\n /**\n * Code for the RIGHT_WINDOW key.\n * @property KEY_RIGHT_WINDOW\n * @final\n * @type {Number}\n */\n this.KEY_RIGHT_WINDOW = 92;\n\n /**\n * Code for the SELECT key.\n * @property KEY_SELECT\n * @final\n * @type {Number}\n */\n this.KEY_SELECT_KEY = 93;\n\n /**\n * Code for the number pad 0 key.\n * @property KEY_NUMPAD_0\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_0 = 96;\n\n /**\n * Code for the number pad 1 key.\n * @property KEY_NUMPAD_1\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_1 = 97;\n\n /**\n * Code for the number pad 2 key.\n * @property KEY_NUMPAD 2\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_2 = 98;\n\n /**\n * Code for the number pad 3 key.\n * @property KEY_NUMPAD_3\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_3 = 99;\n\n /**\n * Code for the number pad 4 key.\n * @property KEY_NUMPAD_4\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_4 = 100;\n\n /**\n * Code for the number pad 5 key.\n * @property KEY_NUMPAD_5\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_5 = 101;\n\n /**\n * Code for the number pad 6 key.\n * @property KEY_NUMPAD_6\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_6 = 102;\n\n /**\n * Code for the number pad 7 key.\n * @property KEY_NUMPAD_7\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_7 = 103;\n\n /**\n * Code for the number pad 8 key.\n * @property KEY_NUMPAD_8\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_8 = 104;\n\n /**\n * Code for the number pad 9 key.\n * @property KEY_NUMPAD_9\n * @final\n * @type {Number}\n */\n this.KEY_NUMPAD_9 = 105;\n\n /**\n * Code for the MULTIPLY key.\n * @property KEY_MULTIPLY\n * @final\n * @type {Number}\n */\n this.KEY_MULTIPLY = 106;\n\n /**\n * Code for the ADD key.\n * @property KEY_ADD\n * @final\n * @type {Number}\n */\n this.KEY_ADD = 107;\n\n /**\n * Code for the SUBTRACT key.\n * @property KEY_SUBTRACT\n * @final\n * @type {Number}\n */\n this.KEY_SUBTRACT = 109;\n\n /**\n * Code for the DECIMAL POINT key.\n * @property KEY_DECIMAL_POINT\n * @final\n * @type {Number}\n */\n this.KEY_DECIMAL_POINT = 110;\n\n /**\n * Code for the DIVIDE key.\n * @property KEY_DIVIDE\n * @final\n * @type {Number}\n */\n this.KEY_DIVIDE = 111;\n\n /**\n * Code for the F1 key.\n * @property KEY_F1\n * @final\n * @type {Number}\n */\n this.KEY_F1 = 112;\n\n /**\n * Code for the F2 key.\n * @property KEY_F2\n * @final\n * @type {Number}\n */\n this.KEY_F2 = 113;\n\n /**\n * Code for the F3 key.\n * @property KEY_F3\n * @final\n * @type {Number}\n */\n this.KEY_F3 = 114;\n\n /**\n * Code for the F4 key.\n * @property KEY_F4\n * @final\n * @type {Number}\n */\n this.KEY_F4 = 115;\n\n /**\n * Code for the F5 key.\n * @property KEY_F5\n * @final\n * @type {Number}\n */\n this.KEY_F5 = 116;\n\n /**\n * Code for the F6 key.\n * @property KEY_F6\n * @final\n * @type {Number}\n */\n this.KEY_F6 = 117;\n\n /**\n * Code for the F7 key.\n * @property KEY_F7\n * @final\n * @type {Number}\n */\n this.KEY_F7 = 118;\n\n /**\n * Code for the F8 key.\n * @property KEY_F8\n * @final\n * @type {Number}\n */\n this.KEY_F8 = 119;\n\n /**\n * Code for the F9 key.\n * @property KEY_F9\n * @final\n * @type {Number}\n */\n this.KEY_F9 = 120;\n\n /**\n * Code for the F10 key.\n * @property KEY_F10\n * @final\n * @type {Number}\n */\n this.KEY_F10 = 121;\n\n /**\n * Code for the F11 key.\n * @property KEY_F11\n * @final\n * @type {Number}\n */\n this.KEY_F11 = 122;\n\n /**\n * Code for the F12 key.\n * @property KEY_F12\n * @final\n * @type {Number}\n */\n this.KEY_F12 = 123;\n\n /**\n * Code for the NUM_LOCK key.\n * @property KEY_NUM_LOCK\n * @final\n * @type {Number}\n */\n this.KEY_NUM_LOCK = 144;\n\n /**\n * Code for the SCROLL_LOCK key.\n * @property KEY_SCROLL_LOCK\n * @final\n * @type {Number}\n */\n this.KEY_SCROLL_LOCK = 145;\n\n /**\n * Code for the SEMI_COLON key.\n * @property KEY_SEMI_COLON\n * @final\n * @type {Number}\n */\n this.KEY_SEMI_COLON = 186;\n\n /**\n * Code for the EQUAL_SIGN key.\n * @property KEY_EQUAL_SIGN\n * @final\n * @type {Number}\n */\n this.KEY_EQUAL_SIGN = 187;\n\n /**\n * Code for the COMMA key.\n * @property KEY_COMMA\n * @final\n * @type {Number}\n */\n this.KEY_COMMA = 188;\n\n /**\n * Code for the DASH key.\n * @property KEY_DASH\n * @final\n * @type {Number}\n */\n this.KEY_DASH = 189;\n\n /**\n * Code for the PERIOD key.\n * @property KEY_PERIOD\n * @final\n * @type {Number}\n */\n this.KEY_PERIOD = 190;\n\n /**\n * Code for the FORWARD_SLASH key.\n * @property KEY_FORWARD_SLASH\n * @final\n * @type {Number}\n */\n this.KEY_FORWARD_SLASH = 191;\n\n /**\n * Code for the GRAVE_ACCENT key.\n * @property KEY_GRAVE_ACCENT\n * @final\n * @type {Number}\n */\n this.KEY_GRAVE_ACCENT = 192;\n\n /**\n * Code for the OPEN_BRACKET key.\n * @property KEY_OPEN_BRACKET\n * @final\n * @type {Number}\n */\n this.KEY_OPEN_BRACKET = 219;\n\n /**\n * Code for the BACK_SLASH key.\n * @property KEY_BACK_SLASH\n * @final\n * @type {Number}\n */\n this.KEY_BACK_SLASH = 220;\n\n /**\n * Code for the CLOSE_BRACKET key.\n * @property KEY_CLOSE_BRACKET\n * @final\n * @type {Number}\n */\n this.KEY_CLOSE_BRACKET = 221;\n\n /**\n * Code for the SINGLE_QUOTE key.\n * @property KEY_SINGLE_QUOTE\n * @final\n * @type {Number}\n */\n this.KEY_SINGLE_QUOTE = 222;\n\n /**\n * Code for the SPACE key.\n * @property KEY_SPACE\n * @final\n * @type {Number}\n */\n this.KEY_SPACE = 32;\n\n /**\n * The canvas element that mouse and keyboards are bound to.\n *\n * @final\n * @type {HTMLCanvasElement}\n */\n this.element = cfg.element;\n\n /** True whenever ALT key is down.\n *\n * @type {boolean}\n */\n this.altDown = false;\n\n /** True whenever CTRL key is down.\n *\n * @type {boolean}\n */\n this.ctrlDown = false;\n\n /** True whenever left mouse button is down.\n *\n * @type {boolean}\n */\n this.mouseDownLeft = false;\n\n /**\n * True whenever middle mouse button is down.\n *\n * @type {boolean}\n */\n this.mouseDownMiddle = false;\n\n /**\n * True whenever the right mouse button is down.\n *\n * @type {boolean}\n */\n this.mouseDownRight = false;\n\n /**\n * Flag for each key that's down.\n *\n * @type {boolean[]}\n */\n this.keyDown = [];\n\n /** True while input enabled\n *\n * @type {boolean}\n */\n this.enabled = true;\n\n /** True while keyboard input is enabled.\n *\n * Default value is ````true````.\n *\n * {@link CameraControl} will not respond to keyboard events while this is ````false````.\n *\n * @type {boolean}\n */\n this.keyboardEnabled = true;\n\n /** True while the mouse is over the canvas.\n *\n * @type {boolean}\n */\n this.mouseover = false;\n\n /**\n * Current mouse position within the canvas.\n * @type {Number[]}\n */\n this.mouseCanvasPos = math.vec2();\n\n this._keyboardEventsElement = cfg.keyboardEventsElement || document;\n\n this._bindEvents();\n }\n\n _bindEvents() {\n\n if (this._eventsBound) {\n return;\n }\n\n this._keyboardEventsElement.addEventListener(\"keydown\", this._keyDownListener = (e) => {\n if (!this.enabled || (!this.keyboardEnabled)) {\n return;\n }\n if (e.target.tagName !== \"INPUT\" && e.target.tagName !== \"TEXTAREA\") {\n if (e.keyCode === this.KEY_CTRL) {\n this.ctrlDown = true;\n } else if (e.keyCode === this.KEY_ALT) {\n this.altDown = true;\n } else if (e.keyCode === this.KEY_SHIFT) {\n this.shiftDown = true;\n }\n this.keyDown[e.keyCode] = true;\n this.fire(\"keydown\", e.keyCode, true);\n }\n }, false);\n\n this._keyboardEventsElement.addEventListener(\"keyup\", this._keyUpListener = (e) => {\n if (!this.enabled || (!this.keyboardEnabled)) {\n return;\n }\n if (e.target.tagName !== \"INPUT\" && e.target.tagName !== \"TEXTAREA\") {\n if (e.keyCode === this.KEY_CTRL) {\n this.ctrlDown = false;\n } else if (e.keyCode === this.KEY_ALT) {\n this.altDown = false;\n } else if (e.keyCode === this.KEY_SHIFT) {\n this.shiftDown = false;\n }\n this.keyDown[e.keyCode] = false;\n this.fire(\"keyup\", e.keyCode, true);\n }\n });\n\n this.element.addEventListener(\"mouseenter\", this._mouseEnterListener = (e) => {\n if (!this.enabled) {\n return;\n }\n this.mouseover = true;\n this._getMouseCanvasPos(e);\n this.fire(\"mouseenter\", this.mouseCanvasPos, true);\n });\n\n this.element.addEventListener(\"mouseleave\", this._mouseLeaveListener = (e) => {\n if (!this.enabled) {\n return;\n }\n this.mouseover = false;\n this._getMouseCanvasPos(e);\n this.fire(\"mouseleave\", this.mouseCanvasPos, true);\n });\n\n this.element.addEventListener(\"mousedown\", this._mouseDownListener = (e) => {\n if (!this.enabled) {\n return;\n }\n switch (e.which) {\n case 1:// Left button\n this.mouseDownLeft = true;\n break;\n case 2:// Middle/both buttons\n this.mouseDownMiddle = true;\n break;\n case 3:// Right button\n this.mouseDownRight = true;\n break;\n }\n this._getMouseCanvasPos(e);\n this.element.focus();\n this.fire(\"mousedown\", this.mouseCanvasPos, true);\n if (this.mouseover) {\n e.preventDefault();\n }\n });\n\n document.addEventListener(\"mouseup\", this._mouseUpListener = (e) => {\n if (!this.enabled) {\n return;\n }\n switch (e.which) {\n case 1:// Left button\n this.mouseDownLeft = false;\n break;\n case 2:// Middle/both buttons\n this.mouseDownMiddle = false;\n break;\n case 3:// Right button\n this.mouseDownRight = false;\n break;\n }\n this.fire(\"mouseup\", this.mouseCanvasPos, true);\n // if (this.mouseover) {\n // e.preventDefault();\n // }\n }, true);\n\n document.addEventListener(\"click\", this._clickListener = (e) => {\n if (!this.enabled) {\n return;\n }\n switch (e.which) {\n case 1:// Left button\n this.mouseDownLeft = false;\n this.mouseDownRight = false;\n break;\n case 2:// Middle/both buttons\n this.mouseDownMiddle = false;\n break;\n case 3:// Right button\n this.mouseDownLeft = false;\n this.mouseDownRight = false;\n break;\n }\n this._getMouseCanvasPos(e);\n this.fire(\"click\", this.mouseCanvasPos, true);\n if (this.mouseover) {\n e.preventDefault();\n }\n });\n\n document.addEventListener(\"dblclick\", this._dblClickListener = (e) => {\n if (!this.enabled) {\n return;\n }\n switch (e.which) {\n case 1:// Left button\n this.mouseDownLeft = false;\n this.mouseDownRight = false;\n break;\n case 2:// Middle/both buttons\n this.mouseDownMiddle = false;\n break;\n case 3:// Right button\n this.mouseDownLeft = false;\n this.mouseDownRight = false;\n break;\n }\n this._getMouseCanvasPos(e);\n this.fire(\"dblclick\", this.mouseCanvasPos, true);\n if (this.mouseover) {\n e.preventDefault();\n }\n });\n\n this.element.addEventListener(\"mousemove\", this._mouseMoveListener = (e) => {\n if (!this.enabled) {\n return;\n }\n this._getMouseCanvasPos(e);\n this.fire(\"mousemove\", this.mouseCanvasPos, true);\n if (this.mouseover) {\n e.preventDefault();\n }\n });\n\n this.element.addEventListener(\"wheel\", this._mouseWheelListener = (e, d) => {\n if (!this.enabled) {\n return;\n }\n const delta = Math.max(-1, Math.min(1, -e.deltaY * 40));\n this.fire(\"mousewheel\", delta, true);\n }, {passive: true});\n\n // mouseclicked\n\n {\n let downX;\n let downY;\n // Tolerance between down and up positions for a mouse click\n const tolerance = 2;\n this.on(\"mousedown\", (params) => {\n downX = params[0];\n downY = params[1];\n });\n this.on(\"mouseup\", (params) => {\n if (downX >= (params[0] - tolerance) &&\n downX <= (params[0] + tolerance) &&\n downY >= (params[1] - tolerance) &&\n downY <= (params[1] + tolerance)) {\n this.fire(\"mouseclicked\", params, true);\n }\n });\n }\n\n this._eventsBound = true;\n }\n\n _unbindEvents() {\n if (!this._eventsBound) {\n return;\n }\n this._keyboardEventsElement.removeEventListener(\"keydown\", this._keyDownListener);\n this._keyboardEventsElement.removeEventListener(\"keyup\", this._keyUpListener);\n this.element.removeEventListener(\"mouseenter\", this._mouseEnterListener);\n this.element.removeEventListener(\"mouseleave\", this._mouseLeaveListener);\n this.element.removeEventListener(\"mousedown\", this._mouseDownListener);\n document.removeEventListener(\"mouseup\", this._mouseDownListener);\n document.removeEventListener(\"click\", this._clickListener);\n document.removeEventListener(\"dblclick\", this._dblClickListener);\n this.element.removeEventListener(\"mousemove\", this._mouseMoveListener);\n this.element.removeEventListener(\"wheel\", this._mouseWheelListener);\n if (window.OrientationChangeEvent) {\n window.removeEventListener('orientationchange', this._orientationchangedListener);\n }\n if (window.DeviceMotionEvent) {\n window.removeEventListener('devicemotion', this._deviceMotionListener);\n }\n if (window.DeviceOrientationEvent) {\n window.removeEventListener(\"deviceorientation\", this._deviceOrientListener);\n }\n this._eventsBound = false;\n }\n\n _getMouseCanvasPos(event) {\n if (!event) {\n event = window.event;\n this.mouseCanvasPos[0] = event.x;\n this.mouseCanvasPos[1] = event.y;\n } else {\n let element = event.target;\n let totalOffsetLeft = 0;\n let totalOffsetTop = 0;\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n this.mouseCanvasPos[0] = event.pageX - totalOffsetLeft;\n this.mouseCanvasPos[1] = event.pageY - totalOffsetTop;\n }\n }\n\n /**\n * Sets whether input handlers are enabled.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} enable Indicates if input handlers are enabled.\n */\n setEnabled(enable) {\n if (this.enabled !== enable) {\n this.fire(\"enabled\", this.enabled = enable);\n }\n }\n\n /**\n * Gets whether input handlers are enabled.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} Indicates if input handlers are enabled.\n */\n getEnabled() {\n return this.enabled;\n }\n\n /**\n * Sets whether or not keyboard input is enabled.\n *\n * Default value is ````true````.\n *\n * {@link CameraControl} will not respond to keyboard events while this is set ````false````.\n *\n * @param {Boolean} value Indicates whether keyboard input is enabled.\n */\n setKeyboardEnabled(value) {\n this.keyboardEnabled = value;\n }\n\n /**\n * Gets whether keyboard input is enabled.\n *\n * Default value is ````true````.\n *\n * {@link CameraControl} will not respond to keyboard events while this is set ````false````.\n *\n * @returns {Boolean} Returns whether keyboard input is enabled.\n */\n getKeyboardEnabled() {\n return this.keyboardEnabled;\n }\n\n /**\n * @private\n */\n destroy() {\n super.destroy();\n this._unbindEvents();\n }\n}\n\nconst ids$3 = new Map({});\n\n/**\n * @desc Represents a chunk of state changes applied by the {@link Scene}'s renderer while it renders a frame.\n *\n * * Contains properties that represent the state changes.\n * * Has a unique automatically-generated numeric ID, which the renderer can use to sort these, in order to avoid applying redundant state changes for each frame.\n * * Initialize your own properties on a RenderState via its constructor.\n *\n * @private\n */\nclass RenderState {\n\n constructor(cfg) {\n\n /**\n The RenderState's ID, unique within the renderer.\n @property id\n @type {Number}\n @final\n */\n this.id = ids$3.addItem({});\n for (const key in cfg) {\n if (cfg.hasOwnProperty(key)) {\n this[key] = cfg[key];\n }\n }\n }\n\n /**\n Destroys this RenderState.\n */\n destroy() {\n ids$3.removeItem(this.id);\n }\n}\n\n/**\n * @desc controls the canvas viewport for a {@link Scene}.\n *\n * * One Viewport per scene.\n * * You can configure a Scene to render multiple times per frame, while setting the Viewport to different extents on each render.\n * * Make a Viewport automatically size to its {@link Scene} {@link Canvas} by setting its {@link Viewport#autoBoundary} ````true````.\n *\n *\n * Configuring the Scene to render twice on each frame, each time to a separate viewport:\n *\n * ````Javascript\n * // Load glTF model\n * var model = new xeokit.GLTFModel({\n src: \"models/gltf/GearboxAssy/glTF-MaterialsCommon/GearboxAssy.gltf\"\n });\n\n var scene = model.scene;\n var viewport = scene.viewport;\n\n // Configure Scene to render twice for each frame\n scene.passes = 2; // Default is 1\n scene.clearEachPass = false; // Default is false\n\n // Render to a separate viewport on each render\n\n var viewport = scene.viewport;\n viewport.autoBoundary = false;\n\n scene.on(\"rendering\", function (e) {\n switch (e.pass) {\n case 0:\n viewport.boundary = [0, 0, 200, 200]; // xmin, ymin, width, height\n break;\n\n case 1:\n viewport.boundary = [200, 0, 200, 200];\n break;\n }\n });\n ````\n\n @class Viewport\n @module xeokit\n @submodule rendering\n @constructor\n @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n @param {*} [cfg] Viewport configuration\n @param {String} [cfg.id] Optional ID, unique among all components in the parent\n {@link Scene}, generated automatically when omitted.\n @param {String:Object} [cfg.meta] Optional map of user-defined metadata to attach to this Viewport.\n @param [cfg.boundary] {Number[]} Canvas-space Viewport boundary, given as\n (min, max, width, height). Defaults to the size of the parent\n {@link Scene} {@link Canvas}.\n @param [cfg.autoBoundary=false] {Boolean} Indicates if this Viewport's {@link Viewport#boundary}\n automatically synchronizes with the size of the parent {@link Scene} {@link Canvas}.\n\n @extends Component\n */\n\nclass Viewport extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Viewport\";\n }\n\n /**\n @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n boundary: [0, 0, 100, 100]\n });\n\n this.boundary = cfg.boundary;\n this.autoBoundary = cfg.autoBoundary;\n }\n\n\n /**\n * Sets the canvas-space boundary of this Viewport, indicated as ````[min, max, width, height]````.\n *\n * When {@link Viewport#autoBoundary} is ````true````, ignores calls to this method and automatically synchronizes with {@link Canvas#boundary}.\n *\n * Fires a \"boundary\"\" event on change.\n *\n * Defaults to the {@link Canvas} extents.\n *\n * @param {Number[]} value New Viewport extents.\n */\n set boundary(value) {\n\n if (this._autoBoundary) {\n return;\n }\n\n if (!value) {\n\n const canvasBoundary = this.scene.canvas.boundary;\n\n const width = canvasBoundary[2];\n const height = canvasBoundary[3];\n\n value = [0, 0, width, height];\n }\n\n this._state.boundary = value;\n\n this.glRedraw();\n\n /**\n Fired whenever this Viewport's {@link Viewport#boundary} property changes.\n\n @event boundary\n @param value {Boolean} The property's new value\n */\n this.fire(\"boundary\", this._state.boundary);\n }\n\n /**\n * Gets the canvas-space boundary of this Viewport, indicated as ````[min, max, width, height]````.\n *\n * @returns {Number[]} The Viewport extents.\n */\n get boundary() {\n return this._state.boundary;\n }\n\n /**\n * Sets if {@link Viewport#boundary} automatically synchronizes with {@link Canvas#boundary}.\n *\n * Default is ````false````.\n *\n * @param {Boolean} value Set true to automatically sycnhronize.\n */\n set autoBoundary(value) {\n\n value = !!value;\n\n if (value === this._autoBoundary) {\n return;\n }\n\n this._autoBoundary = value;\n\n if (this._autoBoundary) {\n this._onCanvasSize = this.scene.canvas.on(\"boundary\",\n function (boundary) {\n\n const width = boundary[2];\n const height = boundary[3];\n\n this._state.boundary = [0, 0, width, height];\n\n this.glRedraw();\n\n /**\n Fired whenever this Viewport's {@link Viewport#boundary} property changes.\n\n @event boundary\n @param value {Boolean} The property's new value\n */\n this.fire(\"boundary\", this._state.boundary);\n\n }, this);\n\n } else if (this._onCanvasSize) {\n this.scene.canvas.off(this._onCanvasSize);\n this._onCanvasSize = null;\n }\n\n /**\n Fired whenever this Viewport's {@link autoBoundary/autoBoundary} property changes.\n\n @event autoBoundary\n @param value The property's new value\n */\n this.fire(\"autoBoundary\", this._autoBoundary);\n }\n\n /**\n * Gets if {@link Viewport#boundary} automatically synchronizes with {@link Canvas#boundary}.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} Returns ````true```` when automatically sycnhronizing.\n */\n get autoBoundary() {\n return this._autoBoundary;\n }\n\n _getState() {\n return this._state;\n }\n\n /**\n * @private\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\n/**\n * @desc Defines its {@link Camera}'s perspective projection using a field-of-view angle.\n *\n * * Located at {@link Camera#perspective}.\n * * Implicitly sets the left, right, top, bottom frustum planes using {@link Perspective#fov}.\n * * {@link Perspective#near} and {@link Perspective#far} specify the distances to the WebGL clipping planes.\n */\nclass Perspective extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Perspective\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(camera, cfg = {}) {\n\n super(camera, cfg);\n\n /**\n * The Camera this Perspective belongs to.\n *\n * @property camera\n * @type {Camera}\n * @final\n */\n this.camera = camera;\n\n this._state = new RenderState({\n matrix: math.mat4(),\n inverseMatrix: math.mat4(),\n transposedMatrix: math.mat4(),\n near: 0.1,\n far: 2000.0\n });\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n this._fov = 60.0;\n\n // Recompute aspect from change in canvas size\n this._canvasResized = this.scene.canvas.on(\"boundary\", this._needUpdate, this);\n\n this.fov = cfg.fov;\n this.fovAxis = cfg.fovAxis;\n this.near = cfg.near;\n this.far = cfg.far;\n }\n\n _update() {\n\n const WIDTH_INDEX = 2;\n const HEIGHT_INDEX = 3;\n const boundary = this.scene.viewport.boundary;\n const aspect = boundary[WIDTH_INDEX] / boundary[HEIGHT_INDEX];\n const fovAxis = this._fovAxis;\n\n let fov = this._fov;\n if (fovAxis === \"x\" || (fovAxis === \"min\" && aspect < 1) || (fovAxis === \"max\" && aspect > 1)) {\n fov = fov / aspect;\n }\n fov = Math.min(fov, 120);\n\n math.perspectiveMat4(fov * (Math.PI / 180.0), aspect, this._state.near, this._state.far, this._state.matrix);\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n this.glRedraw();\n\n this.fire(\"matrix\", this._state.matrix);\n }\n\n /**\n * Sets the Perspective's field-of-view angle (FOV).\n *\n * Fires an \"fov\" event on change.\n\n * Default value is ````60.0````.\n *\n * @param {Number} value New field-of-view.\n */\n set fov(value) {\n value = (value !== undefined && value !== null) ? value : 60.0;\n if (value === this._fov) {\n return;\n }\n this._fov = value;\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"fov\", this._fov);\n }\n\n /**\n * Gets the Perspective's field-of-view angle (FOV).\n *\n * Default value is ````60.0````.\n *\n * @returns {Number} Current field-of-view.\n */\n get fov() {\n return this._fov;\n }\n\n /**\n * Sets the Perspective's FOV axis.\n *\n * Options are ````\"x\"````, ````\"y\"```` or ````\"min\"````, to use the minimum axis.\n *\n * Fires an \"fovAxis\" event on change.\n\n * Default value ````\"min\"````.\n *\n * @param {String} value New FOV axis value.\n */\n set fovAxis(value) {\n value = value || \"min\";\n if (this._fovAxis === value) {\n return;\n }\n if (value !== \"x\" && value !== \"y\" && value !== \"min\") {\n this.error(\"Unsupported value for 'fovAxis': \" + value + \" - defaulting to 'min'\");\n value = \"min\";\n }\n this._fovAxis = value;\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"fovAxis\", this._fovAxis);\n }\n\n /**\n * Gets the Perspective's FOV axis.\n *\n * Options are ````\"x\"````, ````\"y\"```` or ````\"min\"````, to use the minimum axis.\n *\n * Fires an \"fovAxis\" event on change.\n\n * Default value is ````\"min\"````.\n *\n * @returns {String} The current FOV axis value.\n */\n get fovAxis() {\n return this._fovAxis;\n }\n\n /**\n * Sets the position of the Perspective's near plane on the positive View-space Z-axis.\n *\n * Fires a \"near\" event on change.\n *\n * Default value is ````0.1````.\n *\n * @param {Number} value New Perspective near plane position.\n */\n set near(value) {\n const near = (value !== undefined && value !== null) ? value : 0.1;\n if (this._state.near === near) {\n return;\n }\n this._state.near = near;\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"near\", this._state.near);\n }\n\n /**\n * Gets the position of the Perspective's near plane on the positive View-space Z-axis.\n *\n * Fires an \"emits\" emits on change.\n *\n * Default value is ````0.1````.\n *\n * @returns The Perspective's near plane position.\n */\n get near() {\n return this._state.near;\n }\n\n /**\n * Sets the position of this Perspective's far plane on the positive View-space Z-axis.\n *\n * Fires a \"far\" event on change.\n *\n * @param {Number} value New Perspective far plane position.\n */\n set far(value) {\n const far = (value !== undefined && value !== null) ? value : 2000.0;\n if (this._state.far === far) {\n return;\n }\n this._state.far = far;\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"far\", this._state.far);\n }\n\n /**\n * Gets the position of this Perspective's far plane on the positive View-space Z-axis.\n *\n * @return {Number} The Perspective's far plane position.\n */\n get far() {\n return this._state.far;\n }\n\n /**\n * Gets the Perspective's projection transform matrix.\n *\n * Fires a \"matrix\" event on change.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @returns {Number[]} The Perspective's projection matrix.\n */\n get matrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.matrix;\n }\n\n /**\n * Gets the inverse of {@link Perspective#matrix}.\n *\n * @returns {Number[]} The inverse of {@link Perspective#matrix}.\n */\n get inverseMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._inverseMatrixDirty) {\n math.inverseMat4(this._state.matrix, this._state.inverseMatrix);\n this._inverseMatrixDirty = false;\n }\n return this._state.inverseMatrix;\n }\n\n /**\n * Gets the transpose of {@link Perspective#matrix}.\n *\n * @returns {Number[]} The transpose of {@link Perspective#matrix}.\n */\n get transposedMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._transposedMatrixDirty) {\n math.transposeMat4(this._state.matrix, this._state.transposedMatrix);\n this._transposedMatrixDirty = false;\n }\n return this._state.transposedMatrix;\n }\n\n /**\n * Un-projects the given Canvas-space coordinates and Screen-space depth, using this Perspective projection.\n *\n * @param {Number[]} canvasPos Inputs 2D Canvas-space coordinates.\n * @param {Number} screenZ Inputs Screen-space Z coordinate.\n * @param {Number[]} screenPos Outputs 3D Screen/Clip-space coordinates.\n * @param {Number[]} viewPos Outputs un-projected 3D View-space coordinates.\n * @param {Number[]} worldPos Outputs un-projected 3D World-space coordinates.\n */\n unproject(canvasPos, screenZ, screenPos, viewPos, worldPos) {\n\n const canvas = this.scene.canvas.canvas;\n\n const halfCanvasWidth = canvas.offsetWidth / 2.0;\n const halfCanvasHeight = canvas.offsetHeight / 2.0;\n\n screenPos[0] = (canvasPos[0] - halfCanvasWidth) / halfCanvasWidth;\n screenPos[1] = (canvasPos[1] - halfCanvasHeight) / halfCanvasHeight;\n screenPos[2] = screenZ;\n screenPos[3] = 1.0;\n\n math.mulMat4v4(this.inverseMatrix, screenPos, viewPos);\n math.mulVec3Scalar(viewPos, 1.0 / viewPos[3]);\n\n viewPos[3] = 1.0;\n viewPos[1] *= -1;\n\n math.mulMat4v4(this.camera.inverseViewMatrix, viewPos, worldPos);\n\n return worldPos;\n }\n\n /** @private\n *\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n this.scene.canvas.off(this._canvasResized);\n }\n}\n\n/**\n * @desc Defines its {@link Camera}'s orthographic projection as a box-shaped view volume.\n *\n * * Located at {@link Camera#ortho}.\n * * Works like Blender's orthographic projection, where the positions of the left, right, top and bottom planes are implicitly\n * indicated with a single {@link Ortho#scale} property, which causes the frustum to be symmetrical on X and Y axis, large enough to\n * contain the number of units given by {@link Ortho#scale}.\n * * {@link Ortho#near} and {@link Ortho#far} indicated the distances to the WebGL clipping planes.\n */\nclass Ortho extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Ortho\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(camera, cfg = {}) {\n\n super(camera, cfg);\n\n /**\n * The Camera this Ortho belongs to.\n *\n * @property camera\n * @type {Camera}\n * @final\n */\n this.camera = camera;\n\n this._state = new RenderState({\n matrix: math.mat4(),\n inverseMatrix: math.mat4(),\n transposedMatrix: math.mat4(),\n near: 0.1,\n far: 2000.0\n });\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n this.scale = cfg.scale;\n this.near = cfg.near;\n this.far = cfg.far;\n\n this._onCanvasBoundary = this.scene.canvas.on(\"boundary\", this._needUpdate, this);\n }\n\n _update() {\n\n const WIDTH_INDEX = 2;\n const HEIGHT_INDEX = 3;\n\n const scene = this.scene;\n const scale = this._scale;\n const halfSize = 0.5 * scale;\n\n const boundary = scene.viewport.boundary;\n const boundaryWidth = boundary[WIDTH_INDEX];\n const boundaryHeight = boundary[HEIGHT_INDEX];\n const aspect = boundaryWidth / boundaryHeight;\n\n let left;\n let right;\n let top;\n let bottom;\n\n if (boundaryWidth > boundaryHeight) {\n left = -halfSize;\n right = halfSize;\n top = halfSize / aspect;\n bottom = -halfSize / aspect;\n\n } else {\n left = -halfSize * aspect;\n right = halfSize * aspect;\n top = halfSize;\n bottom = -halfSize;\n }\n\n math.orthoMat4c(left, right, bottom, top, this._state.near, this._state.far, this._state.matrix);\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n this.glRedraw();\n\n this.fire(\"matrix\", this._state.matrix);\n }\n\n\n /**\n * Sets scale factor for this Ortho's extents on X and Y axis.\n *\n * Clamps to minimum value of ````0.01```.\n *\n * Fires a \"scale\" event on change.\n *\n * Default value is ````1.0````\n * @param {Number} value New scale value.\n */\n set scale(value) {\n if (value === undefined || value === null) {\n value = 1.0;\n }\n if (value <= 0) {\n value = 0.01;\n }\n this._scale = value;\n this._needUpdate(0);\n this.fire(\"scale\", this._scale);\n }\n\n /**\n * Gets scale factor for this Ortho's extents on X and Y axis.\n *\n * Clamps to minimum value of ````0.01```.\n *\n * Default value is ````1.0````\n *\n * @returns {Number} New Ortho scale value.\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the position of the Ortho's near plane on the positive View-space Z-axis.\n *\n * Fires a \"near\" emits on change.\n *\n * Default value is ````0.1````.\n *\n * @param {Number} value New Ortho near plane position.\n */\n set near(value) {\n const near = (value !== undefined && value !== null) ? value : 0.1;\n if (this._state.near === near) {\n return;\n }\n this._state.near = near;\n this._needUpdate(0);\n this.fire(\"near\", this._state.near);\n }\n\n /**\n * Gets the position of the Ortho's near plane on the positive View-space Z-axis.\n *\n * Default value is ````0.1````.\n *\n * @returns {Number} New Ortho near plane position.\n */\n get near() {\n return this._state.near;\n }\n\n /**\n * Sets the position of the Ortho's far plane on the positive View-space Z-axis.\n *\n * Fires a \"far\" event on change.\n *\n * Default value is ````2000.0````.\n *\n * @param {Number} value New far ortho plane position.\n */\n set far(value) {\n const far = (value !== undefined && value !== null) ? value : 2000.0;\n if (this._state.far === far) {\n return;\n }\n this._state.far = far;\n this._needUpdate(0);\n this.fire(\"far\", this._state.far);\n }\n\n /**\n * Gets the position of the Ortho's far plane on the positive View-space Z-axis.\n *\n * Default value is ````10000.0````.\n *\n * @returns {Number} New far ortho plane position.\n */\n get far() {\n return this._state.far;\n }\n\n /**\n * Gets the Ortho's projection transform matrix.\n *\n * Fires a \"matrix\" event on change.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @returns {Number[]} The Ortho's projection matrix.\n */\n get matrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.matrix;\n }\n\n /**\n * Gets the inverse of {@link Ortho#matrix}.\n *\n * @returns {Number[]} The inverse of {@link Ortho#matrix}.\n */\n get inverseMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._inverseMatrixDirty) {\n math.inverseMat4(this._state.matrix, this._state.inverseMatrix);\n this._inverseMatrixDirty = false;\n }\n return this._state.inverseMatrix;\n }\n\n /**\n * Gets the transpose of {@link Ortho#matrix}.\n *\n * @returns {Number[]} The transpose of {@link Ortho#matrix}.\n */\n get transposedMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._transposedMatrixDirty) {\n math.transposeMat4(this._state.matrix, this._state.transposedMatrix);\n this._transposedMatrixDirty = false;\n }\n return this._state.transposedMatrix;\n }\n\n /**\n * Un-projects the given Canvas-space coordinates, using this Ortho projection.\n *\n * @param {Number[]} canvasPos Inputs 2D Canvas-space coordinates.\n * @param {Number} screenZ Inputs Screen-space Z coordinate.\n * @param {Number[]} screenPos Outputs 3D Screen/Clip-space coordinates.\n * @param {Number[]} viewPos Outputs un-projected 3D View-space coordinates.\n * @param {Number[]} worldPos Outputs un-projected 3D World-space coordinates.\n */\n unproject(canvasPos, screenZ, screenPos, viewPos, worldPos) {\n\n const canvas = this.scene.canvas.canvas;\n\n const halfCanvasWidth = canvas.offsetWidth / 2.0;\n const halfCanvasHeight = canvas.offsetHeight / 2.0;\n\n screenPos[0] = (canvasPos[0] - halfCanvasWidth) / halfCanvasWidth;\n screenPos[1] = (canvasPos[1] - halfCanvasHeight) / halfCanvasHeight;\n screenPos[2] = screenZ;\n screenPos[3] = 1.0;\n\n math.mulMat4v4(this.inverseMatrix, screenPos, viewPos);\n math.mulVec3Scalar(viewPos, 1.0 / viewPos[3]);\n\n viewPos[3] = 1.0;\n viewPos[1] *= -1;\n\n math.mulMat4v4(this.camera.inverseViewMatrix, viewPos, worldPos);\n\n return worldPos;\n }\n\n /** @private\n *\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n this.scene.canvas.off(this._onCanvasBoundary);\n }\n}\n\n/**\n * @desc Defines its {@link Camera}'s perspective projection as a frustum-shaped view volume.\n *\n * * Located at {@link Camera#frustum}.\n * * Allows to explicitly set the positions of the left, right, top, bottom, near and far planes, which is useful for asymmetrical view volumes, such as for stereo viewing.\n * * {@link Frustum#near} and {@link Frustum#far} specify the distances to the WebGL clipping planes.\n */\nclass Frustum$1 extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Frustum\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(camera, cfg = {}) {\n\n super(camera, cfg);\n\n /**\n * The Camera this Frustum belongs to.\n *\n * @property camera\n * @type {Camera}\n * @final\n */\n this.camera = camera;\n\n this._state = new RenderState({\n matrix: math.mat4(),\n inverseMatrix: math.mat4(),\n transposedMatrix: math.mat4(),\n near: 0.1,\n far: 10000.0\n });\n\n this._left = -1.0;\n this._right = 1.0;\n this._bottom = -1.0;\n this._top = 1.0;\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n // Set component properties\n\n this.left = cfg.left;\n this.right = cfg.right;\n this.bottom = cfg.bottom;\n this.top = cfg.top;\n this.near = cfg.near;\n this.far = cfg.far;\n }\n\n _update() {\n\n math.frustumMat4(this._left, this._right, this._bottom, this._top, this._state.near, this._state.far, this._state.matrix);\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n\n this.glRedraw();\n\n this.fire(\"matrix\", this._state.matrix);\n }\n\n /**\n * Sets the position of the Frustum's left plane on the View-space X-axis.\n *\n * Fires a {@link Frustum#left:emits} emits on change.\n *\n * @param {Number} value New left frustum plane position.\n */\n set left(value) {\n this._left = (value !== undefined && value !== null) ? value : -1.0;\n this._needUpdate(0);\n this.fire(\"left\", this._left);\n }\n\n /**\n * Gets the position of the Frustum's left plane on the View-space X-axis.\n *\n * @return {Number} Left frustum plane position.\n */\n get left() {\n return this._left;\n }\n\n /**\n * Sets the position of the Frustum's right plane on the View-space X-axis.\n *\n * Fires a {@link Frustum#right:emits} emits on change.\n *\n * @param {Number} value New right frustum plane position.\n */\n set right(value) {\n this._right = (value !== undefined && value !== null) ? value : 1.0;\n this._needUpdate(0);\n this.fire(\"right\", this._right);\n }\n\n /**\n * Gets the position of the Frustum's right plane on the View-space X-axis.\n *\n * Fires a {@link Frustum#right:emits} emits on change.\n *\n * @return {Number} Right frustum plane position.\n */\n get right() {\n return this._right;\n }\n\n /**\n * Sets the position of the Frustum's top plane on the View-space Y-axis.\n *\n * Fires a {@link Frustum#top:emits} emits on change.\n *\n * @param {Number} value New top frustum plane position.\n */\n set top(value) {\n this._top = (value !== undefined && value !== null) ? value : 1.0;\n this._needUpdate(0);\n this.fire(\"top\", this._top);\n }\n\n /**\n * Gets the position of the Frustum's top plane on the View-space Y-axis.\n *\n * Fires a {@link Frustum#top:emits} emits on change.\n *\n * @return {Number} Top frustum plane position.\n */\n get top() {\n return this._top;\n }\n\n /**\n * Sets the position of the Frustum's bottom plane on the View-space Y-axis.\n *\n * Fires a {@link Frustum#bottom:emits} emits on change.\n *\n * @emits {\"bottom\"} event with the value of this property whenever it changes.\n *\n * @param {Number} value New bottom frustum plane position.\n */\n set bottom(value) {\n this._bottom = (value !== undefined && value !== null) ? value : -1.0;\n this._needUpdate(0);\n this.fire(\"bottom\", this._bottom);\n }\n\n /**\n * Gets the position of the Frustum's bottom plane on the View-space Y-axis.\n *\n * Fires a {@link Frustum#bottom:emits} emits on change.\n *\n * @return {Number} Bottom frustum plane position.\n */\n get bottom() {\n return this._bottom;\n }\n\n /**\n * Sets the position of the Frustum's near plane on the positive View-space Z-axis.\n *\n * Fires a {@link Frustum#near:emits} emits on change.\n *\n * Default value is ````0.1````.\n *\n * @param {Number} value New Frustum near plane position.\n */\n set near(value) {\n this._state.near = (value !== undefined && value !== null) ? value : 0.1;\n this._needUpdate(0);\n this.fire(\"near\", this._state.near);\n }\n\n /**\n * Gets the position of the Frustum's near plane on the positive View-space Z-axis.\n *\n * Fires a {@link Frustum#near:emits} emits on change.\n *\n * Default value is ````0.1````.\n *\n * @return {Number} Near frustum plane position.\n */\n get near() {\n return this._state.near;\n }\n\n /**\n * Sets the position of the Frustum's far plane on the positive View-space Z-axis.\n *\n * Fires a {@link Frustum#far:emits} emits on change.\n *\n * Default value is ````10000.0````.\n *\n * @param {Number} value New far frustum plane position.\n */\n set far(value) {\n this._state.far = (value !== undefined && value !== null) ? value : 10000.0;\n this._needUpdate(0);\n this.fire(\"far\", this._state.far);\n }\n\n /**\n * Gets the position of the Frustum's far plane on the positive View-space Z-axis.\n *\n * Default value is ````10000.0````.\n *\n * @return {Number} Far frustum plane position.\n */\n get far() {\n return this._state.far;\n }\n\n /**\n * Gets the Frustum's projection transform matrix.\n *\n * Fires a {@link Frustum#matrix:emits} emits on change.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @returns {Number[]} The Frustum's projection matrix matrix.\n */\n get matrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.matrix;\n }\n\n /**\n * Gets the inverse of {@link Frustum#matrix}.\n *\n * @returns {Number[]} The inverse orthographic projection matrix.\n */\n get inverseMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._inverseMatrixDirty) {\n math.inverseMat4(this._state.matrix, this._state.inverseMatrix);\n this._inverseMatrixDirty = false;\n }\n return this._state.inverseMatrix;\n }\n\n /**\n * Gets the transpose of {@link Frustum#matrix}.\n *\n * @returns {Number[]} The transpose of {@link Frustum#matrix}.\n */\n get transposedMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._transposedMatrixDirty) {\n math.transposeMat4(this._state.matrix, this._state.transposedMatrix);\n this._transposedMatrixDirty = false;\n }\n return this._state.transposedMatrix;\n }\n\n /**\n * Un-projects the given Canvas-space coordinates, using this Frustum projection.\n *\n * @param {Number[]} canvasPos Inputs 2D Canvas-space coordinates.\n * @param {Number} screenZ Inputs Screen-space Z coordinate.\n * @param {Number[]} screenPos Outputs 3D Screen/Clip-space coordinates.\n * @param {Number[]} viewPos Outputs un-projected 3D View-space coordinates.\n * @param {Number[]} worldPos Outputs un-projected 3D World-space coordinates.\n */\n unproject(canvasPos, screenZ, screenPos, viewPos, worldPos) {\n\n const canvas = this.scene.canvas.canvas;\n\n const halfCanvasWidth = canvas.offsetWidth / 2.0;\n const halfCanvasHeight = canvas.offsetHeight / 2.0;\n\n screenPos[0] = (canvasPos[0] - halfCanvasWidth) / halfCanvasWidth;\n screenPos[1] = (canvasPos[1] - halfCanvasHeight) / halfCanvasHeight;\n screenPos[2] = screenZ;\n screenPos[3] = 1.0;\n\n math.mulMat4v4(this.inverseMatrix, screenPos, viewPos);\n math.mulVec3Scalar(viewPos, 1.0 / viewPos[3]);\n\n viewPos[3] = 1.0;\n viewPos[1] *= -1;\n\n math.mulMat4v4(this.camera.inverseViewMatrix, viewPos, worldPos);\n\n return worldPos;\n }\n\n /** @private\n *\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n super.destroy();\n }\n}\n\n/**\n * @desc Defines a custom projection for a {@link Camera} as a custom 4x4 matrix..\n *\n * Located at {@link Camera#customProjection}.\n */\nclass CustomProjection extends Component {\n\n /**\n * @private\n */\n get type() {\n return \"CustomProjection\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(camera, cfg = {}) {\n\n super(camera, cfg);\n\n /**\n * The Camera this CustomProjection belongs to.\n *\n * @property camera\n * @type {Camera}\n * @final\n */\n this.camera = camera;\n\n this._state = new RenderState({\n matrix: math.mat4(),\n inverseMatrix: math.mat4(),\n transposedMatrix: math.mat4()\n });\n\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = false;\n\n this.matrix = cfg.matrix;\n }\n\n /**\n * Sets the CustomProjection's projection transform matrix.\n *\n * Fires a \"matrix\" event on change.\n\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @param {Number[]} matrix New value for the CustomProjection's matrix.\n */\n set matrix(matrix) {\n this._state.matrix.set(matrix || [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n this._inverseMatrixDirty = true;\n this._transposedMatrixDirty = true;\n this.glRedraw();\n this.fire(\"far\", this._state.matrix);\n }\n\n /**\n * Gets the CustomProjection's projection transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @return {Number[]} New value for the CustomProjection's matrix.\n */\n get matrix() {\n return this._state.matrix;\n }\n\n /**\n * Gets the inverse of {@link CustomProjection#matrix}.\n *\n * @returns {Number[]} The inverse of {@link CustomProjection#matrix}.\n */\n get inverseMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._inverseMatrixDirty) {\n math.inverseMat4(this._state.matrix, this._state.inverseMatrix);\n this._inverseMatrixDirty = false;\n }\n return this._state.inverseMatrix;\n }\n\n /**\n * Gets the transpose of {@link CustomProjection#matrix}.\n *\n * @returns {Number[]} The transpose of {@link CustomProjection#matrix}.\n */\n get transposedMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n if (this._transposedMatrixDirty) {\n math.transposeMat4(this._state.matrix, this._state.transposedMatrix);\n this._transposedMatrixDirty = false;\n }\n return this._state.transposedMatrix;\n }\n\n /**\n * Un-projects the given Canvas-space coordinates, using this CustomProjection.\n *\n * @param {Number[]} canvasPos Inputs 2D Canvas-space coordinates.\n * @param {Number} screenZ Inputs Screen-space Z coordinate.\n * @param {Number[]} screenPos Outputs 3D Screen/Clip-space coordinates.\n * @param {Number[]} viewPos Outputs un-projected 3D View-space coordinates.\n * @param {Number[]} worldPos Outputs un-projected 3D World-space coordinates.\n */\n unproject(canvasPos, screenZ, screenPos, viewPos, worldPos) {\n\n const canvas = this.scene.canvas.canvas;\n\n const halfCanvasWidth = canvas.offsetWidth / 2.0;\n const halfCanvasHeight = canvas.offsetHeight / 2.0;\n\n screenPos[0] = (canvasPos[0] - halfCanvasWidth) / halfCanvasWidth;\n screenPos[1] = (canvasPos[1] - halfCanvasHeight) / halfCanvasHeight;\n screenPos[2] = screenZ;\n screenPos[3] = 1.0;\n\n math.mulMat4v4(this.inverseMatrix, screenPos, viewPos);\n math.mulVec3Scalar(viewPos, 1.0 / viewPos[3]);\n\n viewPos[3] = 1.0;\n viewPos[1] *= -1;\n\n math.mulMat4v4(this.camera.inverseViewMatrix, viewPos, worldPos);\n\n return worldPos;\n }\n\n /** @private\n *\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nconst tempVec3$5 = math.vec3();\nconst tempVec3b$8 = math.vec3();\nconst tempVec3c$5 = math.vec3();\nconst tempVec3d$3 = math.vec3();\nconst tempVec3e$2 = math.vec3();\nconst tempVec3f$2 = math.vec3();\nconst tempMat = math.mat4();\nconst tempMatb = math.mat4();\nconst eyeLookVec = math.vec3();\nconst eyeLookVecNorm = math.vec3();\nconst eyeLookOffset = math.vec3();\nconst offsetEye = math.vec3();\n\n/**\n * @desc Manages viewing and projection transforms for its {@link Scene}.\n *\n * * One Camera per {@link Scene}\n * * Scene is located at {@link Viewer#scene} and Camera is located at {@link Scene#camera}\n * * Controls viewing and projection transforms\n * * Has methods to pan, zoom and orbit (or first-person rotation)\n * * Dynamically configurable World-space axis\n * * Has {@link Perspective}, {@link Ortho} and {@link Frustum} and {@link CustomProjection}, which you can dynamically switch it between\n * * Switchable gimbal lock\n * * Can be \"flown\" to look at targets using a {@link CameraFlightAnimation}\n * * Can be animated along a path using a {@link CameraPathAnimation}\n *\n * ## Getting the Camera\n *\n * There is exactly one Camera per {@link Scene}:\n *\n * ````javascript\n * import {Viewer} from \"xeokit-sdk.es.js\";\n *\n * var camera = viewer.scene.camera;\n *\n * ````\n *\n * ## Setting the Camera Position\n *\n * Get and set the Camera's absolute position via {@link Camera#eye}, {@link Camera#look} and {@link Camera#up}:\n *\n * ````javascript\n * camera.eye = [-10,0,0];\n * camera.look = [-10,0,0];\n * camera.up = [0,1,0];\n * ````\n *\n * ## Camera View and Projection Matrices\n *\n * The Camera's view matrix transforms coordinates from World-space to View-space.\n *\n * Getting the view matrix:\n *\n * ````javascript\n * var viewMatrix = camera.viewMatrix;\n * var viewNormalMatrix = camera.normalMatrix;\n * ````\n *\n * The Camera's view normal matrix transforms normal vectors from World-space to View-space.\n *\n * Getting the view normal matrix:\n *\n * ````javascript\n * var viewNormalMatrix = camera.normalMatrix;\n * ````\n *\n * The Camera fires a ````\"viewMatrix\"```` event whenever the {@link Camera#viewMatrix} and {@link Camera#viewNormalMatrix} updates.\n *\n * Listen for view matrix updates:\n *\n * ````javascript\n * camera.on(\"viewMatrix\", function(matrix) { ... });\n * ````\n *\n * ## Rotating the Camera\n *\n * Orbiting the {@link Camera#look} position:\n *\n * ````javascript\n * camera.orbitYaw(20.0);\n * camera.orbitPitch(10.0);\n * ````\n *\n * First-person rotation, rotates {@link Camera#look} and {@link Camera#up} about {@link Camera#eye}:\n *\n * ````javascript\n * camera.yaw(5.0);\n * camera.pitch(-10.0);\n * ````\n *\n * ## Panning the Camera\n *\n * Panning along the Camera's local axis (ie. left/right, up/down, forward/backward):\n *\n * ````javascript\n * camera.pan([-20, 0, 10]);\n * ````\n *\n * ## Zooming the Camera\n *\n * Zoom to vary distance between {@link Camera#eye} and {@link Camera#look}:\n *\n * ````javascript\n * camera.zoom(-5); // Move five units closer\n * ````\n *\n * Get the current distance between {@link Camera#eye} and {@link Camera#look}:\n *\n * ````javascript\n * var distance = camera.eyeLookDist;\n * ````\n *\n * ## Projection\n *\n * The Camera has a Component to manage each projection type, which are: {@link Perspective}, {@link Ortho}\n * and {@link Frustum} and {@link CustomProjection}.\n *\n * You can configure those components at any time, regardless of which is currently active:\n *\n * The Camera has a {@link Perspective} to manage perspective\n * ````javascript\n *\n * // Set some properties on Perspective\n * camera.perspective.near = 0.4;\n * camera.perspective.fov = 45;\n *\n * // Set some properties on Ortho\n * camera.ortho.near = 0.8;\n * camera.ortho.far = 1000;\n *\n * // Set some properties on Frustum\n * camera.frustum.left = -1.0;\n * camera.frustum.right = 1.0;\n * camera.frustum.far = 1000.0;\n *\n * // Set the matrix property on CustomProjection\n * camera.customProjection.matrix = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n *\n * // Switch between the projection types\n * camera.projection = \"perspective\"; // Switch to perspective\n * camera.projection = \"frustum\"; // Switch to frustum\n * camera.projection = \"ortho\"; // Switch to ortho\n * camera.projection = \"customProjection\"; // Switch to custom\n * ````\n *\n * Camera provides the projection matrix for the currently active projection in {@link Camera#projMatrix}.\n *\n * Get the projection matrix:\n *\n * ````javascript\n * var projMatrix = camera.projMatrix;\n * ````\n *\n * Listen for projection matrix updates:\n *\n * ````javascript\n * camera.on(\"projMatrix\", function(matrix) { ... });\n * ````\n *\n * ## Configuring World up direction\n *\n * We can dynamically configure the directions of the World-space coordinate system.\n *\n * Setting the +Y axis as World \"up\", +X as right and -Z as forwards (convention in some modeling software):\n *\n * ````javascript\n * camera.worldAxis = [\n * 1, 0, 0, // Right\n * 0, 1, 0, // Up\n * 0, 0,-1 // Forward\n * ];\n * ````\n *\n * Setting the +Z axis as World \"up\", +X as right and -Y as \"up\" (convention in most CAD and BIM viewers):\n *\n * ````javascript\n * camera.worldAxis = [\n * 1, 0, 0, // Right\n * 0, 0, 1, // Up\n * 0,-1, 0 // Forward\n * ];\n * ````\n *\n * The Camera has read-only convenience properties that provide each axis individually:\n *\n * ````javascript\n * var worldRight = camera.worldRight;\n * var worldForward = camera.worldForward;\n * var worldUp = camera.worldUp;\n * ````\n *\n * ### Gimbal locking\n *\n * By default, the Camera locks yaw rotation to pivot about the World-space \"up\" axis. We can dynamically lock and unlock that at any time:\n *\n * ````javascript\n * camera.gimbalLock = false; // Yaw rotation now happens about Camera's local Y-axis\n * camera.gimbalLock = true; // Yaw rotation now happens about World's \"up\" axis\n * ````\n *\n * See: https://en.wikipedia.org/wiki/Gimbal_lock\n */\nclass Camera extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Camera\";\n }\n\n /**\n * @constructor\n * @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n deviceMatrix: math.mat4(),\n hasDeviceMatrix: false, // True when deviceMatrix set to other than identity\n matrix: math.mat4(),\n normalMatrix: math.mat4(),\n inverseMatrix: math.mat4()\n });\n\n this._perspective = new Perspective(this);\n this._ortho = new Ortho(this);\n this._frustum = new Frustum$1(this);\n this._customProjection = new CustomProjection(this);\n this._project = this._perspective;\n\n this._eye = math.vec3([0, 0, 10.0]);\n this._look = math.vec3([0, 0, 0]);\n this._up = math.vec3([0, 1, 0]);\n\n this._worldUp = math.vec3([0, 1, 0]);\n this._worldRight = math.vec3([1, 0, 0]);\n this._worldForward = math.vec3([0, 0, -1]);\n\n this.deviceMatrix = cfg.deviceMatrix;\n this.eye = cfg.eye;\n this.look = cfg.look;\n this.up = cfg.up;\n this.worldAxis = cfg.worldAxis;\n this.gimbalLock = cfg.gimbalLock;\n this.constrainPitch = cfg.constrainPitch;\n\n this.projection = cfg.projection;\n\n this._perspective.on(\"matrix\", () => {\n if (this._projectionType === \"perspective\") {\n this.fire(\"projMatrix\", this._perspective.matrix);\n }\n });\n this._ortho.on(\"matrix\", () => {\n if (this._projectionType === \"ortho\") {\n this.fire(\"projMatrix\", this._ortho.matrix);\n }\n });\n this._frustum.on(\"matrix\", () => {\n if (this._projectionType === \"frustum\") {\n this.fire(\"projMatrix\", this._frustum.matrix);\n }\n });\n this._customProjection.on(\"matrix\", () => {\n if (this._projectionType === \"customProjection\") {\n this.fire(\"projMatrix\", this._customProjection.matrix);\n }\n });\n }\n\n _update() {\n const state = this._state;\n // In ortho mode, build the view matrix with an eye position that's translated\n // well back from look, so that the front sectionPlane plane doesn't unexpectedly cut\n // the front off the view (not a problem with perspective, since objects close enough\n // to be clipped by the front plane are usually too big to see anything of their cross-sections).\n let eye;\n if (this.projection === \"ortho\") {\n math.subVec3(this._eye, this._look, eyeLookVec);\n math.normalizeVec3(eyeLookVec, eyeLookVecNorm);\n math.mulVec3Scalar(eyeLookVecNorm, 1000.0, eyeLookOffset);\n math.addVec3(this._look, eyeLookOffset, offsetEye);\n eye = offsetEye;\n } else {\n eye = this._eye;\n }\n if (state.hasDeviceMatrix) {\n math.lookAtMat4v(eye, this._look, this._up, tempMatb);\n math.mulMat4(state.deviceMatrix, tempMatb, state.matrix);\n //state.matrix.set(state.deviceMatrix);\n } else {\n math.lookAtMat4v(eye, this._look, this._up, state.matrix);\n }\n math.inverseMat4(this._state.matrix, this._state.inverseMatrix);\n math.transposeMat4(this._state.inverseMatrix, this._state.normalMatrix);\n this.glRedraw();\n this.fire(\"matrix\", this._state.matrix);\n this.fire(\"viewMatrix\", this._state.matrix);\n }\n\n /**\n * Rotates {@link Camera#eye} about {@link Camera#look}, around the {@link Camera#up} vector\n *\n * @param {Number} angleInc Angle of rotation in degrees\n */\n orbitYaw(angleInc) {\n let lookEyeVec = math.subVec3(this._eye, this._look, tempVec3$5);\n math.rotationMat4v(angleInc * 0.0174532925, this._gimbalLock ? this._worldUp : this._up, tempMat);\n lookEyeVec = math.transformPoint3(tempMat, lookEyeVec, tempVec3b$8);\n this.eye = math.addVec3(this._look, lookEyeVec, tempVec3c$5); // Set eye position as 'look' plus 'eye' vector\n this.up = math.transformPoint3(tempMat, this._up, tempVec3d$3); // Rotate 'up' vector\n }\n\n /**\n * Rotates {@link Camera#eye} about {@link Camera#look} around the right axis (orthogonal to {@link Camera#up} and \"look\").\n *\n * @param {Number} angleInc Angle of rotation in degrees\n */\n orbitPitch(angleInc) {\n if (this._constrainPitch) {\n angleInc = math.dotVec3(this._up, this._worldUp) / math.DEGTORAD;\n if (angleInc < 1) {\n return;\n }\n }\n let eye2 = math.subVec3(this._eye, this._look, tempVec3$5);\n const left = math.cross3Vec3(math.normalizeVec3(eye2, tempVec3b$8), math.normalizeVec3(this._up, tempVec3c$5));\n math.rotationMat4v(angleInc * 0.0174532925, left, tempMat);\n eye2 = math.transformPoint3(tempMat, eye2, tempVec3d$3);\n this.up = math.transformPoint3(tempMat, this._up, tempVec3e$2);\n this.eye = math.addVec3(eye2, this._look, tempVec3f$2);\n }\n\n /**\n * Rotates {@link Camera#look} about {@link Camera#eye}, around the {@link Camera#up} vector.\n *\n * @param {Number} angleInc Angle of rotation in degrees\n */\n yaw(angleInc) {\n let look2 = math.subVec3(this._look, this._eye, tempVec3$5);\n math.rotationMat4v(angleInc * 0.0174532925, this._gimbalLock ? this._worldUp : this._up, tempMat);\n look2 = math.transformPoint3(tempMat, look2, tempVec3b$8);\n this.look = math.addVec3(look2, this._eye, tempVec3c$5);\n if (this._gimbalLock) {\n this.up = math.transformPoint3(tempMat, this._up, tempVec3d$3);\n }\n }\n\n /**\n * Rotates {@link Camera#look} about {@link Camera#eye}, around the right axis (orthogonal to {@link Camera#up} and \"look\").\n\n * @param {Number} angleInc Angle of rotation in degrees\n */\n pitch(angleInc) {\n if (this._constrainPitch) {\n angleInc = math.dotVec3(this._up, this._worldUp) / math.DEGTORAD;\n if (angleInc < 1) {\n return;\n }\n }\n let look2 = math.subVec3(this._look, this._eye, tempVec3$5);\n const left = math.cross3Vec3(math.normalizeVec3(look2, tempVec3b$8), math.normalizeVec3(this._up, tempVec3c$5));\n math.rotationMat4v(angleInc * 0.0174532925, left, tempMat);\n this.up = math.transformPoint3(tempMat, this._up, tempVec3f$2);\n look2 = math.transformPoint3(tempMat, look2, tempVec3d$3);\n this.look = math.addVec3(look2, this._eye, tempVec3e$2);\n }\n\n /**\n * Pans the Camera along its local X, Y and Z axis.\n *\n * @param pan The pan vector\n */\n pan(pan) {\n const eye2 = math.subVec3(this._eye, this._look, tempVec3$5);\n const vec = [0, 0, 0];\n let v;\n if (pan[0] !== 0) {\n const left = math.cross3Vec3(math.normalizeVec3(eye2, []), math.normalizeVec3(this._up, tempVec3b$8));\n v = math.mulVec3Scalar(left, pan[0]);\n vec[0] += v[0];\n vec[1] += v[1];\n vec[2] += v[2];\n }\n if (pan[1] !== 0) {\n v = math.mulVec3Scalar(math.normalizeVec3(this._up, tempVec3c$5), pan[1]);\n vec[0] += v[0];\n vec[1] += v[1];\n vec[2] += v[2];\n }\n if (pan[2] !== 0) {\n v = math.mulVec3Scalar(math.normalizeVec3(eye2, tempVec3d$3), pan[2]);\n vec[0] += v[0];\n vec[1] += v[1];\n vec[2] += v[2];\n }\n this.eye = math.addVec3(this._eye, vec, tempVec3e$2);\n this.look = math.addVec3(this._look, vec, tempVec3f$2);\n }\n\n /**\n * Increments/decrements the Camera's zoom factor, which is the distance between {@link Camera#eye} and {@link Camera#look}.\n *\n * @param {Number} delta Zoom factor increment.\n */\n zoom(delta) {\n const vec = math.subVec3(this._eye, this._look, tempVec3$5);\n const lenLook = Math.abs(math.lenVec3(vec, tempVec3b$8));\n const newLenLook = Math.abs(lenLook + delta);\n if (newLenLook < 0.5) {\n return;\n }\n const dir = math.normalizeVec3(vec, tempVec3c$5);\n this.eye = math.addVec3(this._look, math.mulVec3Scalar(dir, newLenLook), tempVec3d$3);\n }\n\n /**\n * Sets the position of the Camera's eye.\n *\n * Default value is ````[0,0,10]````.\n *\n * @emits \"eye\" event on change, with the value of this property.\n * @type {Number[]} New eye position.\n */\n set eye(eye) {\n this._eye.set(eye || [0, 0, 10]);\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"eye\", this._eye);\n }\n\n /**\n * Gets the position of the Camera's eye.\n *\n * Default vale is ````[0,0,10]````.\n *\n * @type {Number[]} New eye position.\n */\n get eye() {\n return this._eye;\n }\n\n /**\n * Sets the position of this Camera's point-of-interest.\n *\n * Default value is ````[0,0,0]````.\n *\n * @emits \"look\" event on change, with the value of this property.\n *\n * @param {Number[]} look Camera look position.\n */\n set look(look) {\n this._look.set(look || [0, 0, 0]);\n this._needUpdate(0); // Ensure matrix built on next \"tick\"\n this.fire(\"look\", this._look);\n }\n\n /**\n * Gets the position of this Camera's point-of-interest.\n *\n * Default value is ````[0,0,0]````.\n *\n * @returns {Number[]} Camera look position.\n */\n get look() {\n return this._look;\n }\n\n /**\n * Sets the direction of this Camera's {@link Camera#up} vector.\n *\n * @emits \"up\" event on change, with the value of this property.\n *\n * @param {Number[]} up Direction of \"up\".\n */\n set up(up) {\n this._up.set(up || [0, 1, 0]);\n this._needUpdate(0);\n this.fire(\"up\", this._up);\n }\n\n /**\n * Gets the direction of this Camera's {@link Camera#up} vector.\n *\n * @returns {Number[]} Direction of \"up\".\n */\n get up() {\n return this._up;\n }\n\n /**\n * Sets an optional matrix to premultiply into {@link Camera#matrix} matrix.\n *\n * This is intended to be used for stereo rendering with WebVR etc.\n *\n * @param {Number[]} matrix The matrix.\n */\n set deviceMatrix(matrix) {\n this._state.deviceMatrix.set(matrix || [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]);\n this._state.hasDeviceMatrix = !!matrix;\n this._needUpdate(0);\n this.fire(\"deviceMatrix\", this._state.deviceMatrix);\n }\n\n /**\n * Gets an optional matrix to premultiply into {@link Camera#matrix} matrix.\n *\n * @returns {Number[]} The matrix.\n */\n get deviceMatrix() {\n return this._state.deviceMatrix;\n }\n\n /**\n * Sets the up, right and forward axis of the World coordinate system.\n *\n * Has format: ````[rightX, rightY, rightZ, upX, upY, upZ, forwardX, forwardY, forwardZ]````\n *\n * Default axis is ````[1, 0, 0, 0, 1, 0, 0, 0, 1]````\n *\n * @param {Number[]} axis The new Wworld coordinate axis.\n */\n set worldAxis(axis) {\n axis = axis || [1, 0, 0, 0, 1, 0, 0, 0, 1];\n if (!this._worldAxis) {\n this._worldAxis = math.vec3(axis);\n } else {\n this._worldAxis.set(axis);\n }\n this._worldRight[0] = this._worldAxis[0];\n this._worldRight[1] = this._worldAxis[1];\n this._worldRight[2] = this._worldAxis[2];\n this._worldUp[0] = this._worldAxis[3];\n this._worldUp[1] = this._worldAxis[4];\n this._worldUp[2] = this._worldAxis[5];\n this._worldForward[0] = this._worldAxis[6];\n this._worldForward[1] = this._worldAxis[7];\n this._worldForward[2] = this._worldAxis[8];\n this.fire(\"worldAxis\", this._worldAxis);\n }\n\n /**\n * Gets the up, right and forward axis of the World coordinate system.\n *\n * Has format: ````[rightX, rightY, rightZ, upX, upY, upZ, forwardX, forwardY, forwardZ]````\n *\n * Default axis is ````[1, 0, 0, 0, 1, 0, 0, 0, 1]````\n *\n * @returns {Number[]} The current World coordinate axis.\n */\n get worldAxis() {\n return this._worldAxis;\n }\n\n /**\n * Gets the direction of World-space \"up\".\n *\n * This is set by {@link Camera#worldAxis}.\n *\n * Default value is ````[0,1,0]````.\n *\n * @returns {Number[]} The \"up\" vector.\n */\n get worldUp() {\n return this._worldUp;\n }\n\n /**\n * Gets if the World-space X-axis is \"up\".\n * @returns {boolean}\n */\n get xUp() {\n return this._worldUp[0] > this._worldUp[1] && this._worldUp[0] > this._worldUp[2];\n }\n\n /**\n * Gets if the World-space Y-axis is \"up\".\n * @returns {boolean}\n */\n get yUp() {\n return this._worldUp[1] > this._worldUp[0] && this._worldUp[1] > this._worldUp[2];\n }\n\n /**\n * Gets if the World-space Z-axis is \"up\".\n * @returns {boolean}\n */\n get zUp() {\n return this._worldUp[2] > this._worldUp[0] && this._worldUp[2] > this._worldUp[1];\n }\n\n /**\n * Gets the direction of World-space \"right\".\n *\n * This is set by {@link Camera#worldAxis}.\n *\n * Default value is ````[1,0,0]````.\n *\n * @returns {Number[]} The \"up\" vector.\n */\n get worldRight() {\n return this._worldRight;\n }\n\n /**\n * Gets the direction of World-space \"forwards\".\n *\n * This is set by {@link Camera#worldAxis}.\n *\n * Default value is ````[0,0,1]````.\n *\n * @returns {Number[]} The \"up\" vector.\n */\n get worldForward() {\n return this._worldForward;\n }\n\n /**\n * Sets whether to lock yaw rotation to pivot about the World-space \"up\" axis.\n *\n * Fires a {@link Camera#gimbalLock:event} event on change.\n *\n * @params {Boolean} gimbalLock Set true to lock gimbal.\n */\n set gimbalLock(value) {\n this._gimbalLock = value !== false;\n this.fire(\"gimbalLock\", this._gimbalLock);\n }\n\n /**\n * Gets whether to lock yaw rotation to pivot about the World-space \"up\" axis.\n *\n * @returns {Boolean} Returns ````true```` if gimbal is locked.\n */\n get gimbalLock() {\n return this._gimbalLock;\n }\n\n /**\n * Sets whether to prevent camera from being pitched upside down.\n *\n * The camera is upside down when the angle between {@link Camera#up} and {@link Camera#worldUp} is less than one degree.\n *\n * Fires a {@link Camera#constrainPitch:event} event on change.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} value Set ````true```` to contrain pitch rotation.\n */\n set constrainPitch(value) {\n this._constrainPitch = !!value;\n this.fire(\"constrainPitch\", this._constrainPitch);\n }\n\n /**\n * Gets whether to prevent camera from being pitched upside down.\n *\n * The camera is upside down when the angle between {@link Camera#up} and {@link Camera#worldUp} is less than one degree.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} ````true```` if pitch rotation is currently constrained.\n get constrainPitch() {\n return this._constrainPitch;\n }\n\n /**\n * Gets distance from {@link Camera#look} to {@link Camera#eye}.\n *\n * @returns {Number} The distance.\n */\n get eyeLookDist() {\n return math.lenVec3(math.subVec3(this._look, this._eye, tempVec3$5));\n }\n\n /**\n * Gets the Camera's viewing transformation matrix.\n *\n * Fires a {@link Camera#matrix:event} event on change.\n *\n * @returns {Number[]} The viewing transform matrix.\n */\n get matrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.matrix;\n }\n\n /**\n * Gets the Camera's viewing transformation matrix.\n *\n * Fires a {@link Camera#matrix:event} event on change.\n *\n * @returns {Number[]} The viewing transform matrix.\n */\n get viewMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.matrix;\n }\n\n /**\n * The Camera's viewing normal transformation matrix.\n *\n * Fires a {@link Camera#matrix:event} event on change.\n *\n * @returns {Number[]} The viewing normal transform matrix.\n */\n get normalMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.normalMatrix;\n }\n\n /**\n * The Camera's viewing normal transformation matrix.\n *\n * Fires a {@link Camera#matrix:event} event on change.\n *\n * @returns {Number[]} The viewing normal transform matrix.\n */\n get viewNormalMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.normalMatrix;\n }\n\n /**\n * Gets the inverse of the Camera's viewing transform matrix.\n *\n * This has the same value as {@link Camera#normalMatrix}.\n *\n * @returns {Number[]} The inverse viewing transform matrix.\n */\n get inverseViewMatrix() {\n if (this._updateScheduled) {\n this._doUpdate();\n }\n return this._state.inverseMatrix;\n }\n\n /**\n * Gets the Camera's projection transformation projMatrix.\n *\n * Fires a {@link Camera#projMatrix:event} event on change.\n *\n * @returns {Number[]} The projection matrix.\n */\n get projMatrix() {\n return this[this.projection].matrix;\n }\n\n /**\n * Gets the Camera's perspective projection.\n *\n * The Camera uses this while {@link Camera#projection} equals ````perspective````.\n *\n * @returns {Perspective} The Perspective component.\n */\n get perspective() {\n return this._perspective;\n }\n\n /**\n * Gets the Camera's orthographic projection.\n *\n * The Camera uses this while {@link Camera#projection} equals ````ortho````.\n *\n * @returns {Ortho} The Ortho component.\n */\n get ortho() {\n return this._ortho;\n }\n\n /**\n * Gets the Camera's frustum projection.\n *\n * The Camera uses this while {@link Camera#projection} equals ````frustum````.\n *\n * @returns {Frustum} The Ortho component.\n */\n get frustum() {\n return this._frustum;\n }\n\n /**\n * Gets the Camera's custom projection.\n *\n * This is used while {@link Camera#projection} equals \"customProjection\".\n *\n * @returns {CustomProjection} The custom projection.\n */\n get customProjection() {\n return this._customProjection;\n }\n\n /**\n * Sets the active projection type.\n *\n * Accepted values are ````\"perspective\"````, ````\"ortho\"````, ````\"frustum\"```` and ````\"customProjection\"````.\n *\n * Default value is ````\"perspective\"````.\n *\n * @param {String} value Identifies the active projection type.\n */\n set projection(value) {\n value = value || \"perspective\";\n if (this._projectionType === value) {\n return;\n }\n if (value === \"perspective\") {\n this._project = this._perspective;\n } else if (value === \"ortho\") {\n this._project = this._ortho;\n } else if (value === \"frustum\") {\n this._project = this._frustum;\n } else if (value === \"customProjection\") {\n this._project = this._customProjection;\n } else {\n this.error(\"Unsupported value for 'projection': \" + value + \" defaulting to 'perspective'\");\n this._project = this._perspective;\n value = \"perspective\";\n }\n this._project._update();\n this._projectionType = value;\n this.glRedraw();\n this._update(); // Need to rebuild lookat matrix with full eye, look & up\n this.fire(\"dirty\");\n this.fire(\"projection\", this._projectionType);\n this.fire(\"projMatrix\", this._project.matrix);\n }\n\n /**\n * Gets the active projection type.\n *\n * Possible values are ````\"perspective\"````, ````\"ortho\"````, ````\"frustum\"```` and ````\"customProjection\"````.\n *\n * Default value is ````\"perspective\"````.\n *\n * @returns {String} Identifies the active projection type.\n */\n get projection() {\n return this._projectionType;\n }\n\n /**\n * Gets the currently active projection for this Camera.\n *\n * The currently active project is selected with {@link Camera#projection}.\n *\n * @returns {Perspective|Ortho|Frustum|CustomProjection} The currently active projection is active.\n */\n get project() {\n return this._project;\n }\n\n /**\n * Destroys this Camera.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\n/**\n * @desc A dynamic light source within a {@link Scene}.\n *\n * These are registered by {@link Light#id} in {@link Scene#lights}.\n */\nclass Light extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Light\";\n }\n\n /**\n * @private\n */\n get isLight() {\n return true;\n }\n\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n }\n}\n\n/**\n * @desc A directional light source that illuminates all {@link Mesh}es equally from a given direction.\n *\n * * Has an emission direction vector in {@link DirLight#dir}, but no position.\n * * Defined in either *World* or *View* coordinate space. When in World-space, {@link DirLight#dir} is relative to the\n * World coordinate system, and will appear to move as the {@link Camera} moves. When in View-space, {@link DirLight#dir} is\n * relative to the View coordinate system, and will behave as if fixed to the viewer's head.\n * * {@link AmbientLight}s, {@link DirLight}s and {@link PointLight}s are registered by their {@link Component#id} on {@link Scene#lights}.\n *\n * ## Usage\n *\n * In the example below we'll replace the {@link Scene}'s default light sources with three View-space DirLights.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#lights_DirLight_view)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry,\n * buildPlaneGeometry, ReadableGeometry,\n * PhongMaterial, Texture, DirLight} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * // Replace the Scene's default lights with three custom view-space DirLights\n *\n * viewer.scene.clearLights();\n *\n * new DirLight(viewer.scene, {\n * id: \"keyLight\",\n * dir: [0.8, -0.6, -0.8],\n * color: [1.0, 0.3, 0.3],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n * new DirLight(viewer.scene, {\n * id: \"fillLight\",\n * dir: [-0.8, -0.4, -0.4],\n * color: [0.3, 1.0, 0.3],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n * new DirLight(viewer.scene, {\n * id: \"rimLight\",\n * dir: [0.2, -0.8, 0.8],\n * color: [0.6, 0.6, 0.6],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n *\n * // Create a sphere and ground plane\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.7, 0.7, 0.7],\n * specular: [1.0, 1.0, 1.0],\n * emissive: [0, 0, 0],\n * alpha: 1.0,\n * ambient: [1, 1, 0],\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n *\n * new Mesh(viewer.scene, {\n * geometry: buildPlaneGeometry(ReadableGeometry, viewer.scene, {\n * xSize: 30,\n * zSize: 30\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * backfaces: true\n * }),\n * position: [0, -2.1, 0]\n * });\n * ````\n */\nclass DirLight extends Light {\n\n /**\n @private\n */\n get type() {\n return \"DirLight\";\n }\n\n /**\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this DirLight as well.\n * @param {*} [cfg] The DirLight configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.dir=[1.0, 1.0, 1.0]] A unit vector indicating the direction that the light is shining, given in either World or View space, depending on the value of the ````space```` parameter.\n * @param {Number[]} [cfg.color=[0.7, 0.7, 0.8 ]] The color of this DirLight.\n * @param {Number} [cfg.intensity=1.0] The intensity of this DirLight, as a factor in range ````[0..1]````.\n * @param {String} [cfg.space=\"view\"] The coordinate system the DirLight is defined in - ````\"view\"```` or ````\"space\"````.\n * @param {Boolean} [cfg.castsShadow=false] Flag which indicates if this DirLight casts a castsShadow.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._shadowRenderBuf = null;\n this._shadowViewMatrix = null;\n this._shadowProjMatrix = null;\n this._shadowViewMatrixDirty = true;\n this._shadowProjMatrixDirty = true;\n\n const camera = this.scene.camera;\n const canvas = this.scene.canvas;\n\n this._onCameraViewMatrix = camera.on(\"viewMatrix\", () => {\n this._shadowViewMatrixDirty = true;\n });\n\n this._onCameraProjMatrix = camera.on(\"projMatrix\", () => {\n this._shadowProjMatrixDirty = true;\n });\n\n this._onCanvasBoundary = canvas.on(\"boundary\", () => {\n this._shadowProjMatrixDirty = true;\n });\n\n this._state = new RenderState({\n\n type: \"dir\",\n dir: math.vec3([1.0, 1.0, 1.0]),\n color: math.vec3([0.7, 0.7, 0.8]),\n intensity: 1.0,\n space: cfg.space || \"view\",\n castsShadow: false,\n\n getShadowViewMatrix: () => {\n if (this._shadowViewMatrixDirty) {\n if (!this._shadowViewMatrix) {\n this._shadowViewMatrix = math.identityMat4();\n }\n const camera = this.scene.camera;\n const dir = this._state.dir;\n const look = camera.look;\n const eye = [look[0] - dir[0], look[1] - dir[1], look[2] - dir[2]];\n const up = [0, 1, 0];\n math.lookAtMat4v(eye, look, up, this._shadowViewMatrix);\n this._shadowViewMatrixDirty = false;\n }\n return this._shadowViewMatrix;\n },\n\n getShadowProjMatrix: () => {\n if (this._shadowProjMatrixDirty) { // TODO: Set when canvas resizes\n if (!this._shadowProjMatrix) {\n this._shadowProjMatrix = math.identityMat4();\n }\n math.orthoMat4c(-40, 40, -40, 40, -40.0, 80, this._shadowProjMatrix); // left, right, bottom, top, near, far, dest\n this._shadowProjMatrixDirty = false;\n }\n return this._shadowProjMatrix;\n },\n\n getShadowRenderBuf: () => {\n if (!this._shadowRenderBuf) {\n this._shadowRenderBuf = new RenderBuffer(this.scene.canvas.canvas, this.scene.canvas.gl, {size: [1024, 1024]}); // Super old mobile devices have a limit of 1024x1024 textures\n }\n return this._shadowRenderBuf;\n }\n });\n\n this.dir = cfg.dir;\n this.color = cfg.color;\n this.intensity = cfg.intensity;\n this.castsShadow = cfg.castsShadow;\n\n this.scene._lightCreated(this);\n }\n\n /**\n * Sets the direction in which the DirLight is shining.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @param {Number[]} value The direction vector.\n */\n set dir(value) {\n this._state.dir.set(value || [1.0, 1.0, 1.0]);\n this._shadowViewMatrixDirty = true;\n this.glRedraw();\n }\n\n /**\n * Gets the direction in which the DirLight is shining.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @returns {Number[]} The direction vector.\n */\n get dir() {\n return this._state.dir;\n }\n\n /**\n * Sets the RGB color of this DirLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @param {Number[]} color The DirLight's RGB color.\n */\n set color(color) {\n this._state.color.set(color || [0.7, 0.7, 0.8]);\n this.glRedraw();\n }\n\n /**\n * Gets the RGB color of this DirLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @returns {Number[]} The DirLight's RGB color.\n */\n get color() {\n return this._state.color;\n }\n\n /**\n * Sets the intensity of this DirLight.\n *\n * Default intensity is ````1.0```` for maximum intensity.\n *\n * @param {Number} intensity The DirLight's intensity\n */\n set intensity(intensity) {\n intensity = intensity !== undefined ? intensity : 1.0;\n this._state.intensity = intensity;\n this.glRedraw();\n }\n\n /**\n * Gets the intensity of this DirLight.\n *\n * Default value is ````1.0```` for maximum intensity.\n *\n * @returns {Number} The DirLight's intensity.\n */\n get intensity() {\n return this._state.intensity;\n }\n\n /**\n * Sets if this DirLight casts a shadow.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} castsShadow Set ````true```` to cast shadows.\n */\n set castsShadow(castsShadow) {\n castsShadow = !!castsShadow;\n if (this._state.castsShadow === castsShadow) {\n return;\n }\n this._state.castsShadow = castsShadow;\n this._shadowViewMatrixDirty = true;\n this.glRedraw();\n }\n\n /**\n * Gets if this DirLight casts a shadow.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} ````true```` if this DirLight casts shadows.\n */\n get castsShadow() {\n return this._state.castsShadow;\n }\n\n /**\n * Destroys this DirLight.\n */\n destroy() {\n\n const camera = this.scene.camera;\n const canvas = this.scene.canvas;\n camera.off(this._onCameraViewMatrix);\n camera.off(this._onCameraProjMatrix);\n canvas.off(this._onCanvasBoundary);\n\n super.destroy();\n this._state.destroy();\n if (this._shadowRenderBuf) {\n this._shadowRenderBuf.destroy();\n }\n this.scene._lightDestroyed(this);\n this.glRedraw();\n }\n}\n\n/**\n * @desc An ambient light source of fixed color and intensity that illuminates all {@link Mesh}es equally.\n *\n * * {@link AmbientLight#color} multiplies by {@link PhongMaterial#ambient} at each position of each {@link ReadableGeometry} surface.\n * * {@link AmbientLight#color} multiplies by {@link LambertMaterial#color} uniformly across each triangle of each {@link ReadableGeometry} (ie. flat shaded).\n * * {@link AmbientLight}s, {@link DirLight}s and {@link PointLight}s are registered by their {@link Component#id} on {@link Scene#lights}.\n *\n * ## Usage\n *\n * In the example below we'll destroy the {@link Scene}'s default light sources then create an AmbientLight and a couple of {@link @DirLight}s:\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#lights_AmbientLight)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildTorusGeometry,\n * ReadableGeometry, PhongMaterial, Texture, AmbientLight} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * // Replace the Scene's default lights with a single custom AmbientLight\n *\n * viewer.scene.clearLights();\n *\n * new AmbientLight(viewer.scene, {\n * color: [0.0, 0.3, 0.7],\n * intensity: 1.0\n * });\n *\n * new DirLight(viewer.scene, {\n * id: \"keyLight\",\n * dir: [0.8, -0.6, -0.8],\n * color: [1.0, 0.3, 0.3],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n * new DirLight(viewer.scene, {\n * id: \"fillLight\",\n * dir: [-0.8, -0.4, -0.4],\n * color: [0.3, 1.0, 0.3],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n * new DirLight(viewer.scene, {\n * id: \"rimLight\",\n * dir: [0.2, -0.8, 0.8],\n * color: [0.6, 0.6, 0.6],\n * intensity: 1.0,\n * space: \"view\"\n * });\n *\n * // Create a mesh with torus shape and PhongMaterial\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * ambient: [1.0, 1.0, 1.0],\n * shininess: 30,\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n *\n * // Adjust the color of our AmbientLight\n *\n * var ambientLight = viewer.scene.lights[\"myAmbientLight\"];\n * ambientLight.color = [1.0, 0.8, 0.8];\n *````\n */\nclass AmbientLight extends Light {\n\n /**\n @private\n */\n get type() {\n return \"AmbientLight\";\n }\n\n /**\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this AmbientLight as well.\n * @param {*} [cfg] AmbientLight configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.color=[0.7, 0.7, 0.8]] The color of this AmbientLight.\n * @param {Number} [cfg.intensity=[1.0]] The intensity of this AmbientLight, as a factor in range ````[0..1]````.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this._state = {\n type: \"ambient\",\n color: math.vec3([0.7, 0.7, 0.7]),\n intensity: 1.0\n };\n this.color = cfg.color;\n this.intensity = cfg.intensity;\n this.scene._lightCreated(this);\n }\n\n /**\n * Sets the RGB color of this AmbientLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @param {Number[]} color The AmbientLight's RGB color.\n */\n set color(color) {\n this._state.color.set(color || [0.7, 0.7, 0.8]);\n this.glRedraw();\n }\n\n /**\n * Gets the RGB color of this AmbientLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @returns {Number[]} The AmbientLight's RGB color.\n */\n get color() {\n return this._state.color;\n }\n\n /**\n * Sets the intensity of this AmbientLight.\n *\n * Default value is ````1.0```` for maximum intensity.\n *\n * @param {Number} intensity The AmbientLight's intensity.\n */\n set intensity(intensity) {\n this._state.intensity = intensity !== undefined ? intensity : 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the intensity of this AmbientLight.\n *\n * Default value is ````1.0```` for maximum intensity.\n *\n * @returns {Number} The AmbientLight's intensity.\n */\n get intensity() {\n return this._state.intensity;\n }\n\n /**\n * Destroys this AmbientLight.\n */\n destroy() {\n\n super.destroy();\n\n this.scene._lightDestroyed(this);\n }\n}\n\n/**\n * @desc Defines a shape for one or more {@link Mesh}es.\n *\n * * {@link ReadableGeometry} is a subclass that stores its data in both browser and GPU memory. Use ReadableGeometry when you need to keep the geometry arrays in browser memory.\n * * {@link VBOGeometry} is a subclass that stores its data solely in GPU memory. Use VBOGeometry when you need a lower memory footprint and don't need to keep the geometry data in browser memory.\n */\nclass Geometry extends Component {\n\n /** @private */\n get type() {\n return \"Geometry\";\n }\n\n /** @private */\n get isGeometry() {\n return true;\n }\n\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n stats.memory.meshes++;\n }\n\n destroy() {\n super.destroy();\n stats.memory.meshes--;\n }\n}\n\n/**\n * @private\n */\nvar buildEdgeIndices = (function () {\n\n const uniquePositions = [];\n const indicesLookup = [];\n const indicesReverseLookup = [];\n const weldedIndices = [];\n\n// TODO: Optimize with caching, but need to cater to both compressed and uncompressed positions\n\n const faces = [];\n let numFaces = 0;\n const compa = new Uint16Array(3);\n const compb = new Uint16Array(3);\n const compc = new Uint16Array(3);\n const a = math.vec3();\n const b = math.vec3();\n const c = math.vec3();\n const cb = math.vec3();\n const ab = math.vec3();\n const cross = math.vec3();\n const normal = math.vec3();\n\n function weldVertices(positions, indices) {\n const positionsMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\n let vx;\n let vy;\n let vz;\n let key;\n const precisionPoints = 4; // number of decimal points, e.g. 4 for epsilon of 0.0001\n const precision = Math.pow(10, precisionPoints);\n let i;\n let len;\n let lenUniquePositions = 0;\n for (i = 0, len = positions.length; i < len; i += 3) {\n vx = positions[i];\n vy = positions[i + 1];\n vz = positions[i + 2];\n key = Math.round(vx * precision) + '_' + Math.round(vy * precision) + '_' + Math.round(vz * precision);\n if (positionsMap[key] === undefined) {\n positionsMap[key] = lenUniquePositions / 3;\n uniquePositions[lenUniquePositions++] = vx;\n uniquePositions[lenUniquePositions++] = vy;\n uniquePositions[lenUniquePositions++] = vz;\n }\n indicesLookup[i / 3] = positionsMap[key];\n }\n for (i = 0, len = indices.length; i < len; i++) {\n weldedIndices[i] = indicesLookup[indices[i]];\n indicesReverseLookup[weldedIndices[i]] = indices[i];\n }\n }\n\n function buildFaces(numIndices, positionsDecodeMatrix) {\n numFaces = 0;\n for (let i = 0, len = numIndices; i < len; i += 3) {\n const ia = ((weldedIndices[i]) * 3);\n const ib = ((weldedIndices[i + 1]) * 3);\n const ic = ((weldedIndices[i + 2]) * 3);\n if (positionsDecodeMatrix) {\n compa[0] = uniquePositions[ia];\n compa[1] = uniquePositions[ia + 1];\n compa[2] = uniquePositions[ia + 2];\n compb[0] = uniquePositions[ib];\n compb[1] = uniquePositions[ib + 1];\n compb[2] = uniquePositions[ib + 2];\n compc[0] = uniquePositions[ic];\n compc[1] = uniquePositions[ic + 1];\n compc[2] = uniquePositions[ic + 2];\n // Decode\n math.decompressPosition(compa, positionsDecodeMatrix, a);\n math.decompressPosition(compb, positionsDecodeMatrix, b);\n math.decompressPosition(compc, positionsDecodeMatrix, c);\n } else {\n a[0] = uniquePositions[ia];\n a[1] = uniquePositions[ia + 1];\n a[2] = uniquePositions[ia + 2];\n b[0] = uniquePositions[ib];\n b[1] = uniquePositions[ib + 1];\n b[2] = uniquePositions[ib + 2];\n c[0] = uniquePositions[ic];\n c[1] = uniquePositions[ic + 1];\n c[2] = uniquePositions[ic + 2];\n }\n math.subVec3(c, b, cb);\n math.subVec3(a, b, ab);\n math.cross3Vec3(cb, ab, cross);\n math.normalizeVec3(cross, normal);\n const face = faces[numFaces] || (faces[numFaces] = {normal: math.vec3()});\n face.normal[0] = normal[0];\n face.normal[1] = normal[1];\n face.normal[2] = normal[2];\n numFaces++;\n }\n }\n\n return function (positions, indices, positionsDecodeMatrix, edgeThreshold) {\n weldVertices(positions, indices);\n buildFaces(indices.length, positionsDecodeMatrix);\n const edgeIndices = [];\n const thresholdDot = Math.cos(math.DEGTORAD * edgeThreshold);\n const edges = {};\n let edge1;\n let edge2;\n let index1;\n let index2;\n let key;\n let largeIndex = false;\n let edge;\n let normal1;\n let normal2;\n let dot;\n let ia;\n let ib;\n for (let i = 0, len = indices.length; i < len; i += 3) {\n const faceIndex = i / 3;\n for (let j = 0; j < 3; j++) {\n edge1 = weldedIndices[i + j];\n edge2 = weldedIndices[i + ((j + 1) % 3)];\n index1 = Math.min(edge1, edge2);\n index2 = Math.max(edge1, edge2);\n key = index1 + \",\" + index2;\n if (edges[key] === undefined) {\n edges[key] = {\n index1: index1,\n index2: index2,\n face1: faceIndex,\n face2: undefined\n };\n } else {\n edges[key].face2 = faceIndex;\n }\n }\n }\n for (key in edges) {\n edge = edges[key];\n // an edge is only rendered if the angle (in degrees) between the face normals of the adjoining faces exceeds this value. default = 1 degree.\n if (edge.face2 !== undefined) {\n normal1 = faces[edge.face1].normal;\n normal2 = faces[edge.face2].normal;\n dot = math.dotVec3(normal1, normal2);\n if (dot > thresholdDot) {\n continue;\n }\n }\n ia = indicesReverseLookup[edge.index1];\n ib = indicesReverseLookup[edge.index2];\n if (!largeIndex && ia > 65535 || ib > 65535) {\n largeIndex = true;\n }\n edgeIndices.push(ia);\n edgeIndices.push(ib);\n }\n return (largeIndex) ? new Uint32Array(edgeIndices) : new Uint16Array(edgeIndices);\n };\n})();\n\n/**\n * Private geometry compression and decompression utilities.\n */\n\n/**\n * @private\n * @param array\n * @returns {{min: Float32Array, max: Float32Array}}\n */\nfunction getPositionsBounds(array) {\n const min = new Float32Array(3);\n const max = new Float32Array(3);\n let i, j;\n for (i = 0; i < 3; i++) {\n min[i] = Number.MAX_VALUE;\n max[i] = -Number.MAX_VALUE;\n }\n for (i = 0; i < array.length; i += 3) {\n for (j = 0; j < 3; j++) {\n min[j] = Math.min(min[j], array[i + j]);\n max[j] = Math.max(max[j], array[i + j]);\n }\n }\n return {\n min: min,\n max: max\n };\n}\n\nconst createPositionsDecodeMatrix = (function () {\n const translate = math.mat4();\n const scale = math.mat4();\n return function (aabb, positionsDecodeMatrix) {\n positionsDecodeMatrix = positionsDecodeMatrix || math.mat4();\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n const xwid = aabb[3] - xmin;\n const ywid = aabb[4] - ymin;\n const zwid = aabb[5] - zmin;\n const maxInt = 65535;\n math.identityMat4(translate);\n math.translationMat4v(aabb, translate);\n math.identityMat4(scale);\n math.scalingMat4v([xwid / maxInt, ywid / maxInt, zwid / maxInt], scale);\n math.mulMat4(translate, scale, positionsDecodeMatrix);\n return positionsDecodeMatrix;\n };\n})();\n\n/**\n * @private\n */\nvar compressPositions = (function () { // http://cg.postech.ac.kr/research/mesh_comp_mobile/mesh_comp_mobile_conference.pdf\n const translate = math.mat4();\n const scale = math.mat4();\n return function (array, min, max) {\n const quantized = new Uint16Array(array.length);\n var multiplier = new Float32Array([\n max[0] !== min[0] ? 65535 / (max[0] - min[0]) : 0,\n max[1] !== min[1] ? 65535 / (max[1] - min[1]) : 0,\n max[2] !== min[2] ? 65535 / (max[2] - min[2]) : 0\n ]);\n let i;\n for (i = 0; i < array.length; i += 3) {\n quantized[i + 0] = Math.floor((array[i + 0] - min[0]) * multiplier[0]);\n quantized[i + 1] = Math.floor((array[i + 1] - min[1]) * multiplier[1]);\n quantized[i + 2] = Math.floor((array[i + 2] - min[2]) * multiplier[2]);\n }\n math.identityMat4(translate);\n math.translationMat4v(min, translate);\n math.identityMat4(scale);\n math.scalingMat4v([\n (max[0] - min[0]) / 65535,\n (max[1] - min[1]) / 65535,\n (max[2] - min[2]) / 65535\n ], scale);\n const decodeMat = math.mulMat4(translate, scale, math.identityMat4());\n return {\n quantized: quantized,\n decodeMatrix: decodeMat\n };\n };\n})();\n\nfunction decompressPosition(position, decodeMatrix, dest) {\n dest[0] = position[0] * decodeMatrix[0] + decodeMatrix[12];\n dest[1] = position[1] * decodeMatrix[5] + decodeMatrix[13];\n dest[2] = position[2] * decodeMatrix[10] + decodeMatrix[14];\n return dest;\n}\n\nfunction decompressAABB(aabb, decodeMatrix, dest=aabb) {\n dest[0] = aabb[0] * decodeMatrix[0] + decodeMatrix[12];\n dest[1] = aabb[1] * decodeMatrix[5] + decodeMatrix[13];\n dest[2] = aabb[2] * decodeMatrix[10] + decodeMatrix[14];\n dest[3] = aabb[3] * decodeMatrix[0] + decodeMatrix[12];\n dest[4] = aabb[4] * decodeMatrix[5] + decodeMatrix[13];\n dest[5] = aabb[5] * decodeMatrix[10] + decodeMatrix[14];\n return dest;\n}\n\n/**\n * @private\n */\nfunction decompressPositions(positions, decodeMatrix, dest = new Float32Array(positions.length)) {\n for (let i = 0, len = positions.length; i < len; i += 3) {\n dest[i + 0] = positions[i + 0] * decodeMatrix[0] + decodeMatrix[12];\n dest[i + 1] = positions[i + 1] * decodeMatrix[5] + decodeMatrix[13];\n dest[i + 2] = positions[i + 2] * decodeMatrix[10] + decodeMatrix[14];\n }\n return dest;\n}\n\n//--------------- UVs --------------------------------------------------------------------------------------------------\n\n/**\n * @private\n * @param array\n * @returns {{min: Float32Array, max: Float32Array}}\n */\nfunction getUVBounds(array) {\n const min = new Float32Array(2);\n const max = new Float32Array(2);\n let i, j;\n for (i = 0; i < 2; i++) {\n min[i] = Number.MAX_VALUE;\n max[i] = -Number.MAX_VALUE;\n }\n for (i = 0; i < array.length; i += 2) {\n for (j = 0; j < 2; j++) {\n min[j] = Math.min(min[j], array[i + j]);\n max[j] = Math.max(max[j], array[i + j]);\n }\n }\n return {\n min: min,\n max: max\n };\n}\n\n/**\n * @private\n */\nvar compressUVs = (function () {\n const translate = math.mat3();\n const scale = math.mat3();\n return function (array, min, max) {\n const quantized = new Uint16Array(array.length);\n const multiplier = new Float32Array([\n 65535 / (max[0] - min[0]),\n 65535 / (max[1] - min[1])\n ]);\n let i;\n for (i = 0; i < array.length; i += 2) {\n quantized[i + 0] = Math.floor((array[i + 0] - min[0]) * multiplier[0]);\n quantized[i + 1] = Math.floor((array[i + 1] - min[1]) * multiplier[1]);\n }\n math.identityMat3(translate);\n math.translationMat3v(min, translate);\n math.identityMat3(scale);\n math.scalingMat3v([\n (max[0] - min[0]) / 65535,\n (max[1] - min[1]) / 65535\n ], scale);\n const decodeMat = math.mulMat3(translate, scale, math.identityMat3());\n return {\n quantized: quantized,\n decodeMatrix: decodeMat\n };\n };\n})();\n\n\n//--------------- Normals ----------------------------------------------------------------------------------------------\n\n/**\n * @private\n */\nfunction compressNormals(array) { // http://jcgt.org/published/0003/02/01/\n\n // Note: three elements for each encoded normal, in which the last element in each triplet is redundant.\n // This is to work around a mysterious WebGL issue where 2-element normals just wouldn't work in the shader :/\n\n const encoded = new Int8Array(array.length);\n let oct, dec, best, currentCos, bestCos;\n for (let i = 0; i < array.length; i += 3) {\n // Test various combinations of ceil and floor\n // to minimize rounding errors\n best = oct = octEncodeVec3$1(array, i, \"floor\", \"floor\");\n dec = octDecodeVec2$1(oct);\n currentCos = bestCos = dot$1(array, i, dec);\n oct = octEncodeVec3$1(array, i, \"ceil\", \"floor\");\n dec = octDecodeVec2$1(oct);\n currentCos = dot$1(array, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3$1(array, i, \"floor\", \"ceil\");\n dec = octDecodeVec2$1(oct);\n currentCos = dot$1(array, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3$1(array, i, \"ceil\", \"ceil\");\n dec = octDecodeVec2$1(oct);\n currentCos = dot$1(array, i, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n encoded[i] = best[0];\n encoded[i + 1] = best[1];\n }\n return encoded;\n}\n\n/**\n * @private\n */\nfunction octEncodeVec3$1(array, i, xfunc, yfunc) { // Oct-encode single normal vector in 2 bytes\n let x = array[i] / (Math.abs(array[i]) + Math.abs(array[i + 1]) + Math.abs(array[i + 2]));\n let y = array[i + 1] / (Math.abs(array[i]) + Math.abs(array[i + 1]) + Math.abs(array[i + 2]));\n if (array[i + 2] < 0) {\n let tempx = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n let tempy = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n x = tempx;\n y = tempy;\n }\n return new Int8Array([\n Math[xfunc](x * 127.5 + (x < 0 ? -1 : 0)),\n Math[yfunc](y * 127.5 + (y < 0 ? -1 : 0))\n ]);\n}\n\n/**\n * Decode an oct-encoded normal\n */\nfunction octDecodeVec2$1(oct) {\n let x = oct[0];\n let y = oct[1];\n x /= x < 0 ? 127 : 128;\n y /= y < 0 ? 127 : 128;\n const z = 1 - Math.abs(x) - Math.abs(y);\n if (z < 0) {\n x = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n y = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n }\n const length = Math.sqrt(x * x + y * y + z * z);\n return [\n x / length,\n y / length,\n z / length\n ];\n}\n\n/**\n * Dot product of a normal in an array against a candidate decoding\n * @private\n */\nfunction dot$1(array, i, vec3) {\n return array[i] * vec3[0] + array[i + 1] * vec3[1] + array[i + 2] * vec3[2];\n}\n\n/**\n * @private\n */\nfunction decompressUV(uv, decodeMatrix, dest) {\n dest[0] = uv[0] * decodeMatrix[0] + decodeMatrix[6];\n dest[1] = uv[1] * decodeMatrix[4] + decodeMatrix[7];\n}\n\n/**\n * @private\n */\nfunction decompressUVs(uvs, decodeMatrix, dest = new Float32Array(uvs.length)) {\n for (let i = 0, len = uvs.length; i < len; i += 3) {\n dest[i + 0] = uvs[i + 0] * decodeMatrix[0] + decodeMatrix[6];\n dest[i + 1] = uvs[i + 1] * decodeMatrix[4] + decodeMatrix[7];\n }\n return dest;\n}\n\n/**\n * @private\n */\nfunction decompressNormal(oct, result) {\n let x = oct[0];\n let y = oct[1];\n x = (2 * x + 1) / 255;\n y = (2 * y + 1) / 255;\n const z = 1 - Math.abs(x) - Math.abs(y);\n if (z < 0) {\n x = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n y = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n }\n const length = Math.sqrt(x * x + y * y + z * z);\n result[0] = x / length;\n result[1] = y / length;\n result[2] = z / length;\n return result;\n}\n\n/**\n * @private\n */\nfunction decompressNormals(octs, result) {\n for (let i = 0, j = 0, len = octs.length; i < len; i += 2) {\n let x = octs[i + 0];\n let y = octs[i + 1];\n x = (2 * x + 1) / 255;\n y = (2 * y + 1) / 255;\n const z = 1 - Math.abs(x) - Math.abs(y);\n if (z < 0) {\n x = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n y = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n }\n const length = Math.sqrt(x * x + y * y + z * z);\n result[j + 0] = x / length;\n result[j + 1] = y / length;\n result[j + 2] = z / length;\n j += 3;\n }\n return result;\n}\n\n/**\n * @private\n */\nconst geometryCompressionUtils = {\n\n getPositionsBounds: getPositionsBounds,\n createPositionsDecodeMatrix: createPositionsDecodeMatrix,\n compressPositions: compressPositions,\n decompressPositions: decompressPositions,\n decompressPosition: decompressPosition,\n decompressAABB: decompressAABB,\n\n getUVBounds: getUVBounds,\n compressUVs: compressUVs,\n decompressUVs: decompressUVs,\n decompressUV: decompressUV,\n\n compressNormals: compressNormals,\n decompressNormals: decompressNormals,\n decompressNormal: decompressNormal\n};\n\nconst memoryStats$1 = stats.memory;\nconst bigIndicesSupported$6 = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\nconst IndexArrayType$1 = bigIndicesSupported$6 ? Uint32Array : Uint16Array;\nconst tempAABB$2 = math.AABB3();\n\n/**\n * @desc A {@link Geometry} that keeps its geometry data in both browser and GPU memory.\n *\n * ReadableGeometry uses more memory than {@link VBOGeometry}, which only stores its geometry data in GPU memory.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a ReadableGeometry that defines a single triangle, plus a {@link PhongMaterial} with diffuse {@link Texture}:\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_ReadableGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * const myMesh = new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, {\n * primitive: \"triangles\",\n * positions: [0.0, 3, 0.0, -3, -3, 0.0, 3, -3, 0.0],\n * normals: [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0],\n * uv: [0.0, 0.0, 0.5, 1.0, 1.0, 0.0],\n * indices: [0, 1, 2]\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * backfaces: true\n * })\n * });\n *\n * // Get geometry data from browser memory:\n *\n * const positions = myMesh.geometry.positions; // Flat arrays\n * const normals = myMesh.geometry.normals;\n * const uv = myMesh.geometry.uv;\n * const indices = myMesh.geometry.indices;\n *\n * ````\n */\nclass ReadableGeometry extends Geometry {\n\n /**\n @private\n */\n get type() {\n return \"ReadableGeometry\";\n }\n\n /**\n * @private\n * @returns {boolean}\n */\n get isReadableGeometry() {\n return true;\n }\n\n /**\n *\n @class ReadableGeometry\n @module xeokit\n @submodule geometry\n @constructor\n @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n @param {*} [cfg] Configs\n @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene},\n generated automatically when omitted.\n @param {String:Object} [cfg.meta] Optional map of user-defined metadata to attach to this Geometry.\n @param [cfg.primitive=\"triangles\"] {String} The primitive type. Accepted values are 'points', 'lines', 'line-loop', 'line-strip', 'triangles', 'triangle-strip' and 'triangle-fan'.\n @param [cfg.positions] {Number[]} Positions array.\n @param [cfg.normals] {Number[]} Vertex normal vectors array.\n @param [cfg.uv] {Number[]} UVs array.\n @param [cfg.colors] {Number[]} Vertex colors.\n @param [cfg.indices] {Number[]} Indices array.\n @param [cfg.autoVertexNormals=false] {Boolean} Set true to automatically generate normal vectors from the positions and\n indices, if those are supplied.\n @param [cfg.compressGeometry=false] {Boolean} Stores positions, colors, normals and UVs in compressGeometry and oct-encoded formats\n for reduced memory footprint and GPU bus usage.\n @param [cfg.edgeThreshold=10] {Number} When a {@link Mesh} renders this Geometry as wireframe,\n this indicates the threshold angle (in degrees) between the face normals of adjacent triangles below which the edge is discarded.\n @extends Component\n * @param owner\n * @param cfg\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({ // Arrays for emphasis effects are got from xeokit.Geometry friend methods\n compressGeometry: !!cfg.compressGeometry,\n primitive: null, // WebGL enum\n primitiveName: null, // String\n positions: null, // Uint16Array when compressGeometry == true, else Float32Array\n normals: null, // Uint8Array when compressGeometry == true, else Float32Array\n colors: null,\n uv: null, // Uint8Array when compressGeometry == true, else Float32Array\n indices: null,\n positionsDecodeMatrix: null, // Set when compressGeometry == true\n uvDecodeMatrix: null, // Set when compressGeometry == true\n positionsBuf: null,\n normalsBuf: null,\n colorsbuf: null,\n uvBuf: null,\n indicesBuf: null,\n hash: \"\"\n });\n\n this._numTriangles = 0;\n\n this._edgeThreshold = cfg.edgeThreshold || 10.0;\n\n // Lazy-generated VBOs\n\n this._edgeIndicesBuf = null;\n this._pickTrianglePositionsBuf = null;\n this._pickTriangleColorsBuf = null;\n\n // Local-space Boundary3D\n\n this._aabbDirty = true;\n\n this._boundingSphere = true;\n this._aabb = null;\n this._aabbDirty = true;\n\n this._obb = null;\n this._obbDirty = true;\n\n const state = this._state;\n const gl = this.scene.canvas.gl;\n\n // Primitive type\n\n cfg.primitive = cfg.primitive || \"triangles\";\n switch (cfg.primitive) {\n case \"points\":\n state.primitive = gl.POINTS;\n state.primitiveName = cfg.primitive;\n break;\n case \"lines\":\n state.primitive = gl.LINES;\n state.primitiveName = cfg.primitive;\n break;\n case \"line-loop\":\n state.primitive = gl.LINE_LOOP;\n state.primitiveName = cfg.primitive;\n break;\n case \"line-strip\":\n state.primitive = gl.LINE_STRIP;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangles\":\n state.primitive = gl.TRIANGLES;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangle-strip\":\n state.primitive = gl.TRIANGLE_STRIP;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangle-fan\":\n state.primitive = gl.TRIANGLE_FAN;\n state.primitiveName = cfg.primitive;\n break;\n default:\n this.error(\"Unsupported value for 'primitive': '\" + cfg.primitive +\n \"' - supported values are 'points', 'lines', 'line-loop', 'line-strip', 'triangles', \" +\n \"'triangle-strip' and 'triangle-fan'. Defaulting to 'triangles'.\");\n state.primitive = gl.TRIANGLES;\n state.primitiveName = cfg.primitive;\n }\n\n if (cfg.positions) {\n if (this._state.compressGeometry) {\n const bounds = geometryCompressionUtils.getPositionsBounds(cfg.positions);\n const result = geometryCompressionUtils.compressPositions(cfg.positions, bounds.min, bounds.max);\n state.positions = result.quantized;\n state.positionsDecodeMatrix = result.decodeMatrix;\n } else {\n state.positions = cfg.positions.constructor === Float32Array ? cfg.positions : new Float32Array(cfg.positions);\n }\n }\n if (cfg.colors) {\n state.colors = cfg.colors.constructor === Float32Array ? cfg.colors : new Float32Array(cfg.colors);\n }\n if (cfg.uv) {\n if (this._state.compressGeometry) {\n const bounds = geometryCompressionUtils.getUVBounds(cfg.uv);\n const result = geometryCompressionUtils.compressUVs(cfg.uv, bounds.min, bounds.max);\n state.uv = result.quantized;\n state.uvDecodeMatrix = result.decodeMatrix;\n } else {\n state.uv = cfg.uv.constructor === Float32Array ? cfg.uv : new Float32Array(cfg.uv);\n }\n }\n if (cfg.normals) {\n if (this._state.compressGeometry) {\n state.normals = geometryCompressionUtils.compressNormals(cfg.normals);\n } else {\n state.normals = cfg.normals.constructor === Float32Array ? cfg.normals : new Float32Array(cfg.normals);\n }\n }\n if (cfg.indices) {\n if (!bigIndicesSupported$6 && cfg.indices.constructor === Uint32Array) {\n this.error(\"This WebGL implementation does not support Uint32Array\");\n return;\n }\n state.indices = (cfg.indices.constructor === Uint32Array || cfg.indices.constructor === Uint16Array) ? cfg.indices : new IndexArrayType$1(cfg.indices);\n if (this._state.primitiveName === \"triangles\") {\n this._numTriangles = (cfg.indices.length / 3);\n }\n }\n\n this._buildHash();\n\n memoryStats$1.meshes++;\n\n this._buildVBOs();\n }\n\n _buildVBOs() {\n const state = this._state;\n const gl = this.scene.canvas.gl;\n if (state.indices) {\n state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, state.indices, state.indices.length, 1, gl.STATIC_DRAW);\n memoryStats$1.indices += state.indicesBuf.numItems;\n }\n if (state.positions) {\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, state.positions, state.positions.length, 3, gl.STATIC_DRAW);\n memoryStats$1.positions += state.positionsBuf.numItems;\n }\n if (state.normals) {\n let normalized = state.compressGeometry;\n state.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, state.normals, state.normals.length, 3, gl.STATIC_DRAW, normalized);\n memoryStats$1.normals += state.normalsBuf.numItems;\n }\n if (state.colors) {\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, state.colors, state.colors.length, 4, gl.STATIC_DRAW);\n memoryStats$1.colors += state.colorsBuf.numItems;\n }\n if (state.uv) {\n state.uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, state.uv, state.uv.length, 2, gl.STATIC_DRAW);\n memoryStats$1.uvs += state.uvBuf.numItems;\n }\n }\n\n _buildHash() {\n const state = this._state;\n const hash = [\"/g\"];\n hash.push(\"/\" + state.primitive + \";\");\n if (state.positions) {\n hash.push(\"p\");\n }\n if (state.colors) {\n hash.push(\"c\");\n }\n if (state.normals || state.autoVertexNormals) {\n hash.push(\"n\");\n }\n if (state.uv) {\n hash.push(\"u\");\n }\n if (state.compressGeometry) {\n hash.push(\"cp\");\n }\n hash.push(\";\");\n state.hash = hash.join(\"\");\n }\n\n _getEdgeIndices() {\n if (!this._edgeIndicesBuf) {\n this._buildEdgeIndices();\n }\n return this._edgeIndicesBuf;\n }\n\n _getPickTrianglePositions() {\n if (!this._pickTrianglePositionsBuf) {\n this._buildPickTriangleVBOs();\n }\n return this._pickTrianglePositionsBuf;\n }\n\n _getPickTriangleColors() {\n if (!this._pickTriangleColorsBuf) {\n this._buildPickTriangleVBOs();\n }\n return this._pickTriangleColorsBuf;\n }\n\n _buildEdgeIndices() { // FIXME: Does not adjust indices after other objects are deleted from vertex buffer!!\n const state = this._state;\n if (!state.positions || !state.indices) {\n return;\n }\n const gl = this.scene.canvas.gl;\n const edgeIndices = buildEdgeIndices(state.positions, state.indices, state.positionsDecodeMatrix, this._edgeThreshold);\n this._edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, edgeIndices, edgeIndices.length, 1, gl.STATIC_DRAW);\n memoryStats$1.indices += this._edgeIndicesBuf.numItems;\n }\n\n _buildPickTriangleVBOs() { // Builds positions and indices arrays that allow each triangle to have a unique color\n const state = this._state;\n if (!state.positions || !state.indices) {\n return;\n }\n const gl = this.scene.canvas.gl;\n const arrays = math.buildPickTriangles(state.positions, state.indices, state.compressGeometry);\n const positions = arrays.positions;\n const colors = arrays.colors;\n this._pickTrianglePositionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, positions.length, 3, gl.STATIC_DRAW);\n this._pickTriangleColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, colors.length, 4, gl.STATIC_DRAW, true);\n memoryStats$1.positions += this._pickTrianglePositionsBuf.numItems;\n memoryStats$1.colors += this._pickTriangleColorsBuf.numItems;\n }\n\n _buildPickVertexVBOs() {\n // var state = this._state;\n // if (!state.positions || !state.indices) {\n // return;\n // }\n // var gl = this.scene.canvas.gl;\n // var arrays = math.buildPickVertices(state.positions, state.indices, state.compressGeometry);\n // var pickVertexPositions = arrays.positions;\n // var pickColors = arrays.colors;\n // this._pickVertexPositionsBuf = new xeokit.renderer.ArrayBuf(gl, gl.ARRAY_BUFFER, pickVertexPositions, pickVertexPositions.length, 3, gl.STATIC_DRAW);\n // this._pickVertexColorsBuf = new xeokit.renderer.ArrayBuf(gl, gl.ARRAY_BUFFER, pickColors, pickColors.length, 4, gl.STATIC_DRAW, true);\n // memoryStats.positions += this._pickVertexPositionsBuf.numItems;\n // memoryStats.colors += this._pickVertexColorsBuf.numItems;\n }\n\n _webglContextLost() {\n if (this._sceneVertexBufs) {\n this._sceneVertexBufs.webglContextLost();\n }\n }\n\n _webglContextRestored() {\n if (this._sceneVertexBufs) {\n this._sceneVertexBufs.webglContextRestored();\n }\n this._buildVBOs();\n this._edgeIndicesBuf = null;\n this._pickVertexPositionsBuf = null;\n this._pickTrianglePositionsBuf = null;\n this._pickTriangleColorsBuf = null;\n this._pickVertexPositionsBuf = null;\n this._pickVertexColorsBuf = null;\n }\n\n /**\n * Gets the Geometry's primitive type.\n\n Valid types are: 'points', 'lines', 'line-loop', 'line-strip', 'triangles', 'triangle-strip' and 'triangle-fan'.\n\n @property primitive\n @default \"triangles\"\n @type {String}\n */\n get primitive() {\n return this._state.primitiveName;\n }\n\n /**\n Indicates if this Geometry is quantized.\n\n Compression is an internally-performed optimization which stores positions, colors, normals and UVs\n in quantized and oct-encoded formats for reduced memory footprint and GPU bus usage.\n\n Quantized geometry may not be updated.\n\n @property compressGeometry\n @default false\n @type {Boolean}\n @final\n */\n get compressGeometry() {\n return this._state.compressGeometry;\n }\n\n /**\n The Geometry's vertex positions.\n\n @property positions\n @default null\n @type {Number[]}\n */\n get positions() {\n if (!this._state.positions) {\n return null;\n }\n if (!this._state.compressGeometry) {\n return this._state.positions;\n }\n if (!this._decompressedPositions) {\n this._decompressedPositions = new Float32Array(this._state.positions.length);\n geometryCompressionUtils.decompressPositions(this._state.positions, this._state.positionsDecodeMatrix, this._decompressedPositions);\n }\n return this._decompressedPositions;\n }\n\n set positions(newPositions) {\n const state = this._state;\n const positions = state.positions;\n if (!positions) {\n this.error(\"can't update geometry positions - geometry has no positions\");\n return;\n }\n if (positions.length !== newPositions.length) {\n this.error(\"can't update geometry positions - new positions are wrong length\");\n return;\n }\n if (this._state.compressGeometry) {\n const bounds = geometryCompressionUtils.getPositionsBounds(newPositions);\n const result = geometryCompressionUtils.compressPositions(newPositions, bounds.min, bounds.max);\n newPositions = result.quantized; // TODO: Copy in-place\n state.positionsDecodeMatrix = result.decodeMatrix;\n }\n positions.set(newPositions);\n if (state.positionsBuf) {\n state.positionsBuf.setData(positions);\n }\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n The Geometry's vertex normals.\n\n @property normals\n @default null\n @type {Number[]}\n */\n get normals() {\n if (!this._state.normals) {\n return;\n }\n if (!this._state.compressGeometry) {\n return this._state.normals;\n }\n if (!this._decompressedNormals) {\n const lenCompressed = this._state.normals.length;\n const lenDecompressed = lenCompressed + (lenCompressed / 2); // 2 -> 3\n this._decompressedNormals = new Float32Array(lenDecompressed);\n geometryCompressionUtils.decompressNormals(this._state.normals, this._decompressedNormals);\n }\n return this._decompressedNormals;\n }\n\n set normals(newNormals) {\n if (this._state.compressGeometry) {\n this.error(\"can't update geometry normals - quantized geometry is immutable\"); // But will be eventually\n return;\n }\n const state = this._state;\n const normals = state.normals;\n if (!normals) {\n this.error(\"can't update geometry normals - geometry has no normals\");\n return;\n }\n if (normals.length !== newNormals.length) {\n this.error(\"can't update geometry normals - new normals are wrong length\");\n return;\n }\n normals.set(newNormals);\n if (state.normalsBuf) {\n state.normalsBuf.setData(normals);\n }\n this.glRedraw();\n }\n\n\n /**\n The Geometry's UV coordinates.\n\n @property uv\n @default null\n @type {Number[]}\n */\n get uv() {\n if (!this._state.uv) {\n return null;\n }\n if (!this._state.compressGeometry) {\n return this._state.uv;\n }\n if (!this._decompressedUV) {\n this._decompressedUV = new Float32Array(this._state.uv.length);\n geometryCompressionUtils.decompressUVs(this._state.uv, this._state.uvDecodeMatrix, this._decompressedUV);\n }\n return this._decompressedUV;\n }\n\n set uv(newUV) {\n if (this._state.compressGeometry) {\n this.error(\"can't update geometry UVs - quantized geometry is immutable\"); // But will be eventually\n return;\n }\n const state = this._state;\n const uv = state.uv;\n if (!uv) {\n this.error(\"can't update geometry UVs - geometry has no UVs\");\n return;\n }\n if (uv.length !== newUV.length) {\n this.error(\"can't update geometry UVs - new UVs are wrong length\");\n return;\n }\n uv.set(newUV);\n if (state.uvBuf) {\n state.uvBuf.setData(uv);\n }\n this.glRedraw();\n }\n\n /**\n The Geometry's vertex colors.\n\n @property colors\n @default null\n @type {Number[]}\n */\n get colors() {\n return this._state.colors;\n }\n\n set colors(newColors) {\n if (this._state.compressGeometry) {\n this.error(\"can't update geometry colors - quantized geometry is immutable\"); // But will be eventually\n return;\n }\n const state = this._state;\n const colors = state.colors;\n if (!colors) {\n this.error(\"can't update geometry colors - geometry has no colors\");\n return;\n }\n if (colors.length !== newColors.length) {\n this.error(\"can't update geometry colors - new colors are wrong length\");\n return;\n }\n colors.set(newColors);\n if (state.colorsBuf) {\n state.colorsBuf.setData(colors);\n }\n this.glRedraw();\n }\n\n /**\n The Geometry's indices.\n\n If ````xeokit.WEBGL_INFO.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"]```` is true, then this can be\n a ````Uint32Array````, otherwise it needs to be a ````Uint16Array````.\n\n @property indices\n @default null\n @type Uint16Array | Uint32Array\n @final\n */\n get indices() {\n return this._state.indices;\n }\n\n /**\n * Local-space axis-aligned 3D boundary (AABB) of this geometry.\n *\n * The AABB is represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @property aabb\n * @final\n * @type {Number[]}\n */\n get aabb() {\n if (this._aabbDirty) {\n if (!this._aabb) {\n this._aabb = math.AABB3();\n }\n math.positions3ToAABB3(this._state.positions, this._aabb, this._state.positionsDecodeMatrix);\n this._aabbDirty = false;\n }\n return this._aabb;\n }\n\n /**\n * Local-space oriented 3D boundary (OBB) of this geometry.\n *\n * The OBB is represented by a 32-element Float64Array containing the eight vertices of the box,\n * where each vertex is a homogeneous coordinate having [x,y,z,w] elements.\n *\n * @property obb\n * @final\n * @type {Number[]}\n */\n get obb() {\n if (this._obbDirty) {\n if (!this._obb) {\n this._obb = math.OBB3();\n }\n math.positions3ToAABB3(this._state.positions, tempAABB$2, this._state.positionsDecodeMatrix);\n math.AABB3ToOBB3(tempAABB$2, this._obb);\n this._obbDirty = false;\n }\n return this._obb;\n }\n\n /**\n * Approximate number of triangles in this ReadableGeometry.\n *\n * Will be zero if {@link ReadableGeometry#primitive} is not 'triangles', 'triangle-strip' or 'triangle-fan'.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n _setAABBDirty() {\n if (this._aabbDirty) {\n return;\n }\n this._aabbDirty = true;\n this._aabbDirty = true;\n this._obbDirty = true;\n }\n\n _getState() {\n return this._state;\n }\n\n /**\n * Destroys this ReadableGeometry\n */\n destroy() {\n super.destroy();\n const state = this._state;\n if (state.indicesBuf) {\n state.indicesBuf.destroy();\n }\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n }\n if (state.normalsBuf) {\n state.normalsBuf.destroy();\n }\n if (state.uvBuf) {\n state.uvBuf.destroy();\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n }\n if (this._edgeIndicesBuf) {\n this._edgeIndicesBuf.destroy();\n }\n if (this._pickTrianglePositionsBuf) {\n this._pickTrianglePositionsBuf.destroy();\n }\n if (this._pickTriangleColorsBuf) {\n this._pickTriangleColorsBuf.destroy();\n }\n if (this._pickVertexPositionsBuf) {\n this._pickVertexPositionsBuf.destroy();\n }\n if (this._pickVertexColorsBuf) {\n this._pickVertexColorsBuf.destroy();\n }\n state.destroy();\n memoryStats$1.meshes--;\n }\n}\n\n/**\n * @desc Creates box-shaped {@link Geometry}.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with a box-shaped {@link ReadableGeometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildBoxGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildBoxGeometry({\n * center: [0,0,0],\n * xSize: 1, // Half-size on each axis\n * ySize: 1,\n * zSize: 1\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildBoxGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.xSize=1.0] Half-size on the X-axis.\n * @param {Number} [cfg.ySize=1.0] Half-size on the Y-axis.\n * @param {Number} [cfg.zSize=1.0] Half-size on the Z-axis.\n * @returns {Object} Configuration for a {@link Geometry} subtype.\n */\nfunction buildBoxGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let ySize = cfg.ySize || 1;\n if (ySize < 0) {\n console.error(\"negative ySize not allowed - will invert\");\n ySize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const xmin = -xSize + centerX;\n const ymin = -ySize + centerY;\n const zmin = -zSize + centerZ;\n const xmax = xSize + centerX;\n const ymax = ySize + centerY;\n const zmax = zSize + centerZ;\n\n return utils.apply(cfg, {\n\n // The vertices - eight for our cube, each\n // one spanning three array elements for X,Y and Z\n positions: [\n\n // v0-v1-v2-v3 front\n xmax, ymax, zmax,\n xmin, ymax, zmax,\n xmin, ymin, zmax,\n xmax, ymin, zmax,\n\n // v0-v3-v4-v1 right\n xmax, ymax, zmax,\n xmax, ymin, zmax,\n xmax, ymin, zmin,\n xmax, ymax, zmin,\n\n // v0-v1-v6-v1 top\n xmax, ymax, zmax,\n xmax, ymax, zmin,\n xmin, ymax, zmin,\n xmin, ymax, zmax,\n\n // v1-v6-v7-v2 left\n xmin, ymax, zmax,\n xmin, ymax, zmin,\n xmin, ymin, zmin,\n xmin, ymin, zmax,\n\n // v7-v4-v3-v2 bottom\n xmin, ymin, zmin,\n xmax, ymin, zmin,\n xmax, ymin, zmax,\n xmin, ymin, zmax,\n\n // v4-v7-v6-v1 back\n xmax, ymin, zmin,\n xmin, ymin, zmin,\n xmin, ymax, zmin,\n xmax, ymax, zmin\n ],\n\n // Normal vectors, one for each vertex\n normals: [\n\n // v0-v1-v2-v3 front\n 0, 0, 1,\n 0, 0, 1,\n 0, 0, 1,\n 0, 0, 1,\n\n // v0-v3-v4-v5 right\n 1, 0, 0,\n 1, 0, 0,\n 1, 0, 0,\n 1, 0, 0,\n\n // v0-v5-v6-v1 top\n 0, 1, 0,\n 0, 1, 0,\n 0, 1, 0,\n 0, 1, 0,\n\n // v1-v6-v7-v2 left\n -1, 0, 0,\n -1, 0, 0,\n -1, 0, 0,\n -1, 0, 0,\n\n // v7-v4-v3-v2 bottom\n 0, -1, 0,\n 0, -1, 0,\n 0, -1, 0,\n 0, -1, 0,\n\n // v4-v7-v6-v5 back\n 0, 0, -1,\n 0, 0, -1,\n 0, 0, -1,\n 0, 0, -1\n ],\n\n // UV coords\n uv: [\n\n // v0-v1-v2-v3 front\n 1, 0,\n 0, 0,\n 0, 1,\n 1, 1,\n\n // v0-v3-v4-v1 right\n 0, 0,\n 0, 1,\n 1, 1,\n 1, 0,\n\n // v0-v1-v6-v1 top\n 1, 1,\n 1, 0,\n 0, 0,\n 0, 1,\n\n // v1-v6-v7-v2 left\n 1, 0,\n 0, 0,\n 0, 1,\n 1, 1,\n\n // v7-v4-v3-v2 bottom\n 0, 1,\n 1, 1,\n 1, 0,\n 0, 0,\n\n // v4-v7-v6-v1 back\n 0, 1,\n 1, 1,\n 1, 0,\n 0, 0\n ],\n\n // Indices - these organise the\n // positions and uv texture coordinates\n // into geometric primitives in accordance\n // with the \"primitive\" parameter,\n // in this case a set of three indices\n // for each triangle.\n //\n // Note that each triangle is specified\n // in counter-clockwise winding order.\n //\n // You can specify them in clockwise\n // order if you configure the Modes\n // node's frontFace flag as \"cw\", instead of\n // the default \"ccw\".\n indices: [\n 0, 1, 2,\n 0, 2, 3,\n // front\n 4, 5, 6,\n 4, 6, 7,\n // right\n 8, 9, 10,\n 8, 10, 11,\n // top\n 12, 13, 14,\n 12, 14, 15,\n // left\n 16, 17, 18,\n 16, 18, 19,\n // bottom\n 20, 21, 22,\n 20, 22, 23\n ]\n });\n}\n\n/**\n * @desc A **Material** defines the surface appearance of attached {@link Mesh}es.\n *\n * Material is the base class for:\n *\n * * {@link MetallicMaterial} - physically-based material for metallic surfaces. Use this one for things made of metal.\n * * {@link SpecularMaterial} - physically-based material for non-metallic (dielectric) surfaces. Use this one for insulators, such as ceramics, plastics, wood etc.\n * * {@link PhongMaterial} - material for classic Blinn-Phong shading. This is less demanding of graphics hardware than the physically-based materials.\n * * {@link LambertMaterial} - material for fast, flat-shaded CAD rendering without textures. Use this for navigating huge CAD or BIM models interactively. This material gives the best rendering performance and uses the least memory.\n * * {@link EmphasisMaterial} - defines the appearance of Meshes when \"xrayed\" or \"highlighted\".\n * * {@link EdgeMaterial} - defines the appearance of Meshes when edges are emphasized.\n *\n * A {@link Scene} is allowed to contain a mixture of these material types.\n *\n */\n\nclass Material extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Material\";\n }\n\n constructor(owner, cfg={}) {\n super(owner, cfg);\n stats.memory.materials++;\n }\n\n destroy() {\n super.destroy();\n stats.memory.materials--;\n }\n}\n\nconst alphaModes$1 = {\"opaque\": 0, \"mask\": 1, \"blend\": 2};\nconst alphaModeNames$1 = [\"opaque\", \"mask\", \"blend\"];\n\n/**\n * @desc Configures the normal rendered appearance of {@link Mesh}es using the non-physically-correct Blinn-Phong shading model.\n *\n * * Useful for non-realistic objects like gizmos.\n * * {@link SpecularMaterial} is best for insulators, such as wood, ceramics and plastic.\n * * {@link MetallicMaterial} is best for conductive materials, such as metal.\n * * {@link LambertMaterial} is appropriate for high-detail models that need to render as efficiently as possible.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Mesh} with a PhongMaterial with a diffuse {@link Texture} and a specular {@link Fresnel}, using a {@link buildTorusGeometry} to create the {@link Geometry}.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_PhongMaterial)]\n *\n * ```` javascript\n * import {Viewer, Mesh, buildTorusGeometry,\n * ReadableGeometry, PhongMaterial, Texture, Fresnel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * ambient: [0.9, 0.3, 0.9],\n * shininess: 30,\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * specularFresnel: new Fresnel(viewer.scene, {\n * leftColor: [1.0, 1.0, 1.0],\n * rightColor: [0.0, 0.0, 0.0],\n * power: 4\n * })\n * })\n * });\n * ````\n *\n * ## PhongMaterial Properties\n *\n * The following table summarizes PhongMaterial properties:\n *\n * | Property | Type | Range | Default Value | Space | Description |\n * |:--------:|:----:|:-----:|:-------------:|:-----:|:-----------:|\n * | {@link PhongMaterial#ambient} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the ambient light reflected by the material. |\n * | {@link PhongMaterial#diffuse} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the diffuse light reflected by the material. |\n * | {@link PhongMaterial#specular} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the specular light reflected by the material. |\n * | {@link PhongMaterial#emissive} | Array | [0, 1] for all components | [0,0,0] | linear | The RGB components of the light emitted by the material. |\n * | {@link PhongMaterial#alpha} | Number | [0, 1] | 1 | linear | The transparency of the material surface (0 fully transparent, 1 fully opaque). |\n * | {@link PhongMaterial#shininess} | Number | [0, 128] | 80 | linear | Determines the size and sharpness of specular highlights. |\n * | {@link PhongMaterial#reflectivity} | Number | [0, 1] | 1 | linear | Determines the amount of reflectivity. |\n * | {@link PhongMaterial#diffuseMap} | {@link Texture} | | null | sRGB | Texture RGB components multiplying by {@link PhongMaterial#diffuse}. If the fourth component (A) is present, it multiplies by {@link PhongMaterial#alpha}. |\n * | {@link PhongMaterial#specularMap} | {@link Texture} | | null | sRGB | Texture RGB components multiplying by {@link PhongMaterial#specular}. If the fourth component (A) is present, it multiplies by {@link PhongMaterial#alpha}. |\n * | {@link PhongMaterial#emissiveMap} | {@link Texture} | | null | linear | Texture with RGB components multiplying by {@link PhongMaterial#emissive}. |\n * | {@link PhongMaterial#alphaMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link PhongMaterial#alpha}. |\n * | {@link PhongMaterial#occlusionMap} | {@link Texture} | | null | linear | Ambient occlusion texture multiplying by {@link PhongMaterial#ambient}, {@link PhongMaterial#diffuse} and {@link PhongMaterial#specular}. |\n * | {@link PhongMaterial#normalMap} | {@link Texture} | | null | linear | Tangent-space normal map. |\n * | {@link PhongMaterial#diffuseFresnel} | {@link Fresnel} | | null | | Fresnel term applied to {@link PhongMaterial#diffuse}. |\n * | {@link PhongMaterial#specularFresnel} | {@link Fresnel} | | null | | Fresnel term applied to {@link PhongMaterial#specular}. |\n * | {@link PhongMaterial#emissiveFresnel} | {@link Fresnel} | | null | | Fresnel term applied to {@link PhongMaterial#emissive}. |\n * | {@link PhongMaterial#reflectivityFresnel} | {@link Fresnel} | | null | | Fresnel term applied to {@link PhongMaterial#reflectivity}. |\n * | {@link PhongMaterial#alphaFresnel} | {@link Fresnel} | | null | | Fresnel term applied to {@link PhongMaterial#alpha}. |\n * | {@link PhongMaterial#lineWidth} | Number | [0..100] | 1 | | Line width in pixels. |\n * | {@link PhongMaterial#pointSize} | Number | [0..100] | 1 | | Point size in pixels. |\n * | {@link PhongMaterial#alphaMode} | String | \"opaque\", \"blend\", \"mask\" | \"blend\" | | Alpha blend mode. |\n * | {@link PhongMaterial#alphaCutoff} | Number | [0..1] | 0.5 | | Alpha cutoff value. |\n * | {@link PhongMaterial#backfaces} | Boolean | | false | | Whether to render geometry backfaces. |\n * | {@link PhongMaterial#frontface} | String | \"ccw\", \"cw\" | \"ccw\" | | The winding order for geometry frontfaces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise. |\n */\nclass PhongMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"PhongMaterial\";\n }\n\n /**\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The PhongMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.ambient=[1.0, 1.0, 1.0 ]] PhongMaterial ambient color.\n * @param {Number[]} [cfg.diffuse=[ 1.0, 1.0, 1.0 ]] PhongMaterial diffuse color.\n * @param {Number[]} [cfg.specular=[ 1.0, 1.0, 1.0 ]] PhongMaterial specular color.\n * @param {Number[]} [cfg.emissive=[ 0.0, 0.0, 0.0 ]] PhongMaterial emissive color.\n * @param {Number} [cfg.alpha=1] Scalar in range 0-1 that controls alpha, where 0 is completely transparent and 1 is completely opaque.\n * @param {Number} [cfg.shininess=80] Scalar in range 0-128 that determines the size and sharpness of specular highlights.\n * @param {Number} [cfg.reflectivity=1] Scalar in range 0-1 that controls how much {@link ReflectionMap} is reflected.\n * @param {Number} [cfg.lineWidth=1] Scalar that controls the width of lines.\n * @param {Number} [cfg.pointSize=1] Scalar that controls the size of points.\n * @param {Texture} [cfg.ambientMap=null] A ambient map {@link Texture}, which will multiply by the diffuse property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.diffuseMap=null] A diffuse map {@link Texture}, which will override the effect of the diffuse property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.specularMap=null] A specular map {@link Texture}, which will override the effect of the specular property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.emissiveMap=undefined] An emissive map {@link Texture}, which will override the effect of the emissive property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.normalMap=undefined] A normal map {@link Texture}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.alphaMap=undefined] An alpha map {@link Texture}, which will override the effect of the alpha property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.reflectivityMap=undefined] A reflectivity control map {@link Texture}, which will override the effect of the reflectivity property. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Texture} [cfg.occlusionMap=null] An occlusion map {@link Texture}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Fresnel} [cfg.diffuseFresnel=undefined] A diffuse {@link Fresnel\"}}Fresnel{{/crossLink}}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Fresnel} [cfg.specularFresnel=undefined] A specular {@link Fresnel\"}}Fresnel{{/crossLink}}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Fresnel} [cfg.emissiveFresnel=undefined] An emissive {@link Fresnel\"}}Fresnel{{/crossLink}}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Fresnel} [cfg.alphaFresnel=undefined] An alpha {@link Fresnel\"}}Fresnel{{/crossLink}}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {Fresnel} [cfg.reflectivityFresnel=undefined] A reflectivity {@link Fresnel\"}}Fresnel{{/crossLink}}. Must be within the same {@link Scene} as this PhongMaterial.\n * @param {String} [cfg.alphaMode=\"opaque\"] The alpha blend mode - accepted values are \"opaque\", \"blend\" and \"mask\". See the {@link PhongMaterial#alphaMode} property for more info.\n * @param {Number} [cfg.alphaCutoff=0.5] The alpha cutoff value. See the {@link PhongMaterial#alphaCutoff} property for more info.\n * @param {Boolean} [cfg.backfaces=false] Whether to render geometry backfaces.\n * @param {Boolean} [cfg.frontface=\"ccw\"] The winding order for geometry front faces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"PhongMaterial\",\n ambient: math.vec3([1.0, 1.0, 1.0]),\n diffuse: math.vec3([1.0, 1.0, 1.0]),\n specular: math.vec3([1.0, 1.0, 1.0]),\n emissive: math.vec3([0.0, 0.0, 0.0]),\n alpha: null,\n shininess: null,\n reflectivity: null,\n alphaMode: null,\n alphaCutoff: null,\n lineWidth: null,\n pointSize: null,\n backfaces: null,\n frontface: null, // Boolean for speed; true == \"ccw\", false == \"cw\"\n hash: null\n });\n\n this.ambient = cfg.ambient;\n this.diffuse = cfg.diffuse;\n this.specular = cfg.specular;\n this.emissive = cfg.emissive;\n this.alpha = cfg.alpha;\n this.shininess = cfg.shininess;\n this.reflectivity = cfg.reflectivity;\n this.lineWidth = cfg.lineWidth;\n this.pointSize = cfg.pointSize;\n\n if (cfg.ambientMap) {\n this._ambientMap = this._checkComponent(\"Texture\", cfg.ambientMap);\n }\n if (cfg.diffuseMap) {\n this._diffuseMap = this._checkComponent(\"Texture\", cfg.diffuseMap);\n }\n if (cfg.specularMap) {\n this._specularMap = this._checkComponent(\"Texture\", cfg.specularMap);\n }\n if (cfg.emissiveMap) {\n this._emissiveMap = this._checkComponent(\"Texture\", cfg.emissiveMap);\n }\n if (cfg.alphaMap) {\n this._alphaMap = this._checkComponent(\"Texture\", cfg.alphaMap);\n }\n if (cfg.reflectivityMap) {\n this._reflectivityMap = this._checkComponent(\"Texture\", cfg.reflectivityMap);\n }\n if (cfg.normalMap) {\n this._normalMap = this._checkComponent(\"Texture\", cfg.normalMap);\n }\n if (cfg.occlusionMap) {\n this._occlusionMap = this._checkComponent(\"Texture\", cfg.occlusionMap);\n }\n if (cfg.diffuseFresnel) {\n this._diffuseFresnel = this._checkComponent(\"Fresnel\", cfg.diffuseFresnel);\n }\n if (cfg.specularFresnel) {\n this._specularFresnel = this._checkComponent(\"Fresnel\", cfg.specularFresnel);\n }\n if (cfg.emissiveFresnel) {\n this._emissiveFresnel = this._checkComponent(\"Fresnel\", cfg.emissiveFresnel);\n }\n if (cfg.alphaFresnel) {\n this._alphaFresnel = this._checkComponent(\"Fresnel\", cfg.alphaFresnel);\n }\n if (cfg.reflectivityFresnel) {\n this._reflectivityFresnel = this._checkComponent(\"Fresnel\", cfg.reflectivityFresnel);\n }\n\n this.alphaMode = cfg.alphaMode;\n this.alphaCutoff = cfg.alphaCutoff;\n this.backfaces = cfg.backfaces;\n this.frontface = cfg.frontface;\n\n this._makeHash();\n }\n\n _makeHash() {\n const state = this._state;\n const hash = [\"/p\"]; // 'P' for Phong\n if (this._normalMap) {\n hash.push(\"/nm\");\n if (this._normalMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._ambientMap) {\n hash.push(\"/am\");\n if (this._ambientMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n hash.push(\"/\" + this._ambientMap.encoding);\n }\n if (this._diffuseMap) {\n hash.push(\"/dm\");\n if (this._diffuseMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n hash.push(\"/\" + this._diffuseMap.encoding);\n }\n if (this._specularMap) {\n hash.push(\"/sm\");\n if (this._specularMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._emissiveMap) {\n hash.push(\"/em\");\n if (this._emissiveMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n hash.push(\"/\" + this._emissiveMap.encoding);\n }\n if (this._alphaMap) {\n hash.push(\"/opm\");\n if (this._alphaMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._reflectivityMap) {\n hash.push(\"/rm\");\n if (this._reflectivityMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._occlusionMap) {\n hash.push(\"/ocm\");\n if (this._occlusionMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._diffuseFresnel) {\n hash.push(\"/df\");\n }\n if (this._specularFresnel) {\n hash.push(\"/sf\");\n }\n if (this._emissiveFresnel) {\n hash.push(\"/ef\");\n }\n if (this._alphaFresnel) {\n hash.push(\"/of\");\n }\n if (this._reflectivityFresnel) {\n hash.push(\"/rf\");\n }\n hash.push(\";\");\n state.hash = hash.join(\"\");\n }\n\n /**\n * Sets the PhongMaterial's ambient color.\n *\n * Default value is ````[0.3, 0.3, 0.3]````.\n *\n * @type {Number[]}\n */\n set ambient(value) {\n let ambient = this._state.ambient;\n if (!ambient) {\n ambient = this._state.ambient = new Float32Array(3);\n } else if (value && ambient[0] === value[0] && ambient[1] === value[1] && ambient[2] === value[2]) {\n return;\n }\n if (value) {\n ambient[0] = value[0];\n ambient[1] = value[1];\n ambient[2] = value[2];\n } else {\n ambient[0] = .2;\n ambient[1] = .2;\n ambient[2] = .2;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's ambient color.\n *\n * Default value is ````[0.3, 0.3, 0.3]````.\n *\n * @type {Number[]}\n */\n get ambient() {\n return this._state.ambient;\n }\n\n /**\n * Sets the PhongMaterial's diffuse color.\n *\n * Multiplies by {@link PhongMaterial#diffuseMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n set diffuse(value) {\n let diffuse = this._state.diffuse;\n if (!diffuse) {\n diffuse = this._state.diffuse = new Float32Array(3);\n } else if (value && diffuse[0] === value[0] && diffuse[1] === value[1] && diffuse[2] === value[2]) {\n return;\n }\n if (value) {\n diffuse[0] = value[0];\n diffuse[1] = value[1];\n diffuse[2] = value[2];\n } else {\n diffuse[0] = 1;\n diffuse[1] = 1;\n diffuse[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Sets the PhongMaterial's diffuse color.\n *\n * Multiplies by {@link PhongMaterial#diffuseMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n get diffuse() {\n return this._state.diffuse;\n }\n\n /**\n * Sets the PhongMaterial's specular color.\n *\n * Multiplies by {@link PhongMaterial#specularMap}.\n * Default value is ````[1.0, 1.0, 1.0]````.\n * @type {Number[]}\n */\n set specular(value) {\n let specular = this._state.specular;\n if (!specular) {\n specular = this._state.specular = new Float32Array(3);\n } else if (value && specular[0] === value[0] && specular[1] === value[1] && specular[2] === value[2]) {\n return;\n }\n if (value) {\n specular[0] = value[0];\n specular[1] = value[1];\n specular[2] = value[2];\n } else {\n specular[0] = 1;\n specular[1] = 1;\n specular[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's specular color.\n *\n * Multiplies by {@link PhongMaterial#specularMap}.\n * Default value is ````[1.0, 1.0, 1.0]````.\n * @type {Number[]}\n */\n get specular() {\n return this._state.specular;\n }\n\n /**\n * Sets the PhongMaterial's emissive color.\n *\n * Multiplies by {@link PhongMaterial#emissiveMap}.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n * @type {Number[]}\n */\n set emissive(value) {\n let emissive = this._state.emissive;\n if (!emissive) {\n emissive = this._state.emissive = new Float32Array(3);\n } else if (value && emissive[0] === value[0] && emissive[1] === value[1] && emissive[2] === value[2]) {\n return;\n }\n if (value) {\n emissive[0] = value[0];\n emissive[1] = value[1];\n emissive[2] = value[2];\n } else {\n emissive[0] = 0;\n emissive[1] = 0;\n emissive[2] = 0;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's emissive color.\n *\n * Multiplies by {@link PhongMaterial#emissiveMap}.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n * @type {Number[]}\n */\n get emissive() {\n return this._state.emissive;\n }\n\n /**\n * Sets the PhongMaterial alpha.\n *\n * This is a factor in the range [0..1] indicating how transparent the PhongMaterial is.\n *\n * A value of 0.0 indicates fully transparent, 1.0 is fully opaque.\n *\n * Multiplies by {@link PhongMaterial#alphaMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set alpha(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.alpha === value) {\n return;\n }\n this._state.alpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial alpha.\n *\n * This is a factor in the range [0..1] indicating how transparent the PhongMaterial is.\n *\n * A value of 0.0 indicates fully transparent, 1.0 is fully opaque.\n *\n * Multiplies by {@link PhongMaterial#alphaMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get alpha() {\n return this._state.alpha;\n }\n\n /**\n * Sets the PhongMaterial shininess.\n *\n * This is a factor in range [0..128] that determines the size and sharpness of the specular highlights create by this PhongMaterial.\n *\n * Larger values produce smaller, sharper highlights. A value of 0.0 gives very large highlights that are almost never\n * desirable. Try values close to 10 for a larger, fuzzier highlight and values of 100 or more for a small, sharp\n * highlight.\n *\n * Default value is ```` 80.0````.\n *\n * @type {Number}\n */\n set shininess(value) {\n this._state.shininess = value !== undefined ? value : 80;\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial shininess.\n *\n * This is a factor in range [0..128] that determines the size and sharpness of the specular highlights create by this PhongMaterial.\n *\n * Larger values produce smaller, sharper highlights. A value of 0.0 gives very large highlights that are almost never\n * desirable. Try values close to 10 for a larger, fuzzier highlight and values of 100 or more for a small, sharp\n * highlight.\n *\n * Default value is ```` 80.0````.\n *\n * @type {Number}\n */\n get shininess() {\n return this._state.shininess;\n }\n\n /**\n * Sets the PhongMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set lineWidth(value) {\n this._state.lineWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get lineWidth() {\n return this._state.lineWidth;\n }\n\n /**\n * Sets the PhongMaterial's point size.\n *\n * Default value is 1.0.\n *\n * @type {Number}\n */\n set pointSize(value) {\n this._state.pointSize = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's point size.\n *\n * Default value is 1.0.\n *\n * @type {Number}\n */\n get pointSize() {\n return this._state.pointSize;\n }\n\n /**\n * Sets how much {@link ReflectionMap} is reflected by this PhongMaterial.\n *\n * This is a scalar in range ````[0-1]````. Default value is ````1.0````.\n *\n * The surface will be non-reflective when this is ````0````, and completely mirror-like when it is ````1.0````.\n *\n * Multiplies by {@link PhongMaterial#reflectivityMap}.\n *\n * @type {Number}\n */\n set reflectivity(value) {\n this._state.reflectivity = value !== undefined ? value : 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets how much {@link ReflectionMap} is reflected by this PhongMaterial.\n *\n * This is a scalar in range ````[0-1]````. Default value is ````1.0````.\n *\n * The surface will be non-reflective when this is ````0````, and completely mirror-like when it is ````1.0````.\n *\n * Multiplies by {@link PhongMaterial#reflectivityMap}.\n *\n * @type {Number}\n */\n get reflectivity() {\n return this._state.reflectivity;\n }\n\n /**\n * Gets the PhongMaterials's normal map {@link Texture}.\n *\n * @type {Texture}\n */\n get normalMap() {\n return this._normalMap;\n }\n\n /**\n * Gets the PhongMaterials's ambient {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#ambient}.\n *\n * @type {Texture}\n */\n get ambientMap() {\n return this._ambientMap;\n }\n\n /**\n * Gets the PhongMaterials's diffuse {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#diffuse}.\n *\n * @type {Texture}\n */\n get diffuseMap() {\n return this._diffuseMap;\n }\n\n /**\n * Gets the PhongMaterials's specular {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#specular}.\n *\n * @type {Texture}\n */\n get specularMap() {\n return this._specularMap;\n }\n\n /**\n * Gets the PhongMaterials's emissive {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#emissive}.\n *\n * @type {Texture}\n */\n get emissiveMap() {\n return this._emissiveMap;\n }\n\n /**\n * Gets the PhongMaterials's alpha {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#alpha}.\n *\n * @type {Texture}\n */\n get alphaMap() {\n return this._alphaMap;\n }\n\n /**\n * Gets the PhongMaterials's reflectivity {@link Texture}.\n *\n * Multiplies by {@link PhongMaterial#reflectivity}.\n *\n * @type {Texture}\n */\n get reflectivityMap() {\n return this._reflectivityMap;\n }\n\n /**\n * Gets the PhongMaterials's ambient occlusion {@link Texture}.\n *\n * @type {Texture}\n */\n get occlusionMap() {\n return this._occlusionMap;\n }\n\n /**\n * Gets the PhongMaterials's diffuse {@link Fresnel}.\n *\n * Applies to {@link PhongMaterial#diffuse}.\n *\n * @type {Fresnel}\n */\n get diffuseFresnel() {\n return this._diffuseFresnel;\n }\n\n /**\n * Gets the PhongMaterials's specular {@link Fresnel}.\n *\n * Applies to {@link PhongMaterial#specular}.\n *\n * @type {Fresnel}\n */\n get specularFresnel() {\n return this._specularFresnel;\n }\n\n /**\n * Gets the PhongMaterials's emissive {@link Fresnel}.\n *\n * Applies to {@link PhongMaterial#emissive}.\n *\n * @type {Fresnel}\n */\n get emissiveFresnel() {\n return this._emissiveFresnel;\n }\n\n /**\n * Gets the PhongMaterials's alpha {@link Fresnel}.\n *\n * Applies to {@link PhongMaterial#alpha}.\n *\n * @type {Fresnel}\n */\n get alphaFresnel() {\n return this._alphaFresnel;\n }\n\n /**\n * Gets the PhongMaterials's reflectivity {@link Fresnel}.\n *\n * Applies to {@link PhongMaterial#reflectivity}.\n *\n * @type {Fresnel}\n */\n get reflectivityFresnel() {\n return this._reflectivityFresnel;\n }\n\n /**\n * Sets the PhongMaterial's alpha rendering mode.\n *\n * This governs how alpha is treated. Alpha is the combined result of {@link PhongMaterial#alpha} and {@link PhongMaterial#alphaMap}.\n *\n * Supported values are:\n *\n * * \"opaque\" - The alpha value is ignored and the rendered output is fully opaque (default).\n * * \"mask\" - The rendered output is either fully opaque or fully transparent depending on the alpha value and the specified alpha cutoff value.\n * * \"blend\" - The alpha value is used to composite the source and destination areas. The rendered output is combined with the background using the normal painting operation (i.e. the Porter and Duff over operator).\n *\n *@type {String}\n */\n set alphaMode(alphaMode) {\n alphaMode = alphaMode || \"opaque\";\n let value = alphaModes$1[alphaMode];\n if (value === undefined) {\n this.error(\"Unsupported value for 'alphaMode': \" + alphaMode + \" - defaulting to 'opaque'\");\n value = \"opaque\";\n }\n if (this._state.alphaMode === value) {\n return;\n }\n this._state.alphaMode = value;\n this.glRedraw();\n }\n\n /**\n * Gets the PhongMaterial's alpha rendering mode.\n *\n *@type {String}\n */\n get alphaMode() {\n return alphaModeNames$1[this._state.alphaMode];\n }\n\n /**\n * Sets the PhongMaterial's alpha cutoff value.\n *\n * This specifies the cutoff threshold when {@link PhongMaterial#alphaMode} equals \"mask\". If the alpha is greater than or equal to this value then it is rendered as fully\n * opaque, otherwise, it is rendered as fully transparent. A value greater than 1.0 will render the entire material as fully transparent. This value is ignored for other modes.\n *\n * Alpha is the combined result of {@link PhongMaterial#alpha} and {@link PhongMaterial#alphaMap}.\n *\n * Default value is ````0.5````.\n *\n * @type {Number}\n */\n set alphaCutoff(alphaCutoff) {\n if (alphaCutoff === null || alphaCutoff === undefined) {\n alphaCutoff = 0.5;\n }\n if (this._state.alphaCutoff === alphaCutoff) {\n return;\n }\n this._state.alphaCutoff = alphaCutoff;\n }\n\n /**\n * Gets the PhongMaterial's alpha cutoff value.\n *\n * @type {Number}\n */\n get alphaCutoff() {\n return this._state.alphaCutoff;\n }\n\n /**\n * Sets whether backfaces are visible on attached {@link Mesh}es.\n *\n * The backfaces will belong to {@link Geometry} compoents that are also attached to the {@link Mesh}es.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n set backfaces(value) {\n value = !!value;\n if (this._state.backfaces === value) {\n return;\n }\n this._state.backfaces = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether backfaces are visible on attached {@link Mesh}es.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._state.backfaces;\n }\n\n /**\n * Sets the winding direction of geometry front faces.\n *\n * Default is ````\"ccw\"````.\n * @type {String}\n */\n set frontface(value) {\n value = value !== \"cw\";\n if (this._state.frontface === value) {\n return;\n }\n this._state.frontface = value;\n this.glRedraw();\n }\n\n /**\n * Gets the winding direction of front faces on attached {@link Mesh}es.\n *\n * Default is ````\"ccw\"````.\n * @type {String}\n */\n get frontface() {\n return this._state.frontface ? \"ccw\" : \"cw\";\n }\n\n /**\n * Destroys this PhongMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nconst PRESETS$3 = {\n \"default\": {\n fill: true,\n fillColor: [0.4, 0.4, 0.4],\n fillAlpha: 0.2,\n edges: true,\n edgeColor: [0.2, 0.2, 0.2],\n edgeAlpha: 0.5,\n edgeWidth: 1\n },\n \"defaultWhiteBG\": {\n fill: true,\n fillColor: [1, 1, 1],\n fillAlpha: 0.6,\n edgeColor: [0.2, 0.2, 0.2],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"defaultLightBG\": {\n fill: true,\n fillColor: [0.4, 0.4, 0.4],\n fillAlpha: 0.2,\n edges: true,\n edgeColor: [0.2, 0.2, 0.2],\n edgeAlpha: 0.5,\n edgeWidth: 1\n },\n \"defaultDarkBG\": {\n fill: true,\n fillColor: [0.4, 0.4, 0.4],\n fillAlpha: 0.2,\n edges: true,\n edgeColor: [0.5, 0.5, 0.5],\n edgeAlpha: 0.5,\n edgeWidth: 1\n },\n \"phosphorous\": {\n fill: true,\n fillColor: [0.0, 0.0, 0.0],\n fillAlpha: 0.4,\n edges: true,\n edgeColor: [0.9, 0.9, 0.9],\n edgeAlpha: 0.5,\n edgeWidth: 2\n },\n \"sunset\": {\n fill: true,\n fillColor: [0.9, 0.9, 0.6],\n fillAlpha: 0.2,\n edges: true,\n edgeColor: [0.9, 0.9, 0.9],\n edgeAlpha: 0.5,\n edgeWidth: 1\n },\n \"vectorscope\": {\n fill: true,\n fillColor: [0.0, 0.0, 0.0],\n fillAlpha: 0.7,\n edges: true,\n edgeColor: [0.2, 1.0, 0.2],\n edgeAlpha: 1,\n edgeWidth: 2\n },\n \"battlezone\": {\n fill: true,\n fillColor: [0.0, 0.0, 0.0],\n fillAlpha: 1.0,\n edges: true,\n edgeColor: [0.2, 1.0, 0.2],\n edgeAlpha: 1,\n edgeWidth: 3\n },\n \"sepia\": {\n fill: true,\n fillColor: [0.970588207244873, 0.7965892553329468, 0.6660899519920349],\n fillAlpha: 0.4,\n edges: true,\n edgeColor: [0.529411792755127, 0.4577854573726654, 0.4100345969200134],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"yellowHighlight\": {\n fill: true,\n fillColor: [1.0, 1.0, 0.0],\n fillAlpha: 0.5,\n edges: true,\n edgeColor: [0.529411792755127, 0.4577854573726654, 0.4100345969200134],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"greenSelected\": {\n fill: true,\n fillColor: [0.0, 1.0, 0.0],\n fillAlpha: 0.5,\n edges: true,\n edgeColor: [0.4577854573726654, 0.529411792755127, 0.4100345969200134],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"gamegrid\": {\n fill: true,\n fillColor: [0.2, 0.2, 0.7],\n fillAlpha: 0.9,\n edges: true,\n edgeColor: [0.4, 0.4, 1.6],\n edgeAlpha: 0.8,\n edgeWidth: 3\n }\n};\n\n/**\n * Configures the appearance of {@link Entity}s when they are xrayed, highlighted or selected.\n *\n * * XRay an {@link Entity} by setting {@link Entity#xrayed} ````true````.\n * * Highlight an {@link Entity} by setting {@link Entity#highlighted} ````true````.\n * * Select an {@link Entity} by setting {@link Entity#selected} ````true````.\n * * When {@link Entity}s are within the subtree of a root {@link Entity}, then setting {@link Entity#xrayed}, {@link Entity#highlighted} or {@link Entity#selected}\n * on the root will collectively set those properties on all sub-{@link Entity}s.\n * * EmphasisMaterial provides several presets. Select a preset by setting {@link EmphasisMaterial#preset} to the ID of a preset in {@link EmphasisMaterial#presets}.\n * * By default, a {@link Mesh} uses the default EmphasisMaterials in {@link Scene#xrayMaterial}, {@link Scene#highlightMaterial} and {@link Scene#selectedMaterial}\n * but you can assign each {@link Mesh#xrayMaterial}, {@link Mesh#highlightMaterial} or {@link Mesh#selectedMaterial} to a custom EmphasisMaterial, if required.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Mesh} with its own XRayMaterial and set {@link Mesh#xrayed} ````true```` to xray it.\n *\n * Recall that {@link Mesh} is a concrete subtype of the abstract {@link Entity} base class.\n *\n * ````javascript\n * new Mesh(viewer.scene, {\n * geometry: new BoxGeometry(viewer.scene, {\n * edgeThreshold: 1\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.2, 0.2, 1.0]\n * }),\n * xrayMaterial: new EmphasisMaterial(viewer.scene, {\n * fill: true,\n * fillColor: [0, 0, 0],\n * fillAlpha: 0.7,\n * edges: true,\n * edgeColor: [0.2, 1.0, 0.2],\n * edgeAlpha: 1.0,\n * edgeWidth: 2\n * }),\n * xrayed: true\n * });\n * ````\n *\n * Note the ````edgeThreshold```` configuration for the {@link ReadableGeometry} on our {@link Mesh}. EmphasisMaterial configures\n * a wireframe representation of the {@link ReadableGeometry} for the selected emphasis mode, which will have inner edges (those edges between\n * adjacent co-planar triangles) removed for visual clarity. The ````edgeThreshold```` indicates that, for\n * this particular {@link ReadableGeometry}, an inner edge is one where the angle between the surface normals of adjacent triangles\n * is not greater than ````5```` degrees. That's set to ````2```` by default, but we can override it to tweak the effect\n * as needed for particular Geometries.\n *\n * Here's the example again, this time implicitly defaulting to the {@link Scene#edgeMaterial}. We'll also modify that EdgeMaterial\n * to customize the effect.\n *\n * ````javascript\n * new Mesh({\n * geometry: new TeapotGeometry(viewer.scene, {\n * edgeThreshold: 5\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.2, 0.2, 1.0]\n * }),\n * xrayed: true\n * });\n *\n * var xrayMaterial = viewer.scene.xrayMaterial;\n *\n * xrayMaterial.fillColor = [0.2, 1.0, 0.2];\n * xrayMaterial.fillAlpha = 1.0;\n * ````\n *\n * ## Presets\n *\n * Let's switch the {@link Scene#xrayMaterial} to one of the presets in {@link EmphasisMaterial#presets}:\n *\n * ````javascript\n * viewer.xrayMaterial.preset = EmphasisMaterial.presets[\"sepia\"];\n * ````\n *\n * We can also create an EmphasisMaterial from a preset, while overriding properties of the preset as required:\n *\n * ````javascript\n * var myEmphasisMaterial = new EMphasisMaterial(viewer.scene, {\n * preset: \"sepia\",\n * fillColor = [1.0, 0.5, 0.5]\n * });\n * ````\n */\nclass EmphasisMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"EmphasisMaterial\";\n }\n\n /**\n * Gets available EmphasisMaterial presets.\n *\n * @type {Object}\n */\n get presets() {\n return PRESETS$3;\n };\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The EmphasisMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Boolean} [cfg.fill=true] Indicates if xray surfaces are filled with color.\n * @param {Number[]} [cfg.fillColor=[0.4,0.4,0.4]] EmphasisMaterial fill color.\n * @param {Number} [cfg.fillAlpha=0.2] Transparency of filled xray faces. A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n * @param {Boolean} [cfg.edges=true] Indicates if xray edges are visible.\n * @param {Number[]} [cfg.edgeColor=[0.2,0.2,0.2]] RGB color of xray edges.\n * @param {Number} [cfg.edgeAlpha=0.5] Transparency of xray edges. A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n * @param {Number} [cfg.edgeWidth=1] Width of xray edges, in pixels.\n * @param {String} [cfg.preset] Selects a preset EmphasisMaterial configuration - see {@link EmphasisMaterial#presets}.\n * @param {Boolean} [cfg.backfaces=false] Whether to render geometry backfaces when emphasising.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"EmphasisMaterial\",\n fill: null,\n fillColor: null,\n fillAlpha: null,\n edges: null,\n edgeColor: null,\n edgeAlpha: null,\n edgeWidth: null,\n backfaces: true\n });\n\n this._preset = \"default\";\n\n if (cfg.preset) { // Apply preset then override with configs where provided\n this.preset = cfg.preset;\n if (cfg.fill !== undefined) {\n this.fill = cfg.fill;\n }\n if (cfg.fillColor) {\n this.fillColor = cfg.fillColor;\n }\n if (cfg.fillAlpha !== undefined) {\n this.fillAlpha = cfg.fillAlpha;\n }\n if (cfg.edges !== undefined) {\n this.edges = cfg.edges;\n }\n if (cfg.edgeColor) {\n this.edgeColor = cfg.edgeColor;\n }\n if (cfg.edgeAlpha !== undefined) {\n this.edgeAlpha = cfg.edgeAlpha;\n }\n if (cfg.edgeWidth !== undefined) {\n this.edgeWidth = cfg.edgeWidth;\n }\n if (cfg.backfaces !== undefined) {\n this.backfaces = cfg.backfaces;\n }\n } else {\n this.fill = cfg.fill;\n this.fillColor = cfg.fillColor;\n this.fillAlpha = cfg.fillAlpha;\n this.edges = cfg.edges;\n this.edgeColor = cfg.edgeColor;\n this.edgeAlpha = cfg.edgeAlpha;\n this.edgeWidth = cfg.edgeWidth;\n this.backfaces = cfg.backfaces;\n }\n }\n\n /**\n * Sets if surfaces are filled with color.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set fill(value) {\n value = value !== false;\n if (this._state.fill === value) {\n return;\n }\n this._state.fill = value;\n this.glRedraw();\n }\n\n /**\n * Gets if surfaces are filled with color.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get fill() {\n return this._state.fill;\n }\n\n /**\n * Sets the RGB color of filled faces.\n *\n * Default is ````[0.4, 0.4, 0.4]````.\n *\n * @type {Number[]}\n */\n set fillColor(value) {\n let fillColor = this._state.fillColor;\n if (!fillColor) {\n fillColor = this._state.fillColor = new Float32Array(3);\n } else if (value && fillColor[0] === value[0] && fillColor[1] === value[1] && fillColor[2] === value[2]) {\n return;\n }\n if (value) {\n fillColor[0] = value[0];\n fillColor[1] = value[1];\n fillColor[2] = value[2];\n } else {\n fillColor[0] = 0.4;\n fillColor[1] = 0.4;\n fillColor[2] = 0.4;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB color of filled faces.\n *\n * Default is ````[0.4, 0.4, 0.4]````.\n *\n * @type {Number[]}\n */\n get fillColor() {\n return this._state.fillColor;\n }\n\n /**\n * Sets the transparency of filled faces.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default is ````0.2````.\n *\n * @type {Number}\n */\n set fillAlpha(value) {\n value = (value !== undefined && value !== null) ? value : 0.2;\n if (this._state.fillAlpha === value) {\n return;\n }\n this._state.fillAlpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets the transparency of filled faces.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default is ````0.2````.\n *\n * @type {Number}\n */\n get fillAlpha() {\n return this._state.fillAlpha;\n }\n\n /**\n * Sets if edges are visible.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set edges(value) {\n value = value !== false;\n if (this._state.edges === value) {\n return;\n }\n this._state.edges = value;\n this.glRedraw();\n }\n\n /**\n * Gets if edges are visible.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get edges() {\n return this._state.edges;\n }\n\n /**\n * Sets the RGB color of edges.\n *\n * Default is ```` [0.2, 0.2, 0.2]````.\n *\n * @type {Number[]}\n */\n set edgeColor(value) {\n let edgeColor = this._state.edgeColor;\n if (!edgeColor) {\n edgeColor = this._state.edgeColor = new Float32Array(3);\n } else if (value && edgeColor[0] === value[0] && edgeColor[1] === value[1] && edgeColor[2] === value[2]) {\n return;\n }\n if (value) {\n edgeColor[0] = value[0];\n edgeColor[1] = value[1];\n edgeColor[2] = value[2];\n } else {\n edgeColor[0] = 0.2;\n edgeColor[1] = 0.2;\n edgeColor[2] = 0.2;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB color of edges.\n *\n * Default is ```` [0.2, 0.2, 0.2]````.\n *\n * @type {Number[]}\n */\n get edgeColor() {\n return this._state.edgeColor;\n }\n\n /**\n * Sets the transparency of edges.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default is ````0.2````.\n *\n * @type {Number}\n */\n set edgeAlpha(value) {\n value = (value !== undefined && value !== null) ? value : 0.5;\n if (this._state.edgeAlpha === value) {\n return;\n }\n this._state.edgeAlpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets the transparency of edges.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default is ````0.2````.\n *\n * @type {Number}\n */\n get edgeAlpha() {\n return this._state.edgeAlpha;\n }\n\n /**\n * Sets edge width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n set edgeWidth(value) {\n this._state.edgeWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets edge width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n get edgeWidth() {\n return this._state.edgeWidth;\n }\n\n /**\n * Sets whether to render backfaces when {@link EmphasisMaterial#fill} is ````true````..\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n set backfaces(value) {\n value = !!value;\n if (this._state.backfaces === value) {\n return;\n }\n this._state.backfaces = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether to render backfaces when {@link EmphasisMaterial#fill} is ````true````..\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._state.backfaces;\n }\n\n /**\n * Selects a preset EmphasisMaterial configuration.\n *\n * Default value is \"default\".\n *\n * @type {String}\n */\n set preset(value) {\n value = value || \"default\";\n if (this._preset === value) {\n return;\n }\n const preset = PRESETS$3[value];\n if (!preset) {\n this.error(\"unsupported preset: '\" + value + \"' - supported values are \" + Object.keys(PRESETS$3).join(\", \"));\n return;\n }\n this.fill = preset.fill;\n this.fillColor = preset.fillColor;\n this.fillAlpha = preset.fillAlpha;\n this.edges = preset.edges;\n this.edgeColor = preset.edgeColor;\n this.edgeAlpha = preset.edgeAlpha;\n this.edgeWidth = preset.edgeWidth;\n this._preset = value;\n }\n\n /**\n * Gets the current preset EmphasisMaterial configuration.\n *\n * Default value is \"default\".\n *\n * @type {String}\n */\n get preset() {\n return this._preset;\n }\n\n /**\n * Destroys this EmphasisMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nconst PRESETS$2 = {\n \"default\": {\n edgeColor: [0.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"defaultWhiteBG\": {\n edgeColor: [0.2, 0.2, 0.2],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"defaultLightBG\": {\n edgeColor: [0.2, 0.2, 0.2],\n edgeAlpha: 1.0,\n edgeWidth: 1\n },\n \"defaultDarkBG\": {\n edgeColor: [0.5, 0.5, 0.5],\n edgeAlpha: 1.0,\n edgeWidth: 1\n }\n};\n\n/**\n * @desc Configures the appearance of {@link Entity}s when their edges are emphasised.\n *\n * * Emphasise edges of an {@link Entity} by setting {@link Entity#edges} ````true````.\n * * When {@link Entity}s are within the subtree of a root {@link Entity}, then setting {@link Entity#edges} on the root\n * will collectively set that property on all sub-{@link Entity}s.\n * * EdgeMaterial provides several presets. Select a preset by setting {@link EdgeMaterial#preset} to the ID of a preset in {@link EdgeMaterial#presets}.\n * * By default, a {@link Mesh} uses the default EdgeMaterial in {@link Scene#edgeMaterial}, but you can assign each {@link Mesh#edgeMaterial} to a custom EdgeMaterial if required.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Mesh} with its own EdgeMaterial and set {@link Mesh#edges} ````true```` to emphasise its edges.\n *\n * Recall that {@link Mesh} is a concrete subtype of the abstract {@link Entity} base class.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_EdgeMaterial)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry,\n * ReadableGeometry, PhongMaterial, EdgeMaterial} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n *\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 1.5,\n * heightSegments: 24,\n * widthSegments: 16,\n * edgeThreshold: 2 // Default is 10\n * })),\n *\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.4, 0.4, 1.0],\n * ambient: [0.9, 0.3, 0.9],\n * shininess: 30,\n * alpha: 0.5,\n * alphaMode: \"blend\"\n * }),\n *\n * edgeMaterial: new EdgeMaterial(viewer.scene, {\n * edgeColor: [0.0, 0.0, 1.0]\n * edgeAlpha: 1.0,\n * edgeWidth: 2\n * }),\n *\n * edges: true\n * });\n * ````\n *\n * Note the ````edgeThreshold```` configuration for the {@link ReadableGeometry} on our {@link Mesh}. EdgeMaterial configures\n * a wireframe representation of the {@link ReadableGeometry}, which will have inner edges (those edges between\n * adjacent co-planar triangles) removed for visual clarity. The ````edgeThreshold```` indicates that, for\n * this particular {@link ReadableGeometry}, an inner edge is one where the angle between the surface normals of adjacent triangles\n * is not greater than ````5```` degrees. That's set to ````2```` by default, but we can override it to tweak the effect\n * as needed for particular Geometries.\n *\n * Here's the example again, this time implicitly defaulting to the {@link Scene#edgeMaterial}. We'll also modify that EdgeMaterial\n * to customize the effect.\n *\n * ````javascript\n * new Mesh({\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 1.5,\n * heightSegments: 24,\n * widthSegments: 16,\n * edgeThreshold: 2 // Default is 10\n * })),\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.2, 0.2, 1.0]\n * }),\n * edges: true\n * });\n *\n * var edgeMaterial = viewer.scene.edgeMaterial;\n *\n * edgeMaterial.edgeColor = [0.2, 1.0, 0.2];\n * edgeMaterial.edgeAlpha = 1.0;\n * edgeMaterial.edgeWidth = 2;\n * ````\n *\n * ## Presets\n *\n * Let's switch the {@link Scene#edgeMaterial} to one of the presets in {@link EdgeMaterial#presets}:\n *\n * ````javascript\n * viewer.edgeMaterial.preset = EdgeMaterial.presets[\"sepia\"];\n * ````\n *\n * We can also create an EdgeMaterial from a preset, while overriding properties of the preset as required:\n *\n * ````javascript\n * var myEdgeMaterial = new EdgeMaterial(viewer.scene, {\n * preset: \"sepia\",\n * edgeColor = [1.0, 0.5, 0.5]\n * });\n * ````\n */\nclass EdgeMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"EdgeMaterial\";\n }\n\n /**\n * Gets available EdgeMaterial presets.\n *\n * @type {Object}\n */\n get presets() {\n return PRESETS$2;\n };\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The EdgeMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.edgeColor=[0.2,0.2,0.2]] RGB edge color.\n * @param {Number} [cfg.edgeAlpha=1.0] Edge transparency. A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n * @param {Number} [cfg.edgeWidth=1] Edge width in pixels.\n * @param {String} [cfg.preset] Selects a preset EdgeMaterial configuration - see {@link EdgeMaterial#presets}.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"EdgeMaterial\",\n edges: null,\n edgeColor: null,\n edgeAlpha: null,\n edgeWidth: null\n });\n\n this._preset = \"default\";\n\n if (cfg.preset) { // Apply preset then override with configs where provided\n this.preset = cfg.preset;\n if (cfg.edgeColor) {\n this.edgeColor = cfg.edgeColor;\n }\n if (cfg.edgeAlpha !== undefined) {\n this.edgeAlpha = cfg.edgeAlpha;\n }\n if (cfg.edgeWidth !== undefined) {\n this.edgeWidth = cfg.edgeWidth;\n }\n } else {\n this.edgeColor = cfg.edgeColor;\n this.edgeAlpha = cfg.edgeAlpha;\n this.edgeWidth = cfg.edgeWidth;\n }\n this.edges = (cfg.edges !== false);\n }\n\n\n /**\n * Sets if edges are visible.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set edges(value) {\n value = value !== false;\n if (this._state.edges === value) {\n return;\n }\n this._state.edges = value;\n this.glRedraw();\n }\n\n /**\n * Gets if edges are visible.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get edges() {\n return this._state.edges;\n }\n\n /**\n * Sets RGB edge color.\n *\n * Default value is ````[0.2, 0.2, 0.2]````.\n *\n * @type {Number[]}\n */\n set edgeColor(value) {\n let edgeColor = this._state.edgeColor;\n if (!edgeColor) {\n edgeColor = this._state.edgeColor = new Float32Array(3);\n } else if (value && edgeColor[0] === value[0] && edgeColor[1] === value[1] && edgeColor[2] === value[2]) {\n return;\n }\n if (value) {\n edgeColor[0] = value[0];\n edgeColor[1] = value[1];\n edgeColor[2] = value[2];\n } else {\n edgeColor[0] = 0.2;\n edgeColor[1] = 0.2;\n edgeColor[2] = 0.2;\n }\n this.glRedraw();\n }\n\n /**\n * Gets RGB edge color.\n *\n * Default value is ````[0.2, 0.2, 0.2]````.\n *\n * @type {Number[]}\n */\n get edgeColor() {\n return this._state.edgeColor;\n }\n\n /**\n * Sets edge transparency.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set edgeAlpha(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.edgeAlpha === value) {\n return;\n }\n this._state.edgeAlpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets edge transparency.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get edgeAlpha() {\n return this._state.edgeAlpha;\n }\n\n /**\n * Sets edge width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n set edgeWidth(value) {\n this._state.edgeWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets edge width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n get edgeWidth() {\n return this._state.edgeWidth;\n }\n\n /**\n * Selects a preset EdgeMaterial configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n set preset(value) {\n value = value || \"default\";\n if (this._preset === value) {\n return;\n }\n const preset = PRESETS$2[value];\n if (!preset) {\n this.error(\"unsupported preset: '\" + value + \"' - supported values are \" + Object.keys(PRESETS$2).join(\", \"));\n return;\n }\n this.edgeColor = preset.edgeColor;\n this.edgeAlpha = preset.edgeAlpha;\n this.edgeWidth = preset.edgeWidth;\n this._preset = value;\n }\n\n /**\n * The current preset EdgeMaterial configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n get preset() {\n return this._preset;\n }\n\n /**\n * Destroys this EdgeMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\n//----------------------------------------------------------------------------------------------------------------------\n\nconst unitsInfo = {\n meters: {\n abbrev: \"m\"\n },\n metres: {\n abbrev: \"m\"\n },\n centimeters: {\n abbrev: \"cm\"\n },\n centimetres: {\n abbrev: \"cm\"\n },\n millimeters: {\n abbrev: \"mm\"\n },\n millimetres: {\n abbrev: \"mm\"\n },\n yards: {\n abbrev: \"yd\"\n },\n feet: {\n abbrev: \"ft\"\n },\n inches: {\n abbrev: \"in\"\n }\n};\n\n/**\n * @desc Configures its {@link Scene}'s measurement unit and mapping between the Real-space and World-space 3D Cartesian coordinate systems.\n *\n *\n * ## Overview\n *\n * * Located at {@link Scene#metrics}.\n * * {@link Metrics#units} configures the Real-space unit type, which is ````\"meters\"```` by default.\n * * {@link Metrics#scale} configures the number of Real-space units represented by each unit within the World-space 3D coordinate system. This is ````1.0```` by default.\n * * {@link Metrics#origin} configures the 3D Real-space origin, in current Real-space units, at which this {@link Scene}'s World-space coordinate origin sits, This is ````[0,0,0]```` by default.\n *\n * ## Usage\n *\n * Let's load a model using an {@link XKTLoaderPlugin}, then configure the Real-space unit type and the coordinate\n * mapping between the Real-space and World-space 3D coordinate systems.\n *\n * ````JavaScript\n * import {Viewer, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [-2.37, 18.97, -26.12];\n * viewer.scene.camera.look = [10.97, 5.82, -11.22];\n * viewer.scene.camera.up = [0.36, 0.83, 0.40];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * const metrics = viewer.scene.metrics;\n *\n * metrics.units = \"meters\";\n * metrics.scale = 10.0;\n * metrics.origin = [100.0, 0.0, 200.0];\n * ````\n */\nclass Metrics extends Component {\n\n /**\n * @constructor\n * @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._units = \"meters\";\n this._scale = 1.0;\n this._origin = math.vec3([0, 0, 0]);\n\n this.units = cfg.units;\n this.scale = cfg.scale;\n this.origin = cfg.origin;\n }\n\n /**\n * Gets info about the supported Real-space unit types.\n *\n * This will be:\n *\n * ````javascript\n * {\n * {\n * meters: {\n * abbrev: \"m\"\n * },\n * metres: {\n * abbrev: \"m\"\n * },\n * centimeters: {\n * abbrev: \"cm\"\n * },\n * centimetres: {\n * abbrev: \"cm\"\n * },\n * millimeters: {\n * abbrev: \"mm\"\n * },\n * millimetres: {\n * abbrev: \"mm\"\n * },\n * yards: {\n * abbrev: \"yd\"\n * },\n * feet: {\n * abbrev: \"ft\"\n * },\n * inches: {\n * abbrev: \"in\"\n * }\n * }\n * }\n * ````\n *\n * @type {*}\n */\n get unitsInfo() {\n return unitsInfo;\n }\n\n /**\n * Sets the {@link Scene}'s Real-space unit type.\n *\n * Accepted values are ````\"meters\"````, ````\"centimeters\"````, ````\"millimeters\"````, ````\"metres\"````, ````\"centimetres\"````, ````\"millimetres\"````, ````\"yards\"````, ````\"feet\"```` and ````\"inches\"````.\n *\n * @emits ````\"units\"```` event on change, with the value of this property.\n * @type {String}\n */\n set units(value) {\n if (!value) {\n value = \"meters\";\n }\n const info = unitsInfo[value];\n if (!info) {\n this.error(\"Unsupported value for 'units': \" + value + \" defaulting to 'meters'\");\n value = \"meters\";\n }\n this._units = value;\n this.fire(\"units\", this._units);\n }\n\n /**\n * Gets the {@link Scene}'s Real-space unit type.\n *\n * @type {String}\n */\n get units() {\n return this._units;\n }\n\n /**\n * Sets the number of Real-space units represented by each unit of the {@link Scene}'s World-space coordinate system.\n *\n * For example, if {@link Metrics#units} is ````\"meters\"````, and there are ten meters per World-space coordinate system unit, then ````scale```` would have a value of ````10.0````.\n *\n * @emits ````\"scale\"```` event on change, with the value of this property.\n * @type {Number}\n */\n set scale(value) {\n value = value || 1;\n if (value <= 0) {\n this.error(\"scale value should be larger than zero\");\n return;\n }\n this._scale = value;\n this.fire(\"scale\", this._scale);\n }\n\n /**\n * Gets the number of Real-space units represented by each unit of the {@link Scene}'s World-space coordinate system.\n *\n * @type {Number}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the Real-space 3D origin, in Real-space units, at which this {@link Scene}'s World-space coordinate origin ````[0,0,0]```` sits.\n *\n * @emits \"origin\" event on change, with the value of this property.\n * @type {Number[]}\n */\n set origin(value) {\n if (!value) {\n this._origin[0] = 0;\n this._origin[1] = 0;\n this._origin[2] = 0;\n return;\n }\n this._origin[0] = value[0];\n this._origin[1] = value[1];\n this._origin[2] = value[2];\n this.fire(\"origin\", this._origin);\n }\n\n /**\n * Gets the 3D Real-space origin, in Real-space units, at which this {@link Scene}'s World-space coordinate origin ````[0,0,0]```` sits.\n *\n * @type {Number[]}\n */\n get origin() {\n return this._origin;\n }\n\n /**\n * Converts a 3D position from World-space to Real-space.\n *\n * This is equivalent to ````realPos = #origin + (worldPos * #scale)````.\n *\n * @param {Number[]} worldPos World-space 3D position, in World coordinate system units.\n * @param {Number[]} [realPos] Destination for Real-space 3D position.\n * @returns {Number[]} Real-space 3D position, in units indicated by {@link Metrics#units}.\n */\n worldToRealPos(worldPos, realPos = math.vec3(3)) {\n realPos[0] = this._origin[0] + (this._scale * worldPos[0]);\n realPos[1] = this._origin[1] + (this._scale * worldPos[1]);\n realPos[2] = this._origin[2] + (this._scale * worldPos[2]);\n }\n\n /**\n * Converts a 3D position from Real-space to World-space.\n *\n * This is equivalent to ````worldPos = (worldPos - #origin) / #scale````.\n *\n * @param {Number[]} realPos Real-space 3D position.\n * @param {Number[]} [worldPos] Destination for World-space 3D position.\n * @returns {Number[]} World-space 3D position.\n */\n realToWorldPos(realPos, worldPos = math.vec3(3)) {\n worldPos[0] = (realPos[0] - this._origin[0]) / this._scale;\n worldPos[1] = (realPos[1] - this._origin[1]) / this._scale;\n worldPos[2] = (realPos[2] - this._origin[2]) / this._scale;\n return worldPos;\n }\n}\n\n/**\n * @desc Configures Scalable Ambient Obscurance (SAO) for a {@link Scene}.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\n *\n * ## Overview\n *\n * SAO approximates [Ambient Occlusion](https://en.wikipedia.org/wiki/Ambient_occlusion) in realtime. It darkens creases, cavities and surfaces\n * that are close to each other, which tend to be occluded from ambient light and appear darker.\n *\n * The animated GIF above shows the effect as we repeatedly enable and disable SAO. When SAO is enabled, we can see darkening\n * in regions such as the corners, and the crevices between stairs. This increases the amount of detail we can see when ambient\n * light is high, or when objects have uniform colors across their surfaces. Run the example to experiment with the various\n * SAO configurations.\n *\n * xeokit's implementation of SAO is based on the paper [Scalable Ambient Obscurance](https://research.nvidia.com/sites/default/files/pubs/2012-06_Scalable-Ambient-Obscurance/McGuire12SAO.pdf).\n *\n * ## Caveats\n *\n * Currently, SAO only works with perspective and orthographic projections. Therefore, to use SAO, make sure {@link Camera#projection} is\n * either \"perspective\" or \"ortho\".\n *\n * {@link SAO#scale} and {@link SAO#intensity} must be tuned to the distance\n * between {@link Perspective#near} and {@link Perspective#far}, or the distance\n * between {@link Ortho#near} and {@link Ortho#far}, depending on which of those two projections the {@link Camera} is currently\n * using. Use the [live example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter) to get a\n * feel for that.\n *\n * ## Usage\n *\n * In the example below, we'll start by logging a warning message to the console if SAO is not supported by the\n * system.\n *\n *Then we'll enable and configure SAO, position the camera, and configure the near and far perspective and orthographic\n * clipping planes. Finally, we'll use {@link XKTLoaderPlugin} to load the OTC Conference Center model.\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * const sao = viewer.scene.sao;\n *\n * if (!sao.supported) {\n * sao.warn(\"SAO is not supported on this system - ignoring SAO configs\")\n * }\n *\n * sao.enabled = true; // Enable SAO - only works if supported (see above)\n * sao.intensity = 0.15;\n * sao.bias = 0.5;\n * sao.scale = 1.0;\n * sao.minResolution = 0.0;\n * sao.numSamples = 10;\n * sao.kernelRadius = 100;\n * sao.blendCutoff = 0.1;\n *\n * const camera = viewer.scene.camera;\n *\n * camera.eye = [3.69, 5.83, -23.98];\n * camera.look = [84.31, -29.88, -116.21];\n * camera.up = [0.18, 0.96, -0.21];\n *\n * camera.perspective.near = 0.1;\n * camera.perspective.far = 2000.0;\n *\n * camera.ortho.near = 0.1;\n * camera.ortho.far = 2000.0;\n * camera.projection = \"perspective\";\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/OTCConferenceCenter.xkt\"\n * edges: true\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#postEeffects_SAO_OTCConferenceCenter)]\n *\n * ## Efficiency\n *\n * SAO can incur some rendering overhead, especially on objects that are viewed close to the camera. For this reason,\n * it's recommended to use a low value for {@link SAO#kernelRadius}. A low radius will sample pixels that are close\n * to the source pixel, which will allow the GPU to efficiently cache those pixels. When {@link Camera#projection} is \"perspective\",\n * objects near to the viewpoint will use larger radii than farther pixels. Therefore, computing SAO for close objects\n * is more expensive than for objects far away, that occupy fewer pixels on the canvas.\n *\n * ## Selectively enabling SAO for models\n *\n * When loading multiple models into a Scene, we sometimes only want SAO on the models that are actually going to\n * show it, such as the architecture or structure, and not show SAO on models that won't show it well, such as the\n * electrical wiring, or plumbing.\n *\n * To illustrate, lets load some of the models for the West Riverside Hospital. We'll enable SAO on the structure model,\n * but disable it on the electrical and plumbing.\n *\n * This will only apply SAO to those models if {@link SAO#supported} and {@link SAO#enabled} are both true.\n *\n * Note, by the way, how we load the models in sequence. Since XKTLoaderPlugin uses scratch memory as part of its loading\n * process, this allows the plugin to reuse that same memory across multiple loads, instead of having to create multiple\n * pools of scratch memory.\n *\n * ````javascript\n * const structure = xktLoader.load({\n * id: \"structure\",\n * src: \"./models/xkt/WestRiverSideHospital/structure.xkt\"\n * edges: true,\n * saoEnabled: true\n * });\n *\n * structure.on(\"loaded\", () => {\n *\n * const electrical = xktLoader.load({\n * id: \"electrical\",\n * src: \"./models/xkt/WestRiverSideHospital/electrical.xkt\",\n * edges: true\n * });\n *\n * electrical.on(\"loaded\", () => {\n *\n * const plumbing = xktLoader.load({\n * id: \"plumbing\",\n * src: \"./models/xkt/WestRiverSideHospital/plumbing.xkt\",\n * edges: true\n * });\n * });\n * });\n * ````\n *\n * ## Disabling SAO while camera is moving\n *\n * For smoother interaction with large models on low-power hardware, we can disable SAO while the {@link Camera} is moving:\n *\n * ````javascript\n * const timeoutDuration = 150; // Milliseconds\n * var timer = timeoutDuration;\n * var saoDisabled = false;\n *\n * const onCameraMatrix = scene.camera.on(\"matrix\", () => {\n * timer = timeoutDuration;\n * if (!saoDisabled) {\n * scene.sao.enabled = false;\n * saoDisabled = true;\n * }\n * });\n *\n * const onSceneTick = scene.on(\"tick\", (tickEvent) => {\n * if (!saoDisabled) {\n * return;\n * }\n * timer -= tickEvent.deltaTime; // Milliseconds\n * if (timer <= 0) {\n * if (saoDisabled) {\n * scene.sao.enabled = true;\n * saoDisabled = false;\n * }\n * }\n * });\n * ````\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#techniques_nonInteractiveQuality)]\n */\nclass SAO extends Component {\n\n /** @private */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n const ua = navigator.userAgent.match(/(opera|chrome|safari|firefox|msie|mobile)\\/?\\s*(\\.?\\d+(\\.\\d+)*)/i);\n const isSafari = (ua && ua[1].toLowerCase() === \"safari\");\n\n this._supported = (!isSafari) &&\n WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_standard_derivatives\"]; // For computing normals in SAO fragment shader\n\n this.enabled = cfg.enabled;\n this.kernelRadius = cfg.kernelRadius;\n this.intensity = cfg.intensity;\n this.bias = cfg.bias;\n this.scale = cfg.scale;\n this.minResolution = cfg.minResolution;\n this.numSamples = cfg.numSamples;\n this.blur = cfg.blur;\n this.blendCutoff = cfg.blendCutoff;\n this.blendFactor = cfg.blendFactor;\n }\n\n /**\n * Gets whether or not SAO is supported by this browser and GPU.\n *\n * Even when enabled, SAO will only work if supported.\n *\n * @type {Boolean}\n */\n get supported() {\n return this._supported;\n }\n\n /**\n * Sets whether SAO is enabled for the {@link Scene}.\n *\n * Even when enabled, SAO will only work if supported.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set enabled(value) {\n value = !!value;\n if (this._enabled === value) {\n return;\n }\n this._enabled = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether SAO is enabled for the {@link Scene}.\n *\n * Even when enabled, SAO will only apply if supported.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get enabled() {\n return this._enabled;\n }\n\n /**\n * Returns true if SAO is currently possible, where it is supported, enabled, and the current scene state is compatible.\n * Called internally by renderer logic.\n * @private\n * @returns {boolean}\n */\n get possible() {\n if (!this._supported) {\n return false;\n }\n if (!this._enabled) {\n return false;\n }\n const projection = this.scene.camera.projection;\n if (projection === \"customProjection\") {\n return false;\n }\n if (projection === \"frustum\") {\n return false;\n }\n return true;\n }\n\n /**\n * @private\n * @returns {boolean|*}\n */\n get active() {\n return this._active;\n }\n\n /**\n * Sets the maximum area that SAO takes into account when checking for possible occlusion for each fragment.\n *\n * Default value is ````100.0````.\n *\n * @type {Number}\n */\n set kernelRadius(value) {\n if (value === undefined || value === null) {\n value = 100.0;\n }\n if (this._kernelRadius === value) {\n return;\n }\n this._kernelRadius = value;\n this.glRedraw();\n }\n\n /**\n * Gets the maximum area that SAO takes into account when checking for possible occlusion for each fragment.\n *\n * Default value is ````100.0````.\n *\n * @type {Number}\n */\n get kernelRadius() {\n return this._kernelRadius;\n }\n\n /**\n * Sets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.15````.\n *\n * @type {Number}\n */\n set intensity(value) {\n if (value === undefined || value === null) {\n value = 0.15;\n }\n if (this._intensity === value) {\n return;\n }\n this._intensity = value;\n this.glRedraw();\n }\n\n /**\n * Gets the degree of darkening (ambient obscurance) produced by the SAO effect.\n *\n * Default value is ````0.15````.\n *\n * @type {Number}\n */\n get intensity() {\n return this._intensity;\n }\n\n /**\n * Sets the SAO bias.\n *\n * Default value is ````0.5````.\n *\n * @type {Number}\n */\n set bias(value) {\n if (value === undefined || value === null) {\n value = 0.5;\n }\n if (this._bias === value) {\n return;\n }\n this._bias = value;\n this.glRedraw();\n }\n\n /**\n * Gets the SAO bias.\n *\n * Default value is ````0.5````.\n *\n * @type {Number}\n */\n get bias() {\n return this._bias;\n }\n\n /**\n * Sets the SAO occlusion scale.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set scale(value) {\n if (value === undefined || value === null) {\n value = 1.0;\n }\n if (this._scale === value) {\n return;\n }\n this._scale = value;\n this.glRedraw();\n }\n\n /**\n * Gets the SAO occlusion scale.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the SAO minimum resolution.\n *\n * Default value is ````0.0````.\n *\n * @type {Number}\n */\n set minResolution(value) {\n if (value === undefined || value === null) {\n value = 0.0;\n }\n if (this._minResolution === value) {\n return;\n }\n this._minResolution = value;\n this.glRedraw();\n }\n\n /**\n * Gets the SAO minimum resolution.\n *\n * Default value is ````0.0````.\n *\n * @type {Number}\n */\n get minResolution() {\n return this._minResolution;\n }\n\n /**\n * Sets the number of SAO samples.\n *\n * Default value is ````10````.\n *\n * Update this sparingly, since it causes a shader recompile.\n *\n * @type {Number}\n */\n set numSamples(value) {\n if (value === undefined || value === null) {\n value = 10;\n }\n if (this._numSamples === value) {\n return;\n }\n this._numSamples = value;\n this.glRedraw();\n }\n\n /**\n * Gets the number of SAO samples.\n *\n * Default value is ````10````.\n *\n * @type {Number}\n */\n get numSamples() {\n return this._numSamples;\n }\n\n /**\n * Sets whether Guassian blur is enabled.\n *\n * Default value is ````true````.\n *\n * @type {Boolean}\n */\n set blur(value) {\n value = (value !== false);\n if (this._blur === value) {\n return;\n }\n this._blur = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether Guassian blur is enabled.\n *\n * Default value is ````true````.\n *\n * @type {Boolean}\n */\n get blur() {\n return this._blur;\n }\n\n /**\n * Sets the SAO blend cutoff.\n *\n * Default value is ````0.3````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n */\n set blendCutoff(value) {\n if (value === undefined || value === null) {\n value = 0.3;\n }\n if (this._blendCutoff === value) {\n return;\n }\n this._blendCutoff = value;\n this.glRedraw();\n }\n\n /**\n * Gets the SAO blend cutoff.\n *\n * Default value is ````0.3````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n */\n get blendCutoff() {\n return this._blendCutoff;\n }\n\n /**\n * Sets the SAO blend factor.\n *\n * Default value is ````1.0````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n */\n set blendFactor(value) {\n if (value === undefined || value === null) {\n value = 1.0;\n }\n if (this._blendFactor === value) {\n return;\n }\n this._blendFactor = value;\n this.glRedraw();\n }\n\n /**\n * Gets the SAO blend scale.\n *\n * Default value is ````1.0````.\n *\n * Normally you don't need to alter this.\n *\n * @type {Number}\n */\n get blendFactor() {\n return this._blendFactor;\n }\n\n /**\n * Destroys this component.\n */\n destroy() {\n super.destroy();\n }\n}\n\nconst PRESETS$1 = {\n \"default\": {\n pointSize: 4,\n roundPoints: true,\n perspectivePoints: true\n },\n \"square\": {\n pointSize: 4,\n roundPoints: false,\n perspectivePoints: true\n },\n \"round\": {\n pointSize: 4,\n roundPoints: true,\n perspectivePoints: true\n }\n};\n\n/**\n * @desc Configures the size and shape of \"points\" geometry primitives.\n *\n * * Located at {@link Scene#pointsMaterial}.\n * * Supports round and square points.\n * * Optional perspective point scaling.\n * * Globally configures \"points\" primitives for all {@link PerformanceModel}s.\n *\n * ## Usage\n *\n * In the example below, we'll customize the {@link Scene}'s global ````PointsMaterial````, then use\n * an {@link XKTLoaderPlugin} to load a model containing a point cloud.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_PointsMaterial)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * viewer.scene.pointsMaterial.pointSize = 2;\n * viewer.scene.pointsMaterial.roundPoints = true;\n * viewer.scene.pointsMaterial.perspectivePoints = true;\n * viewer.scene.pointsMaterial.minPerspectivePointSize = 1;\n * viewer.scene.pointsMaterial.maxPerspectivePointSize = 6;\n * viewer.scene.pointsMaterial.filterIntensity = true;\n * viewer.scene.pointsMaterial.minIntensity = 0.0;\n * viewer.scene.pointsMaterial.maxIntensity = 1.0;\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/xkt/MAP-PointCloud.xkt\"\n * });\n * ````\n */\nclass PointsMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"PointsMaterial\";\n }\n\n /**\n * Gets available PointsMaterial presets.\n *\n * @type {Object}\n */\n get presets() {\n return PRESETS$1;\n };\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The PointsMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number} [cfg.pointSize=2] Point size in pixels.\n * @param {Boolean} [cfg.roundPoints=true] Whether points are round (````true````) or square (````false````).\n * @param {Boolean} [cfg.perspectivePoints=true] Whether apparent point size reduces with distance when {@link Camera#projection} is set to \"perspective\".\n * @param {Number} [cfg.minPerspectivePointSize=1] When ````perspectivePoints```` is ````true````, this is the minimum rendered size of each point in pixels.\n * @param {Number} [cfg.maxPerspectivePointSize=6] When ````perspectivePoints```` is ````true````, this is the maximum rendered size of each point in pixels.\n * @param {Boolean} [cfg.filterIntensity=false] When this is true, points are only rendered when their intensity value falls within the range given in {@link }\n * @param {Number} [cfg.minIntensity=0] When ````filterIntensity```` is ````true````, points with intensity below this value will not be rendered.\n * @param {Number} [cfg.maxIntensity=1] When ````filterIntensity```` is ````true````, points with intensity above this value will not be rendered.\n * @param {String} [cfg.preset] Selects a preset PointsMaterial configuration - see {@link PointsMaterial#presets}.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"PointsMaterial\",\n pointSize: null,\n roundPoints: null,\n perspectivePoints: null,\n minPerspectivePointSize: null,\n maxPerspectivePointSize: null,\n filterIntensity: null,\n minIntensity: null,\n maxIntensity: null\n });\n\n if (cfg.preset) { // Apply preset then override with configs where provided\n this.preset = cfg.preset;\n if (cfg.pointSize !== undefined) {\n this.pointSize = cfg.pointSize;\n }\n if (cfg.roundPoints !== undefined) {\n this.roundPoints = cfg.roundPoints;\n }\n if (cfg.perspectivePoints !== undefined) {\n this.perspectivePoints = cfg.perspectivePoints;\n }\n if (cfg.minPerspectivePointSize !== undefined) {\n this.minPerspectivePointSize = cfg.minPerspectivePointSize;\n }\n if (cfg.maxPerspectivePointSize !== undefined) {\n this.maxPerspectivePointSize = cfg.minPerspectivePointSize;\n }\n } else {\n this._preset = \"default\";\n this.pointSize = cfg.pointSize;\n this.roundPoints = cfg.roundPoints;\n\n this.perspectivePoints = cfg.perspectivePoints;\n this.minPerspectivePointSize = cfg.minPerspectivePointSize;\n this.maxPerspectivePointSize = cfg.maxPerspectivePointSize;\n }\n\n this.filterIntensity = cfg.filterIntensity;\n this.minIntensity = cfg.minIntensity;\n this.maxIntensity = cfg.maxIntensity;\n }\n\n /**\n * Sets point size.\n *\n * Default value is ````2.0```` pixels.\n *\n * @type {Number}\n */\n set pointSize(value) {\n this._state.pointSize = value || 2.0;\n this.glRedraw();\n }\n\n /**\n * Gets point size.\n *\n * Default value is ````2.0```` pixels.\n *\n * @type {Number}\n */\n get pointSize() {\n return this._state.pointSize;\n }\n\n\n /**\n * Sets if points are round or square.\n *\n * Default is ````true```` to set points round.\n *\n * @type {Boolean}\n */\n set roundPoints(value) {\n value = (value !== false);\n if (this._state.roundPoints === value) {\n return;\n }\n this._state.roundPoints = value;\n this.scene._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets if points are round or square.\n *\n * Default is ````true```` to set points round.\n *\n * @type {Boolean}\n */\n get roundPoints() {\n return this._state.roundPoints;\n }\n\n /**\n * Sets if rendered point size reduces with distance when {@link Camera#projection} is set to ````\"perspective\"````.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set perspectivePoints(value) {\n value = (value !== false);\n if (this._state.perspectivePoints === value) {\n return;\n }\n this._state.perspectivePoints = value;\n this.scene._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets if rendered point size reduces with distance when {@link Camera#projection} is set to \"perspective\".\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n get perspectivePoints() {\n return this._state.perspectivePoints;\n }\n\n /**\n * Sets the minimum rendered size of points when {@link PointsMaterial#perspectivePoints} is ````true````.\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n set minPerspectivePointSize(value) {\n this._state.minPerspectivePointSize = value || 1.0;\n this.scene._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets the minimum rendered size of points when {@link PointsMaterial#perspectivePoints} is ````true````.\n *\n * Default value is ````1.0```` pixels.\n *\n * @type {Number}\n */\n get minPerspectivePointSize() {\n return this._state.minPerspectivePointSize;\n }\n\n /**\n * Sets the maximum rendered size of points when {@link PointsMaterial#perspectivePoints} is ````true````.\n *\n * Default value is ````6```` pixels.\n *\n * @type {Number}\n */\n set maxPerspectivePointSize(value) {\n this._state.maxPerspectivePointSize = value || 6;\n this.scene._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets the maximum rendered size of points when {@link PointsMaterial#perspectivePoints} is ````true````.\n *\n * Default value is ````6```` pixels.\n *\n * @type {Number}\n */\n get maxPerspectivePointSize() {\n return this._state.maxPerspectivePointSize;\n }\n\n /**\n * Sets if rendered point size reduces with distance when {@link Camera#projection} is set to ````\"perspective\"````.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n set filterIntensity(value) {\n value = (value !== false);\n if (this._state.filterIntensity === value) {\n return;\n }\n this._state.filterIntensity = value;\n this.scene._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets if rendered point size reduces with distance when {@link Camera#projection} is set to \"perspective\".\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n get filterIntensity() {\n return this._state.filterIntensity;\n }\n\n /**\n * Sets the minimum rendered size of points when {@link PointsMaterial#perspectivePoints} is ````true````.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n set minIntensity(value) {\n this._state.minIntensity = (value !== undefined && value !== null) ? value: 0.0;\n this.glRedraw();\n }\n\n /**\n * Gets the minimum rendered size of points when {@link PointsMaterial#filterIntensity} is ````true````.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n get minIntensity() {\n return this._state.minIntensity;\n }\n\n /**\n * Sets the maximum rendered size of points when {@link PointsMaterial#filterIntensity} is ````true````.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n set maxIntensity(value) {\n this._state.maxIntensity = (value !== undefined && value !== null) ? value: 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the maximum rendered size of points when {@link PointsMaterial#filterIntensity} is ````true````.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get maxIntensity() {\n return this._state.maxIntensity;\n }\n\n /**\n * Selects a preset ````PointsMaterial```` configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n set preset(value) {\n value = value || \"default\";\n if (this._preset === value) {\n return;\n }\n const preset = PRESETS$1[value];\n if (!preset) {\n this.error(\"unsupported preset: '\" + value + \"' - supported values are \" + Object.keys(PRESETS$1).join(\", \"));\n return;\n }\n this.pointSize = preset.pointSize;\n this.roundPoints = preset.roundPoints;\n this.perspectivePoints = preset.perspectivePoints;\n this.minPerspectivePointSize = preset.minPerspectivePointSize;\n this.maxPerspectivePointSize = preset.maxPerspectivePointSize;\n this._preset = value;\n }\n\n /**\n * The current preset ````PointsMaterial```` configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n get preset() {\n return this._preset;\n }\n\n /**\n * @private\n * @return {string}\n */\n get hash() {\n return [\n this.pointSize,\n this.roundPoints,\n this.perspectivePoints,\n this.minPerspectivePointSize,\n this.maxPerspectivePointSize,\n this.filterIntensity\n ].join((\";\"));\n }\n\n /**\n * Destroys this ````PointsMaterial````.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nconst PRESETS = {\n \"default\": {\n lineWidth: 1\n },\n \"thick\": {\n lineWidth: 2\n },\n \"thicker\": {\n lineWidth: 4\n }\n};\n\n/**\n * @desc Configures the shape of \"lines\" geometry primitives.\n *\n * * Located at {@link Scene#linesMaterial}.\n * * Globally configures \"lines\" primitives for all {@link PerformanceModel}s.\n *\n * ## Usage\n *\n * In the example below, we'll customize the {@link Scene}'s global ````LinesMaterial````, then use\n * an {@link XKTLoaderPlugin} to load a model containing line segments.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_LinesMaterial)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * viewer.scene.linesMaterial.lineWidth = 3;\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Duplex.ifc.xkt\"\n * });\n * ````\n */\nclass LinesMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"LinesMaterial\";\n }\n\n /**\n * Gets available LinesMaterial presets.\n *\n * @type {Object}\n */\n get presets() {\n return PRESETS;\n };\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The LinesMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number} [cfg.lineWidth=1] Line width in pixels.\n * @param {String} [cfg.preset] Selects a preset LinesMaterial configuration - see {@link LinesMaterial#presets}.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"LinesMaterial\",\n lineWidth: null\n });\n\n if (cfg.preset) { // Apply preset then override with configs where provided\n this.preset = cfg.preset;\n if (cfg.lineWidth !== undefined) {\n this.lineWidth = cfg.lineWidth;\n }\n } else {\n this._preset = \"default\";\n this.lineWidth = cfg.lineWidth;\n }\n }\n\n /**\n * Sets line width.\n *\n * Default value is ````1```` pixels.\n *\n * @type {Number}\n */\n set lineWidth(value) {\n this._state.lineWidth = value || 1;\n this.glRedraw();\n }\n\n /**\n * Gets the line width.\n *\n * Default value is ````1```` pixels.\n *\n * @type {Number}\n */\n get lineWidth() {\n return this._state.lineWidth;\n }\n\n /**\n * Selects a preset LinesMaterial configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n set preset(value) {\n value = value || \"default\";\n if (this._preset === value) {\n return;\n }\n const preset = PRESETS[value];\n if (!preset) {\n this.error(\"unsupported preset: '\" + value + \"' - supported values are \" + Object.keys(PRESETS).join(\", \"));\n return;\n }\n this.lineWidth = preset.lineWidth;\n this._preset = value;\n }\n\n /**\n * The current preset LinesMaterial configuration.\n *\n * Default value is ````\"default\"````.\n *\n * @type {String}\n */\n get preset() {\n return this._preset;\n }\n\n /**\n * @private\n * @return {string}\n */\n get hash() {\n return [\"\" + this.lineWidth].join((\";\"));\n }\n\n /**\n * Destroys this LinesMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\n// Cached vars to avoid garbage collection\n\nfunction getEntityIDMap(scene, entityIds) {\n const map = {};\n let entityId;\n let entity;\n for (let i = 0, len = entityIds.length; i < len; i++) {\n entityId = entityIds[i];\n entity = scene.component[entityId];\n if (!entity) {\n scene.warn(\"pick(): Component not found: \" + entityId);\n continue;\n }\n if (!entity.isEntity) {\n scene.warn(\"pick(): Component is not an Entity: \" + entityId);\n continue;\n }\n map[entityId] = true;\n }\n return map;\n}\n\n/**\n * Fired whenever a debug message is logged on a component within this Scene.\n * @event log\n * @param {String} value The debug message\n */\n\n/**\n * Fired whenever an error is logged on a component within this Scene.\n * @event error\n * @param {String} value The error message\n */\n\n/**\n * Fired whenever a warning is logged on a component within this Scene.\n * @event warn\n * @param {String} value The warning message\n */\n\n/**\n * @desc Contains the components that comprise a 3D scene.\n *\n * * A {@link Viewer} has a single Scene, which it provides in {@link Viewer#scene}.\n * * Plugins like {@link AxisGizmoPlugin} also have their own private Scenes.\n * * Each Scene has a corresponding {@link MetaScene}, which the Viewer provides in {@link Viewer#metaScene}.\n *\n * ## Getting a Viewer's Scene\n *\n * ````javascript\n * var scene = viewer.scene;\n * ````\n *\n * ## Creating and accessing Scene components\n *\n * As a brief introduction to creating Scene components, we'll create a {@link Mesh} that has a\n * {@link buildTorusGeometry} and a {@link PhongMaterial}:\n *\n * ````javascript\n * var teapotMesh = new Mesh(scene, {\n * id: \"myMesh\", // <<---------- ID automatically generated if not provided\n * geometry: new TorusGeometry(scene),\n * material: new PhongMaterial(scene, {\n * id: \"myMaterial\",\n * diffuse: [0.2, 0.2, 1.0]\n * })\n * });\n *\n * teapotMesh.scene.camera.eye = [45, 45, 45];\n * ````\n *\n * Find components by ID in their Scene's {@link Scene#components} map:\n *\n * ````javascript\n * var teapotMesh = scene.components[\"myMesh\"];\n * teapotMesh.visible = false;\n *\n * var teapotMaterial = scene.components[\"myMaterial\"];\n * teapotMaterial.diffuse = [1,0,0]; // Change to red\n * ````\n *\n * A Scene also has a map of component instances for each {@link Component} subtype:\n *\n * ````javascript\n * var meshes = scene.types[\"Mesh\"];\n * var teapotMesh = meshes[\"myMesh\"];\n * teapotMesh.xrayed = true;\n *\n * var phongMaterials = scene.types[\"PhongMaterial\"];\n * var teapotMaterial = phongMaterials[\"myMaterial\"];\n * teapotMaterial.diffuse = [0,1,0]; // Change to green\n * ````\n *\n * See {@link Node}, {@link Node} and {@link Model} for how to create and access more sophisticated content.\n *\n * ## Controlling the camera\n *\n * Use the Scene's {@link Camera} to control the current viewpoint and projection:\n *\n * ````javascript\n * var camera = myScene.camera;\n *\n * camera.eye = [-10,0,0];\n * camera.look = [-10,0,0];\n * camera.up = [0,1,0];\n *\n * camera.projection = \"perspective\";\n * camera.perspective.fov = 45;\n * //...\n * ````\n *\n * ## Managing the canvas\n *\n * The Scene's {@link Canvas} component provides various conveniences relevant to the WebGL canvas, such\n * as firing resize events etc:\n *\n * ````javascript\n * var canvas = scene.canvas;\n *\n * canvas.on(\"boundary\", function(boundary) {\n * //...\n * });\n * ````\n *\n * ## Picking\n *\n * Use {@link Scene#pick} to pick and raycast entites.\n *\n * For example, to pick a point on the surface of the closest entity at the given canvas coordinates:\n *\n * ````javascript\n * var pickResult = scene.pick({\n * pickSurface: true,\n * canvasPos: [23, 131]\n * });\n *\n * if (pickResult) { // Picked an entity\n *\n * var entity = pickResult.entity;\n *\n * var primitive = pickResult.primitive; // Type of primitive that was picked, usually \"triangles\"\n * var primIndex = pickResult.primIndex; // Position of triangle's first index in the picked Mesh's Geometry's indices array\n * var indices = pickResult.indices; // UInt32Array containing the triangle's vertex indices\n * var localPos = pickResult.localPos; // Float64Array containing the picked Local-space position on the triangle\n * var worldPos = pickResult.worldPos; // Float64Array containing the picked World-space position on the triangle\n * var viewPos = pickResult.viewPos; // Float64Array containing the picked View-space position on the triangle\n * var bary = pickResult.bary; // Float64Array containing the picked barycentric position within the triangle\n * var normal = pickResult.normal; // Float64Array containing the interpolated normal vector at the picked position on the triangle\n * var uv = pickResult.uv; // Float64Array containing the interpolated UV coordinates at the picked position on the triangle\n * }\n * ````\n *\n * ## Pick masking\n *\n * We can use {@link Scene#pick}'s ````includeEntities```` and ````excludeEntities```` options to mask which {@link Mesh}es we attempt to pick.\n *\n * This is useful for picking through things, to pick only the Entities of interest.\n *\n * To pick only Entities ````\"gearbox#77.0\"```` and ````\"gearbox#79.0\"````, picking through any other Entities that are\n * in the way, as if they weren't there:\n *\n * ````javascript\n * var pickResult = scene.pick({\n * canvasPos: [23, 131],\n * includeEntities: [\"gearbox#77.0\", \"gearbox#79.0\"]\n * });\n *\n * if (pickResult) {\n * // Entity will always be either \"gearbox#77.0\" or \"gearbox#79.0\"\n * var entity = pickResult.entity;\n * }\n * ````\n *\n * To pick any pickable Entity, except for ````\"gearbox#77.0\"```` and ````\"gearbox#79.0\"````, picking through those\n * Entities if they happen to be in the way:\n *\n * ````javascript\n * var pickResult = scene.pick({\n * canvasPos: [23, 131],\n * excludeEntities: [\"gearbox#77.0\", \"gearbox#79.0\"]\n * });\n *\n * if (pickResult) {\n * // Entity will never be \"gearbox#77.0\" or \"gearbox#79.0\"\n * var entity = pickResult.entity;\n * }\n * ````\n *\n * See {@link Scene#pick} for more info on picking.\n *\n * ## Querying and tracking boundaries\n *\n * Getting a Scene's World-space axis-aligned boundary (AABB):\n *\n * ````javascript\n * var aabb = scene.aabb; // [xmin, ymin, zmin, xmax, ymax, zmax]\n * ````\n *\n * Subscribing to updates to the AABB, which occur whenever {@link Entity}s are transformed, their\n * {@link ReadableGeometry}s have been updated, or the {@link Camera} has moved:\n *\n * ````javascript\n * scene.on(\"boundary\", function() {\n * var aabb = scene.aabb;\n * });\n * ````\n *\n * Getting the AABB of the {@link Entity}s with the given IDs:\n *\n * ````JavaScript\n * scene.getAABB(); // Gets collective boundary of all Entities in the scene\n * scene.getAABB(\"saw\"); // Gets boundary of an Object\n * scene.getAABB([\"saw\", \"gearbox\"]); // Gets collective boundary of two Objects\n * ````\n *\n * See {@link Scene#getAABB} and {@link Entity} for more info on querying and tracking boundaries.\n *\n * ## Managing the viewport\n *\n * The Scene's {@link Viewport} component manages the WebGL viewport:\n *\n * ````javascript\n * var viewport = scene.viewport\n * viewport.boundary = [0, 0, 500, 400];;\n * ````\n *\n * ## Controlling rendering\n *\n * You can configure a Scene to perform multiple \"passes\" (renders) per frame. This is useful when we want to render the\n * scene to multiple viewports, such as for stereo effects.\n *\n * In the example, below, we'll configure the Scene to render twice on each frame, each time to different viewport. We'll do this\n * with a callback that intercepts the Scene before each render and sets its {@link Viewport} to a\n * different portion of the canvas. By default, the Scene will clear the canvas only before the first render, allowing the\n * two views to be shown on the canvas at the same time.\n *\n * ````Javascript\n * var viewport = scene.viewport;\n *\n * // Configure Scene to render twice for each frame\n * scene.passes = 2; // Default is 1\n * scene.clearEachPass = false; // Default is false\n *\n * // Render to a separate viewport on each render\n *\n * var viewport = scene.viewport;\n * viewport.autoBoundary = false;\n *\n * scene.on(\"rendering\", function (e) {\n * switch (e.pass) {\n * case 0:\n * viewport.boundary = [0, 0, 200, 200]; // xmin, ymin, width, height\n * break;\n *\n * case 1:\n * viewport.boundary = [200, 0, 200, 200];\n * break;\n * }\n * });\n *\n * // We can also intercept the Scene after each render,\n * // (though we're not using this for anything here)\n * scene.on(\"rendered\", function (e) {\n * switch (e.pass) {\n * case 0:\n * break;\n *\n * case 1:\n * break;\n * }\n * });\n * ````\n *\n * ## Gamma correction\n *\n * Within its shaders, xeokit performs shading calculations in linear space.\n *\n * By default, the Scene expects color textures (eg. {@link PhongMaterial#diffuseMap},\n * {@link MetallicMaterial#baseColorMap} and {@link SpecularMaterial#diffuseMap}) to\n * be in pre-multipled gamma space, so will convert those to linear space before they are used in shaders. Other textures are\n * always expected to be in linear space.\n *\n * By default, the Scene will also gamma-correct its rendered output.\n *\n * You can configure the Scene to expect all those color textures to be linear space, so that it does not gamma-correct them:\n *\n * ````javascript\n * scene.gammaInput = false;\n * ````\n *\n * You would still need to gamma-correct the output, though, if it's going straight to the canvas, so normally we would\n * leave that enabled:\n *\n * ````javascript\n * scene.gammaOutput = true;\n * ````\n *\n * See {@link Texture} for more information on texture encoding and gamma.\n *\n * @class Scene\n */\nclass Scene extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Scene\";\n }\n\n /**\n * @private\n * @constructor\n * @param {Viewer} viewer The Viewer this Scene belongs to.\n * @param {Object} cfg Scene configuration.\n * @param {String} [cfg.canvasId] ID of an existing HTML canvas for the {@link Scene#canvas} - either this or canvasElement is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLCanvasElement} [cfg.canvasElement] Reference of an existing HTML canvas for the {@link Scene#canvas} - either this or canvasId is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLElement} [cfg.keyboardEventsElement] Optional reference to HTML element on which key events should be handled. Defaults to the HTML Document.\n * @throws {String} Throws an exception when both canvasId or canvasElement are missing or they aren't pointing to a valid HTMLCanvasElement.\n */\n constructor(viewer, cfg = {}) {\n\n super(null, cfg);\n\n const canvas = cfg.canvasElement || document.getElementById(cfg.canvasId);\n\n if (!(canvas instanceof HTMLCanvasElement)) {\n throw \"Mandatory config expected: valid canvasId or canvasElement\";\n }\n\n const transparent = (!!cfg.transparent);\n const alphaDepthMask = (!!cfg.alphaDepthMask);\n\n this._aabbDirty = true;\n\n /**\n * The {@link Viewer} this Scene belongs to.\n * @type {Viewer}\n */\n this.viewer = viewer;\n\n /** Decremented each frame, triggers occlusion test for occludable {@link Marker}s when zero.\n * @private\n * @type {number}\n */\n this.occlusionTestCountdown = 0;\n\n /**\n The number of models currently loading.\n\n @property loading\n @final\n @type {Number}\n */\n this.loading = 0;\n\n /**\n The epoch time (in milliseconds since 1970) when this Scene was instantiated.\n\n @property timeCreated\n @final\n @type {Number}\n */\n this.startTime = (new Date()).getTime();\n\n /**\n * Map of {@link Entity}s that represent models.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id} when {@link Entity#isModel} is ````true````.\n *\n * @property models\n * @final\n * @type {{String:Entity}}\n */\n this.models = {};\n\n /**\n * Map of {@link Entity}s that represents objects.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id} when {@link Entity#isObject} is ````true````.\n *\n * @property objects\n * @final\n * @type {{String:Entity}}\n */\n this.objects = {};\n this._numObjects = 0;\n\n /**\n * Map of currently visible {@link Entity}s that represent objects.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true````, and is visible when {@link Entity#visible} is true.\n *\n * @property visibleObjects\n * @final\n * @type {{String:Object}}\n */\n this.visibleObjects = {};\n this._numVisibleObjects = 0;\n\n /**\n * Map of currently xrayed {@link Entity}s that represent objects.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true````, and is xrayed when {@link Entity#xrayed} is true.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property xrayedObjects\n * @final\n * @type {{String:Object}}\n */\n this.xrayedObjects = {};\n this._numXRayedObjects = 0;\n\n /**\n * Map of currently highlighted {@link Entity}s that represent objects.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true```` is true, and is highlighted when {@link Entity#highlighted} is true.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property highlightedObjects\n * @final\n * @type {{String:Object}}\n */\n this.highlightedObjects = {};\n this._numHighlightedObjects = 0;\n\n /**\n * Map of currently selected {@link Entity}s that represent objects.\n *\n * An Entity represents an object if {@link Entity#isObject} is true, and is selected while {@link Entity#selected} is true.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property selectedObjects\n * @final\n * @type {{String:Object}}\n */\n this.selectedObjects = {};\n this._numSelectedObjects = 0;\n\n /**\n * Map of currently colorized {@link Entity}s that represent objects.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property colorizedObjects\n * @final\n * @type {{String:Object}}\n */\n this.colorizedObjects = {};\n this._numColorizedObjects = 0;\n\n /**\n * Map of {@link Entity}s that represent objects whose opacity was updated.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property opacityObjects\n * @final\n * @type {{String:Object}}\n */\n this.opacityObjects = {};\n this._numOpacityObjects = 0;\n\n /**\n * Map of {@link Entity}s that represent objects whose {@link Entity#offset}s were updated.\n *\n * An Entity represents an object if {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} is mapped here by {@link Entity#id}.\n *\n * @property offsetObjects\n * @final\n * @type {{String:Object}}\n */\n this.offsetObjects = {};\n this._numOffsetObjects = 0;\n\n // Cached ID arrays, lazy-rebuilt as needed when stale after map updates\n\n /**\n Lazy-regenerated ID lists.\n */\n this._modelIds = null;\n this._objectIds = null;\n this._visibleObjectIds = null;\n this._xrayedObjectIds = null;\n this._highlightedObjectIds = null;\n this._selectedObjectIds = null;\n this._colorizedObjectIds = null;\n this._opacityObjectIds = null;\n this._offsetObjectIds = null;\n\n this._collidables = {}; // Components that contribute to the Scene AABB\n this._compilables = {}; // Components that require shader compilation\n\n this._needRecompile = false;\n\n /**\n * For each {@link Component} type, a map of IDs to {@link Component} instances of that type.\n *\n * @type {{String:{String:Component}}}\n */\n this.types = {};\n\n /**\n * The {@link Component}s within this Scene, each mapped to its {@link Component#id}.\n *\n * *@type {{String:Component}}\n */\n this.components = {};\n\n /**\n * The {@link SectionPlane}s in this Scene, each mapped to its {@link SectionPlane#id}.\n *\n * @type {{String:SectionPlane}}\n */\n this.sectionPlanes = {};\n\n /**\n * The {@link Light}s in this Scene, each mapped to its {@link Light#id}.\n *\n * @type {{String:Light}}\n */\n this.lights = {};\n\n /**\n * The {@link LightMap}s in this Scene, each mapped to its {@link LightMap#id}.\n *\n * @type {{String:LightMap}}\n */\n this.lightMaps = {};\n\n /**\n * The {@link ReflectionMap}s in this Scene, each mapped to its {@link ReflectionMap#id}.\n *\n * @type {{String:ReflectionMap}}\n */\n this.reflectionMaps = {};\n\n /**\n * The real world offset for this Scene\n *\n * @type {Number[]}\n */\n this.realWorldOffset = cfg.realWorldOffset || new Float64Array([0, 0, 0]);\n\n /**\n * Manages the HTML5 canvas for this Scene.\n *\n * @type {Canvas}\n */\n this.canvas = new Canvas(this, {\n dontClear: true, // Never destroy this component with Scene#clear();\n canvas: canvas,\n spinnerElementId: cfg.spinnerElementId,\n transparent: transparent,\n webgl2: cfg.webgl2 !== false,\n contextAttr: cfg.contextAttr || {},\n backgroundColor: cfg.backgroundColor,\n backgroundColorFromAmbientLight: cfg.backgroundColorFromAmbientLight,\n premultipliedAlpha: cfg.premultipliedAlpha\n });\n\n this.canvas.on(\"boundary\", () => {\n this.glRedraw();\n });\n\n this.canvas.on(\"webglContextFailed\", () => {\n alert(\"xeokit failed to find WebGL!\");\n });\n\n this._renderer = new Renderer(this, {\n transparent: transparent,\n alphaDepthMask: alphaDepthMask\n });\n\n this._sectionPlanesState = new (function () {\n\n this.sectionPlanes = [];\n\n this.clippingCaps = false;\n\n let hash = null;\n\n this.getHash = function () {\n if (hash) {\n return hash;\n }\n const sectionPlanes = this.sectionPlanes;\n if (sectionPlanes.length === 0) {\n return this.hash = \";\";\n }\n\n const hashParts = [];\n for (let i = 0, len = sectionPlanes.length; i < len; i++) {\n sectionPlanes[i];\n hashParts.push(\"cp\");\n }\n hashParts.push(\";\");\n hash = hashParts.join(\"\");\n return hash;\n };\n\n this.addSectionPlane = function (sectionPlane) {\n this.sectionPlanes.push(sectionPlane);\n hash = null;\n };\n\n this.removeSectionPlane = function (sectionPlane) {\n for (let i = 0, len = this.sectionPlanes.length; i < len; i++) {\n if (this.sectionPlanes[i].id === sectionPlane.id) {\n this.sectionPlanes.splice(i, 1);\n hash = null;\n return;\n }\n }\n };\n })();\n\n this._lightsState = new (function () {\n\n const DEFAULT_AMBIENT = math.vec4([0, 0, 0, 0]);\n const ambientColorIntensity = math.vec4();\n\n this.lights = [];\n this.reflectionMaps = [];\n this.lightMaps = [];\n\n let hash = null;\n let ambientLight = null;\n\n this.getHash = function () {\n if (hash) {\n return hash;\n }\n const hashParts = [];\n const lights = this.lights;\n let light;\n for (let i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n hashParts.push(\"/\");\n hashParts.push(light.type);\n hashParts.push((light.space === \"world\") ? \"w\" : \"v\");\n if (light.castsShadow) {\n hashParts.push(\"sh\");\n }\n }\n if (this.lightMaps.length > 0) {\n hashParts.push(\"/lm\");\n }\n if (this.reflectionMaps.length > 0) {\n hashParts.push(\"/rm\");\n }\n hashParts.push(\";\");\n hash = hashParts.join(\"\");\n return hash;\n };\n\n this.addLight = function (state) {\n this.lights.push(state);\n ambientLight = null;\n hash = null;\n };\n\n this.removeLight = function (state) {\n for (let i = 0, len = this.lights.length; i < len; i++) {\n const light = this.lights[i];\n if (light.id === state.id) {\n this.lights.splice(i, 1);\n if (ambientLight && ambientLight.id === state.id) {\n ambientLight = null;\n }\n hash = null;\n return;\n }\n }\n };\n\n this.addReflectionMap = function (state) {\n this.reflectionMaps.push(state);\n hash = null;\n };\n\n this.removeReflectionMap = function (state) {\n for (let i = 0, len = this.reflectionMaps.length; i < len; i++) {\n if (this.reflectionMaps[i].id === state.id) {\n this.reflectionMaps.splice(i, 1);\n hash = null;\n return;\n }\n }\n };\n\n this.addLightMap = function (state) {\n this.lightMaps.push(state);\n hash = null;\n };\n\n this.removeLightMap = function (state) {\n for (let i = 0, len = this.lightMaps.length; i < len; i++) {\n if (this.lightMaps[i].id === state.id) {\n this.lightMaps.splice(i, 1);\n hash = null;\n return;\n }\n }\n };\n\n this.getAmbientColorAndIntensity = function () {\n if (!ambientLight) {\n for (let i = 0, len = this.lights.length; i < len; i++) {\n const light = this.lights[i];\n if (light.type === \"ambient\") {\n ambientLight = light;\n break;\n }\n }\n }\n if (ambientLight) {\n const color = ambientLight.color;\n const intensity = ambientLight.intensity;\n ambientColorIntensity[0] = color[0];\n ambientColorIntensity[1] = color[1];\n ambientColorIntensity[2] = color[2];\n ambientColorIntensity[3] = intensity;\n return ambientColorIntensity;\n } else {\n return DEFAULT_AMBIENT;\n }\n };\n\n })();\n\n /**\n * Publishes input events that occur on this Scene's canvas.\n *\n * @property input\n * @type {Input}\n * @final\n */\n this.input = new Input(this, {\n dontClear: true, // Never destroy this component with Scene#clear();\n element: this.canvas.canvas,\n keyboardEventsElement: cfg.keyboardEventsElement\n });\n\n /**\n * Configures this Scene's units of measurement and coordinate mapping between Real-space and World-space 3D coordinate systems.\n *\n * @property metrics\n * @type {Metrics}\n * @final\n */\n this.metrics = new Metrics(this, {\n units: cfg.units,\n scale: cfg.scale,\n origin: cfg.origin\n });\n\n /** Configures Scalable Ambient Obscurance (SAO) for this Scene.\n * @type {SAO}\n * @final\n */\n this.sao = new SAO(this, {\n enabled: cfg.saoEnabled\n });\n\n this.ticksPerRender = cfg.ticksPerRender;\n this.ticksPerOcclusionTest = cfg.ticksPerOcclusionTest;\n this.passes = cfg.passes;\n this.clearEachPass = cfg.clearEachPass;\n this.gammaInput = cfg.gammaInput;\n this.gammaOutput = cfg.gammaOutput;\n this.gammaFactor = cfg.gammaFactor;\n\n this._entityOffsetsEnabled = !!cfg.entityOffsetsEnabled;\n this._pickSurfacePrecisionEnabled = !!cfg.pickSurfacePrecisionEnabled;\n this._logarithmicDepthBufferEnabled = !!cfg.logarithmicDepthBufferEnabled;\n\n this._pbrEnabled = !!cfg.pbrEnabled;\n\n // Register Scene on xeokit\n // Do this BEFORE we add components below\n core._addScene(this);\n\n this._initDefaults();\n\n // Global components\n\n this._viewport = new Viewport(this, {\n id: \"default.viewport\",\n autoBoundary: true,\n dontClear: true // Never destroy this component with Scene#clear();\n });\n\n this._camera = new Camera(this, {\n id: \"default.camera\",\n dontClear: true // Never destroy this component with Scene#clear();\n });\n\n // Default lights\n\n new AmbientLight(this, {\n color: [1.0, 1.0, 1.0],\n intensity: 0.7\n });\n\n new DirLight(this, {\n dir: [0.8, -.5, -0.5],\n color: [0.67, 0.67, 1.0],\n intensity: 0.7,\n space: \"world\"\n });\n\n new DirLight(this, {\n dir: [-0.8, -1.0, 0.5],\n color: [1, 1, .9],\n intensity: 0.9,\n space: \"world\"\n });\n\n this._camera.on(\"dirty\", () => {\n this._renderer.imageDirty();\n });\n }\n\n _initDefaults() {\n\n this.geometry;\n this.material;\n this.xrayMaterial;\n this.edgeMaterial;\n this.selectedMaterial;\n this.highlightMaterial;\n }\n\n _addComponent(component) {\n if (component.id) { // Manual ID\n if (this.components[component.id]) {\n this.error(\"Component \" + utils.inQuotes(component.id) + \" already exists in Scene - ignoring ID, will randomly-generate instead\");\n component.id = null;\n }\n }\n if (!component.id) { // Auto ID\n if (window.nextID === undefined) {\n window.nextID = 0;\n }\n //component.id = math.createUUID();\n component.id = \"__\" + window.nextID++;\n while (this.components[component.id]) {\n component.id = math.createUUID();\n }\n }\n this.components[component.id] = component;\n\n // Register for class type\n const type = component.type;\n let types = this.types[component.type];\n if (!types) {\n types = this.types[type] = {};\n }\n types[component.id] = component;\n\n if (component.compile) {\n this._compilables[component.id] = component;\n }\n if (component.isDrawable) {\n this._renderer.addDrawable(component.id, component);\n this._collidables[component.id] = component;\n }\n }\n\n _removeComponent(component) {\n var id = component.id;\n var type = component.type;\n delete this.components[id];\n // Unregister for types\n const types = this.types[type];\n if (types) {\n delete types[id];\n if (utils.isEmptyObject(types)) {\n delete this.types[type];\n }\n }\n if (component.compile) {\n delete this._compilables[component.id];\n }\n if (component.isDrawable) {\n this._renderer.removeDrawable(component.id);\n delete this._collidables[component.id];\n }\n }\n\n // Methods below are called by various component types to register themselves on their\n // Scene. Violates Hollywood Principle, where we could just filter on type in _addComponent,\n // but this is faster than checking the type of each component in such a filter.\n\n _sectionPlaneCreated(sectionPlane) {\n this.sectionPlanes[sectionPlane.id] = sectionPlane;\n this.scene._sectionPlanesState.addSectionPlane(sectionPlane._state);\n this.scene.fire(\"sectionPlaneCreated\", sectionPlane, true /* Don't retain event */);\n this._needRecompile = true;\n }\n\n _lightCreated(light) {\n this.lights[light.id] = light;\n this.scene._lightsState.addLight(light._state);\n this._needRecompile = true;\n }\n\n _lightMapCreated(lightMap) {\n this.lightMaps[lightMap.id] = lightMap;\n this.scene._lightsState.addLightMap(lightMap._state);\n this._needRecompile = true;\n }\n\n _reflectionMapCreated(reflectionMap) {\n this.reflectionMaps[reflectionMap.id] = reflectionMap;\n this.scene._lightsState.addReflectionMap(reflectionMap._state);\n this._needRecompile = true;\n }\n\n _sectionPlaneDestroyed(sectionPlane) {\n delete this.sectionPlanes[sectionPlane.id];\n this.scene._sectionPlanesState.removeSectionPlane(sectionPlane._state);\n this.scene.fire(\"sectionPlaneDestroyed\", sectionPlane, true /* Don't retain event */);\n this._needRecompile = true;\n }\n\n _lightDestroyed(light) {\n delete this.lights[light.id];\n this.scene._lightsState.removeLight(light._state);\n this._needRecompile = true;\n }\n\n _lightMapDestroyed(lightMap) {\n delete this.lightMaps[lightMap.id];\n this.scene._lightsState.removeLightMap(lightMap._state);\n this._needRecompile = true;\n }\n\n _reflectionMapDestroyed(reflectionMap) {\n delete this.reflectionMaps[reflectionMap.id];\n this.scene._lightsState.removeReflectionMap(reflectionMap._state);\n this._needRecompile = true;\n }\n\n _registerModel(entity) {\n this.models[entity.id] = entity;\n this._modelIds = null; // Lazy regenerate\n }\n\n _deregisterModel(entity) {\n const modelId = entity.id;\n delete this.models[modelId];\n this._modelIds = null; // Lazy regenerate\n this.fire(\"modelUnloaded\", modelId);\n }\n\n _registerObject(entity) {\n this.objects[entity.id] = entity;\n this._numObjects++;\n this._objectIds = null; // Lazy regenerate\n }\n\n _deregisterObject(entity) {\n delete this.objects[entity.id];\n this._numObjects--;\n this._objectIds = null; // Lazy regenerate\n }\n\n _objectVisibilityUpdated(entity, notify = true) {\n if (entity.visible) {\n this.visibleObjects[entity.id] = entity;\n this._numVisibleObjects++;\n } else {\n delete this.visibleObjects[entity.id];\n this._numVisibleObjects--;\n }\n this._visibleObjectIds = null; // Lazy regenerate\n if (notify) {\n this.fire(\"objectVisibility\", entity, true);\n }\n }\n\n _objectXRayedUpdated(entity) {\n if (entity.xrayed) {\n this.xrayedObjects[entity.id] = entity;\n this._numXRayedObjects++;\n } else {\n delete this.xrayedObjects[entity.id];\n this._numXRayedObjects--;\n }\n this._xrayedObjectIds = null; // Lazy regenerate\n }\n\n _objectHighlightedUpdated(entity) {\n if (entity.highlighted) {\n this.highlightedObjects[entity.id] = entity;\n this._numHighlightedObjects++;\n } else {\n delete this.highlightedObjects[entity.id];\n this._numHighlightedObjects--;\n }\n this._highlightedObjectIds = null; // Lazy regenerate\n }\n\n _objectSelectedUpdated(entity) {\n if (entity.selected) {\n this.selectedObjects[entity.id] = entity;\n this._numSelectedObjects++;\n } else {\n delete this.selectedObjects[entity.id];\n this._numSelectedObjects--;\n }\n this._selectedObjectIds = null; // Lazy regenerate\n }\n\n _objectColorizeUpdated(entity, colorized) {\n if (colorized) {\n this.colorizedObjects[entity.id] = entity;\n this._numColorizedObjects++;\n } else {\n delete this.colorizedObjects[entity.id];\n this._numColorizedObjects--;\n }\n this._colorizedObjectIds = null; // Lazy regenerate\n }\n\n _objectOpacityUpdated(entity, opacityUpdated) {\n if (opacityUpdated) {\n this.opacityObjects[entity.id] = entity;\n this._numOpacityObjects++;\n } else {\n delete this.opacityObjects[entity.id];\n this._numOpacityObjects--;\n }\n this._opacityObjectIds = null; // Lazy regenerate\n }\n\n _objectOffsetUpdated(entity, offset) {\n if (!offset || offset[0] === 0 && offset[1] === 0 && offset[2] === 0) {\n this.offsetObjects[entity.id] = entity;\n this._numOffsetObjects++;\n } else {\n delete this.offsetObjects[entity.id];\n this._numOffsetObjects--;\n }\n this._offsetObjectIds = null; // Lazy regenerate\n }\n\n _webglContextLost() {\n // this.loading++;\n this.canvas.spinner.processes++;\n for (const id in this.components) {\n if (this.components.hasOwnProperty(id)) {\n const component = this.components[id];\n if (component._webglContextLost) {\n component._webglContextLost();\n }\n }\n }\n this._renderer.webglContextLost();\n }\n\n _webglContextRestored() {\n const gl = this.canvas.gl;\n for (const id in this.components) {\n if (this.components.hasOwnProperty(id)) {\n const component = this.components[id];\n if (component._webglContextRestored) {\n component._webglContextRestored(gl);\n }\n }\n }\n this._renderer.webglContextRestored(gl);\n //this.loading--;\n this.canvas.spinner.processes--;\n }\n\n /**\n * Whether {@link Entity#offset} is enabled.\n *\n * This is set via the {@link Viewer} constructor and is ````false```` by default.\n *\n * @returns {Boolean} True if {@link Entity#offset} is enabled.\n */\n get entityOffsetsEnabled() {\n return this._entityOffsetsEnabled;\n }\n\n /**\n * Whether precision surface picking is enabled.\n *\n * This is set via the {@link Viewer} constructor and is ````false```` by default.\n *\n * The ````pickSurfacePrecision```` option for ````Scene#pick```` only works if this is set ````true````.\n *\n * Note that when ````true````, this configuration will increase the amount of browser memory used by the Viewer.\n *\n * @returns {Boolean} True if precision picking is enabled.\n */\n get pickSurfacePrecisionEnabled() {\n return this._pickSurfacePrecisionEnabled;\n }\n\n /**\n * Whether logarithmic depth buffer is enabled.\n *\n * This is set via the {@link Viewer} constructor and is ````false```` by default.\n *\n * @returns {Boolean} True if logarithmic depth buffer is enabled.\n */\n get logarithmicDepthBufferEnabled() {\n return this._logarithmicDepthBufferEnabled;\n }\n\n /**\n * Sets whether physically-based rendering is enabled.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} True if quality rendering is enabled.\n */\n set pbrEnabled(pbrEnabled) {\n this._pbrEnabled = !!pbrEnabled;\n this.glRedraw();\n }\n\n /**\n * Sets whether quality rendering is enabled.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} True if quality rendering is enabled.\n */\n get pbrEnabled() {\n return this._pbrEnabled;\n }\n\n /**\n * Performs an occlusion test on all {@link Marker}s in this {@link Scene}.\n *\n * Sets each {@link Marker#visible} ````true```` if the Marker is currently not occluded by any opaque {@link Entity}s\n * in the Scene, or ````false```` if an Entity is occluding it.\n */\n doOcclusionTest() {\n if (this._needRecompile) {\n this._recompile();\n this._needRecompile = false;\n }\n this._renderer.doOcclusionTest();\n }\n\n /**\n * Renders a single frame of this Scene.\n *\n * The Scene will periodically render itself after any updates, but you can call this method to force a render\n * if required.\n *\n * @param {Boolean} [forceRender=false] Forces a render when true, otherwise only renders if something has changed in this Scene\n * since the last render.\n */\n render(forceRender) {\n\n if (forceRender) {\n core.runTasks();\n }\n\n const renderEvent = {\n sceneId: null,\n pass: 0\n };\n\n if (this._needRecompile) {\n this._recompile();\n this._renderer.imageDirty();\n this._needRecompile = false;\n }\n\n renderEvent.sceneId = this.id;\n\n const passes = this._passes;\n const clearEachPass = this._clearEachPass;\n let pass;\n let clear;\n\n for (pass = 0; pass < passes; pass++) {\n\n renderEvent.pass = pass;\n\n /**\n * Fired when about to render a frame for a Scene.\n *\n * @event rendering\n * @param {String} sceneID The ID of this Scene.\n * @param {Number} pass Index of the pass we are about to render (see {@link Scene#passes}).\n */\n this.fire(\"rendering\", renderEvent, true);\n\n clear = clearEachPass || (pass === 0);\n\n this._renderer.render({pass: pass, clear: clear, force: forceRender});\n\n /**\n * Fired when we have just rendered a frame for a Scene.\n *\n * @event rendering\n * @param {String} sceneID The ID of this Scene.\n * @param {Number} pass Index of the pass we rendered (see {@link Scene#passes}).\n */\n this.fire(\"rendered\", renderEvent, true);\n }\n\n this._saveAmbientColor();\n }\n\n _recompile() {\n for (const id in this._compilables) {\n if (this._compilables.hasOwnProperty(id)) {\n this._compilables[id].compile();\n }\n }\n this._renderer.shadowsDirty();\n this.fire(\"compile\", this, true);\n }\n\n _saveAmbientColor() {\n const canvas = this.canvas;\n if (!canvas.transparent && !canvas.backgroundImage && !canvas.backgroundColor) {\n const ambientColorIntensity = this._lightsState.getAmbientColorAndIntensity();\n if (!this._lastAmbientColor ||\n this._lastAmbientColor[0] !== ambientColorIntensity[0] ||\n this._lastAmbientColor[1] !== ambientColorIntensity[1] ||\n this._lastAmbientColor[2] !== ambientColorIntensity[2] ||\n this._lastAmbientColor[3] !== ambientColorIntensity[3]) {\n canvas.backgroundColor = ambientColorIntensity;\n if (!this._lastAmbientColor) {\n this._lastAmbientColor = math.vec4([0, 0, 0, 1]);\n }\n this._lastAmbientColor.set(ambientColorIntensity);\n }\n } else {\n this._lastAmbientColor = null;\n }\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#models}.\n *\n * @type {String[]}\n */\n get modelIds() {\n if (!this._modelIds) {\n this._modelIds = Object.keys(this.models);\n }\n return this._modelIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#objects}.\n *\n * @type {Number}\n */\n get numObjects() {\n return this._numObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#objects}.\n *\n * @type {String[]}\n */\n get objectIds() {\n if (!this._objectIds) {\n this._objectIds = Object.keys(this.objects);\n }\n return this._objectIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#visibleObjects}.\n *\n * @type {Number}\n */\n get numVisibleObjects() {\n return this._numVisibleObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#visibleObjects}.\n *\n * @type {String[]}\n */\n get visibleObjectIds() {\n if (!this._visibleObjectIds) {\n this._visibleObjectIds = Object.keys(this.visibleObjects);\n }\n return this._visibleObjectIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#xrayedObjects}.\n *\n * @type {Number}\n */\n get numXRayedObjects() {\n return this._numXRayedObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#xrayedObjects}.\n *\n * @type {String[]}\n */\n get xrayedObjectIds() {\n if (!this._xrayedObjectIds) {\n this._xrayedObjectIds = Object.keys(this.xrayedObjects);\n }\n return this._xrayedObjectIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#highlightedObjects}.\n *\n * @type {Number}\n */\n get numHighlightedObjects() {\n return this._numHighlightedObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#highlightedObjects}.\n *\n * @type {String[]}\n */\n get highlightedObjectIds() {\n if (!this._highlightedObjectIds) {\n this._highlightedObjectIds = Object.keys(this.highlightedObjects);\n }\n return this._highlightedObjectIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#selectedObjects}.\n *\n * @type {Number}\n */\n get numSelectedObjects() {\n return this._numSelectedObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#selectedObjects}.\n *\n * @type {String[]}\n */\n get selectedObjectIds() {\n if (!this._selectedObjectIds) {\n this._selectedObjectIds = Object.keys(this.selectedObjects);\n }\n return this._selectedObjectIds;\n }\n\n /**\n * Gets the number of {@link Entity}s in {@link Scene#colorizedObjects}.\n *\n * @type {Number}\n */\n get numColorizedObjects() {\n return this._numColorizedObjects;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#colorizedObjects}.\n *\n * @type {String[]}\n */\n get colorizedObjectIds() {\n if (!this._colorizedObjectIds) {\n this._colorizedObjectIds = Object.keys(this.colorizedObjects);\n }\n return this._colorizedObjectIds;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#opacityObjects}.\n *\n * @type {String[]}\n */\n get opacityObjectIds() {\n if (!this._opacityObjectIds) {\n this._opacityObjectIds = Object.keys(this.opacityObjects);\n }\n return this._opacityObjectIds;\n }\n\n /**\n * Gets the IDs of the {@link Entity}s in {@link Scene#offsetObjects}.\n *\n * @type {String[]}\n */\n get offsetObjectIds() {\n if (!this._offsetObjectIds) {\n this._offsetObjectIds = Object.keys(this.offsetObjects);\n }\n return this._offsetObjectIds;\n }\n\n /**\n * Sets the number of \"ticks\" that happen between each render or this Scene.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n set ticksPerRender(value) {\n if (value === undefined || value === null) {\n value = 1;\n } else if (!utils.isNumeric(value) || value <= 0) {\n this.error(\"Unsupported value for 'ticksPerRender': '\" + value +\n \"' - should be an integer greater than zero.\");\n value = 1;\n }\n if (value === this._ticksPerRender) {\n return;\n }\n this._ticksPerRender = value;\n }\n\n /**\n * Gets the number of \"ticks\" that happen between each render or this Scene.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get ticksPerRender() {\n return this._ticksPerRender;\n }\n\n /**\n * Sets the number of \"ticks\" that happen between occlusion testing for {@link Marker}s.\n *\n * Default value is ````20````.\n *\n * @type {Number}\n */\n set ticksPerOcclusionTest(value) {\n if (value === undefined || value === null) {\n value = 20;\n } else if (!utils.isNumeric(value) || value <= 0) {\n this.error(\"Unsupported value for 'ticksPerOcclusionTest': '\" + value +\n \"' - should be an integer greater than zero.\");\n value = 20;\n }\n if (value === this._ticksPerOcclusionTest) {\n return;\n }\n this._ticksPerOcclusionTest = value;\n }\n\n /**\n * Gets the number of \"ticks\" that happen between each render of this Scene.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get ticksPerOcclusionTest() {\n return this._ticksPerOcclusionTest;\n }\n\n /**\n * Sets the number of times this Scene renders per frame.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n set passes(value) {\n if (value === undefined || value === null) {\n value = 1;\n } else if (!utils.isNumeric(value) || value <= 0) {\n this.error(\"Unsupported value for 'passes': '\" + value +\n \"' - should be an integer greater than zero.\");\n value = 1;\n }\n if (value === this._passes) {\n return;\n }\n this._passes = value;\n this.glRedraw();\n }\n\n /**\n * Gets the number of times this Scene renders per frame.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get passes() {\n return this._passes;\n }\n\n /**\n * When {@link Scene#passes} is greater than ````1````, indicates whether or not to clear the canvas before each pass (````true````) or just before the first pass (````false````).\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set clearEachPass(value) {\n value = !!value;\n if (value === this._clearEachPass) {\n return;\n }\n this._clearEachPass = value;\n this.glRedraw();\n }\n\n /**\n * When {@link Scene#passes} is greater than ````1````, indicates whether or not to clear the canvas before each pass (````true````) or just before the first pass (````false````).\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get clearEachPass() {\n return this._clearEachPass;\n }\n\n /**\n * Sets whether or not {@link Scene} should expect all {@link Texture}s and colors to have pre-multiplied gamma.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set gammaInput(value) {\n value = value !== false;\n if (value === this._renderer.gammaInput) {\n return;\n }\n this._renderer.gammaInput = value;\n this._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets whether or not {@link Scene} should expect all {@link Texture}s and colors to have pre-multiplied gamma.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get gammaInput() {\n return this._renderer.gammaInput;\n }\n\n /**\n * Sets whether or not to render pixels with pre-multiplied gama.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set gammaOutput(value) {\n value = !!value;\n if (value === this._renderer.gammaOutput) {\n return;\n }\n this._renderer.gammaOutput = value;\n this._needRecompile = true;\n this.glRedraw();\n }\n\n /**\n * Gets whether or not to render pixels with pre-multiplied gama.\n *\n * Default value is ````true````.\n *\n * @type {Boolean}\n */\n get gammaOutput() {\n return this._renderer.gammaOutput;\n }\n\n /**\n * Sets the gamma factor to use when {@link Scene#gammaOutput} is set true.\n *\n * Default value is ````2.2````.\n *\n * @type {Number}\n */\n set gammaFactor(value) {\n value = (value === undefined || value === null) ? 2.2 : value;\n if (value === this._renderer.gammaFactor) {\n return;\n }\n this._renderer.gammaFactor = value;\n this.glRedraw();\n }\n\n /**\n * Gets the gamma factor to use when {@link Scene#gammaOutput} is set true.\n *\n * Default value is ````2.2````.\n *\n * @type {Number}\n */\n get gammaFactor() {\n return this._renderer.gammaFactor;\n }\n\n /**\n * Gets the default {@link Geometry} for this Scene, which is a {@link ReadableGeometry} with a unit-sized box shape.\n *\n * Has {@link ReadableGeometry#id} set to \"default.geometry\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#geometry} set to this {@link ReadableGeometry} by default.\n *\n * @type {ReadableGeometry}\n */\n get geometry() {\n return this.components[\"default.geometry\"] || buildBoxGeometry(ReadableGeometry);\n }\n\n /**\n * Gets the default {@link Material} for this Scene, which is a {@link PhongMaterial}.\n *\n * Has {@link PhongMaterial#id} set to \"default.material\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#material} set to this {@link PhongMaterial} by default.\n *\n * @type {PhongMaterial}\n */\n get material() {\n return this.components[\"default.material\"] || new PhongMaterial(this, {\n id: \"default.material\",\n emissive: [0.4, 0.4, 0.4], // Visible by default on geometry without normals\n dontClear: true\n });\n }\n\n /**\n * Gets the default xraying {@link EmphasisMaterial} for this Scene.\n *\n * Has {@link EmphasisMaterial#id} set to \"default.xrayMaterial\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#xrayMaterial} set to this {@link EmphasisMaterial} by default.\n *\n * {@link Mesh}s are xrayed while {@link Mesh#xrayed} is ````true````.\n *\n * @type {EmphasisMaterial}\n */\n get xrayMaterial() {\n return this.components[\"default.xrayMaterial\"] || new EmphasisMaterial(this, {\n id: \"default.xrayMaterial\",\n preset: \"sepia\",\n dontClear: true\n });\n }\n\n /**\n * Gets the default highlight {@link EmphasisMaterial} for this Scene.\n *\n * Has {@link EmphasisMaterial#id} set to \"default.highlightMaterial\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#highlightMaterial} set to this {@link EmphasisMaterial} by default.\n *\n * {@link Mesh}s are highlighted while {@link Mesh#highlighted} is ````true````.\n *\n * @type {EmphasisMaterial}\n */\n get highlightMaterial() {\n return this.components[\"default.highlightMaterial\"] || new EmphasisMaterial(this, {\n id: \"default.highlightMaterial\",\n preset: \"yellowHighlight\",\n dontClear: true\n });\n }\n\n /**\n * Gets the default selection {@link EmphasisMaterial} for this Scene.\n *\n * Has {@link EmphasisMaterial#id} set to \"default.selectedMaterial\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#highlightMaterial} set to this {@link EmphasisMaterial} by default.\n *\n * {@link Mesh}s are highlighted while {@link Mesh#highlighted} is ````true````.\n *\n * @type {EmphasisMaterial}\n */\n get selectedMaterial() {\n return this.components[\"default.selectedMaterial\"] || new EmphasisMaterial(this, {\n id: \"default.selectedMaterial\",\n preset: \"greenSelected\",\n dontClear: true\n });\n }\n\n /**\n * Gets the default {@link EdgeMaterial} for this Scene.\n *\n * Has {@link EdgeMaterial#id} set to \"default.edgeMaterial\".\n *\n * {@link Mesh}s in this Scene have {@link Mesh#edgeMaterial} set to this {@link EdgeMaterial} by default.\n *\n * {@link Mesh}s have their edges emphasized while {@link Mesh#edges} is ````true````.\n *\n * @type {EdgeMaterial}\n */\n get edgeMaterial() {\n return this.components[\"default.edgeMaterial\"] || new EdgeMaterial(this, {\n id: \"default.edgeMaterial\",\n preset: \"default\",\n edgeColor: [0.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1,\n dontClear: true\n });\n }\n\n /**\n * Gets the {@link PointsMaterial} for this Scene.\n *\n * @type {PointsMaterial}\n */\n get pointsMaterial() {\n return this.components[\"default.pointsMaterial\"] || new PointsMaterial(this, {\n id: \"default.pointsMaterial\",\n preset: \"default\",\n dontClear: true\n });\n }\n\n /**\n * Gets the {@link LinesMaterial} for this Scene.\n *\n * @type {LinesMaterial}\n */\n get linesMaterial() {\n return this.components[\"default.linesMaterial\"] || new LinesMaterial(this, {\n id: \"default.linesMaterial\",\n preset: \"default\",\n dontClear: true\n });\n }\n\n /**\n * Gets the {@link Viewport} for this Scene.\n *\n * @type Viewport\n */\n get viewport() {\n return this._viewport;\n }\n\n /**\n * Gets the {@link Camera} for this Scene.\n *\n * @type {Camera}\n */\n get camera() {\n return this._camera;\n }\n\n /**\n * Gets the World-space 3D center of this Scene.\n *\n *@type {Number[]}\n */\n get center() {\n if (this._aabbDirty || !this._center) {\n if (!this._center || !this._center) {\n this._center = math.vec3();\n }\n const aabb = this.aabb;\n this._center[0] = (aabb[0] + aabb[3]) / 2;\n this._center[1] = (aabb[1] + aabb[4]) / 2;\n this._center[2] = (aabb[2] + aabb[5]) / 2;\n }\n return this._center;\n }\n\n /**\n * Gets the World-space axis-aligned 3D boundary (AABB) of this Scene.\n *\n * The AABB is represented by a six-element Float64Array containing the min/max extents of the axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * When the Scene has no content, will be ````[-100,-100,-100,100,100,100]````.\n *\n * @type {Number[]}\n */\n get aabb() {\n if (this._aabbDirty) {\n if (!this._aabb) {\n this._aabb = math.AABB3();\n }\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = math.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n let zmax = math.MIN_DOUBLE;\n let aabb;\n const collidables = this._collidables;\n let collidable;\n let valid = false;\n for (const collidableId in collidables) {\n if (collidables.hasOwnProperty(collidableId)) {\n collidable = collidables[collidableId];\n if (collidable.collidable === false) {\n continue;\n }\n aabb = collidable.aabb;\n if (aabb[0] < xmin) {\n xmin = aabb[0];\n }\n if (aabb[1] < ymin) {\n ymin = aabb[1];\n }\n if (aabb[2] < zmin) {\n zmin = aabb[2];\n }\n if (aabb[3] > xmax) {\n xmax = aabb[3];\n }\n if (aabb[4] > ymax) {\n ymax = aabb[4];\n }\n if (aabb[5] > zmax) {\n zmax = aabb[5];\n }\n valid = true;\n }\n }\n if (!valid) {\n xmin = -100;\n ymin = -100;\n zmin = -100;\n xmax = 100;\n ymax = 100;\n zmax = 100;\n }\n this._aabb[0] = xmin;\n this._aabb[1] = ymin;\n this._aabb[2] = zmin;\n this._aabb[3] = xmax;\n this._aabb[4] = ymax;\n this._aabb[5] = zmax;\n this._aabbDirty = false;\n }\n return this._aabb;\n }\n\n _setAABBDirty() {\n //if (!this._aabbDirty) {\n this._aabbDirty = true;\n this.fire(\"boundary\");\n // }\n }\n\n /**\n * Attempts to pick an {@link Entity} in this Scene.\n *\n * Ignores {@link Entity}s with {@link Entity#pickable} set ````false````.\n *\n * When an {@link Entity} is picked, fires a \"pick\" event on the {@link Entity} with the pick result as parameters.\n *\n * Picking the {@link Entity} at the given canvas coordinates:\n\n * ````javascript\n * var pickResult = scene.pick({\n * canvasPos: [23, 131]\n * });\n *\n * if (pickResult) { // Picked an Entity\n * var entity = pickResult.entity;\n * }\n * ````\n *\n * Picking, with a ray cast through the canvas, hits an {@link Entity}:\n *\n * ````javascript\n * var pickResult = scene.pick({\n * pickSurface: true,\n * canvasPos: [23, 131]\n * });\n *\n * if (pickResult) { // Picked an Entity\n *\n * var entity = pickResult.entity;\n *\n * if (pickResult.primitive === \"triangle\") {\n *\n * // Picked a triangle on the entity surface\n *\n * var primIndex = pickResult.primIndex; // Position of triangle's first index in the picked Entity's Geometry's indices array\n * var indices = pickResult.indices; // UInt32Array containing the triangle's vertex indices\n * var localPos = pickResult.localPos; // Float64Array containing the picked Local-space position on the triangle\n * var worldPos = pickResult.worldPos; // Float64Array containing the picked World-space position on the triangle\n * var viewPos = pickResult.viewPos; // Float64Array containing the picked View-space position on the triangle\n * var bary = pickResult.bary; // Float64Array containing the picked barycentric position within the triangle\n * var worldNormal = pickResult.worldNormal; // Float64Array containing the interpolated World-space normal vector at the picked position on the triangle\n * var uv = pickResult.uv; // Float64Array containing the interpolated UV coordinates at the picked position on the triangle\n *\n * } else if (pickResult.worldPos && pickResult.worldNormal) {\n *\n * // Picked a point and normal on the entity surface\n *\n * var worldPos = pickResult.worldPos; // Float64Array containing the picked World-space position on the Entity surface\n * var worldNormal = pickResult.worldNormal; // Float64Array containing the picked World-space normal vector on the Entity Surface\n * }\n * }\n * ````\n *\n * Picking the {@link Entity} that intersects an arbitrarily-aligned World-space ray:\n *\n * ````javascript\n * var pickResult = scene.pick({\n * pickSurface: true, // Picking with arbitrarily-positioned ray\n * origin: [0,0,-5], // Ray origin\n * direction: [0,0,1] // Ray direction\n * });\n *\n * if (pickResult) { // Picked an Entity with the ray\n *\n * var entity = pickResult.entity;\n *\n * if (pickResult.primitive == \"triangle\") {\n *\n * // Picked a triangle on the entity surface\n *\n * var primitive = pickResult.primitive; // Type of primitive that was picked, usually \"triangles\"\n * var primIndex = pickResult.primIndex; // Position of triangle's first index in the picked Entity's Geometry's indices array\n * var indices = pickResult.indices; // UInt32Array containing the triangle's vertex indices\n * var localPos = pickResult.localPos; // Float64Array containing the picked Local-space position on the triangle\n * var worldPos = pickResult.worldPos; // Float64Array containing the picked World-space position on the triangle\n * var viewPos = pickResult.viewPos; // Float64Array containing the picked View-space position on the triangle\n * var bary = pickResult.bary; // Float64Array containing the picked barycentric position within the triangle\n * var worldNormal = pickResult.worldNormal; // Float64Array containing the interpolated World-space normal vector at the picked position on the triangle\n * var uv = pickResult.uv; // Float64Array containing the interpolated UV coordinates at the picked position on the triangle\n * var origin = pickResult.origin; // Float64Array containing the World-space ray origin\n * var direction = pickResult.direction; // Float64Array containing the World-space ray direction\n *\n * } else if (pickResult.worldPos && pickResult.worldNormal) {\n *\n * // Picked a point and normal on the entity surface\n *\n * var worldPos = pickResult.worldPos; // Float64Array containing the picked World-space position on the Entity surface\n * var worldNormal = pickResult.worldNormal; // Float64Array containing the picked World-space normal vector on the Entity Surface\n * }\n * }\n * ````\n *\n * @param {*} params Picking parameters.\n * @param {Boolean} [params.pickSurface=false] Whether to find the picked position on the surface of the Entity.\n * @param {Boolean} [params.pickSurfacePrecision=false] When picking an Entity surface position, indicates whether or not we want full-precision {@link PickResult#worldPos}. Only works when {@link Scene#pickSurfacePrecisionEnabled} is ````true````. If pick succeeds, the returned {@link PickResult} will have {@link PickResult#precision} set ````true````, to indicate that it contains full-precision surface pick results.\n * @param {Boolean} [params.pickSurfaceNormal=false] Whether to find the picked normal on the surface of the Entity. Only works if ````pickSurface```` is given.\n * @param {Number[]} [params.canvasPos] Canvas-space coordinates. When ray-picking, this will override the **origin** and ** direction** parameters and will cause the ray to be fired through the canvas at this position, directly along the negative View-space Z-axis.\n * @param {Number[]} [params.origin] World-space ray origin when ray-picking. Ignored when canvasPos given.\n * @param {Number[]} [params.direction] World-space ray direction when ray-picking. Also indicates the length of the ray. Ignored when canvasPos given.\n * @param {Number[]} [params.matrix] 4x4 transformation matrix to define the World-space ray origin and direction, as an alternative to ````origin```` and ````direction````.\n * @param {String[]} [params.includeEntities] IDs of {@link Entity}s to restrict picking to. When given, ignores {@link Entity}s whose IDs are not in this list.\n * @param {String[]} [params.excludeEntities] IDs of {@link Entity}s to ignore. When given, will pick *through* these {@link Entity}s, as if they were not there.\n * @param {PickResult} [pickResult] Holds the results of the pick attempt. Will use the Scene's singleton PickResult if you don't supply your own.\n * @returns {PickResult} Holds results of the pick attempt, returned when an {@link Entity} is picked, else null. See method comments for description.\n */\n pick(params, pickResult) {\n\n if (this.canvas.boundary[2] === 0 || this.canvas.boundary[3] === 0) {\n this.error(\"Picking not allowed while canvas has zero width or height\");\n return null;\n }\n\n params = params || {};\n\n params.pickSurface = params.pickSurface || params.rayPick; // Backwards compatibility\n\n if (!params.canvasPos && !params.matrix && (!params.origin || !params.direction)) {\n this.warn(\"picking without canvasPos, matrix, or ray origin and direction\");\n }\n\n const includeEntities = params.includeEntities || params.include; // Backwards compat\n if (includeEntities) {\n params.includeEntityIds = getEntityIDMap(this, includeEntities);\n }\n\n const excludeEntities = params.excludeEntities || params.exclude; // Backwards compat\n if (excludeEntities) {\n params.excludeEntityIds = getEntityIDMap(this, excludeEntities);\n }\n\n if (this._needRecompile) {\n this._recompile();\n this._renderer.imageDirty();\n this._needRecompile = false;\n }\n\n pickResult = this._renderer.pick(params, pickResult);\n\n if (pickResult) {\n if (pickResult.entity && pickResult.entity.fire) {\n pickResult.entity.fire(\"picked\", pickResult); // TODO: PerformanceModelNode doesn't fire events\n }\n return pickResult;\n }\n }\n\n /**\n * Destroys all non-default {@link Component}s in this Scene.\n */\n clear() {\n var component;\n for (const id in this.components) {\n if (this.components.hasOwnProperty(id)) {\n component = this.components[id];\n if (!component._dontClear) { // Don't destroy components like Camera, Input, Viewport etc.\n component.destroy();\n }\n }\n }\n }\n\n /**\n * Destroys all {@link Light}s in this Scene..\n */\n clearLights() {\n const ids = Object.keys(this.lights);\n for (let i = 0, len = ids.length; i < len; i++) {\n this.lights[ids[i]].destroy();\n }\n }\n\n /**\n * Destroys all {@link SectionPlane}s in this Scene.\n */\n clearSectionPlanes() {\n const ids = Object.keys(this.sectionPlanes);\n for (let i = 0, len = ids.length; i < len; i++) {\n this.sectionPlanes[ids[i]].destroy();\n }\n }\n\n /**\n * Gets the collective axis-aligned boundary (AABB) of a batch of {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} on which {@link Entity#isObject} is registered by {@link Entity#id} in {@link Scene#visibleObjects}.\n *\n * Each {@link Entity} is only included in the AABB when {@link Entity#collidable} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @returns {[Number, Number, Number, Number, Number, Number]} An axis-aligned World-space bounding box, given as elements ````[xmin, ymin, zmin, xmax, ymax, zmax]````.\n */\n getAABB(ids) {\n if (ids === undefined) {\n return this.aabb;\n }\n if (utils.isString(ids)) {\n const entity = this.objects[ids];\n if (entity && entity.aabb) { // A Component subclass with an AABB\n return entity.aabb;\n }\n ids = [ids]; // Must be an entity type\n }\n if (ids.length === 0) {\n return this.aabb;\n }\n let xmin = math.MAX_DOUBLE;\n let ymin = math.MAX_DOUBLE;\n let zmin = math.MAX_DOUBLE;\n let xmax = math.MIN_DOUBLE;\n let ymax = math.MIN_DOUBLE;\n let zmax = math.MIN_DOUBLE;\n let valid;\n this.withObjects(ids, entity => {\n if (entity.collidable) {\n const aabb = entity.aabb;\n if (aabb[0] < xmin) {\n xmin = aabb[0];\n }\n if (aabb[1] < ymin) {\n ymin = aabb[1];\n }\n if (aabb[2] < zmin) {\n zmin = aabb[2];\n }\n if (aabb[3] > xmax) {\n xmax = aabb[3];\n }\n if (aabb[4] > ymax) {\n ymax = aabb[4];\n }\n if (aabb[5] > zmax) {\n zmax = aabb[5];\n }\n valid = true;\n }\n }\n );\n if (valid) {\n const aabb2 = math.AABB3();\n aabb2[0] = xmin;\n aabb2[1] = ymin;\n aabb2[2] = zmin;\n aabb2[3] = xmax;\n aabb2[4] = ymax;\n aabb2[5] = zmax;\n return aabb2;\n } else {\n return this.aabb; // Scene AABB\n }\n }\n\n /**\n * Batch-updates {@link Entity#visible} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#visible} are ````true```` is\n * registered by {@link Entity#id} in {@link Scene#visibleObjects}.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} visible Whether or not to cull.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsVisible(ids, visible) {\n return this.withObjects(ids, entity => {\n const changed = (entity.visible !== visible);\n entity.visible = visible;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#collidable} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} collidable Whether or not to cull.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsCollidable(ids, collidable) {\n return this.withObjects(ids, entity => {\n const changed = (entity.collidable !== collidable);\n entity.collidable = collidable;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#culled} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} culled Whether or not to cull.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsCulled(ids, culled) {\n return this.withObjects(ids, this.objects, entity => {\n const changed = (entity.culled !== culled);\n entity.culled = culled;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#selected} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#selected} are ````true```` is\n * registered by {@link Entity#id} in {@link Scene#selectedObjects}.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} selected Whether or not to highlight.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsSelected(ids, selected) {\n return this.withObjects(ids, entity => {\n const changed = (entity.selected !== selected);\n entity.selected = selected;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#highlighted} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#highlighted} are ````true```` is\n * registered by {@link Entity#id} in {@link Scene#highlightedObjects}.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} highlighted Whether or not to highlight.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsHighlighted(ids, highlighted) {\n return this.withObjects(ids, entity => {\n const changed = (entity.highlighted !== highlighted);\n entity.highlighted = highlighted;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#xrayed} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#xrayed} are ````true```` is\n * registered by {@link Entity#id} in {@link Scene#xrayedObjects}.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} xrayed Whether or not to xray.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsXRayed(ids, xrayed) {\n return this.withObjects(ids, entity => {\n const changed = (entity.xrayed !== xrayed);\n entity.xrayed = xrayed;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#edges} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} edges Whether or not to show edges.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsEdges(ids, edges) {\n return this.withObjects(ids, entity => {\n const changed = (entity.edges !== edges);\n entity.edges = edges;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#colorize} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Number[]} [colorize=(1,1,1)] RGB colorize factors, multiplied by the rendered pixel colors.\n * @returns {Boolean} True if any {@link Entity}s changed opacity, else false if all updates were redundant and not applied.\n */\n setObjectsColorized(ids, colorize) {\n return this.withObjects(ids, entity => {\n entity.colorize = colorize;\n });\n }\n\n /**\n * Batch-updates {@link Entity#opacity} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Number} [opacity=1.0] Opacity factor, multiplied by the rendered pixel alphas.\n * @returns {Boolean} True if any {@link Entity}s changed opacity, else false if all updates were redundant and not applied.\n */\n setObjectsOpacity(ids, opacity) {\n return this.withObjects(ids, entity => {\n const changed = (entity.opacity !== opacity);\n entity.opacity = opacity;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#pickable} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Boolean} pickable Whether or not to enable picking.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n setObjectsPickable(ids, pickable) {\n return this.withObjects(ids, entity => {\n const changed = (entity.pickable !== pickable);\n entity.pickable = pickable;\n return changed;\n });\n }\n\n /**\n * Batch-updates {@link Entity#offset} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Number[]} [offset] 3D offset vector.\n */\n setObjectsOffset(ids, offset) {\n this.withObjects(ids, entity => {\n entity.offset = offset;\n });\n }\n\n /**\n * Iterates with a callback over {@link Entity#visible} on {@link Entity}s that represent objects.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````.\n *\n * Each {@link Entity} on which both {@link Entity#isObject} and {@link Entity#visible} are ````true```` is\n * registered by {@link Entity#id} in {@link Scene#visibleObjects}.\n *\n * @param {String[]} ids Array of {@link Entity#id} values.\n * @param {Function} callback Callback to execute on eacn {@link Entity}.\n * @returns {Boolean} True if any {@link Entity}s were updated, else false if all updates were redundant and not applied.\n */\n withObjects(ids, callback) {\n if (utils.isString(ids)) {\n ids = [ids];\n }\n let changed = false;\n for (let i = 0, len = ids.length; i < len; i++) {\n const id = ids[i];\n let entity = this.objects[id];\n if (entity) {\n changed = callback(entity) || changed;\n } else {\n const modelIds = this.modelIds;\n for (let i = 0, len = modelIds.length; i < len; i++) {\n const modelId = modelIds[i];\n const globalObjectId = math.globalizeObjectId(modelId, id);\n entity = this.objects[globalObjectId];\n if (entity) {\n changed = callback(entity) || changed;\n }\n }\n }\n }\n return changed;\n }\n\n /**\n * Destroys this Scene.\n */\n destroy() {\n\n super.destroy();\n\n for (const id in this.components) {\n if (this.components.hasOwnProperty(id)) {\n this.components[id].destroy();\n }\n }\n\n this.canvas.gl = null;\n\n // Memory leak prevention\n this.components = null;\n this.models = null;\n this.objects = null;\n this.visibleObjects = null;\n this.xrayedObjects = null;\n this.highlightedObjects = null;\n this.selectedObjects = null;\n this.colorizedObjects = null;\n this.opacityObjects = null;\n this.sectionPlanes = null;\n this.lights = null;\n this.lightMaps = null;\n this.reflectionMaps = null;\n this._objectIds = null;\n this._visibleObjectIds = null;\n this._xrayedObjectIds = null;\n this._highlightedObjectIds = null;\n this._selectedObjectIds = null;\n this._colorizedObjectIds = null;\n this.types = null;\n this.components = null;\n this.canvas = null;\n this._renderer = null;\n this.input = null;\n this._viewport = null;\n this._camera = null;\n }\n}\n\n/**\n * @private\n */\n\nconst DrawShaderSource = function (mesh) {\n if (mesh._material._state.type === \"LambertMaterial\") {\n this.vertex = buildVertexLambert(mesh);\n this.fragment = buildFragmentLambert(mesh);\n } else {\n this.vertex = buildVertexDraw(mesh);\n this.fragment = buildFragmentDraw(mesh);\n }\n};\n\nconst TEXTURE_DECODE_FUNCS$2 = {\n \"linear\": \"linearToLinear\",\n \"sRGB\": \"sRGBToLinear\",\n \"gamma\": \"gammaToLinear\"\n};\n\nfunction getReceivesShadow(mesh) {\n if (!mesh.receivesShadow) {\n return false;\n }\n const lights = mesh.scene._lightsState.lights;\n if (!lights || lights.length === 0) {\n return false;\n }\n for (let i = 0, len = lights.length; i < len; i++) {\n if (lights[i].castsShadow) {\n return true;\n }\n }\n return false;\n}\n\nfunction hasTextures(mesh) {\n if (!mesh._geometry._state.uvBuf) {\n return false;\n }\n const material = mesh._material;\n return !!(material._ambientMap ||\n material._occlusionMap ||\n material._baseColorMap ||\n material._diffuseMap ||\n material._alphaMap ||\n material._specularMap ||\n material._glossinessMap ||\n material._specularGlossinessMap ||\n material._emissiveMap ||\n material._metallicMap ||\n material._roughnessMap ||\n material._metallicRoughnessMap ||\n material._reflectivityMap ||\n material._normalMap);\n}\n\nfunction hasNormals$1(mesh) {\n const primitive = mesh._geometry._state.primitiveName;\n if ((mesh._geometry._state.autoVertexNormals || mesh._geometry._state.normalsBuf) && (primitive === \"triangles\" || primitive === \"triangle-strip\" || primitive === \"triangle-fan\")) {\n return true;\n }\n return false;\n}\n\nfunction buildVertexLambert(mesh) {\n\n const scene = mesh.scene;\n const sectionPlanesState = mesh.scene._sectionPlanesState;\n const lightsState = mesh.scene._lightsState;\n const geometryState = mesh._geometry._state;\n const billboard = mesh._state.billboard;\n const stationary = mesh._state.stationary;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const quantizedGeometry = !!geometryState.compressGeometry;\n\n const src = [];\n src.push(\"// Lambertian drawing vertex shader\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"attribute vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform vec4 colorize;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n src.push(\"uniform vec4 lightAmbient;\");\n src.push(\"uniform vec4 materialColor;\");\n src.push(\"uniform vec3 materialEmissive;\");\n if (geometryState.normalsBuf) {\n src.push(\"attribute vec3 normal;\");\n src.push(\"uniform mat4 modelNormalMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n if (quantizedGeometry) {\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n if (geometryState.primitiveName === \"points\") {\n src.push(\"uniform float pointSize;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n src.push(\"vec4 worldPosition;\");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n if (geometryState.normalsBuf) {\n if (quantizedGeometry) {\n src.push(\"vec4 localNormal = vec4(octDecode(normal.xy), 0.0); \");\n } else {\n src.push(\"vec4 localNormal = vec4(normal, 0.0); \");\n }\n src.push(\"mat4 modelNormalMatrix2 = modelNormalMatrix;\");\n src.push(\"mat4 viewNormalMatrix2 = viewNormalMatrix;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n src.push(\"billboard(modelViewMatrix);\");\n if (geometryState.normalsBuf) {\n src.push(\"mat4 modelViewNormalMatrix = viewNormalMatrix2 * modelNormalMatrix2;\");\n src.push(\"billboard(modelNormalMatrix2);\");\n src.push(\"billboard(viewNormalMatrix2);\");\n src.push(\"billboard(modelViewNormalMatrix);\");\n }\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\");\n } else {\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \");\n }\n if (geometryState.normalsBuf) {\n src.push(\"vec3 viewNormal = normalize((viewNormalMatrix2 * modelNormalMatrix2 * localNormal).xyz);\");\n }\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n src.push(\"float lambertian = 1.0;\");\n if (geometryState.normalsBuf) {\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix2 * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix2 * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix2 * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n }\n src.push(\"vColor = vec4((lightAmbient.rgb * lightAmbient.a * materialColor.rgb) + materialEmissive.rgb + (reflectedColor * materialColor.rgb), materialColor.a) * colorize;\"); // TODO: How to have ambient bright enough for canvas BG but not too bright for scene?\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n }\n if (geometryState.primitiveName === \"points\") {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragmentLambert(mesh) {\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n mesh._material._state;\n const geometryState = mesh._geometry._state;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.\n const src = [];\n src.push(\"// Lambertian drawing fragment shader\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n if (gammaOutput) {\n src.push(\"uniform float gammaFactor;\");\n src.push(\" vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (geometryState.primitiveName === \"points\") {\n src.push(\"vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\"float r = dot(cxy, cxy);\");\n src.push(\"if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\"}\");\n\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n if (gammaOutput) {\n src.push(\"gl_FragColor = linearToGamma(vColor, gammaFactor);\");\n } else {\n src.push(\"gl_FragColor = vColor;\");\n }\n src.push(\"}\");\n return src;\n}\n\nfunction buildVertexDraw(mesh) {\n const scene = mesh.scene;\n const material = mesh._material;\n const meshState = mesh._state;\n const sectionPlanesState = scene._sectionPlanesState;\n const geometryState = mesh._geometry._state;\n const lightsState = scene._lightsState;\n let light;\n const billboard = meshState.billboard;\n const background = meshState.background;\n const stationary = meshState.stationary;\n const texturing = hasTextures(mesh);\n const normals = hasNormals$1(mesh);\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const receivesShadow = getReceivesShadow(mesh);\n const quantizedGeometry = !!geometryState.compressGeometry;\n const src = [];\n src.push(\"// Drawing vertex shader\");\n if (normals && material._normalMap) {\n src.push(\"#extension GL_OES_standard_derivatives : enable\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"attribute vec3 position;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"varying vec3 vViewPosition;\");\n src.push(\"uniform vec3 offset;\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n if (normals) {\n src.push(\"attribute vec3 normal;\");\n src.push(\"uniform mat4 modelNormalMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"varying vec3 vViewNormal;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (!(light.type === \"dir\" && light.space === \"view\")) {\n src.push(\"varying vec4 vViewLightReverseDirAndDist\" + i + \";\");\n }\n }\n if (quantizedGeometry) {\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n }\n }\n if (texturing) {\n src.push(\"attribute vec2 uv;\");\n src.push(\"varying vec2 vUV;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat3 uvDecodeMatrix;\");\n }\n }\n if (geometryState.colors) {\n src.push(\"attribute vec4 color;\");\n src.push(\"varying vec4 vColor;\");\n }\n if (geometryState.primitiveName === \"points\") {\n src.push(\"uniform float pointSize;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n if (receivesShadow) {\n src.push(\"const mat4 texUnitConverter = mat4(0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.5, 0.5, 1.0);\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources\n if (lightsState.lights[i].castsShadow) {\n src.push(\"uniform mat4 shadowViewMatrix\" + i + \";\");\n src.push(\"uniform mat4 shadowProjMatrix\" + i + \";\");\n src.push(\"varying vec4 vShadowPosFromLight\" + i + \";\");\n }\n }\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n src.push(\"vec4 worldPosition;\");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n if (normals) {\n if (quantizedGeometry) {\n src.push(\"vec4 localNormal = vec4(octDecode(normal.xy), 0.0); \");\n } else {\n src.push(\"vec4 localNormal = vec4(normal, 0.0); \");\n }\n src.push(\"mat4 modelNormalMatrix2 = modelNormalMatrix;\");\n src.push(\"mat4 viewNormalMatrix2 = viewNormalMatrix;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\");\n } else if (background) {\n src.push(\"viewMatrix2[3] = vec4(0.0, 0.0, 0.0 ,1.0);\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n src.push(\"billboard(modelViewMatrix);\");\n if (normals) {\n src.push(\"mat4 modelViewNormalMatrix = viewNormalMatrix2 * modelNormalMatrix2;\");\n src.push(\"billboard(modelNormalMatrix2);\");\n src.push(\"billboard(viewNormalMatrix2);\");\n src.push(\"billboard(modelViewNormalMatrix);\");\n }\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\");\n } else {\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \");\n }\n if (normals) {\n src.push(\"vec3 worldNormal = (modelNormalMatrix2 * localNormal).xyz; \");\n if (lightsState.lightMaps.length > 0) {\n src.push(\"vWorldNormal = worldNormal;\");\n }\n src.push(\"vViewNormal = normalize((viewNormalMatrix2 * vec4(worldNormal, 1.0)).xyz);\");\n src.push(\"vec3 tmpVec3;\");\n src.push(\"float lightDist;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Lights\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"world\") {\n src.push(\"tmpVec3 = vec3(viewMatrix2 * vec4(lightDir\" + i + \", 0.0) ).xyz;\");\n src.push(\"vViewLightReverseDirAndDist\" + i + \" = vec4(-tmpVec3, 0.0);\");\n }\n }\n if (light.type === \"point\") {\n if (light.space === \"world\") {\n src.push(\"tmpVec3 = (viewMatrix2 * vec4(lightPos\" + i + \", 1.0)).xyz - viewPosition.xyz;\");\n src.push(\"lightDist = abs(length(tmpVec3));\");\n } else {\n src.push(\"tmpVec3 = lightPos\" + i + \".xyz - viewPosition.xyz;\");\n src.push(\"lightDist = abs(length(tmpVec3));\");\n }\n src.push(\"vViewLightReverseDirAndDist\" + i + \" = vec4(tmpVec3, lightDist);\");\n }\n }\n }\n if (texturing) {\n if (quantizedGeometry) {\n src.push(\"vUV = (uvDecodeMatrix * vec3(uv, 1.0)).xy;\");\n } else {\n src.push(\"vUV = uv;\");\n }\n }\n if (geometryState.colors) {\n src.push(\"vColor = color;\");\n }\n if (geometryState.primitiveName === \"points\") {\n src.push(\"gl_PointSize = pointSize;\");\n }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n }\n src.push(\" vViewPosition = viewPosition.xyz;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (background) {\n src.push(\"clipPos.z = clipPos.w;\");\n }\n src.push(\"gl_Position = clipPos;\");\n if (receivesShadow) {\n src.push(\"const mat4 texUnitConverter = mat4(0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.5, 0.5, 0.5, 1.0);\");\n src.push(\"vec4 tempx; \");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources\n if (lightsState.lights[i].castsShadow) {\n src.push(\"vShadowPosFromLight\" + i + \" = texUnitConverter * shadowProjMatrix\" + i + \" * (shadowViewMatrix\" + i + \" * worldPosition); \");\n }\n }\n }\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragmentDraw(mesh) {\n\n const scene = mesh.scene;\n scene.canvas.gl;\n const material = mesh._material;\n const geometryState = mesh._geometry._state;\n const sectionPlanesState = mesh.scene._sectionPlanesState;\n const lightsState = mesh.scene._lightsState;\n const materialState = mesh._material._state;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const normals = hasNormals$1(mesh);\n const uvs = geometryState.uvBuf;\n const phongMaterial = (materialState.type === \"PhongMaterial\");\n const metallicMaterial = (materialState.type === \"MetallicMaterial\");\n const specularMaterial = (materialState.type === \"SpecularMaterial\");\n const receivesShadow = getReceivesShadow(mesh);\n scene.gammaInput; // If set, then it expects that all textures and colors are premultiplied gamma. Default is false.\n const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.\n const src = [];\n\n src.push(\"// Drawing fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n if (normals && material._normalMap) {\n src.push(\"#extension GL_OES_standard_derivatives : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n if (receivesShadow) {\n src.push(\"float unpackDepth (vec4 color) {\");\n src.push(\" const vec4 bitShift = vec4(1.0, 1.0/256.0, 1.0/(256.0 * 256.0), 1.0/(256.0*256.0*256.0));\");\n src.push(\" return dot(color, bitShift);\");\n src.push(\"}\");\n }\n\n //--------------------------------------------------------------------------------\n // GAMMA CORRECTION\n //--------------------------------------------------------------------------------\n\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToLinear( in vec4 value ) {\");\n src.push(\" return value;\");\n src.push(\"}\");\n src.push(\"vec4 sRGBToLinear( in vec4 value ) {\");\n src.push(\" return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\");\n src.push(\"}\");\n src.push(\"vec4 gammaToLinear( in vec4 value) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\");\n src.push(\"}\");\n if (gammaOutput) {\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n\n //--------------------------------------------------------------------------------\n // USER CLIP PLANES\n //--------------------------------------------------------------------------------\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n if (normals) {\n\n //--------------------------------------------------------------------------------\n // LIGHT AND REFLECTION MAP INPUTS\n // Define here so available globally to shader functions\n //--------------------------------------------------------------------------------\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"uniform samplerCube lightMap;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n }\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"uniform samplerCube reflectionMap;\");\n }\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n src.push(\"uniform mat4 viewMatrix;\");\n }\n\n //--------------------------------------------------------------------------------\n // SHADING FUNCTIONS\n //--------------------------------------------------------------------------------\n\n // CONSTANT DEFINITIONS\n\n src.push(\"#define PI 3.14159265359\");\n src.push(\"#define RECIPROCAL_PI 0.31830988618\");\n src.push(\"#define RECIPROCAL_PI2 0.15915494\");\n src.push(\"#define EPSILON 1e-6\");\n\n src.push(\"#define saturate(a) clamp( a, 0.0, 1.0 )\");\n\n // UTILITY DEFINITIONS\n\n src.push(\"vec3 inverseTransformDirection(in vec3 dir, in mat4 matrix) {\");\n src.push(\" return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\");\n src.push(\"}\");\n\n // STRUCTURES\n\n src.push(\"struct IncidentLight {\");\n src.push(\" vec3 color;\");\n src.push(\" vec3 direction;\");\n src.push(\"};\");\n\n src.push(\"struct ReflectedLight {\");\n src.push(\" vec3 diffuse;\");\n src.push(\" vec3 specular;\");\n src.push(\"};\");\n\n src.push(\"struct Geometry {\");\n src.push(\" vec3 position;\");\n src.push(\" vec3 viewNormal;\");\n src.push(\" vec3 worldNormal;\");\n src.push(\" vec3 viewEyeDir;\");\n src.push(\"};\");\n\n src.push(\"struct Material {\");\n src.push(\" vec3 diffuseColor;\");\n src.push(\" float specularRoughness;\");\n src.push(\" vec3 specularColor;\");\n src.push(\" float shine;\"); // Only used for Phong\n src.push(\"};\");\n\n // COMMON UTILS\n\n if (phongMaterial) {\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n\n src.push(\"void computePhongLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\" vec3 irradiance = \" + TEXTURE_DECODE_FUNCS$2[lightsState.lightMaps[0].encoding] + \"(textureCube(lightMap, geometry.worldNormal)).rgb;\");\n src.push(\" irradiance *= PI;\");\n src.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\");\n }\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);\");\n src.push(\" vec3 radiance = textureCube(reflectionMap, reflectVec).rgb * 0.2;\");\n src.push(\" radiance *= PI;\");\n src.push(\" reflectedLight.specular += radiance;\");\n }\n src.push(\"}\");\n }\n\n src.push(\"void computePhongLighting(const in IncidentLight directLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n src.push(\" float dotNL = saturate(dot(geometry.viewNormal, directLight.direction));\");\n src.push(\" vec3 irradiance = dotNL * directLight.color * PI;\");\n src.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.specular += directLight.color * material.specularColor * pow(max(dot(reflect(-directLight.direction, -geometry.viewNormal), geometry.viewEyeDir), 0.0), material.shine);\");\n src.push(\"}\");\n }\n\n if (metallicMaterial || specularMaterial) {\n\n // IRRADIANCE EVALUATION\n\n src.push(\"float GGXRoughnessToBlinnExponent(const in float ggxRoughness) {\");\n src.push(\" float r = ggxRoughness + 0.0001;\");\n src.push(\" return (2.0 / (r * r) - 2.0);\");\n src.push(\"}\");\n\n src.push(\"float getSpecularMIPLevel(const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float maxMIPLevelScalar = float( maxMIPLevel );\");\n src.push(\" float desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( ( blinnShininessExponent * blinnShininessExponent ) + 1.0 );\");\n src.push(\" return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\");\n src.push(\"}\");\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"vec3 getLightProbeIndirectRadiance(const in vec3 reflectVec, const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float mipLevel = 0.5 * getSpecularMIPLevel(blinnShininessExponent, maxMIPLevel);\"); //TODO: a random factor - fix this\n src.push(\" vec3 envMapColor = \" + TEXTURE_DECODE_FUNCS$2[lightsState.reflectionMaps[0].encoding] + \"(textureCube(reflectionMap, reflectVec, mipLevel)).rgb;\");\n src.push(\" return envMapColor;\");\n src.push(\"}\");\n }\n\n // SPECULAR BRDF EVALUATION\n\n src.push(\"vec3 F_Schlick(const in vec3 specularColor, const in float dotLH) {\");\n src.push(\" float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\");\n src.push(\" return ( 1.0 - specularColor ) * fresnel + specularColor;\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_Smith(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" return 1.0 / ( gl * gv );\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" return 0.5 / max( gv + gl, EPSILON );\");\n src.push(\"}\");\n\n src.push(\"float D_GGX(const in float alpha, const in float dotNH) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float denom = ( dotNH * dotNH) * ( a2 - 1.0 ) + 1.0;\");\n src.push(\" return RECIPROCAL_PI * a2 / ( denom * denom);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX(const in IncidentLight incidentLight, const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float alpha = ( roughness * roughness );\");\n src.push(\" vec3 halfDir = normalize( incidentLight.direction + geometry.viewEyeDir );\");\n src.push(\" float dotNL = saturate( dot( geometry.viewNormal, incidentLight.direction ) );\");\n src.push(\" float dotNV = saturate( dot( geometry.viewNormal, geometry.viewEyeDir ) );\");\n src.push(\" float dotNH = saturate( dot( geometry.viewNormal, halfDir ) );\");\n src.push(\" float dotLH = saturate( dot( incidentLight.direction, halfDir ) );\");\n src.push(\" vec3 F = F_Schlick( specularColor, dotLH );\");\n src.push(\" float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\");\n src.push(\" float D = D_GGX( alpha, dotNH );\");\n src.push(\" return F * (G * D);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX_Environment(const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float dotNV = saturate(dot(geometry.viewNormal, geometry.viewEyeDir));\");\n src.push(\" const vec4 c0 = vec4( -1, -0.0275, -0.572, 0.022);\");\n src.push(\" const vec4 c1 = vec4( 1, 0.0425, 1.04, -0.04);\");\n src.push(\" vec4 r = roughness * c0 + c1;\");\n src.push(\" float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;\");\n src.push(\" vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;\");\n src.push(\" return specularColor * AB.x + AB.y;\");\n src.push(\"}\");\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n\n src.push(\"void computePBRLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n if (lightsState.lightMaps.length > 0) {\n src.push(\" vec3 irradiance = sRGBToLinear(textureCube(lightMap, geometry.worldNormal)).rgb;\");\n src.push(\" irradiance *= PI;\");\n src.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\");\n // src.push(\" reflectedLight.diffuse = vec3(1.0, 0.0, 0.0);\");\n }\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\" vec3 reflectVec = reflect(-geometry.viewEyeDir, geometry.viewNormal);\");\n src.push(\" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);\");\n src.push(\" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);\");\n src.push(\" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);\");\n src.push(\" vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);\");\n src.push(\" reflectedLight.specular += radiance * specularBRDFContrib;\");\n }\n src.push(\"}\");\n }\n\n // MAIN LIGHTING COMPUTATION FUNCTION\n\n src.push(\"void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n src.push(\" float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));\");\n src.push(\" vec3 irradiance = dotNL * incidentLight.color * PI;\");\n src.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);\");\n src.push(\"}\");\n\n } // (metallicMaterial || specularMaterial)\n\n } // geometry.normals\n\n //--------------------------------------------------------------------------------\n // GEOMETRY INPUTS\n //--------------------------------------------------------------------------------\n\n src.push(\"varying vec3 vViewPosition;\");\n\n if (geometryState.colors) {\n src.push(\"varying vec4 vColor;\");\n }\n\n if (uvs &&\n ((normals && material._normalMap)\n || material._ambientMap\n || material._baseColorMap\n || material._diffuseMap\n || material._emissiveMap\n || material._metallicMap\n || material._roughnessMap\n || material._metallicRoughnessMap\n || material._specularMap\n || material._glossinessMap\n || material._specularGlossinessMap\n || material._occlusionMap\n || material._alphaMap)) {\n src.push(\"varying vec2 vUV;\");\n }\n\n if (normals) {\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n src.push(\"varying vec3 vViewNormal;\");\n }\n\n //--------------------------------------------------------------------------------\n // MATERIAL CHANNEL INPUTS\n //--------------------------------------------------------------------------------\n\n if (materialState.ambient) {\n src.push(\"uniform vec3 materialAmbient;\");\n }\n if (materialState.baseColor) {\n src.push(\"uniform vec3 materialBaseColor;\");\n }\n if (materialState.alpha !== undefined && materialState.alpha !== null) {\n src.push(\"uniform vec4 materialAlphaModeCutoff;\"); // [alpha, alphaMode, alphaCutoff]\n }\n if (materialState.emissive) {\n src.push(\"uniform vec3 materialEmissive;\");\n }\n if (materialState.diffuse) {\n src.push(\"uniform vec3 materialDiffuse;\");\n }\n if (materialState.glossiness !== undefined && materialState.glossiness !== null) {\n src.push(\"uniform float materialGlossiness;\");\n }\n if (materialState.shininess !== undefined && materialState.shininess !== null) {\n src.push(\"uniform float materialShininess;\"); // Phong channel\n }\n if (materialState.specular) {\n src.push(\"uniform vec3 materialSpecular;\");\n }\n if (materialState.metallic !== undefined && materialState.metallic !== null) {\n src.push(\"uniform float materialMetallic;\");\n }\n if (materialState.roughness !== undefined && materialState.roughness !== null) {\n src.push(\"uniform float materialRoughness;\");\n }\n if (materialState.specularF0 !== undefined && materialState.specularF0 !== null) {\n src.push(\"uniform float materialSpecularF0;\");\n }\n\n //--------------------------------------------------------------------------------\n // MATERIAL TEXTURE INPUTS\n //--------------------------------------------------------------------------------\n\n if (uvs && material._ambientMap) {\n src.push(\"uniform sampler2D ambientMap;\");\n if (material._ambientMap._state.matrix) {\n src.push(\"uniform mat4 ambientMapMatrix;\");\n }\n }\n if (uvs && material._baseColorMap) {\n src.push(\"uniform sampler2D baseColorMap;\");\n if (material._baseColorMap._state.matrix) {\n src.push(\"uniform mat4 baseColorMapMatrix;\");\n }\n }\n if (uvs && material._diffuseMap) {\n src.push(\"uniform sampler2D diffuseMap;\");\n if (material._diffuseMap._state.matrix) {\n src.push(\"uniform mat4 diffuseMapMatrix;\");\n }\n }\n if (uvs && material._emissiveMap) {\n src.push(\"uniform sampler2D emissiveMap;\");\n if (material._emissiveMap._state.matrix) {\n src.push(\"uniform mat4 emissiveMapMatrix;\");\n }\n }\n if (normals && uvs && material._metallicMap) {\n src.push(\"uniform sampler2D metallicMap;\");\n if (material._metallicMap._state.matrix) {\n src.push(\"uniform mat4 metallicMapMatrix;\");\n }\n }\n if (normals && uvs && material._roughnessMap) {\n src.push(\"uniform sampler2D roughnessMap;\");\n if (material._roughnessMap._state.matrix) {\n src.push(\"uniform mat4 roughnessMapMatrix;\");\n }\n }\n if (normals && uvs && material._metallicRoughnessMap) {\n src.push(\"uniform sampler2D metallicRoughnessMap;\");\n if (material._metallicRoughnessMap._state.matrix) {\n src.push(\"uniform mat4 metallicRoughnessMapMatrix;\");\n }\n }\n if (normals && material._normalMap) {\n src.push(\"uniform sampler2D normalMap;\");\n if (material._normalMap._state.matrix) {\n src.push(\"uniform mat4 normalMapMatrix;\");\n }\n src.push(\"vec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\");\n src.push(\" vec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\");\n src.push(\" vec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\");\n src.push(\" vec2 st0 = dFdx( uv.st );\");\n src.push(\" vec2 st1 = dFdy( uv.st );\");\n src.push(\" vec3 S = normalize( q0 * st1.t - q1 * st0.t );\");\n src.push(\" vec3 T = normalize( -q0 * st1.s + q1 * st0.s );\");\n src.push(\" vec3 N = normalize( surf_norm );\");\n src.push(\" vec3 mapN = texture2D( normalMap, uv ).xyz * 2.0 - 1.0;\");\n src.push(\" mat3 tsn = mat3( S, T, N );\");\n // src.push(\" mapN *= 3.0;\");\n src.push(\" return normalize( tsn * mapN );\");\n src.push(\"}\");\n }\n if (uvs && material._occlusionMap) {\n src.push(\"uniform sampler2D occlusionMap;\");\n if (material._occlusionMap._state.matrix) {\n src.push(\"uniform mat4 occlusionMapMatrix;\");\n }\n }\n if (uvs && material._alphaMap) {\n src.push(\"uniform sampler2D alphaMap;\");\n if (material._alphaMap._state.matrix) {\n src.push(\"uniform mat4 alphaMapMatrix;\");\n }\n }\n if (normals && uvs && material._specularMap) {\n src.push(\"uniform sampler2D specularMap;\");\n if (material._specularMap._state.matrix) {\n src.push(\"uniform mat4 specularMapMatrix;\");\n }\n }\n if (normals && uvs && material._glossinessMap) {\n src.push(\"uniform sampler2D glossinessMap;\");\n if (material._glossinessMap._state.matrix) {\n src.push(\"uniform mat4 glossinessMapMatrix;\");\n }\n }\n if (normals && uvs && material._specularGlossinessMap) {\n src.push(\"uniform sampler2D materialSpecularGlossinessMap;\");\n if (material._specularGlossinessMap._state.matrix) {\n src.push(\"uniform mat4 materialSpecularGlossinessMapMatrix;\");\n }\n }\n\n //--------------------------------------------------------------------------------\n // MATERIAL FRESNEL INPUTS\n //--------------------------------------------------------------------------------\n\n if (normals && (material._diffuseFresnel ||\n material._specularFresnel ||\n material._alphaFresnel ||\n material._emissiveFresnel ||\n material._reflectivityFresnel)) {\n src.push(\"float fresnel(vec3 eyeDir, vec3 normal, float edgeBias, float centerBias, float power) {\");\n src.push(\" float fr = abs(dot(eyeDir, normal));\");\n src.push(\" float finalFr = clamp((fr - edgeBias) / (centerBias - edgeBias), 0.0, 1.0);\");\n src.push(\" return pow(finalFr, power);\");\n src.push(\"}\");\n if (material._diffuseFresnel) {\n src.push(\"uniform float diffuseFresnelCenterBias;\");\n src.push(\"uniform float diffuseFresnelEdgeBias;\");\n src.push(\"uniform float diffuseFresnelPower;\");\n src.push(\"uniform vec3 diffuseFresnelCenterColor;\");\n src.push(\"uniform vec3 diffuseFresnelEdgeColor;\");\n }\n if (material._specularFresnel) {\n src.push(\"uniform float specularFresnelCenterBias;\");\n src.push(\"uniform float specularFresnelEdgeBias;\");\n src.push(\"uniform float specularFresnelPower;\");\n src.push(\"uniform vec3 specularFresnelCenterColor;\");\n src.push(\"uniform vec3 specularFresnelEdgeColor;\");\n }\n if (material._alphaFresnel) {\n src.push(\"uniform float alphaFresnelCenterBias;\");\n src.push(\"uniform float alphaFresnelEdgeBias;\");\n src.push(\"uniform float alphaFresnelPower;\");\n src.push(\"uniform vec3 alphaFresnelCenterColor;\");\n src.push(\"uniform vec3 alphaFresnelEdgeColor;\");\n }\n if (material._reflectivityFresnel) {\n src.push(\"uniform float materialSpecularF0FresnelCenterBias;\");\n src.push(\"uniform float materialSpecularF0FresnelEdgeBias;\");\n src.push(\"uniform float materialSpecularF0FresnelPower;\");\n src.push(\"uniform vec3 materialSpecularF0FresnelCenterColor;\");\n src.push(\"uniform vec3 materialSpecularF0FresnelEdgeColor;\");\n }\n if (material._emissiveFresnel) {\n src.push(\"uniform float emissiveFresnelCenterBias;\");\n src.push(\"uniform float emissiveFresnelEdgeBias;\");\n src.push(\"uniform float emissiveFresnelPower;\");\n src.push(\"uniform vec3 emissiveFresnelCenterColor;\");\n src.push(\"uniform vec3 emissiveFresnelEdgeColor;\");\n }\n }\n\n //--------------------------------------------------------------------------------\n // LIGHT SOURCES\n //--------------------------------------------------------------------------------\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n if (normals) {\n for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightAttenuation\" + i + \";\");\n }\n if (light.type === \"dir\" && light.space === \"view\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\" && light.space === \"view\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n } else {\n src.push(\"varying vec4 vViewLightReverseDirAndDist\" + i + \";\");\n }\n }\n }\n\n if (receivesShadow) {\n\n // Variance castsShadow mapping filter\n\n // src.push(\"float linstep(float low, float high, float v){\");\n // src.push(\" return clamp((v-low)/(high-low), 0.0, 1.0);\");\n // src.push(\"}\");\n //\n // src.push(\"float VSM(sampler2D depths, vec2 uv, float compare){\");\n // src.push(\" vec2 moments = texture2D(depths, uv).xy;\");\n // src.push(\" float p = smoothstep(compare-0.02, compare, moments.x);\");\n // src.push(\" float variance = max(moments.y - moments.x*moments.x, -0.001);\");\n // src.push(\" float d = compare - moments.x;\");\n // src.push(\" float p_max = linstep(0.2, 1.0, variance / (variance + d*d));\");\n // src.push(\" return clamp(max(p, p_max), 0.0, 1.0);\");\n // src.push(\"}\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) { // Light sources\n if (lightsState.lights[i].castsShadow) {\n src.push(\"varying vec4 vShadowPosFromLight\" + i + \";\");\n src.push(\"uniform sampler2D shadowMap\" + i + \";\");\n }\n }\n }\n\n src.push(\"uniform vec4 colorize;\");\n\n //================================================================================\n // MAIN\n //================================================================================\n\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n\n if (geometryState.primitiveName === \"points\") {\n src.push(\"vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\"float r = dot(cxy, cxy);\");\n src.push(\"if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\"}\");\n }\n\n src.push(\"float occlusion = 1.0;\");\n\n if (materialState.ambient) {\n src.push(\"vec3 ambientColor = materialAmbient;\");\n } else {\n src.push(\"vec3 ambientColor = vec3(1.0, 1.0, 1.0);\");\n }\n\n if (materialState.diffuse) {\n src.push(\"vec3 diffuseColor = materialDiffuse;\");\n } else if (materialState.baseColor) {\n src.push(\"vec3 diffuseColor = materialBaseColor;\");\n } else {\n src.push(\"vec3 diffuseColor = vec3(1.0, 1.0, 1.0);\");\n }\n\n if (geometryState.colors) {\n src.push(\"diffuseColor *= vColor.rgb;\");\n }\n\n if (materialState.emissive) {\n src.push(\"vec3 emissiveColor = materialEmissive;\"); // Emissive default is (0,0,0), so initializing here\n } else {\n src.push(\"vec3 emissiveColor = vec3(0.0, 0.0, 0.0);\");\n }\n\n if (materialState.specular) {\n src.push(\"vec3 specular = materialSpecular;\");\n } else {\n src.push(\"vec3 specular = vec3(1.0, 1.0, 1.0);\");\n }\n\n if (materialState.alpha !== undefined) {\n src.push(\"float alpha = materialAlphaModeCutoff[0];\");\n } else {\n src.push(\"float alpha = 1.0;\");\n }\n\n if (geometryState.colors) {\n src.push(\"alpha *= vColor.a;\");\n }\n\n if (materialState.glossiness !== undefined) {\n src.push(\"float glossiness = materialGlossiness;\");\n } else {\n src.push(\"float glossiness = 1.0;\");\n }\n\n if (materialState.metallic !== undefined) {\n src.push(\"float metallic = materialMetallic;\");\n } else {\n src.push(\"float metallic = 1.0;\");\n }\n\n if (materialState.roughness !== undefined) {\n src.push(\"float roughness = materialRoughness;\");\n } else {\n src.push(\"float roughness = 1.0;\");\n }\n\n if (materialState.specularF0 !== undefined) {\n src.push(\"float specularF0 = materialSpecularF0;\");\n } else {\n src.push(\"float specularF0 = 1.0;\");\n }\n\n //--------------------------------------------------------------------------------\n // TEXTURING\n //--------------------------------------------------------------------------------\n\n if (uvs && ((normals && material._normalMap)\n || material._ambientMap\n || material._baseColorMap\n || material._diffuseMap\n || material._occlusionMap\n || material._emissiveMap\n || material._metallicMap\n || material._roughnessMap\n || material._metallicRoughnessMap\n || material._specularMap\n || material._glossinessMap\n || material._specularGlossinessMap\n || material._alphaMap)) {\n src.push(\"vec4 texturePos = vec4(vUV.s, vUV.t, 1.0, 1.0);\");\n src.push(\"vec2 textureCoord;\");\n }\n\n if (uvs && material._ambientMap) {\n if (material._ambientMap._state.matrix) {\n src.push(\"textureCoord = (ambientMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec4 ambientTexel = texture2D(ambientMap, textureCoord).rgb;\");\n src.push(\"ambientTexel = \" + TEXTURE_DECODE_FUNCS$2[material._ambientMap._state.encoding] + \"(ambientTexel);\");\n src.push(\"ambientColor *= ambientTexel.rgb;\");\n }\n\n if (uvs && material._diffuseMap) {\n if (material._diffuseMap._state.matrix) {\n src.push(\"textureCoord = (diffuseMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec4 diffuseTexel = texture2D(diffuseMap, textureCoord);\");\n src.push(\"diffuseTexel = \" + TEXTURE_DECODE_FUNCS$2[material._diffuseMap._state.encoding] + \"(diffuseTexel);\");\n src.push(\"diffuseColor *= diffuseTexel.rgb;\");\n src.push(\"alpha *= diffuseTexel.a;\");\n }\n\n if (uvs && material._baseColorMap) {\n if (material._baseColorMap._state.matrix) {\n src.push(\"textureCoord = (baseColorMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec4 baseColorTexel = texture2D(baseColorMap, textureCoord);\");\n src.push(\"baseColorTexel = \" + TEXTURE_DECODE_FUNCS$2[material._baseColorMap._state.encoding] + \"(baseColorTexel);\");\n src.push(\"diffuseColor *= baseColorTexel.rgb;\");\n src.push(\"alpha *= baseColorTexel.a;\");\n }\n\n if (uvs && material._emissiveMap) {\n if (material._emissiveMap._state.matrix) {\n src.push(\"textureCoord = (emissiveMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec4 emissiveTexel = texture2D(emissiveMap, textureCoord);\");\n src.push(\"emissiveTexel = \" + TEXTURE_DECODE_FUNCS$2[material._emissiveMap._state.encoding] + \"(emissiveTexel);\");\n src.push(\"emissiveColor = emissiveTexel.rgb;\");\n }\n\n if (uvs && material._alphaMap) {\n if (material._alphaMap._state.matrix) {\n src.push(\"textureCoord = (alphaMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"alpha *= texture2D(alphaMap, textureCoord).r;\");\n }\n\n if (uvs && material._occlusionMap) {\n if (material._occlusionMap._state.matrix) {\n src.push(\"textureCoord = (occlusionMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"occlusion *= texture2D(occlusionMap, textureCoord).r;\");\n }\n\n if (normals && ((lightsState.lights.length > 0) || lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0)) {\n\n //--------------------------------------------------------------------------------\n // SHADING\n //--------------------------------------------------------------------------------\n\n if (uvs && material._normalMap) {\n if (material._normalMap._state.matrix) {\n src.push(\"textureCoord = (normalMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec3 viewNormal = perturbNormal2Arb( vViewPosition, normalize(vViewNormal), textureCoord );\");\n } else {\n src.push(\"vec3 viewNormal = normalize(vViewNormal);\");\n }\n\n if (uvs && material._specularMap) {\n if (material._specularMap._state.matrix) {\n src.push(\"textureCoord = (specularMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"specular *= texture2D(specularMap, textureCoord).rgb;\");\n }\n\n if (uvs && material._glossinessMap) {\n if (material._glossinessMap._state.matrix) {\n src.push(\"textureCoord = (glossinessMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"glossiness *= texture2D(glossinessMap, textureCoord).r;\");\n }\n\n if (uvs && material._specularGlossinessMap) {\n if (material._specularGlossinessMap._state.matrix) {\n src.push(\"textureCoord = (materialSpecularGlossinessMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec4 specGlossRGB = texture2D(materialSpecularGlossinessMap, textureCoord).rgba;\"); // TODO: what if only RGB texture?\n src.push(\"specular *= specGlossRGB.rgb;\");\n src.push(\"glossiness *= specGlossRGB.a;\");\n }\n\n if (uvs && material._metallicMap) {\n if (material._metallicMap._state.matrix) {\n src.push(\"textureCoord = (metallicMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"metallic *= texture2D(metallicMap, textureCoord).r;\");\n }\n\n if (uvs && material._roughnessMap) {\n if (material._roughnessMap._state.matrix) {\n src.push(\"textureCoord = (roughnessMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"roughness *= texture2D(roughnessMap, textureCoord).r;\");\n }\n\n if (uvs && material._metallicRoughnessMap) {\n if (material._metallicRoughnessMap._state.matrix) {\n src.push(\"textureCoord = (metallicRoughnessMapMatrix * texturePos).xy;\");\n } else {\n src.push(\"textureCoord = texturePos.xy;\");\n }\n src.push(\"vec3 metalRoughRGB = texture2D(metallicRoughnessMap, textureCoord).rgb;\");\n src.push(\"metallic *= metalRoughRGB.b;\");\n src.push(\"roughness *= metalRoughRGB.g;\");\n }\n\n src.push(\"vec3 viewEyeDir = normalize(-vViewPosition);\");\n\n if (material._diffuseFresnel) {\n src.push(\"float diffuseFresnel = fresnel(viewEyeDir, viewNormal, diffuseFresnelEdgeBias, diffuseFresnelCenterBias, diffuseFresnelPower);\");\n src.push(\"diffuseColor *= mix(diffuseFresnelEdgeColor, diffuseFresnelCenterColor, diffuseFresnel);\");\n }\n if (material._specularFresnel) {\n src.push(\"float specularFresnel = fresnel(viewEyeDir, viewNormal, specularFresnelEdgeBias, specularFresnelCenterBias, specularFresnelPower);\");\n src.push(\"specular *= mix(specularFresnelEdgeColor, specularFresnelCenterColor, specularFresnel);\");\n }\n if (material._alphaFresnel) {\n src.push(\"float alphaFresnel = fresnel(viewEyeDir, viewNormal, alphaFresnelEdgeBias, alphaFresnelCenterBias, alphaFresnelPower);\");\n src.push(\"alpha *= mix(alphaFresnelEdgeColor.r, alphaFresnelCenterColor.r, alphaFresnel);\");\n }\n if (material._emissiveFresnel) {\n src.push(\"float emissiveFresnel = fresnel(viewEyeDir, viewNormal, emissiveFresnelEdgeBias, emissiveFresnelCenterBias, emissiveFresnelPower);\");\n src.push(\"emissiveColor *= mix(emissiveFresnelEdgeColor, emissiveFresnelCenterColor, emissiveFresnel);\");\n }\n\n src.push(\"if (materialAlphaModeCutoff[1] == 1.0 && alpha < materialAlphaModeCutoff[2]) {\"); // ie. (alphaMode == \"mask\" && alpha < alphaCutoff)\n src.push(\" discard;\"); // TODO: Discard earlier within this shader?\n src.push(\"}\");\n\n // PREPARE INPUTS FOR SHADER FUNCTIONS\n\n src.push(\"IncidentLight light;\");\n src.push(\"Material material;\");\n src.push(\"Geometry geometry;\");\n src.push(\"ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));\");\n src.push(\"vec3 viewLightDir;\");\n\n if (phongMaterial) {\n src.push(\"material.diffuseColor = diffuseColor;\");\n src.push(\"material.specularColor = specular;\");\n src.push(\"material.shine = materialShininess;\");\n }\n\n if (specularMaterial) {\n src.push(\"float oneMinusSpecularStrength = 1.0 - max(max(specular.r, specular.g ),specular.b);\"); // Energy conservation\n src.push(\"material.diffuseColor = diffuseColor * oneMinusSpecularStrength;\");\n src.push(\"material.specularRoughness = clamp( 1.0 - glossiness, 0.04, 1.0 );\");\n src.push(\"material.specularColor = specular;\");\n }\n\n if (metallicMaterial) {\n src.push(\"float dielectricSpecular = 0.16 * specularF0 * specularF0;\");\n src.push(\"material.diffuseColor = diffuseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);\");\n src.push(\"material.specularRoughness = clamp(roughness, 0.04, 1.0);\");\n src.push(\"material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);\");\n }\n\n src.push(\"geometry.position = vViewPosition;\");\n if (lightsState.lightMaps.length > 0) {\n src.push(\"geometry.worldNormal = normalize(vWorldNormal);\");\n }\n src.push(\"geometry.viewNormal = viewNormal;\");\n src.push(\"geometry.viewEyeDir = viewEyeDir;\");\n\n // ENVIRONMENT AND REFLECTION MAP SHADING\n\n if ((phongMaterial) && (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0)) {\n src.push(\"computePhongLightMapping(geometry, material, reflectedLight);\");\n }\n\n if ((specularMaterial || metallicMaterial) && (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0)) {\n src.push(\"computePBRLightMapping(geometry, material, reflectedLight);\");\n }\n\n // LIGHT SOURCE SHADING\n\n src.push(\"float shadow = 1.0;\");\n\n // if (receivesShadow) {\n //\n // src.push(\"float lightDepth2 = clamp(length(lightPos)/40.0, 0.0, 1.0);\");\n // src.push(\"float illuminated = VSM(sLightDepth, lightUV, lightDepth2);\");\n //\n src.push(\"float shadowAcneRemover = 0.007;\");\n src.push(\"vec3 fragmentDepth;\");\n src.push(\"float texelSize = 1.0 / 1024.0;\");\n src.push(\"float amountInLight = 0.0;\");\n src.push(\"vec3 shadowCoord;\");\n src.push('vec4 rgbaDepth;');\n src.push(\"float depth;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n\n const light = lightsState.lights[i];\n\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\" && light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightDir\" + i + \");\");\n } else if (light.type === \"point\" && light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightPos\" + i + \" - vViewPosition);\");\n //src.push(\"tmpVec3 = lightPos\" + i + \".xyz - viewPosition.xyz;\");\n //src.push(\"lightDist = abs(length(tmpVec3));\");\n } else {\n src.push(\"viewLightDir = normalize(vViewLightReverseDirAndDist\" + i + \".xyz);\"); // If normal mapping, the fragment->light vector will be in tangent space\n }\n\n if (receivesShadow && light.castsShadow) {\n\n // if (true) {\n // src.push('shadowCoord = (vShadowPosFromLight' + i + '.xyz/vShadowPosFromLight' + i + '.w)/2.0 + 0.5;');\n // src.push(\"lightDepth2 = clamp(length(vec3[0.0, 20.0, 20.0])/40.0, 0.0, 1.0);\");\n // src.push(\"castsShadow *= VSM(shadowMap' + i + ', shadowCoord, lightDepth2);\");\n // }\n //\n // if (false) {\n //\n // PCF\n\n src.push(\"shadow = 0.0;\");\n\n src.push(\"fragmentDepth = vShadowPosFromLight\" + i + \".xyz;\");\n src.push(\"fragmentDepth.z -= shadowAcneRemover;\");\n src.push(\"for (int x = -3; x <= 3; x++) {\");\n src.push(\" for (int y = -3; y <= 3; y++) {\");\n src.push(\" float texelDepth = unpackDepth(texture2D(shadowMap\" + i + \", fragmentDepth.xy + vec2(x, y) * texelSize));\");\n src.push(\" if (fragmentDepth.z < texelDepth) {\");\n src.push(\" shadow += 1.0;\");\n src.push(\" }\");\n src.push(\" }\");\n src.push(\"}\");\n\n src.push(\"shadow = shadow / 9.0;\");\n\n src.push(\"light.color = lightColor\" + i + \".rgb * (lightColor\" + i + \".a * shadow);\"); // a is intensity\n //\n // }\n //\n // if (false){\n //\n // src.push(\"shadow = 1.0;\");\n //\n // src.push('shadowCoord = (vShadowPosFromLight' + i + '.xyz/vShadowPosFromLight' + i + '.w)/2.0 + 0.5;');\n //\n // src.push('shadow -= (shadowCoord.z > unpackDepth(texture2D(shadowMap' + i + ', shadowCoord.xy + vec2( -0.94201624, -0.39906216 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');\n // src.push('shadow -= (shadowCoord.z > unpackDepth(texture2D(shadowMap' + i + ', shadowCoord.xy + vec2( 0.94558609, -0.76890725 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');\n // src.push('shadow -= (shadowCoord.z > unpackDepth(texture2D(shadowMap' + i + ', shadowCoord.xy + vec2( -0.094184101, -0.92938870 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');\n // src.push('shadow -= (shadowCoord.z > unpackDepth(texture2D(shadowMap' + i + ', shadowCoord.xy + vec2( 0.34495938, 0.29387760 ) / 700.0)) + 0.0015) ? 0.2 : 0.0;');\n //\n // src.push(\"light.color = lightColor\" + i + \".rgb * (lightColor\" + i + \".a * shadow);\");\n // }\n } else {\n src.push(\"light.color = lightColor\" + i + \".rgb * (lightColor\" + i + \".a );\"); // a is intensity\n }\n\n src.push(\"light.direction = viewLightDir;\");\n\n if (phongMaterial) {\n src.push(\"computePhongLighting(light, geometry, material, reflectedLight);\");\n }\n\n if (specularMaterial || metallicMaterial) {\n src.push(\"computePBRLighting(light, geometry, material, reflectedLight);\");\n }\n }\n\n //src.push(\"reflectedLight.diffuse *= shadow;\");\n\n // COMBINE TERMS\n\n if (phongMaterial) {\n src.push(\"vec3 outgoingLight = (lightAmbient.rgb * lightAmbient.a * diffuseColor) + ((occlusion * (( reflectedLight.diffuse + reflectedLight.specular)))) + emissiveColor;\");\n\n } else {\n src.push(\"vec3 outgoingLight = (occlusion * (reflectedLight.diffuse)) + (occlusion * reflectedLight.specular) + emissiveColor;\");\n }\n\n } else {\n\n //--------------------------------------------------------------------------------\n // NO SHADING - EMISSIVE and AMBIENT ONLY\n //--------------------------------------------------------------------------------\n\n src.push(\"ambientColor *= (lightAmbient.rgb * lightAmbient.a);\");\n\n src.push(\"vec3 outgoingLight = emissiveColor + ambientColor;\");\n }\n\n src.push(\"gl_FragColor = vec4(outgoingLight, alpha) * colorize;\");\n\n if (gammaOutput) {\n src.push(\"gl_FragColor = linearToGamma(gl_FragColor, gammaFactor);\");\n }\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n\n return src;\n}\n\n/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nconst tempVec3a$Y = math.vec3();\n\nconst ids$2 = new Map({});\n\n/**\n * @private\n */\nconst DrawRenderer = function (hash, mesh) {\n this.id = ids$2.addItem({});\n this._hash = hash;\n this._scene = mesh.scene;\n this._useCount = 0;\n this._shaderSource = new DrawShaderSource(mesh);\n this._allocate(mesh);\n};\n\nconst drawRenderers = {};\n\nDrawRenderer.get = function (mesh) {\n const scene = mesh.scene;\n const hash = [\n scene.canvas.canvas.id,\n (scene.gammaInput ? \"gi;\" : \";\") + (scene.gammaOutput ? \"go\" : \"\"),\n scene._lightsState.getHash(),\n scene._sectionPlanesState.getHash(),\n mesh._geometry._state.hash,\n mesh._material._state.hash,\n mesh._state.drawHash\n ].join(\";\");\n let renderer = drawRenderers[hash];\n if (!renderer) {\n renderer = new DrawRenderer(hash, mesh);\n if (renderer.errors) {\n console.log(renderer.errors.join(\"\\n\"));\n return null;\n }\n drawRenderers[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nDrawRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n ids$2.removeItem(this.id);\n if (this._program) {\n this._program.destroy();\n }\n delete drawRenderers[this._hash];\n stats.memory.programs--;\n }\n};\n\nDrawRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nDrawRenderer.prototype.drawMesh = function (frameCtx, mesh) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const maxTextureUnits = WEBGL_INFO$1.MAX_TEXTURE_UNITS;\n const scene = mesh.scene;\n const material = mesh._material;\n const gl = scene.canvas.gl;\n const program = this._program;\n const meshState = mesh._state;\n const materialState = mesh._material._state;\n const geometryState = mesh._geometry._state;\n const camera = scene.camera;\n const rtcCenter = mesh.rtcCenter;\n const background = meshState.background;\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n if (background) {\n gl.depthFunc(gl.LEQUAL);\n }\n this._bindProgram(frameCtx);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcCenter ? frameCtx.getRTCViewMatrix(meshState.rtcCenterHash, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$Y) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n }\n\n if (materialState.id !== this._lastMaterialId) {\n\n frameCtx.textureUnit = this._baseTextureUnit;\n\n const backfaces = materialState.backfaces;\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n\n const frontface = materialState.frontface;\n if (frameCtx.frontface !== frontface) {\n if (frontface) {\n gl.frontFace(gl.CCW);\n } else {\n gl.frontFace(gl.CW);\n }\n frameCtx.frontface = frontface;\n }\n\n if (frameCtx.lineWidth !== materialState.lineWidth) {\n gl.lineWidth(materialState.lineWidth);\n frameCtx.lineWidth = materialState.lineWidth;\n }\n\n if (this._uPointSize) {\n gl.uniform1f(this._uPointSize, materialState.pointSize);\n }\n\n switch (materialState.type) {\n case \"LambertMaterial\":\n if (this._uMaterialAmbient) {\n gl.uniform3fv(this._uMaterialAmbient, materialState.ambient);\n }\n if (this._uMaterialColor) {\n gl.uniform4f(this._uMaterialColor, materialState.color[0], materialState.color[1], materialState.color[2], materialState.alpha);\n }\n if (this._uMaterialEmissive) {\n gl.uniform3fv(this._uMaterialEmissive, materialState.emissive);\n }\n break;\n\n case \"PhongMaterial\":\n if (this._uMaterialShininess) {\n gl.uniform1f(this._uMaterialShininess, materialState.shininess);\n }\n if (this._uMaterialAmbient) {\n gl.uniform3fv(this._uMaterialAmbient, materialState.ambient);\n }\n if (this._uMaterialDiffuse) {\n gl.uniform3fv(this._uMaterialDiffuse, materialState.diffuse);\n }\n if (this._uMaterialSpecular) {\n gl.uniform3fv(this._uMaterialSpecular, materialState.specular);\n }\n if (this._uMaterialEmissive) {\n gl.uniform3fv(this._uMaterialEmissive, materialState.emissive);\n }\n if (this._uAlphaModeCutoff) {\n gl.uniform4f(\n this._uAlphaModeCutoff,\n 1.0 * materialState.alpha,\n materialState.alphaMode === 1 ? 1.0 : 0.0,\n materialState.alphaCutoff,\n 0);\n }\n if (material._ambientMap && material._ambientMap._state.texture && this._uMaterialAmbientMap) {\n program.bindTexture(this._uMaterialAmbientMap, material._ambientMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uMaterialAmbientMapMatrix) {\n gl.uniformMatrix4fv(this._uMaterialAmbientMapMatrix, false, material._ambientMap._state.matrix);\n }\n }\n if (material._diffuseMap && material._diffuseMap._state.texture && this._uDiffuseMap) {\n program.bindTexture(this._uDiffuseMap, material._diffuseMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uDiffuseMapMatrix) {\n gl.uniformMatrix4fv(this._uDiffuseMapMatrix, false, material._diffuseMap._state.matrix);\n }\n }\n if (material._specularMap && material._specularMap._state.texture && this._uSpecularMap) {\n program.bindTexture(this._uSpecularMap, material._specularMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uSpecularMapMatrix) {\n gl.uniformMatrix4fv(this._uSpecularMapMatrix, false, material._specularMap._state.matrix);\n }\n }\n if (material._emissiveMap && material._emissiveMap._state.texture && this._uEmissiveMap) {\n program.bindTexture(this._uEmissiveMap, material._emissiveMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uEmissiveMapMatrix) {\n gl.uniformMatrix4fv(this._uEmissiveMapMatrix, false, material._emissiveMap._state.matrix);\n }\n }\n if (material._alphaMap && material._alphaMap._state.texture && this._uAlphaMap) {\n program.bindTexture(this._uAlphaMap, material._alphaMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uAlphaMapMatrix) {\n gl.uniformMatrix4fv(this._uAlphaMapMatrix, false, material._alphaMap._state.matrix);\n }\n }\n if (material._reflectivityMap && material._reflectivityMap._state.texture && this._uReflectivityMap) {\n program.bindTexture(this._uReflectivityMap, material._reflectivityMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n if (this._uReflectivityMapMatrix) {\n gl.uniformMatrix4fv(this._uReflectivityMapMatrix, false, material._reflectivityMap._state.matrix);\n }\n }\n if (material._normalMap && material._normalMap._state.texture && this._uNormalMap) {\n program.bindTexture(this._uNormalMap, material._normalMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uNormalMapMatrix) {\n gl.uniformMatrix4fv(this._uNormalMapMatrix, false, material._normalMap._state.matrix);\n }\n }\n if (material._occlusionMap && material._occlusionMap._state.texture && this._uOcclusionMap) {\n program.bindTexture(this._uOcclusionMap, material._occlusionMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uOcclusionMapMatrix) {\n gl.uniformMatrix4fv(this._uOcclusionMapMatrix, false, material._occlusionMap._state.matrix);\n }\n }\n if (material._diffuseFresnel) {\n if (this._uDiffuseFresnelEdgeBias) {\n gl.uniform1f(this._uDiffuseFresnelEdgeBias, material._diffuseFresnel.edgeBias);\n }\n if (this._uDiffuseFresnelCenterBias) {\n gl.uniform1f(this._uDiffuseFresnelCenterBias, material._diffuseFresnel.centerBias);\n }\n if (this._uDiffuseFresnelEdgeColor) {\n gl.uniform3fv(this._uDiffuseFresnelEdgeColor, material._diffuseFresnel.edgeColor);\n }\n if (this._uDiffuseFresnelCenterColor) {\n gl.uniform3fv(this._uDiffuseFresnelCenterColor, material._diffuseFresnel.centerColor);\n }\n if (this._uDiffuseFresnelPower) {\n gl.uniform1f(this._uDiffuseFresnelPower, material._diffuseFresnel.power);\n }\n }\n if (material._specularFresnel) {\n if (this._uSpecularFresnelEdgeBias) {\n gl.uniform1f(this._uSpecularFresnelEdgeBias, material._specularFresnel.edgeBias);\n }\n if (this._uSpecularFresnelCenterBias) {\n gl.uniform1f(this._uSpecularFresnelCenterBias, material._specularFresnel.centerBias);\n }\n if (this._uSpecularFresnelEdgeColor) {\n gl.uniform3fv(this._uSpecularFresnelEdgeColor, material._specularFresnel.edgeColor);\n }\n if (this._uSpecularFresnelCenterColor) {\n gl.uniform3fv(this._uSpecularFresnelCenterColor, material._specularFresnel.centerColor);\n }\n if (this._uSpecularFresnelPower) {\n gl.uniform1f(this._uSpecularFresnelPower, material._specularFresnel.power);\n }\n }\n if (material._alphaFresnel) {\n if (this._uAlphaFresnelEdgeBias) {\n gl.uniform1f(this._uAlphaFresnelEdgeBias, material._alphaFresnel.edgeBias);\n }\n if (this._uAlphaFresnelCenterBias) {\n gl.uniform1f(this._uAlphaFresnelCenterBias, material._alphaFresnel.centerBias);\n }\n if (this._uAlphaFresnelEdgeColor) {\n gl.uniform3fv(this._uAlphaFresnelEdgeColor, material._alphaFresnel.edgeColor);\n }\n if (this._uAlphaFresnelCenterColor) {\n gl.uniform3fv(this._uAlphaFresnelCenterColor, material._alphaFresnel.centerColor);\n }\n if (this._uAlphaFresnelPower) {\n gl.uniform1f(this._uAlphaFresnelPower, material._alphaFresnel.power);\n }\n }\n if (material._reflectivityFresnel) {\n if (this._uReflectivityFresnelEdgeBias) {\n gl.uniform1f(this._uReflectivityFresnelEdgeBias, material._reflectivityFresnel.edgeBias);\n }\n if (this._uReflectivityFresnelCenterBias) {\n gl.uniform1f(this._uReflectivityFresnelCenterBias, material._reflectivityFresnel.centerBias);\n }\n if (this._uReflectivityFresnelEdgeColor) {\n gl.uniform3fv(this._uReflectivityFresnelEdgeColor, material._reflectivityFresnel.edgeColor);\n }\n if (this._uReflectivityFresnelCenterColor) {\n gl.uniform3fv(this._uReflectivityFresnelCenterColor, material._reflectivityFresnel.centerColor);\n }\n if (this._uReflectivityFresnelPower) {\n gl.uniform1f(this._uReflectivityFresnelPower, material._reflectivityFresnel.power);\n }\n }\n if (material._emissiveFresnel) {\n if (this._uEmissiveFresnelEdgeBias) {\n gl.uniform1f(this._uEmissiveFresnelEdgeBias, material._emissiveFresnel.edgeBias);\n }\n if (this._uEmissiveFresnelCenterBias) {\n gl.uniform1f(this._uEmissiveFresnelCenterBias, material._emissiveFresnel.centerBias);\n }\n if (this._uEmissiveFresnelEdgeColor) {\n gl.uniform3fv(this._uEmissiveFresnelEdgeColor, material._emissiveFresnel.edgeColor);\n }\n if (this._uEmissiveFresnelCenterColor) {\n gl.uniform3fv(this._uEmissiveFresnelCenterColor, material._emissiveFresnel.centerColor);\n }\n if (this._uEmissiveFresnelPower) {\n gl.uniform1f(this._uEmissiveFresnelPower, material._emissiveFresnel.power);\n }\n }\n break;\n\n case \"MetallicMaterial\":\n if (this._uBaseColor) {\n gl.uniform3fv(this._uBaseColor, materialState.baseColor);\n }\n if (this._uMaterialMetallic) {\n gl.uniform1f(this._uMaterialMetallic, materialState.metallic);\n }\n if (this._uMaterialRoughness) {\n gl.uniform1f(this._uMaterialRoughness, materialState.roughness);\n }\n if (this._uMaterialSpecularF0) {\n gl.uniform1f(this._uMaterialSpecularF0, materialState.specularF0);\n }\n if (this._uMaterialEmissive) {\n gl.uniform3fv(this._uMaterialEmissive, materialState.emissive);\n }\n if (this._uAlphaModeCutoff) {\n gl.uniform4f(\n this._uAlphaModeCutoff,\n 1.0 * materialState.alpha,\n materialState.alphaMode === 1 ? 1.0 : 0.0,\n materialState.alphaCutoff,\n 0.0);\n }\n const baseColorMap = material._baseColorMap;\n if (baseColorMap && baseColorMap._state.texture && this._uBaseColorMap) {\n program.bindTexture(this._uBaseColorMap, baseColorMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uBaseColorMapMatrix) {\n gl.uniformMatrix4fv(this._uBaseColorMapMatrix, false, baseColorMap._state.matrix);\n }\n }\n const metallicMap = material._metallicMap;\n if (metallicMap && metallicMap._state.texture && this._uMetallicMap) {\n program.bindTexture(this._uMetallicMap, metallicMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uMetallicMapMatrix) {\n gl.uniformMatrix4fv(this._uMetallicMapMatrix, false, metallicMap._state.matrix);\n }\n }\n const roughnessMap = material._roughnessMap;\n if (roughnessMap && roughnessMap._state.texture && this._uRoughnessMap) {\n program.bindTexture(this._uRoughnessMap, roughnessMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uRoughnessMapMatrix) {\n gl.uniformMatrix4fv(this._uRoughnessMapMatrix, false, roughnessMap._state.matrix);\n }\n }\n const metallicRoughnessMap = material._metallicRoughnessMap;\n if (metallicRoughnessMap && metallicRoughnessMap._state.texture && this._uMetallicRoughnessMap) {\n program.bindTexture(this._uMetallicRoughnessMap, metallicRoughnessMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uMetallicRoughnessMapMatrix) {\n gl.uniformMatrix4fv(this._uMetallicRoughnessMapMatrix, false, metallicRoughnessMap._state.matrix);\n }\n }\n var emissiveMap = material._emissiveMap;\n if (emissiveMap && emissiveMap._state.texture && this._uEmissiveMap) {\n program.bindTexture(this._uEmissiveMap, emissiveMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uEmissiveMapMatrix) {\n gl.uniformMatrix4fv(this._uEmissiveMapMatrix, false, emissiveMap._state.matrix);\n }\n }\n var occlusionMap = material._occlusionMap;\n if (occlusionMap && material._occlusionMap._state.texture && this._uOcclusionMap) {\n program.bindTexture(this._uOcclusionMap, occlusionMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uOcclusionMapMatrix) {\n gl.uniformMatrix4fv(this._uOcclusionMapMatrix, false, occlusionMap._state.matrix);\n }\n }\n var alphaMap = material._alphaMap;\n if (alphaMap && alphaMap._state.texture && this._uAlphaMap) {\n program.bindTexture(this._uAlphaMap, alphaMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uAlphaMapMatrix) {\n gl.uniformMatrix4fv(this._uAlphaMapMatrix, false, alphaMap._state.matrix);\n }\n }\n var normalMap = material._normalMap;\n if (normalMap && normalMap._state.texture && this._uNormalMap) {\n program.bindTexture(this._uNormalMap, normalMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uNormalMapMatrix) {\n gl.uniformMatrix4fv(this._uNormalMapMatrix, false, normalMap._state.matrix);\n }\n }\n break;\n\n case \"SpecularMaterial\":\n if (this._uMaterialDiffuse) {\n gl.uniform3fv(this._uMaterialDiffuse, materialState.diffuse);\n }\n if (this._uMaterialSpecular) {\n gl.uniform3fv(this._uMaterialSpecular, materialState.specular);\n }\n if (this._uMaterialGlossiness) {\n gl.uniform1f(this._uMaterialGlossiness, materialState.glossiness);\n }\n if (this._uMaterialReflectivity) {\n gl.uniform1f(this._uMaterialReflectivity, materialState.reflectivity);\n }\n if (this._uMaterialEmissive) {\n gl.uniform3fv(this._uMaterialEmissive, materialState.emissive);\n }\n if (this._uAlphaModeCutoff) {\n gl.uniform4f(\n this._uAlphaModeCutoff,\n 1.0 * materialState.alpha,\n materialState.alphaMode === 1 ? 1.0 : 0.0,\n materialState.alphaCutoff,\n 0.0);\n }\n const diffuseMap = material._diffuseMap;\n if (diffuseMap && diffuseMap._state.texture && this._uDiffuseMap) {\n program.bindTexture(this._uDiffuseMap, diffuseMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uDiffuseMapMatrix) {\n gl.uniformMatrix4fv(this._uDiffuseMapMatrix, false, diffuseMap._state.matrix);\n }\n }\n const specularMap = material._specularMap;\n if (specularMap && specularMap._state.texture && this._uSpecularMap) {\n program.bindTexture(this._uSpecularMap, specularMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uSpecularMapMatrix) {\n gl.uniformMatrix4fv(this._uSpecularMapMatrix, false, specularMap._state.matrix);\n }\n }\n const glossinessMap = material._glossinessMap;\n if (glossinessMap && glossinessMap._state.texture && this._uGlossinessMap) {\n program.bindTexture(this._uGlossinessMap, glossinessMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uGlossinessMapMatrix) {\n gl.uniformMatrix4fv(this._uGlossinessMapMatrix, false, glossinessMap._state.matrix);\n }\n }\n const specularGlossinessMap = material._specularGlossinessMap;\n if (specularGlossinessMap && specularGlossinessMap._state.texture && this._uSpecularGlossinessMap) {\n program.bindTexture(this._uSpecularGlossinessMap, specularGlossinessMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uSpecularGlossinessMapMatrix) {\n gl.uniformMatrix4fv(this._uSpecularGlossinessMapMatrix, false, specularGlossinessMap._state.matrix);\n }\n }\n var emissiveMap = material._emissiveMap;\n if (emissiveMap && emissiveMap._state.texture && this._uEmissiveMap) {\n program.bindTexture(this._uEmissiveMap, emissiveMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uEmissiveMapMatrix) {\n gl.uniformMatrix4fv(this._uEmissiveMapMatrix, false, emissiveMap._state.matrix);\n }\n }\n var occlusionMap = material._occlusionMap;\n if (occlusionMap && occlusionMap._state.texture && this._uOcclusionMap) {\n program.bindTexture(this._uOcclusionMap, occlusionMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uOcclusionMapMatrix) {\n gl.uniformMatrix4fv(this._uOcclusionMapMatrix, false, occlusionMap._state.matrix);\n }\n }\n var alphaMap = material._alphaMap;\n if (alphaMap && alphaMap._state.texture && this._uAlphaMap) {\n program.bindTexture(this._uAlphaMap, alphaMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uAlphaMapMatrix) {\n gl.uniformMatrix4fv(this._uAlphaMapMatrix, false, alphaMap._state.matrix);\n }\n }\n var normalMap = material._normalMap;\n if (normalMap && normalMap._state.texture && this._uNormalMap) {\n program.bindTexture(this._uNormalMap, normalMap._state.texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n if (this._uNormalMapMatrix) {\n gl.uniformMatrix4fv(this._uNormalMapMatrix, false, normalMap._state.matrix);\n }\n }\n break;\n }\n this._lastMaterialId = materialState.id;\n }\n\n gl.uniformMatrix4fv(this._uModelMatrix, gl.FALSE, mesh.worldMatrix);\n if (this._uModelNormalMatrix) {\n gl.uniformMatrix4fv(this._uModelNormalMatrix, gl.FALSE, mesh.worldNormalMatrix);\n }\n\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, meshState.clippable);\n }\n\n if (this._uColorize) {\n const colorize = meshState.colorize;\n const lastColorize = this._lastColorize;\n if (lastColorize[0] !== colorize[0] ||\n lastColorize[1] !== colorize[1] ||\n lastColorize[2] !== colorize[2] ||\n lastColorize[3] !== colorize[3]) {\n gl.uniform4fv(this._uColorize, colorize);\n lastColorize[0] = colorize[0];\n lastColorize[1] = colorize[1];\n lastColorize[2] = colorize[2];\n lastColorize[3] = colorize[3];\n }\n }\n\n gl.uniform3fv(this._uOffset, meshState.offset);\n\n // Bind VBOs\n\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (this._uUVDecodeMatrix) {\n gl.uniformMatrix3fv(this._uUVDecodeMatrix, false, geometryState.uvDecodeMatrix);\n }\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf);\n frameCtx.bindArray++;\n }\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(geometryState.normalsBuf);\n frameCtx.bindArray++;\n }\n if (this._aUV) {\n this._aUV.bindArrayBuffer(geometryState.uvBuf);\n frameCtx.bindArray++;\n }\n if (this._aColor) {\n this._aColor.bindArrayBuffer(geometryState.colorsBuf);\n frameCtx.bindArray++;\n }\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(geometryState.flagsBuf);\n frameCtx.bindArray++;\n }\n if (geometryState.indicesBuf) {\n geometryState.indicesBuf.bind();\n frameCtx.bindArray++;\n }\n this._lastGeometryId = geometryState.id;\n }\n\n // Draw (indices bound in prev step)\n\n if (geometryState.indicesBuf) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n frameCtx.drawElements++;\n } else if (geometryState.positions) {\n gl.drawArrays(gl.TRIANGLES, 0, geometryState.positions.numItems);\n frameCtx.drawArrays++;\n }\n\n if (background) {\n gl.depthFunc(gl.LESS);\n }\n};\n\nDrawRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n const material = mesh._material;\n const lightsState = scene._lightsState;\n const sectionPlanesState = scene._sectionPlanesState;\n const materialState = mesh._material._state;\n\n this._program = new Program(gl, this._shaderSource);\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uUVDecodeMatrix = program.getLocation(\"uvDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uModelNormalMatrix = program.getLocation(\"modelNormalMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\n this._uLightAmbient = [];\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n this._uShadowViewMatrix = [];\n this._uShadowProjMatrix = [];\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n const lights = lightsState.lights;\n let light;\n\n for (var i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n switch (light.type) {\n\n case \"ambient\":\n this._uLightAmbient[i] = program.getLocation(\"lightAmbient\");\n break;\n\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n\n case \"spot\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n\n if (light.castsShadow) {\n this._uShadowViewMatrix[i] = program.getLocation(\"shadowViewMatrix\" + i);\n this._uShadowProjMatrix[i] = program.getLocation(\"shadowProjMatrix\" + i);\n }\n }\n\n if (lightsState.lightMaps.length > 0) {\n this._uLightMap = \"lightMap\";\n }\n\n if (lightsState.reflectionMaps.length > 0) {\n this._uReflectionMap = \"reflectionMap\";\n }\n\n this._uSectionPlanes = [];\n const sectionPlanes = sectionPlanesState.sectionPlanes;\n for (var i = 0, len = sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._uPointSize = program.getLocation(\"pointSize\");\n\n switch (materialState.type) {\n case \"LambertMaterial\":\n this._uMaterialColor = program.getLocation(\"materialColor\");\n this._uMaterialEmissive = program.getLocation(\"materialEmissive\");\n this._uAlphaModeCutoff = program.getLocation(\"materialAlphaModeCutoff\");\n break;\n\n case \"PhongMaterial\":\n this._uMaterialAmbient = program.getLocation(\"materialAmbient\");\n this._uMaterialDiffuse = program.getLocation(\"materialDiffuse\");\n this._uMaterialSpecular = program.getLocation(\"materialSpecular\");\n this._uMaterialEmissive = program.getLocation(\"materialEmissive\");\n this._uAlphaModeCutoff = program.getLocation(\"materialAlphaModeCutoff\");\n this._uMaterialShininess = program.getLocation(\"materialShininess\");\n if (material._ambientMap) {\n this._uMaterialAmbientMap = \"ambientMap\";\n this._uMaterialAmbientMapMatrix = program.getLocation(\"ambientMapMatrix\");\n }\n if (material._diffuseMap) {\n this._uDiffuseMap = \"diffuseMap\";\n this._uDiffuseMapMatrix = program.getLocation(\"diffuseMapMatrix\");\n }\n if (material._specularMap) {\n this._uSpecularMap = \"specularMap\";\n this._uSpecularMapMatrix = program.getLocation(\"specularMapMatrix\");\n }\n if (material._emissiveMap) {\n this._uEmissiveMap = \"emissiveMap\";\n this._uEmissiveMapMatrix = program.getLocation(\"emissiveMapMatrix\");\n }\n if (material._alphaMap) {\n this._uAlphaMap = \"alphaMap\";\n this._uAlphaMapMatrix = program.getLocation(\"alphaMapMatrix\");\n }\n if (material._reflectivityMap) {\n this._uReflectivityMap = \"reflectivityMap\";\n this._uReflectivityMapMatrix = program.getLocation(\"reflectivityMapMatrix\");\n }\n if (material._normalMap) {\n this._uNormalMap = \"normalMap\";\n this._uNormalMapMatrix = program.getLocation(\"normalMapMatrix\");\n }\n if (material._occlusionMap) {\n this._uOcclusionMap = \"occlusionMap\";\n this._uOcclusionMapMatrix = program.getLocation(\"occlusionMapMatrix\");\n }\n if (material._diffuseFresnel) {\n this._uDiffuseFresnelEdgeBias = program.getLocation(\"diffuseFresnelEdgeBias\");\n this._uDiffuseFresnelCenterBias = program.getLocation(\"diffuseFresnelCenterBias\");\n this._uDiffuseFresnelEdgeColor = program.getLocation(\"diffuseFresnelEdgeColor\");\n this._uDiffuseFresnelCenterColor = program.getLocation(\"diffuseFresnelCenterColor\");\n this._uDiffuseFresnelPower = program.getLocation(\"diffuseFresnelPower\");\n }\n if (material._specularFresnel) {\n this._uSpecularFresnelEdgeBias = program.getLocation(\"specularFresnelEdgeBias\");\n this._uSpecularFresnelCenterBias = program.getLocation(\"specularFresnelCenterBias\");\n this._uSpecularFresnelEdgeColor = program.getLocation(\"specularFresnelEdgeColor\");\n this._uSpecularFresnelCenterColor = program.getLocation(\"specularFresnelCenterColor\");\n this._uSpecularFresnelPower = program.getLocation(\"specularFresnelPower\");\n }\n if (material._alphaFresnel) {\n this._uAlphaFresnelEdgeBias = program.getLocation(\"alphaFresnelEdgeBias\");\n this._uAlphaFresnelCenterBias = program.getLocation(\"alphaFresnelCenterBias\");\n this._uAlphaFresnelEdgeColor = program.getLocation(\"alphaFresnelEdgeColor\");\n this._uAlphaFresnelCenterColor = program.getLocation(\"alphaFresnelCenterColor\");\n this._uAlphaFresnelPower = program.getLocation(\"alphaFresnelPower\");\n }\n if (material._reflectivityFresnel) {\n this._uReflectivityFresnelEdgeBias = program.getLocation(\"reflectivityFresnelEdgeBias\");\n this._uReflectivityFresnelCenterBias = program.getLocation(\"reflectivityFresnelCenterBias\");\n this._uReflectivityFresnelEdgeColor = program.getLocation(\"reflectivityFresnelEdgeColor\");\n this._uReflectivityFresnelCenterColor = program.getLocation(\"reflectivityFresnelCenterColor\");\n this._uReflectivityFresnelPower = program.getLocation(\"reflectivityFresnelPower\");\n }\n if (material._emissiveFresnel) {\n this._uEmissiveFresnelEdgeBias = program.getLocation(\"emissiveFresnelEdgeBias\");\n this._uEmissiveFresnelCenterBias = program.getLocation(\"emissiveFresnelCenterBias\");\n this._uEmissiveFresnelEdgeColor = program.getLocation(\"emissiveFresnelEdgeColor\");\n this._uEmissiveFresnelCenterColor = program.getLocation(\"emissiveFresnelCenterColor\");\n this._uEmissiveFresnelPower = program.getLocation(\"emissiveFresnelPower\");\n }\n break;\n\n case \"MetallicMaterial\":\n this._uBaseColor = program.getLocation(\"materialBaseColor\");\n this._uMaterialMetallic = program.getLocation(\"materialMetallic\");\n this._uMaterialRoughness = program.getLocation(\"materialRoughness\");\n this._uMaterialSpecularF0 = program.getLocation(\"materialSpecularF0\");\n this._uMaterialEmissive = program.getLocation(\"materialEmissive\");\n this._uAlphaModeCutoff = program.getLocation(\"materialAlphaModeCutoff\");\n if (material._baseColorMap) {\n this._uBaseColorMap = \"baseColorMap\";\n this._uBaseColorMapMatrix = program.getLocation(\"baseColorMapMatrix\");\n }\n if (material._metallicMap) {\n this._uMetallicMap = \"metallicMap\";\n this._uMetallicMapMatrix = program.getLocation(\"metallicMapMatrix\");\n }\n if (material._roughnessMap) {\n this._uRoughnessMap = \"roughnessMap\";\n this._uRoughnessMapMatrix = program.getLocation(\"roughnessMapMatrix\");\n }\n if (material._metallicRoughnessMap) {\n this._uMetallicRoughnessMap = \"metallicRoughnessMap\";\n this._uMetallicRoughnessMapMatrix = program.getLocation(\"metallicRoughnessMapMatrix\");\n }\n if (material._emissiveMap) {\n this._uEmissiveMap = \"emissiveMap\";\n this._uEmissiveMapMatrix = program.getLocation(\"emissiveMapMatrix\");\n }\n if (material._occlusionMap) {\n this._uOcclusionMap = \"occlusionMap\";\n this._uOcclusionMapMatrix = program.getLocation(\"occlusionMapMatrix\");\n }\n if (material._alphaMap) {\n this._uAlphaMap = \"alphaMap\";\n this._uAlphaMapMatrix = program.getLocation(\"alphaMapMatrix\");\n }\n if (material._normalMap) {\n this._uNormalMap = \"normalMap\";\n this._uNormalMapMatrix = program.getLocation(\"normalMapMatrix\");\n }\n break;\n\n case \"SpecularMaterial\":\n this._uMaterialDiffuse = program.getLocation(\"materialDiffuse\");\n this._uMaterialSpecular = program.getLocation(\"materialSpecular\");\n this._uMaterialGlossiness = program.getLocation(\"materialGlossiness\");\n this._uMaterialReflectivity = program.getLocation(\"reflectivityFresnel\");\n this._uMaterialEmissive = program.getLocation(\"materialEmissive\");\n this._uAlphaModeCutoff = program.getLocation(\"materialAlphaModeCutoff\");\n if (material._diffuseMap) {\n this._uDiffuseMap = \"diffuseMap\";\n this._uDiffuseMapMatrix = program.getLocation(\"diffuseMapMatrix\");\n }\n if (material._specularMap) {\n this._uSpecularMap = \"specularMap\";\n this._uSpecularMapMatrix = program.getLocation(\"specularMapMatrix\");\n }\n if (material._glossinessMap) {\n this._uGlossinessMap = \"glossinessMap\";\n this._uGlossinessMapMatrix = program.getLocation(\"glossinessMapMatrix\");\n }\n if (material._specularGlossinessMap) {\n this._uSpecularGlossinessMap = \"materialSpecularGlossinessMap\";\n this._uSpecularGlossinessMapMatrix = program.getLocation(\"materialSpecularGlossinessMapMatrix\");\n }\n if (material._emissiveMap) {\n this._uEmissiveMap = \"emissiveMap\";\n this._uEmissiveMapMatrix = program.getLocation(\"emissiveMapMatrix\");\n }\n if (material._occlusionMap) {\n this._uOcclusionMap = \"occlusionMap\";\n this._uOcclusionMapMatrix = program.getLocation(\"occlusionMapMatrix\");\n }\n if (material._alphaMap) {\n this._uAlphaMap = \"alphaMap\";\n this._uAlphaMapMatrix = program.getLocation(\"alphaMapMatrix\");\n }\n if (material._normalMap) {\n this._uNormalMap = \"normalMap\";\n this._uNormalMapMatrix = program.getLocation(\"normalMapMatrix\");\n }\n break;\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aUV = program.getAttribute(\"uv\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n\n this._uClippable = program.getLocation(\"clippable\");\n this._uColorize = program.getLocation(\"colorize\");\n this._uOffset = program.getLocation(\"offset\");\n\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n\n this._lastColorize = new Float32Array(4);\n\n this._baseTextureUnit = 0;\n\n};\n\nDrawRenderer.prototype._bindProgram = function (frameCtx) {\n\n const maxTextureUnits = WEBGL_INFO$1.MAX_TEXTURE_UNITS;\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n const project = scene.camera.project;\n let light;\n\n const program = this._program;\n\n program.bind();\n\n frameCtx.useProgram++;\n frameCtx.textureUnit = 0;\n\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n\n this._lastColorize[0] = -1;\n this._lastColorize[1] = -1;\n this._lastColorize[2] = -1;\n this._lastColorize[3] = -1;\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n for (var i = 0, len = lightsState.lights.length; i < len; i++) {\n\n light = lightsState.lights[i];\n\n if (this._uLightAmbient[i]) {\n gl.uniform4f(this._uLightAmbient[i], light.color[0], light.color[1], light.color[2], light.intensity);\n\n } else {\n\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n\n if (light.castsShadow) {\n if (this._uShadowViewMatrix[i]) {\n gl.uniformMatrix4fv(this._uShadowViewMatrix[i], false, light.getShadowViewMatrix());\n }\n if (this._uShadowProjMatrix[i]) {\n gl.uniformMatrix4fv(this._uShadowProjMatrix[i], false, light.getShadowProjMatrix());\n }\n const shadowRenderBuf = light.getShadowRenderBuf();\n if (shadowRenderBuf) {\n program.bindTexture(\"shadowMap\" + i, shadowRenderBuf.getTexture(), frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n }\n }\n }\n\n if (lightsState.lightMaps.length > 0 && lightsState.lightMaps[0].texture && this._uLightMap) {\n program.bindTexture(this._uLightMap, lightsState.lightMaps[0].texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n\n if (lightsState.reflectionMaps.length > 0 && lightsState.reflectionMaps[0].texture && this._uReflectionMap) {\n program.bindTexture(this._uReflectionMap, lightsState.reflectionMaps[0].texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n\n if (this._uGammaFactor) {\n gl.uniform1f(this._uGammaFactor, scene.gammaFactor);\n }\n\n this._baseTextureUnit = frameCtx.textureUnit;\n};\n\n/**\n * @private\n */\nclass EmphasisFillShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex$5(mesh);\n this.fragment = buildFragment$5(mesh);\n }\n}\n\nfunction buildVertex$5(mesh) {\n\n const scene = mesh.scene;\n const lightsState = scene._lightsState;\n const normals = hasNormals(mesh);\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const billboard = mesh._state.billboard;\n const stationary = mesh._state.stationary;\n const src = [];\n\n src.push(\"// EmphasisFillShaderSource vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"attribute vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform vec4 colorize;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n src.push(\"uniform vec4 lightAmbient;\");\n src.push(\"uniform vec4 fillColor;\");\n if (normals) {\n src.push(\"attribute vec3 normal;\");\n src.push(\"uniform mat4 modelNormalMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n }\n if (quantizedGeometry) {\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n src.push(\"vec4 worldPosition;\");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n if (normals) {\n if (quantizedGeometry) {\n src.push(\"vec4 localNormal = vec4(octDecode(normal.xy), 0.0); \");\n } else {\n src.push(\"vec4 localNormal = vec4(normal, 0.0); \");\n }\n src.push(\"mat4 modelNormalMatrix2 = modelNormalMatrix;\");\n src.push(\"mat4 viewNormalMatrix2 = viewNormalMatrix;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n src.push(\"billboard(modelViewMatrix);\");\n if (normals) {\n src.push(\"mat4 modelViewNormalMatrix = viewNormalMatrix2 * modelNormalMatrix2;\");\n src.push(\"billboard(modelNormalMatrix2);\");\n src.push(\"billboard(viewNormalMatrix2);\");\n src.push(\"billboard(modelViewNormalMatrix);\");\n }\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\");\n } else {\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \");\n }\n if (normals) {\n src.push(\"vec3 viewNormal = normalize((viewNormalMatrix2 * modelNormalMatrix2 * localNormal).xyz);\");\n }\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n src.push(\"float lambertian = 1.0;\");\n if (normals) {\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix2 * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix2 * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n }\n // TODO: A blending mode for emphasis materials, to select add/multiply/mix\n //src.push(\"vColor = vec4((mix(reflectedColor, fillColor.rgb, 0.7)), fillColor.a);\");\n src.push(\"vColor = vec4(reflectedColor * fillColor.rgb, fillColor.a);\");\n //src.push(\"vColor = vec4(reflectedColor + fillColor.rgb, fillColor.a);\");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n }\n if (mesh._geometry._state.primitiveName === \"points\") {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n return src;\n}\n\nfunction hasNormals(mesh) {\n const primitive = mesh._geometry._state.primitiveName;\n if ((mesh._geometry._state.autoVertexNormals || mesh._geometry._state.normalsBuf) && (primitive === \"triangles\" || primitive === \"triangle-strip\" || primitive === \"triangle-fan\")) {\n return true;\n }\n return false;\n}\n\nfunction buildFragment$5(mesh) {\n\n const scene = mesh.scene;\n const sectionPlanesState = mesh.scene._sectionPlanesState;\n const gammaOutput = mesh.scene.gammaOutput;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Lambertian drawing fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n if (gammaOutput) {\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (mesh._geometry._state.primitiveName === \"points\") {\n src.push(\"vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\"float r = dot(cxy, cxy);\");\n src.push(\"if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n if (gammaOutput) {\n src.push(\"gl_FragColor = linearToGamma(vColor, gammaFactor);\");\n } else {\n src.push(\"gl_FragColor = vColor;\");\n }\n src.push(\"}\");\n return src;\n}\n\n/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nconst ids$1 = new Map({});\n\nconst tempVec3a$X = math.vec3();\n\n/**\n * @private\n */\nconst EmphasisFillRenderer = function (hash, mesh) {\n this.id = ids$1.addItem({});\n this._hash = hash;\n this._scene = mesh.scene;\n this._useCount = 0;\n this._shaderSource = new EmphasisFillShaderSource(mesh);\n this._allocate(mesh);\n};\n\nconst xrayFillRenderers = {};\n\nEmphasisFillRenderer.get = function (mesh) {\n const hash = [\n mesh.scene.id,\n mesh.scene.gammaOutput ? \"go\" : \"\", // Gamma input not needed\n mesh.scene._sectionPlanesState.getHash(),\n !!mesh._geometry._state.normalsBuf ? \"n\" : \"\",\n mesh._geometry._state.compressGeometry ? \"cp\" : \"\",\n mesh._state.hash\n ].join(\";\");\n let renderer = xrayFillRenderers[hash];\n if (!renderer) {\n renderer = new EmphasisFillRenderer(hash, mesh);\n xrayFillRenderers[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nEmphasisFillRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n ids$1.removeItem(this.id);\n if (this._program) {\n this._program.destroy();\n }\n delete xrayFillRenderers[this._hash];\n stats.memory.programs--;\n }\n};\n\nEmphasisFillRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nEmphasisFillRenderer.prototype.drawMesh = function (frameCtx, mesh, mode) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const scene = this._scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const materialState = mode === 0 ? mesh._xrayMaterial._state : (mode === 1 ? mesh._highlightMaterial._state : mesh._selectedMaterial._state);\n const meshState = mesh._state;\n const geometryState = mesh._geometry._state;\n const rtcCenter = mesh.rtcCenter;\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcCenter ? frameCtx.getRTCViewMatrix(meshState.rtcCenterHash, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$X) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n }\n\n if (materialState.id !== this._lastMaterialId) {\n const fillColor = materialState.fillColor;\n const backfaces = materialState.backfaces;\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n gl.uniform4f(this._uFillColor, fillColor[0], fillColor[1], fillColor[2], materialState.fillAlpha);\n this._lastMaterialId = materialState.id;\n }\n\n gl.uniformMatrix4fv(this._uModelMatrix, gl.FALSE, mesh.worldMatrix);\n if (this._uModelNormalMatrix) {\n gl.uniformMatrix4fv(this._uModelNormalMatrix, gl.FALSE, mesh.worldNormalMatrix);\n }\n\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, meshState.clippable);\n }\n\n gl.uniform3fv(this._uOffset, meshState.offset);\n\n // Bind VBOs\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (this._uUVDecodeMatrix) {\n gl.uniformMatrix3fv(this._uUVDecodeMatrix, false, geometryState.uvDecodeMatrix);\n }\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf);\n frameCtx.bindArray++;\n }\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(geometryState.normalsBuf);\n frameCtx.bindArray++;\n }\n if (geometryState.indicesBuf) {\n geometryState.indicesBuf.bind();\n frameCtx.bindArray++;\n // gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n // frameCtx.drawElements++;\n } else if (geometryState.positionsBuf) ;\n this._lastGeometryId = geometryState.id;\n }\n\n if (geometryState.indicesBuf) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n frameCtx.drawElements++;\n } else if (geometryState.positionsBuf) {\n gl.drawArrays(gl.TRIANGLES, 0, geometryState.positionsBuf.numItems);\n frameCtx.drawArrays++;\n }\n};\n\nEmphasisFillRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const lightsState = scene._lightsState;\n const sectionPlanesState = scene._sectionPlanesState;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._shaderSource);\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uModelNormalMatrix = program.getLocation(\"modelNormalMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uLightAmbient = [];\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n switch (light.type) {\n case \"ambient\":\n this._uLightAmbient[i] = program.getLocation(\"lightAmbient\");\n break;\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n }\n this._uSectionPlanes = [];\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._uFillColor = program.getLocation(\"fillColor\");\n this._aPosition = program.getAttribute(\"position\");\n this._aNormal = program.getAttribute(\"normal\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\n this._uOffset = program.getLocation(\"offset\");\n if (scene.logarithmicDepthBufferEnabled ) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n};\n\nEmphasisFillRenderer.prototype._bindProgram = function (frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n const camera = scene.camera;\n const project = camera.project;\n const program = this._program;\n program.bind();\n frameCtx.useProgram++;\n frameCtx.textureUnit = 0;\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n this._lastIndicesBufId = null;\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.normalMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n if (scene.logarithmicDepthBufferEnabled ) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (this._uLightAmbient[i]) {\n gl.uniform4f(this._uLightAmbient[i], light.color[0], light.color[1], light.color[2], light.intensity);\n } else {\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n }\n }\n if (this._uGammaFactor) {\n gl.uniform1f(this._uGammaFactor, scene.gammaFactor);\n }\n};\n\n/**\n * @private\n */\nclass EmphasisEdgesShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex$4(mesh);\n this.fragment = buildFragment$4(mesh);\n }\n}\n\nfunction buildVertex$4(mesh) {\n const scene = mesh.scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const billboard = mesh._state.billboard;\n const stationary = mesh._state.stationary;\n const src = [];\n src.push(\"// Edges drawing vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"attribute vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform vec4 edgeColor;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n src.push(\"varying vec4 vColor;\");\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n src.push(\"vec4 worldPosition;\");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n src.push(\"billboard(modelViewMatrix);\");\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = modelViewMatrix * localPosition;\");\n } else {\n src.push(\"worldPosition = modelMatrix2 * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = viewMatrix2 * worldPosition; \");\n }\n src.push(\"vColor = edgeColor;\");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragment$4(mesh) {\n\n const scene = mesh.scene;\n const sectionPlanesState = mesh.scene._sectionPlanesState;\n const gammaOutput = mesh.scene.gammaOutput;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Edges drawing fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (gammaOutput) {\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"uniform bool clippable;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n if (gammaOutput) {\n src.push(\"gl_FragColor = linearToGamma(vColor, gammaFactor);\");\n } else {\n src.push(\"gl_FragColor = vColor;\");\n }\n src.push(\"}\");\n return src;\n}\n\n/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nconst ids = new Map({});\n\nconst tempVec3a$W = math.vec3();\n\n/**\n * @private\n */\nconst EmphasisEdgesRenderer = function (hash, mesh) {\n this.id = ids.addItem({});\n this._hash = hash;\n this._scene = mesh.scene;\n this._useCount = 0;\n this._shaderSource = new EmphasisEdgesShaderSource(mesh);\n this._allocate(mesh);\n};\n\nconst renderers$4 = {};\n\nEmphasisEdgesRenderer.get = function (mesh) {\n const hash = [\n mesh.scene.id,\n mesh.scene.gammaOutput ? \"go\" : \"\", // Gamma input not needed\n mesh.scene._sectionPlanesState.getHash(),\n mesh._geometry._state.compressGeometry ? \"cp\" : \"\",\n mesh._state.hash\n ].join(\";\");\n let renderer = renderers$4[hash];\n if (!renderer) {\n renderer = new EmphasisEdgesRenderer(hash, mesh);\n renderers$4[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nEmphasisEdgesRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n ids.removeItem(this.id);\n if (this._program) {\n this._program.destroy();\n }\n delete renderers$4[this._hash];\n stats.memory.programs--;\n }\n};\n\nEmphasisEdgesRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nEmphasisEdgesRenderer.prototype.drawMesh = function (frameCtx, mesh, mode) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const scene = this._scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n let materialState;\n const meshState = mesh._state;\n const geometry = mesh._geometry;\n const geometryState = geometry._state;\n const rtcCenter = mesh.rtcCenter;\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcCenter ? frameCtx.getRTCViewMatrix(meshState.rtcCenterHash, rtcCenter) : camera.viewMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$W) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n }\n\n switch (mode) {\n case 0:\n materialState = mesh._xrayMaterial._state;\n break;\n case 1:\n materialState = mesh._highlightMaterial._state;\n break;\n case 2:\n materialState = mesh._selectedMaterial._state;\n break;\n case 3:\n default:\n materialState = mesh._edgeMaterial._state;\n break;\n }\n\n if (materialState.id !== this._lastMaterialId) {\n const backfaces = materialState.backfaces;\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n if (frameCtx.lineWidth !== materialState.edgeWidth) {\n gl.lineWidth(materialState.edgeWidth);\n frameCtx.lineWidth = materialState.edgeWidth;\n }\n if (this._uEdgeColor) {\n const edgeColor = materialState.edgeColor;\n const edgeAlpha = materialState.edgeAlpha;\n gl.uniform4f(this._uEdgeColor, edgeColor[0], edgeColor[1], edgeColor[2], edgeAlpha);\n }\n this._lastMaterialId = materialState.id;\n }\n\n gl.uniformMatrix4fv(this._uModelMatrix, gl.FALSE, mesh.worldMatrix);\n\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, meshState.clippable);\n }\n\n gl.uniform3fv(this._uOffset, meshState.offset);\n\n // Bind VBOs\n let indicesBuf;\n if (geometryState.primitive === gl.TRIANGLES) {\n indicesBuf = geometry._getEdgeIndices();\n } else if (geometryState.primitive === gl.LINES) {\n indicesBuf = geometryState.indicesBuf;\n }\n\n if (indicesBuf) {\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n frameCtx.bindArray++;\n }\n indicesBuf.bind();\n frameCtx.bindArray++;\n this._lastGeometryId = geometryState.id;\n }\n\n gl.drawElements(gl.LINES, indicesBuf.numItems, indicesBuf.itemType, 0);\n\n frameCtx.drawElements++;\n }\n};\n\nEmphasisEdgesRenderer.prototype._allocate = function (mesh) {\n\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._shaderSource);\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._uEdgeColor = program.getLocation(\"edgeColor\");\n this._aPosition = program.getAttribute(\"position\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\n this._uOffset = program.getLocation(\"offset\");\n\n if (scene.logarithmicDepthBufferEnabled ) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n};\n\nEmphasisEdgesRenderer.prototype._bindProgram = function (frameCtx) {\n\n const program = this._program;\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const camera = scene.camera;\n const project = camera.project;\n\n program.bind();\n\n frameCtx.useProgram++;\n\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled ) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n if (this._uGammaFactor) {\n gl.uniform1f(this._uGammaFactor, scene.gammaFactor);\n }\n};\n\n/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\n/**\n * @private\n */\nclass PickMeshShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex$3(mesh);\n this.fragment = buildFragment$3(mesh);\n }\n}\n\nfunction buildVertex$3(mesh) {\n const scene = mesh.scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const billboard = mesh._state.billboard;\n const stationary = mesh._state.stationary;\n const src = [];\n src.push(\"// Mesh picking vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"attribute vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n }\n src.push(\" vec4 worldPosition = modelMatrix2 * localPosition;\");\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\" vec4 viewPosition = viewMatrix2 * worldPosition;\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragment$3(mesh) {\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Mesh picking fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"uniform vec4 pickColor;\");\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"varying vec4 vWorldPosition;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = pickColor; \");\n src.push(\"}\");\n return src;\n}\n\n/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nconst tempVec3a$V = math.vec3();\n\n// No ID, because there is exactly one PickMeshRenderer per scene\n\n/**\n * @private\n */\nconst PickMeshRenderer = function (hash, mesh) {\n this._hash = hash;\n this._shaderSource = new PickMeshShaderSource(mesh);\n this._scene = mesh.scene;\n this._useCount = 0;\n this._allocate(mesh);\n};\n\nconst renderers$3 = {};\n\nPickMeshRenderer.get = function (mesh) {\n const hash = [\n mesh.scene.canvas.canvas.id,\n mesh.scene._sectionPlanesState.getHash(),\n mesh._geometry._state.hash,\n mesh._state.hash\n ].join(\";\");\n let renderer = renderers$3[hash];\n if (!renderer) {\n renderer = new PickMeshRenderer(hash, mesh);\n if (renderer.errors) {\n console.log(renderer.errors.join(\"\\n\"));\n return null;\n }\n renderers$3[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nPickMeshRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n if (this._program) {\n this._program.destroy();\n }\n delete renderers$3[this._hash];\n stats.memory.programs--;\n }\n};\n\nPickMeshRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nPickMeshRenderer.prototype.drawMesh = function (frameCtx, mesh) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const meshState = mesh._state;\n const materialState = mesh._material._state;\n const geometryState = mesh._geometry._state;\n const rtcCenter = mesh.rtcCenter;\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcCenter ? frameCtx.getRTCPickViewMatrix(meshState.rtcCenterHash, rtcCenter) : frameCtx.pickViewMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$V) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n }\n\n if (materialState.id !== this._lastMaterialId) {\n const backfaces = materialState.backfaces;\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n const frontface = materialState.frontface;\n if (frameCtx.frontface !== frontface) {\n if (frontface) {\n gl.frontFace(gl.CCW);\n } else {\n gl.frontFace(gl.CW);\n }\n frameCtx.frontface = frontface;\n }\n this._lastMaterialId = materialState.id;\n }\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n gl.uniformMatrix4fv(this._uModelMatrix, false, mesh.worldMatrix);\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, mesh._state.clippable);\n }\n gl.uniform3fv(this._uOffset, mesh._state.offset);\n\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n frameCtx.bindArray++;\n }\n if (geometryState.indicesBuf) {\n geometryState.indicesBuf.bind();\n frameCtx.bindArray++;\n }\n this._lastGeometryId = geometryState.id;\n }\n\n // Mesh-indexed color\n var pickID = mesh._state.pickID;\n const a = pickID >> 24 & 0xFF;\n const b = pickID >> 16 & 0xFF;\n const g = pickID >> 8 & 0xFF;\n const r = pickID & 0xFF;\n gl.uniform4f(this._uPickColor, r / 255, g / 255, b / 255, a / 255);\n\n if (geometryState.indicesBuf) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n frameCtx.drawElements++;\n } else if (geometryState.positions) {\n gl.drawArrays(gl.TRIANGLES, 0, geometryState.positions.numItems);\n }\n};\n\nPickMeshRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._shaderSource);\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n const clips = scene._sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uPickColor = program.getLocation(\"pickColor\");\n this._uOffset = program.getLocation(\"offset\");\n if (scene.logarithmicDepthBufferEnabled ) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._lastMaterialId = null;\n this._lastGeometryId = null;\n};\n\nPickMeshRenderer.prototype._bindProgram = function (frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n this._program.bind();\n frameCtx.useProgram++;\n if (scene.logarithmicDepthBufferEnabled ) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n this._lastMaterialId = null;\n this._lastGeometryId = null;\n};\n\n/**\n * @private\n */\n\nclass PickTriangleShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex$2(mesh);\n this.fragment = buildFragment$2(mesh);\n }\n}\n\nfunction buildVertex$2(mesh) {\n const scene = mesh.scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n mesh._state.billboard;\n mesh._state.stationary;\n const src = [];\n src.push(\"// Surface picking vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform vec3 offset;\");\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"varying vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n src.push(\"varying vec4 vColor;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n src.push(\" vec4 worldPosition = modelMatrix * localPosition; \");\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition;\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n }\n src.push(\" vColor = color;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragment$2(mesh) {\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Surface picking fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n src.push(\"varying vec4 vColor;\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"varying vec4 vWorldPosition;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vColor;\");\n src.push(\"}\");\n return src;\n}\n\n/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nconst tempVec3a$U = math.vec3();\n\n/**\n * @private\n */\nconst PickTriangleRenderer = function (hash, mesh) {\n this._hash = hash;\n this._scene = mesh.scene;\n this._useCount = 0;\n this._shaderSource = new PickTriangleShaderSource(mesh);\n this._allocate(mesh);\n};\n\nconst renderers$2 = {};\n\nPickTriangleRenderer.get = function (mesh) {\n const hash = [\n mesh.scene.canvas.canvas.id,\n mesh.scene._sectionPlanesState.getHash(),\n mesh._geometry._state.compressGeometry ? \"cp\" : \"\",\n mesh._state.hash\n ].join(\";\");\n let renderer = renderers$2[hash];\n if (!renderer) {\n renderer = new PickTriangleRenderer(hash, mesh);\n if (renderer.errors) {\n console.log(renderer.errors.join(\"\\n\"));\n return null;\n }\n renderers$2[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nPickTriangleRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n if (this._program) {\n this._program.destroy();\n }\n delete renderers$2[this._hash];\n stats.memory.programs--;\n }\n};\n\nPickTriangleRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nPickTriangleRenderer.prototype.drawMesh = function (frameCtx, mesh) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const meshState = mesh._state;\n const materialState = mesh._material._state;\n const geometry = mesh._geometry;\n const geometryState = mesh._geometry._state;\n const rtcCenter = mesh.rtcCenter;\n const backfaces = materialState.backfaces;\n const frontface = materialState.frontface;\n const project = scene.camera.project;\n const positionsBuf = geometry._getPickTrianglePositions();\n const pickColorsBuf = geometry._getPickTriangleColors();\n\n this._program.bind();\n\n frameCtx.useProgram++;\n\n if (scene.logarithmicDepthBufferEnabled ) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcCenter ? frameCtx.getRTCPickViewMatrix(meshState.rtcCenterHash, rtcCenter) : frameCtx.pickViewMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$U) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n gl.uniform1f(this._uZFar, scene.camera.project.far);\n }\n\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n if (frameCtx.frontface !== frontface) {\n if (frontface) {\n gl.frontFace(gl.CCW);\n } else {\n gl.frontFace(gl.CW);\n }\n frameCtx.frontface = frontface;\n }\n\n gl.uniformMatrix4fv(this._uModelMatrix, false, mesh.worldMatrix);\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, mesh._state.clippable);\n }\n gl.uniform3fv(this._uOffset, mesh._state.offset);\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n this._aPosition.bindArrayBuffer(positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n } else {\n this._aPosition.bindArrayBuffer(positionsBuf);\n }\n pickColorsBuf.bind();\n gl.enableVertexAttribArray(this._aColor.location);\n gl.vertexAttribPointer(this._aColor.location, pickColorsBuf.itemSize, pickColorsBuf.itemType, true, 0, 0); // Normalize\n gl.drawArrays(geometryState.primitive, 0, positionsBuf.numItems / 3);\n};\n\nPickTriangleRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._shaderSource);\n this._useCount = 0;\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n for (let i = 0, len = sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._aColor = program.getAttribute(\"color\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uOffset = program.getLocation(\"offset\");\n if (scene.logarithmicDepthBufferEnabled ) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n};\n\n/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\n/**\n * @private\n */\nclass OcclusionShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex$1(mesh);\n this.fragment = buildFragment$1(mesh);\n }\n}\n\nfunction buildVertex$1(mesh) {\n const scene = mesh.scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const billboard = mesh._state.billboard;\n const stationary = mesh._state.stationary;\n const src = [];\n src.push(\"// Mesh occlusion vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"attribute vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"void billboard(inout mat4 mat) {\");\n src.push(\" mat[0][0] = 1.0;\");\n src.push(\" mat[0][1] = 0.0;\");\n src.push(\" mat[0][2] = 0.0;\");\n if (billboard === \"spherical\") {\n src.push(\" mat[1][0] = 0.0;\");\n src.push(\" mat[1][1] = 1.0;\");\n src.push(\" mat[1][2] = 0.0;\");\n }\n src.push(\" mat[2][0] = 0.0;\");\n src.push(\" mat[2][1] = 0.0;\");\n src.push(\" mat[2][2] =1.0;\");\n src.push(\"}\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n src.push(\"mat4 viewMatrix2 = viewMatrix;\");\n src.push(\"mat4 modelMatrix2 = modelMatrix;\");\n if (stationary) {\n src.push(\"viewMatrix2[3][0] = viewMatrix2[3][1] = viewMatrix2[3][2] = 0.0;\");\n }\n if (billboard === \"spherical\" || billboard === \"cylindrical\") {\n src.push(\"mat4 modelViewMatrix = viewMatrix2 * modelMatrix2;\");\n src.push(\"billboard(modelMatrix2);\");\n src.push(\"billboard(viewMatrix2);\");\n }\n src.push(\" vec4 worldPosition = modelMatrix2 * localPosition;\");\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\" vec4 viewPosition = viewMatrix2 * worldPosition;\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragment$1(mesh) {\n\n const scene = mesh.scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Mesh occlusion fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"varying vec4 vWorldPosition;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n\n src.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n\n return src;\n}\n\n/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\nconst tempVec3a$T = math.vec3();\n\n// No ID, because there is exactly one PickMeshRenderer per scene\n\n/**\n * @private\n */\nconst OcclusionRenderer = function (hash, mesh) {\n this._hash = hash;\n this._shaderSource = new OcclusionShaderSource(mesh);\n this._scene = mesh.scene;\n this._useCount = 0;\n this._allocate(mesh);\n};\n\nconst renderers$1 = {};\n\nOcclusionRenderer.get = function (mesh) {\n const hash = [\n mesh.scene.canvas.canvas.id,\n mesh.scene._sectionPlanesState.getHash(),\n mesh._geometry._state.hash,\n mesh._state.hash\n ].join(\";\");\n let renderer = renderers$1[hash];\n if (!renderer) {\n renderer = new OcclusionRenderer(hash, mesh);\n if (renderer.errors) {\n console.log(renderer.errors.join(\"\\n\"));\n return null;\n }\n renderers$1[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nOcclusionRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n if (this._program) {\n this._program.destroy();\n }\n delete renderers$1[this._hash];\n stats.memory.programs--;\n }\n};\n\nOcclusionRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nOcclusionRenderer.prototype.drawMesh = function (frameCtx, mesh) {\n\n if (!this._program) {\n this._allocate(mesh);\n }\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const materialState = mesh._material._state;\n const meshState = mesh._state;\n const geometryState = mesh._geometry._state;\n const rtcCenter = mesh.rtcCenter;\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n if (materialState.id !== this._lastMaterialId) {\n const backfaces = materialState.backfaces;\n if (frameCtx.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n const frontface = materialState.frontface;\n if (frameCtx.frontface !== frontface) {\n if (frontface) {\n gl.frontFace(gl.CCW);\n } else {\n gl.frontFace(gl.CW);\n }\n frameCtx.frontface = frontface;\n }\n this._lastMaterialId = materialState.id;\n }\n\n const camera = scene.camera;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcCenter ? frameCtx.getRTCViewMatrix(meshState.rtcCenterHash, rtcCenter) : camera.viewMatrix);\n\n if (meshState.clippable) {\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const renderFlags = mesh.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcCenter ? getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$T) : sectionPlane.pos);\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, camera._project._state.matrix);\n gl.uniformMatrix4fv(this._uModelMatrix, gl.FALSE, mesh.worldMatrix);\n\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, mesh._state.clippable);\n }\n\n gl.uniform3fv(this._uOffset, mesh._state.offset);\n\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n frameCtx.bindArray++;\n }\n if (geometryState.indicesBuf) {\n geometryState.indicesBuf.bind();\n frameCtx.bindArray++;\n }\n this._lastGeometryId = geometryState.id;\n }\n if (geometryState.indicesBuf) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n frameCtx.drawElements++;\n } else if (geometryState.positions) {\n gl.drawArrays(gl.TRIANGLES, 0, geometryState.positions.numItems);\n }\n};\n\nOcclusionRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._shaderSource);\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n const clips = scene._sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uOffset = program.getLocation(\"offset\");\n if (scene.logarithmicDepthBufferEnabled ) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n};\n\nOcclusionRenderer.prototype._bindProgram = function (frameCtx) {\n const scene = this._scene;\n const project = scene.camera.project;\n const gl = scene.canvas.gl;\n this._program.bind();\n frameCtx.useProgram++;\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n if (scene.logarithmicDepthBufferEnabled ) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n};\n\n/**\n * @private\n */\nclass ShadowShaderSource {\n constructor(mesh) {\n this.vertex = buildVertex(mesh);\n this.fragment = buildFragment(mesh);\n }\n}\n\nfunction buildVertex(mesh) {\n const scene = mesh.scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const quantizedGeometry = !!mesh._geometry._state.compressGeometry;\n const src = [];\n src.push(\"// Mesh shadow vertex shader\");\n src.push(\"attribute vec3 position;\");\n src.push(\"uniform mat4 modelMatrix;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n src.push(\"uniform vec3 offset;\");\n if (quantizedGeometry) {\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n }\n src.push(\"void main(void) {\");\n src.push(\"vec4 localPosition = vec4(position, 1.0); \");\n src.push(\"vec4 worldPosition;\");\n if (quantizedGeometry) {\n src.push(\"localPosition = positionsDecodeMatrix * localPosition;\");\n }\n src.push(\"worldPosition = modelMatrix * localPosition;\");\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n src.push(\"vec4 viewPosition = shadowViewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n }\n src.push(\" gl_Position = shadowProjMatrix * viewPosition;\");\n src.push(\"}\");\n return src;\n}\n\nfunction buildFragment(mesh) {\n const scene = mesh.scene;\n scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Mesh shadow fragment shader\");\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (clipping) {\n src.push(\"uniform bool clippable;\");\n src.push(\"varying vec4 vWorldPosition;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n src.push(\"vec4 encodeFloat( const in float depth ) {\");\n src.push(\" const vec4 bitShift = vec4(256 * 256 * 256, 256 * 256, 256, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);\");\n src.push(\" vec4 comp = fract(depth * bitShift);\");\n src.push(\" comp -= comp.xxyz * bitMask;\");\n src.push(\" return comp;\");\n src.push(\"}\");\n\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\"if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\"gl_FragColor = encodeFloat(gl_FragCoord.z);\");\n src.push(\"}\");\n return src;\n}\n\n/**\n * @private\n */\nconst ShadowRenderer = function (hash, mesh) {\n this._hash = hash;\n this._shaderSource = new ShadowShaderSource(mesh);\n this._scene = mesh.scene;\n this._useCount = 0;\n this._allocate(mesh);\n};\n\nconst renderers = {};\n\nShadowRenderer.get = function (mesh) {\n const scene = mesh.scene;\n const hash = [scene.canvas.canvas.id, scene._sectionPlanesState.getHash(), mesh._geometry._state.hash, mesh._state.hash].join(\";\");\n let renderer = renderers[hash];\n if (!renderer) {\n renderer = new ShadowRenderer(hash, mesh);\n if (renderer.errors) {\n console.log(renderer.errors.join(\"\\n\"));\n return null;\n }\n renderers[hash] = renderer;\n stats.memory.programs++;\n }\n renderer._useCount++;\n return renderer;\n};\n\nShadowRenderer.prototype.put = function () {\n if (--this._useCount === 0) {\n if (this._program) {\n this._program.destroy();\n }\n delete renderers[this._hash];\n stats.memory.programs--;\n }\n};\n\nShadowRenderer.prototype.webglContextRestored = function () {\n this._program = null;\n};\n\nShadowRenderer.prototype.drawMesh = function (frame, mesh) {\n if (!this._program) {\n this._allocate(mesh);\n }\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const materialState = mesh._material._state;\n const geometryState = mesh._geometry._state;\n if (frame.lastProgramId !== this._program.id) {\n frame.lastProgramId = this._program.id;\n this._bindProgram(frame);\n }\n if (materialState.id !== this._lastMaterialId) {\n const backfaces = materialState.backfaces;\n if (frame.backfaces !== backfaces) {\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frame.backfaces = backfaces;\n }\n const frontface = materialState.frontface;\n if (frame.frontface !== frontface) {\n if (frontface) {\n gl.frontFace(gl.CCW);\n } else {\n gl.frontFace(gl.CW);\n }\n frame.frontface = frontface;\n }\n if (frame.lineWidth !== materialState.lineWidth) {\n gl.lineWidth(materialState.lineWidth);\n frame.lineWidth = materialState.lineWidth;\n }\n if (this._uPointSize) {\n gl.uniform1i(this._uPointSize, materialState.pointSize);\n }\n this._lastMaterialId = materialState.id;\n }\n gl.uniformMatrix4fv(this._uModelMatrix, gl.FALSE, mesh.worldMatrix);\n if (geometryState.combineGeometry) {\n const vertexBufs = mesh.vertexBufs;\n if (vertexBufs.id !== this._lastVertexBufsId) {\n if (vertexBufs.positionsBuf && this._aPosition) {\n this._aPosition.bindArrayBuffer(vertexBufs.positionsBuf, vertexBufs.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n frame.bindArray++;\n }\n this._lastVertexBufsId = vertexBufs.id;\n }\n }\n if (this._uClippable) {\n gl.uniform1i(this._uClippable, mesh._state.clippable);\n }\n gl.uniform3fv(this._uOffset, mesh._state.offset);\n if (geometryState.id !== this._lastGeometryId) {\n if (this._uPositionsDecodeMatrix) {\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, geometryState.positionsDecodeMatrix);\n }\n if (geometryState.combineGeometry) { // VBOs were bound by the preceding VertexBufs chunk\n if (geometryState.indicesBufCombined) {\n geometryState.indicesBufCombined.bind();\n frame.bindArray++;\n }\n } else {\n if (this._aPosition) {\n this._aPosition.bindArrayBuffer(geometryState.positionsBuf, geometryState.compressGeometry ? gl.UNSIGNED_SHORT : gl.FLOAT);\n frame.bindArray++;\n }\n if (geometryState.indicesBuf) {\n geometryState.indicesBuf.bind();\n frame.bindArray++;\n }\n }\n this._lastGeometryId = geometryState.id;\n }\n if (geometryState.combineGeometry) {\n if (geometryState.indicesBufCombined) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBufCombined.numItems, geometryState.indicesBufCombined.itemType, 0);\n frame.drawElements++;\n }\n } else {\n if (geometryState.indicesBuf) {\n gl.drawElements(geometryState.primitive, geometryState.indicesBuf.numItems, geometryState.indicesBuf.itemType, 0);\n frame.drawElements++;\n } else if (geometryState.positions) {\n gl.drawArrays(gl.TRIANGLES, 0, geometryState.positions.numItems);\n frame.drawArrays++;\n }\n }\n};\n\nShadowRenderer.prototype._allocate = function (mesh) {\n const scene = mesh.scene;\n const gl = scene.canvas.gl;\n this._program = new Program(gl, this._shaderSource);\n this._scene = scene;\n this._useCount = 0;\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uModelMatrix = program.getLocation(\"modelMatrix\");\n this._uShadowViewMatrix = program.getLocation(\"shadowViewMatrix\");\n this._uShadowProjMatrix = program.getLocation(\"shadowProjMatrix\");\n this._uSectionPlanes = {};\n const clips = scene._sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._uClippable = program.getLocation(\"clippable\");\n this._uOffset = program.getLocation(\"offset\");\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n};\n\nShadowRenderer.prototype._bindProgram = function (frame) {\n if (!this._program) {\n this._allocate(mesh);\n }\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n this._program.bind();\n frame.useProgram++;\n gl.uniformMatrix4fv(this._uShadowViewMatrix, false, frame.shadowViewMatrix);\n gl.uniformMatrix4fv(this._uShadowProjMatrix, false, frame.shadowProjMatrix);\n this._lastMaterialId = null;\n this._lastVertexBufsId = null;\n this._lastGeometryId = null;\n if (sectionPlanesState.sectionPlanes.length > 0) {\n let sectionPlaneUniforms;\n let uSectionPlaneActive;\n let sectionPlane;\n let uSectionPlanePos;\n let uSectionPlaneDir;\n for (let i = 0, len = this._uSectionPlanes.length; i < len; i++) {\n sectionPlaneUniforms = this._uSectionPlanes[i];\n uSectionPlaneActive = sectionPlaneUniforms.active;\n sectionPlane = sectionPlanesState.sectionPlanes[i];\n if (uSectionPlaneActive) {\n gl.uniform1i(uSectionPlaneActive, sectionPlane.active);\n }\n uSectionPlanePos = sectionPlaneUniforms.pos;\n if (uSectionPlanePos) {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n uSectionPlaneDir = sectionPlaneUniforms.dir;\n if (uSectionPlaneDir) {\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n};\n\n/**\n * Indicates what rendering needs to be done for the layers within a {@link Drawable}.\n *\n * Each Drawable has a RenderFlags in {@link Drawable#renderFlags}.\n *\n * Before rendering each frame, {@link Renderer} will call {@link Drawable#rebuildRenderFlags} on each {@link Drawable}.\n *\n * Then, when rendering a frame, Renderer will apply rendering passes to each Drawable according on what flags are set in {@link Drawable#renderFlags}.\n *\n * @private\n */\nclass RenderFlags {\n\n /**\n * @private\n */\n constructor() {\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate which layers are visible within the {@link Drawable}.\n *\n * This is a list of IDs of visible layers within the {@link Drawable}. The IDs will be whatever the\n * {@link Drawable} uses to identify its layers, usually integers.\n *\n * @property visibleLayers\n * @type {Number[]}\n */\n this.visibleLayers = [];\n\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate which {@link SectionPlane}s are active within each layer of the {@link Drawable}.\n *\n * Layout is as follows:\n *\n * ````[\n * false, false, true, // Layer 0, SectionPlanes 0, 1, 2\n * false, true, true, // Layer 1, SectionPlanes 0, 1, 2\n * true, false, true // Layer 2, SectionPlanes 0, 1, 2\n * ]````\n *\n * @property sectionPlanesActivePerLayer\n * @type {Boolean[]}\n */\n this.sectionPlanesActivePerLayer = [];\n\n this.reset();\n }\n\n /**\n * @private\n */\n reset() {\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate whether the {@link Drawable} is culled.\n * \n * When this is ````false````, then all of the other properties on ````RenderFlags```` will remain at their default values.\n * \n * @property culled\n * @type {Boolean}\n */\n this.culled = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate whether the {@link Drawable} is sliced by any {@link SectionPlane}s.\n *\n * @property sectioned\n * @type {Boolean}\n */\n this.sectioned = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the number of layers within the {@link Drawable}.\n *\n * @property numLayers\n * @type {Number}\n */\n this.numLayers = 0;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the number of visible layers within the {@link Drawable}.\n *\n * @property numVisibleLayers\n * @type {Number}\n */\n this.numVisibleLayers = 0;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs {@link Drawable#drawColorOpaque}.\n * @property colorOpaque\n * @type {boolean}\n */\n this.colorOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs {@link Drawable#drawColorTransparent}.\n * @property colorTransparent\n * @type {boolean}\n */\n this.colorTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs {@link Drawable#drawEdgesColorOpaque}.\n * @property edgesOpaque\n * @type {boolean}\n */\n this.edgesOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs {@link Drawable#drawEdgesColorTransparent}.\n * @property edgesTransparent\n * @type {boolean}\n */\n this.edgesTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawSilhouetteXRayed}.\n * @property xrayedSilhouetteOpaque\n * @type {boolean}\n */\n this.xrayedSilhouetteOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawEdgesXRayed}.\n * @property xrayedEdgesOpaque\n * @type {boolean}\n */\n this.xrayedEdgesOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawSilhouetteXRayed}.\n * @property xrayedSilhouetteTransparent\n * @type {boolean}\n */\n this.xrayedSilhouetteTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawEdgesXRayed}.\n * @property xrayedEdgesTransparent\n * @type {boolean}\n */\n this.xrayedEdgesTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawSilhouetteHighlighted}.\n * @property highlightedSilhouetteOpaque\n * @type {boolean}\n */\n this.highlightedSilhouetteOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawEdgesHighlighted}.\n * @property highlightedEdgesOpaque\n * @type {boolean}\n */\n this.highlightedEdgesOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawSilhouetteHighlighted}.\n * @property highlightedSilhouetteTransparent\n * @type {boolean}\n */\n this.highlightedSilhouetteTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawEdgesHighlighted}.\n * @property highlightedEdgesTransparent\n * @type {boolean}\n */\n this.highlightedEdgesTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawSilhouetteSelected}.\n * @property selectedSilhouetteOpaque\n * @type {boolean}\n */\n this.selectedSilhouetteOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs an opaque {@link Drawable#drawEdgesSelected}.\n * @property selectedEdgesOpaque\n * @type {boolean}\n */\n this.selectedEdgesOpaque = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawSilhouetteSelected}.\n * @property selectedSilhouetteTransparent\n * @type {boolean}\n */\n this.selectedSilhouetteTransparent = false;\n\n /**\n * Set by {@link Drawable#rebuildRenderFlags} to indicate the {@link Drawable} needs a transparent {@link Drawable#drawEdgesSelected}.\n * @property selectedEdgesTransparent\n * @type {boolean}\n */\n this.selectedEdgesTransparent = false;\n }\n}\n\n/**\n Fired when this Mesh is picked via a call to {@link Scene/pick:method\"}}Scene#pick(){{/crossLink}}.\n\n The event parameters will be the hit result returned by the {@link Scene/pick:method\"}}Scene#pick(){{/crossLink}} method.\n @event picked\n */\n\nconst obb = math.OBB3();\nconst angleAxis$1 = math.vec4();\nconst q1$1 = math.vec4();\nconst q2$1 = math.vec4();\nconst xAxis$1 = math.vec3([1, 0, 0]);\nconst yAxis$1 = math.vec3([0, 1, 0]);\nconst zAxis$1 = math.vec3([0, 0, 1]);\n\nconst veca$1 = math.vec3(3);\nconst vecb$1 = math.vec3(3);\n\nconst identityMat$1 = math.identityMat4();\n\n/**\n * @desc An {@link Entity} that is a drawable element, with a {@link Geometry} and a {@link Material}, that can be\n * connected into a scene graph using {@link Node}s.\n *\n * ## Usage\n *\n * The example below is the same as the one given for {@link Node}, since the two classes work together. In this example,\n * we'll create a scene graph in which a root {@link Node} represents a group and the Meshes are leaves.\n *\n * Since {@link Node} implements {@link Entity}, we can designate the root {@link Node} as a model, causing it to be registered by its\n * ID in {@link Scene#models}.\n *\n * Since Mesh also implements {@link Entity}, we can designate the leaf Meshes as objects, causing them to\n * be registered by their IDs in {@link Scene#objects}.\n *\n * We can then find those {@link Entity} types in {@link Scene#models} and {@link Scene#objects}.\n *\n * We can also update properties of our object-Meshes via calls to {@link Scene#setObjectsHighlighted} etc.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneGraph)]\n *\n * ````javascript\n * import {Viewer, Mesh, Node, PhongMaterial, buildBoxGeometry, ReadableGeometry} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * const boxGeometry = new ReadableGeometry(viewer.scene, buildBoxGeometry({\n * xSize: 1,\n * ySize: 1,\n * zSize: 1\n * }));\n *\n * new Node(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <---------- Node represents a model, so is registered by ID in viewer.scene.models\n * rotation: [0, 50, 0],\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n *\n * children: [\n *\n * new Mesh(viewer.scene, { // Red table leg\n * id: \"redLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1, 0.3, 0.3]\n * }),\n * geometry: boxGeometry\n * }),\n *\n * new Mesh(viewer.scene, { // Green table leg\n * id: \"greenLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.3, 1.0, 0.3]\n * }),\n * geometry: boxGeometry\n * }),\n *\n * new Mesh(viewer.scene, {// Blue table leg\n * id: \"blueLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.3, 0.3, 1.0]\n * }),\n * geometry: boxGeometry\n * }),\n *\n * new Mesh(viewer.scene, { // Yellow table leg\n * id: \"yellowLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1.0, 1.0, 0.0]\n * }),\n * geometry: boxGeometry\n * }),\n *\n * new Mesh(viewer.scene, { // Purple table top\n * id: \"tableTop\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1.0, 0.3, 1.0]\n * }),\n * geometry: boxGeometry\n * })\n * ]\n * });\n *\n * // Find Nodes and Meshes by their IDs\n *\n * var table = viewer.scene.models[\"table\"]; // Since table Node has isModel == true\n *\n * var redLeg = viewer.scene.objects[\"redLeg\"]; // Since the Meshes have isObject == true\n * var greenLeg = viewer.scene.objects[\"greenLeg\"];\n * var blueLeg = viewer.scene.objects[\"blueLeg\"];\n *\n * // Highlight one of the table leg Meshes\n *\n * viewer.scene.setObjectsHighlighted([\"redLeg\"], true); // Since the Meshes have isObject == true\n *\n * // Periodically update transforms on our Nodes and Meshes\n *\n * viewer.scene.on(\"tick\", function () {\n *\n * // Rotate legs\n * redLeg.rotateY(0.5);\n * greenLeg.rotateY(0.5);\n * blueLeg.rotateY(0.5);\n *\n * // Rotate table\n * table.rotateY(0.5);\n * table.rotateX(0.3);\n * });\n * ````\n *\n * ## Metadata\n *\n * As mentioned, we can also associate {@link MetaModel}s and {@link MetaObject}s with our {@link Node}s and Meshes,\n * within a {@link MetaScene}. See {@link MetaScene} for an example.\n *\n * @implements {Entity}\n * @implements {Drawable}\n */\nclass Mesh extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Mesh\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {String} [cfg.originalSystemId] ID of the corresponding object within the originating system, if any.\n * @param {Boolean} [cfg.isModel] Specify ````true```` if this Mesh represents a model, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.\n * @param {Boolean} [cfg.isObject] Specify ````true```` if this Mesh represents an object, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#objects} and may also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.\n * @param {Node} [cfg.parent] The parent Node.\n * @param {Number[]} [cfg.rtcCenter] Relative-to-center (RTC) coordinate system center for this Mesh. When this is given, then ````matrix````, ````position```` and ````geometry```` are all assumed to be relative to this center.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position.\n * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Local modelling transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Number[]} [cfg.offset=[0,0,0]] World-space 3D translation offset. Translates the Mesh in World space, after modelling transforms.\n * @param {Boolean} [cfg.occluder=true] Indicates if the Mesh is able to occlude {@link Marker}s.\n * @param {Boolean} [cfg.visible=true] Indicates if the Mesh is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the Mesh is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the Mesh is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the Mesh is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the Mesh is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the Mesh initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the Mesh initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the Mesh is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the Mesh is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the Mesh is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the Mesh's edges are initially emphasized.\n * @param {Boolean} [cfg.background=false] Indicates if the Mesh should act as background, e.g., it can be used for a skybox.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] Mesh's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] Mesh's initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {String} [cfg.billboard=\"none\"] Mesh's billboarding behaviour. Options are \"none\" for no billboarding, \"spherical\" to always directly face {@link Camera.eye}, rotating both vertically and horizontally, or \"cylindrical\" to face the {@link Camera#eye} while rotating only about its vertically axis (use that mode for things like trees on a landscape).\n * @param {Geometry} [cfg.geometry] {@link Geometry} to define the shape of this Mesh. Inherits {@link Scene#geometry} by default.\n * @param {Material} [cfg.material] {@link Material} to define the normal rendered appearance for this Mesh. Inherits {@link Scene#material} by default.\n * @param {EmphasisMaterial} [cfg.xrayMaterial] {@link EmphasisMaterial} to define the xrayed appearance for this Mesh. Inherits {@link Scene#xrayMaterial} by default.\n * @param {EmphasisMaterial} [cfg.highlightMaterial] {@link EmphasisMaterial} to define the xrayed appearance for this Mesh. Inherits {@link Scene#highlightMaterial} by default.\n * @param {EmphasisMaterial} [cfg.selectedMaterial] {@link EmphasisMaterial} to define the selected appearance for this Mesh. Inherits {@link Scene#selectedMaterial} by default.\n * @param {EmphasisMaterial} [cfg.edgeMaterial] {@link EdgeMaterial} to define the appearance of enhanced edges for this Mesh. Inherits {@link Scene#edgeMaterial} by default.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n /**\n * ID of the corresponding object within the originating system, if any.\n *\n * @type {String}\n * @abstract\n */\n this.originalSystemId = (cfg.originalSystemId || this.id);\n\n /** @private **/\n this.renderFlags = new RenderFlags();\n\n this._state = new RenderState({ // NOTE: Renderer gets modeling and normal matrices from Mesh#matrix and Mesh.#normalWorldMatrix\n visible: true,\n culled: false,\n pickable: null,\n clippable: null,\n collidable: null,\n occluder: (cfg.occluder !== false),\n castsShadow: null,\n receivesShadow: null,\n xrayed: false,\n highlighted: false,\n selected: false,\n edges: false,\n stationary: !!cfg.stationary,\n background: !!cfg.background,\n billboard: this._checkBillboard(cfg.billboard),\n layer: null,\n colorize: null,\n pickID: this.scene._renderer.getPickID(this),\n drawHash: \"\",\n pickHash: \"\",\n offset: math.vec3(),\n rtcCenter: null,\n rtcCenterHash: null\n });\n\n this._drawRenderer = null;\n this._shadowRenderer = null;\n this._emphasisFillRenderer = null;\n this._emphasisEdgesRenderer = null;\n this._pickMeshRenderer = null;\n this._pickTriangleRenderer = null;\n this._occlusionRenderer = null;\n\n this._geometry = cfg.geometry ? this._checkComponent2([\"ReadableGeometry\", \"VBOGeometry\"], cfg.geometry) : this.scene.geometry;\n this._material = cfg.material ? this._checkComponent2([\"PhongMaterial\", \"MetallicMaterial\", \"SpecularMaterial\", \"LambertMaterial\"], cfg.material) : this.scene.material;\n this._xrayMaterial = cfg.xrayMaterial ? this._checkComponent(\"EmphasisMaterial\", cfg.xrayMaterial) : this.scene.xrayMaterial;\n this._highlightMaterial = cfg.highlightMaterial ? this._checkComponent(\"EmphasisMaterial\", cfg.highlightMaterial) : this.scene.highlightMaterial;\n this._selectedMaterial = cfg.selectedMaterial ? this._checkComponent(\"EmphasisMaterial\", cfg.selectedMaterial) : this.scene.selectedMaterial;\n this._edgeMaterial = cfg.edgeMaterial ? this._checkComponent(\"EdgeMaterial\", cfg.edgeMaterial) : this.scene.edgeMaterial;\n\n this._parentNode = null;\n\n this._aabb = null;\n this._aabbDirty = true;\n\n this._numTriangles = (this._geometry ? this._geometry.numTriangles : 0);\n\n this.scene._aabbDirty = true;\n\n this._scale = math.vec3();\n this._quaternion = math.identityQuaternion();\n this._rotation = math.vec3();\n this._position = math.vec3();\n\n this._worldMatrix = math.identityMat4();\n this._worldNormalMatrix = math.identityMat4();\n\n this._localMatrixDirty = true;\n this._worldMatrixDirty = true;\n this._worldNormalMatrixDirty = true;\n\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n this._state.rtcCenterHash = cfg.rtcCenter.join();\n }\n\n if (cfg.matrix) {\n this.matrix = cfg.matrix;\n } else {\n this.scale = cfg.scale;\n this.position = cfg.position;\n if (cfg.quaternion) ; else {\n this.rotation = cfg.rotation;\n }\n }\n\n this._isObject = cfg.isObject;\n if (this._isObject) {\n this.scene._registerObject(this);\n }\n\n this._isModel = cfg.isModel;\n if (this._isModel) {\n this.scene._registerModel(this);\n }\n\n this.visible = cfg.visible;\n this.culled = cfg.culled;\n this.pickable = cfg.pickable;\n this.clippable = cfg.clippable;\n this.collidable = cfg.collidable;\n this.castsShadow = cfg.castsShadow;\n this.receivesShadow = cfg.receivesShadow;\n this.xrayed = cfg.xrayed;\n this.highlighted = cfg.highlighted;\n this.selected = cfg.selected;\n this.edges = cfg.edges;\n this.layer = cfg.layer;\n this.colorize = cfg.colorize;\n this.opacity = cfg.opacity;\n this.offset = cfg.offset;\n\n if (cfg.parentId) {\n const parentNode = this.scene.components[cfg.parentId];\n if (!parentNode) {\n this.error(\"Parent not found: '\" + cfg.parentId + \"'\");\n } else if (!parentNode.isNode) {\n this.error(\"Parent is not a Node: '\" + cfg.parentId + \"'\");\n } else {\n parentNode.addChild(this);\n }\n this._parentNode = parentNode;\n } else if (cfg.parent) {\n if (!cfg.parent.isNode) {\n this.error(\"Parent is not a Node\");\n }\n cfg.parent.addChild(this);\n this._parentNode = cfg.parent;\n }\n\n this.compile();\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Mesh members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that this Component is a Mesh.\n * @final\n * @type {Boolean}\n */\n get isMesh() {\n return true;\n }\n\n /**\n * The parent Node.\n *\n * The parent Node may also be set by passing the Mesh to the parent's {@link Node#addChild} method.\n *\n * @type {Node}\n */\n get parent() {\n return this._parentNode;\n }\n\n _checkBillboard(value) {\n value = value || \"none\";\n if (value !== \"spherical\" && value !== \"cylindrical\" && value !== \"none\") {\n this.error(\"Unsupported value for 'billboard': \" + value + \" - accepted values are \" +\n \"'spherical', 'cylindrical' and 'none' - defaulting to 'none'.\");\n value = \"none\";\n }\n return value;\n }\n\n /**\n * Called by xeokit to compile shaders for this Mesh.\n * @private\n */\n compile() {\n const drawHash = this._makeDrawHash();\n if (this._state.drawHash !== drawHash) {\n this._state.drawHash = drawHash;\n this._putDrawRenderers();\n this._drawRenderer = DrawRenderer.get(this);\n // this._shadowRenderer = ShadowRenderer.get(this);\n this._emphasisFillRenderer = EmphasisFillRenderer.get(this);\n this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this);\n }\n const pickHash = this._makePickHash();\n if (this._state.pickHash !== pickHash) {\n this._state.pickHash = pickHash;\n this._putPickRenderers();\n this._pickMeshRenderer = PickMeshRenderer.get(this);\n }\n if (this._state.occluder) {\n const occlusionHash = this._makeOcclusionHash();\n if (this._state.occlusionHash !== occlusionHash) {\n this._state.occlusionHash = occlusionHash;\n this._putOcclusionRenderer();\n this._occlusionRenderer = OcclusionRenderer.get(this);\n }\n }\n }\n\n _setLocalMatrixDirty() {\n this._localMatrixDirty = true;\n this._setWorldMatrixDirty();\n }\n\n _setWorldMatrixDirty() {\n this._worldMatrixDirty = true;\n this._worldNormalMatrixDirty = true;\n }\n\n _buildWorldMatrix() {\n const localMatrix = this.matrix;\n if (!this._parentNode) {\n for (let i = 0, len = localMatrix.length; i < len; i++) {\n this._worldMatrix[i] = localMatrix[i];\n }\n } else {\n math.mulMat4(this._parentNode.worldMatrix, localMatrix, this._worldMatrix);\n }\n this._worldMatrixDirty = false;\n }\n\n _buildWorldNormalMatrix() {\n if (this._worldMatrixDirty) {\n this._buildWorldMatrix();\n }\n if (!this._worldNormalMatrix) {\n this._worldNormalMatrix = math.mat4();\n }\n // Note: order of inverse and transpose doesn't matter\n math.transposeMat4(this._worldMatrix, this._worldNormalMatrix);\n math.inverseMat4(this._worldNormalMatrix);\n this._worldNormalMatrixDirty = false;\n }\n\n _setAABBDirty() {\n if (this.collidable) {\n for (let node = this; node; node = node._parentNode) {\n node._aabbDirty = true;\n }\n }\n }\n\n _updateAABB() {\n this.scene._aabbDirty = true;\n if (!this._aabb) {\n this._aabb = math.AABB3();\n }\n this._buildAABB(this.worldMatrix, this._aabb); // Mesh or PerformanceModel\n this._aabbDirty = false;\n }\n\n _webglContextRestored() {\n if (this._drawRenderer) {\n this._drawRenderer.webglContextRestored();\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.webglContextRestored();\n }\n if (this._emphasisFillRenderer) {\n this._emphasisFillRenderer.webglContextRestored();\n }\n if (this._emphasisEdgesRenderer) {\n this._emphasisEdgesRenderer.webglContextRestored();\n }\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.webglContextRestored();\n }\n if (this._pickTriangleRenderer) {\n this._pickMeshRenderer.webglContextRestored();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.webglContextRestored();\n }\n }\n\n _makeDrawHash() {\n const scene = this.scene;\n const hash = [\n scene.canvas.canvas.id,\n (scene.gammaInput ? \"gi;\" : \";\") + (scene.gammaOutput ? \"go\" : \"\"),\n scene._lightsState.getHash(),\n scene._sectionPlanesState.getHash()\n ];\n const state = this._state;\n if (state.stationary) {\n hash.push(\"/s\");\n }\n if (state.billboard === \"none\") {\n hash.push(\"/n\");\n } else if (state.billboard === \"spherical\") {\n hash.push(\"/s\");\n } else if (state.billboard === \"cylindrical\") {\n hash.push(\"/c\");\n }\n if (state.receivesShadow) {\n hash.push(\"/rs\");\n }\n hash.push(\";\");\n return hash.join(\"\");\n }\n\n _makePickHash() {\n const scene = this.scene;\n const hash = [\n scene.canvas.canvas.id,\n scene._sectionPlanesState.getHash()\n ];\n const state = this._state;\n if (state.stationary) {\n hash.push(\"/s\");\n }\n if (state.billboard === \"none\") {\n hash.push(\"/n\");\n } else if (state.billboard === \"spherical\") {\n hash.push(\"/s\");\n } else if (state.billboard === \"cylindrical\") {\n hash.push(\"/c\");\n }\n hash.push(\";\");\n return hash.join(\"\");\n }\n\n _makeOcclusionHash() {\n const scene = this.scene;\n const hash = [\n scene.canvas.canvas.id,\n scene._sectionPlanesState.getHash()\n ];\n const state = this._state;\n if (state.stationary) {\n hash.push(\"/s\");\n }\n if (state.billboard === \"none\") {\n hash.push(\"/n\");\n } else if (state.billboard === \"spherical\") {\n hash.push(\"/s\");\n } else if (state.billboard === \"cylindrical\") {\n hash.push(\"/c\");\n }\n hash.push(\";\");\n return hash.join(\"\");\n }\n\n _buildAABB(worldMatrix, aabb) {\n\n math.transformOBB3(worldMatrix, this._geometry.obb, obb);\n math.OBB3ToAABB3(obb, aabb);\n\n const offset = this._state.offset;\n\n aabb[0] += offset[0];\n aabb[1] += offset[1];\n aabb[2] += offset[2];\n aabb[3] += offset[0];\n aabb[4] += offset[1];\n aabb[5] += offset[2];\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n aabb[0] += rtcCenter[0];\n aabb[1] += rtcCenter[1];\n aabb[2] += rtcCenter[2];\n aabb[3] += rtcCenter[0];\n aabb[4] += rtcCenter[1];\n aabb[5] += rtcCenter[2];\n }\n }\n\n /**\n * Defines the shape of this Mesh.\n *\n * Set to {@link Scene#geometry} by default.\n *\n * @type {Geometry}\n */\n get geometry() {\n return this._geometry;\n }\n\n /**\n * Defines the appearance of this Mesh when rendering normally, ie. when not xrayed, highlighted or selected.\n *\n * Set to {@link Scene#material} by default.\n *\n * @type {Material}\n */\n get material() {\n return this._material;\n }\n\n /**\n * Sets the Mesh's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set position(value) {\n this._position.set(value || [0, 0, 0]);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Mesh's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get position() {\n return this._position;\n }\n\n /**\n * Sets the Mesh's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set rotation(value) {\n this._rotation.set(value || [0, 0, 0]);\n math.eulerToQuaternion(this._rotation, \"XYZ\", this._quaternion);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Mesh's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get rotation() {\n return this._rotation;\n }\n\n /**\n * Sets the Mesh's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n set quaternion(value) {\n this._quaternion.set(value || [0, 0, 0, 1]);\n math.quaternionToEuler(this._quaternion, \"XYZ\", this._rotation);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Mesh's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n get quaternion() {\n return this._quaternion;\n }\n\n /**\n * Sets the Mesh's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n */\n set scale(value) {\n this._scale.set(value || [1, 1, 1]);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Mesh's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the Mesh's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n set matrix(value) {\n if (!this.__localMatrix) {\n this.__localMatrix = math.identityMat4();\n }\n this.__localMatrix.set(value || identityMat$1);\n math.decomposeMat4(this.__localMatrix, this._position, this._quaternion, this._scale);\n this._localMatrixDirty = false;\n this._setWorldMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Mesh's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n get matrix() {\n if (this._localMatrixDirty) {\n if (!this.__localMatrix) {\n this.__localMatrix = math.identityMat4();\n }\n math.composeMat4(this._position, this._quaternion, this._scale, this.__localMatrix);\n this._localMatrixDirty = false;\n }\n return this.__localMatrix;\n }\n\n /**\n * Gets the Mesh's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n */\n get worldMatrix() {\n if (this._worldMatrixDirty) {\n this._buildWorldMatrix();\n }\n return this._worldMatrix;\n }\n\n /**\n * Gets the Mesh's World normal matrix.\n *\n * @type {Number[]}\n */\n get worldNormalMatrix() {\n if (this._worldNormalMatrixDirty) {\n this._buildWorldNormalMatrix();\n }\n return this._worldNormalMatrix;\n }\n\n /**\n * Rotates the Mesh about the given local axis by the given increment.\n *\n * @param {Number[]} axis Local axis about which to rotate.\n * @param {Number} angle Angle increment in degrees.\n */\n rotate(axis, angle) {\n angleAxis$1[0] = axis[0];\n angleAxis$1[1] = axis[1];\n angleAxis$1[2] = axis[2];\n angleAxis$1[3] = angle * math.DEGTORAD;\n math.angleAxisToQuaternion(angleAxis$1, q1$1);\n math.mulQuaternions(this.quaternion, q1$1, q2$1);\n this.quaternion = q2$1;\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n return this;\n }\n\n /**\n * Rotates the Mesh about the given World-space axis by the given increment.\n *\n * @param {Number[]} axis Local axis about which to rotate.\n * @param {Number} angle Angle increment in degrees.\n */\n rotateOnWorldAxis(axis, angle) {\n angleAxis$1[0] = axis[0];\n angleAxis$1[1] = axis[1];\n angleAxis$1[2] = axis[2];\n angleAxis$1[3] = angle * math.DEGTORAD;\n math.angleAxisToQuaternion(angleAxis$1, q1$1);\n math.mulQuaternions(q1$1, this.quaternion, q1$1);\n //this.quaternion.premultiply(q1);\n return this;\n }\n\n /**\n * Rotates the Mesh about the local X-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateX(angle) {\n return this.rotate(xAxis$1, angle);\n }\n\n /**\n * Rotates the Mesh about the local Y-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateY(angle) {\n return this.rotate(yAxis$1, angle);\n }\n\n /**\n * Rotates the Mesh about the local Z-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateZ(angle) {\n return this.rotate(zAxis$1, angle);\n }\n\n /**\n * Translates the Mesh along local space vector by the given increment.\n *\n * @param {Number[]} axis Normalized local space 3D vector along which to translate.\n * @param {Number} distance Distance to translate along the vector.\n */\n translate(axis, distance) {\n math.vec3ApplyQuaternion(this.quaternion, axis, veca$1);\n math.mulVec3Scalar(veca$1, distance, vecb$1);\n math.addVec3(this.position, vecb$1, this.position);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n return this;\n }\n\n /**\n * Translates the Mesh along the local X-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the X-axis.\n */\n translateX(distance) {\n return this.translate(xAxis$1, distance);\n }\n\n /**\n * Translates the Mesh along the local Y-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the Y-axis.\n */\n translateY(distance) {\n return this.translate(yAxis$1, distance);\n }\n\n /**\n * Translates the Mesh along the local Z-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the Z-axis.\n */\n translateZ(distance) {\n return this.translate(zAxis$1, distance);\n }\n\n _putDrawRenderers() {\n if (this._drawRenderer) {\n this._drawRenderer.put();\n this._drawRenderer = null;\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.put();\n this._shadowRenderer = null;\n }\n if (this._emphasisFillRenderer) {\n this._emphasisFillRenderer.put();\n this._emphasisFillRenderer = null;\n }\n if (this._emphasisEdgesRenderer) {\n this._emphasisEdgesRenderer.put();\n this._emphasisEdgesRenderer = null;\n }\n }\n\n _putPickRenderers() {\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.put();\n this._pickMeshRenderer = null;\n }\n if (this._pickTriangleRenderer) {\n this._pickTriangleRenderer.put();\n this._pickTriangleRenderer = null;\n }\n }\n\n _putOcclusionRenderer() {\n if (this._occlusionRenderer) {\n this._occlusionRenderer.put();\n this._occlusionRenderer = null;\n }\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Entity members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that Mesh implements {@link Entity}.\n *\n * @returns {Boolean}\n */\n get isEntity() {\n return true;\n }\n\n /**\n * Returns ````true```` if this Mesh represents a model.\n *\n * When this returns ````true````, the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and\n * may also have a corresponding {@link MetaModel}.\n *\n * @type {Boolean}\n */\n get isModel() {\n return this._isModel;\n }\n\n /**\n * Returns ````true```` if this Mesh represents an object.\n *\n * When this returns ````true````, the Mesh will be registered by {@link Mesh#id} in {@link Scene#objects} and\n * may also have a corresponding {@link MetaObject}.\n *\n * @type {Boolean}\n */\n get isObject() {\n return this._isObject;\n }\n\n /**\n * Gets the Mesh's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n */\n get aabb() {\n if (this._aabbDirty) {\n this._updateAABB();\n }\n return this._aabb;\n }\n\n /**\n * Center of the relative-to-center (RTC) coordinate system for this Mesh.\n *\n * When this is given, then {@link Mesh#matrix}, {@link Mesh#position} and {@link Mesh#geometry} are all assumed to be relative to this center position.\n *\n * @type {Float64Array}\n */\n set rtcCenter(rtcCenter) {\n if (rtcCenter) {\n if (!this._state.rtcCenter) {\n this._state.rtcCenter = math.vec3();\n }\n this._state.rtcCenter.set(rtcCenter);\n this._state.rtcCenterHash = rtcCenter.join();\n this._setAABBDirty();\n this.scene._aabbDirty = true;\n } else {\n if (this._state.rtcCenter) {\n this._state.rtcCenter = null;\n this._state.rtcCenterHash = null;\n this._setAABBDirty();\n this.scene._aabbDirty = true;\n }\n }\n }\n\n /**\n * 3D origin of the Mesh's {@link Geometry}'s vertex positions.\n *\n * When this is defined, then the positions are RTC, which means that they are relative to this position.\n *\n * @type {Float64Array}\n */\n get rtcCenter() {\n return this._state.rtcCenter;\n }\n\n /**\n * The approximate number of triangles in this Mesh.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n /**\n * Sets if this Mesh is visible.\n *\n * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.\n *\n * When {@link Mesh#isObject} and {@link Mesh#visible} are both ````true```` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n set visible(visible) {\n visible = visible !== false;\n this._state.visible = visible;\n if (this._isObject) {\n this.scene._objectVisibilityUpdated(this);\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is visible.\n *\n * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.\n *\n * When {@link Mesh#isObject} and {@link Mesh#visible} are both ````true```` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n get visible() {\n return this._state.visible;\n }\n\n /**\n * Sets if this Mesh is xrayed.\n *\n * XRayed appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#xrayMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#xrayed} are both ````true``` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n */\n set xrayed(xrayed) {\n xrayed = !!xrayed;\n if (this._state.xrayed === xrayed) {\n return;\n }\n this._state.xrayed = xrayed;\n if (this._isObject) {\n this.scene._objectXRayedUpdated(this);\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is xrayed.\n *\n * XRayed appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#xrayMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#xrayed} are both ````true``` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n */\n get xrayed() {\n return this._state.xrayed;\n }\n\n /**\n * Sets if this Mesh is highlighted.\n *\n * Highlighted appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#highlightMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#highlighted} are both ````true```` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n */\n set highlighted(highlighted) {\n highlighted = !!highlighted;\n if (highlighted === this._state.highlighted) {\n return;\n }\n this._state.highlighted = highlighted;\n if (this._isObject) {\n this.scene._objectHighlightedUpdated(this);\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is highlighted.\n *\n * Highlighted appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#highlightMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#highlighted} are both ````true```` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n */\n get highlighted() {\n return this._state.highlighted;\n }\n\n /**\n * Sets if this Mesh is selected.\n *\n * Selected appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#selectedMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#selected} are both ````true``` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n */\n set selected(selected) {\n selected = !!selected;\n if (selected === this._state.selected) {\n return;\n }\n this._state.selected = selected;\n if (this._isObject) {\n this.scene._objectSelectedUpdated(this);\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is selected.\n *\n * Selected appearance is configured by the {@link EmphasisMaterial} referenced by {@link Mesh#selectedMaterial}.\n *\n * When {@link Mesh#isObject} and {@link Mesh#selected} are both ````true``` the Mesh will be\n * registered by {@link Mesh#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n */\n get selected() {\n return this._state.selected;\n }\n\n /**\n * Sets if this Mesh is edge-enhanced.\n *\n * Edge appearance is configured by the {@link EdgeMaterial} referenced by {@link Mesh#edgeMaterial}.\n *\n * @type {Boolean}\n */\n set edges(edges) {\n edges = !!edges;\n if (edges === this._state.edges) {\n return;\n }\n this._state.edges = edges;\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is edge-enhanced.\n *\n * Edge appearance is configured by the {@link EdgeMaterial} referenced by {@link Mesh#edgeMaterial}.\n *\n * @type {Boolean}\n */\n get edges() {\n return this._state.edges;\n }\n\n /**\n * Sets if this Mesh is culled.\n *\n * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.\n *\n * @type {Boolean}\n */\n set culled(value) {\n this._state.culled = !!value;\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is culled.\n *\n * Only rendered when {@link Mesh#visible} is ````true```` and {@link Mesh#culled} is ````false````.\n *\n * @type {Boolean}\n */\n get culled() {\n return this._state.culled;\n }\n\n /**\n * Sets if this Mesh is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n set clippable(value) {\n value = value !== false;\n if (this._state.clippable === value) {\n return;\n }\n this._state.clippable = value;\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._state.clippable;\n }\n\n /**\n * Sets if this Mesh included in boundary calculations.\n *\n * @type {Boolean}\n */\n set collidable(value) {\n value = value !== false;\n if (value === this._state.collidable) {\n return;\n }\n this._state.collidable = value;\n this._setAABBDirty();\n this.scene._aabbDirty = true;\n\n }\n\n /**\n * Gets if this Mesh included in boundary calculations.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._state.collidable;\n }\n\n /**\n * Sets if this Mesh is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n set pickable(value) {\n value = value !== false;\n if (this._state.pickable === value) {\n return;\n }\n this._state.pickable = value;\n // No need to trigger a render;\n // state is only used when picking\n }\n\n /**\n * Gets if this Mesh is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n get pickable() {\n return this._state.pickable;\n }\n\n /**\n * Sets if this Mesh casts shadows.\n *\n * @type {Boolean}\n */\n set castsShadow(value) {\n value = value !== false;\n if (value === this._state.castsShadow) {\n return;\n }\n this._state.castsShadow = value;\n this.glRedraw();\n }\n\n /**\n * Gets if this Mesh casts shadows.\n *\n * @type {Boolean}\n */\n get castsShadow() {\n return this._state.castsShadow;\n }\n\n /**\n * Sets if this Mesh can have shadows cast upon it.\n *\n * @type {Boolean}\n */\n set receivesShadow(value) {\n value = value !== false;\n if (value === this._state.receivesShadow) {\n return;\n }\n this._state.receivesShadow = value;\n this._state.hash = value ? \"/mod/rs;\" : \"/mod;\";\n this.fire(\"dirty\", this); // Now need to (re)compile objectRenderers to include/exclude shadow mapping\n }\n\n /**\n * Gets if this Mesh can have shadows cast upon it.\n *\n * @type {Boolean}\n */\n get receivesShadow() {\n return this._state.receivesShadow;\n }\n\n /**\n * Gets if this Mesh can have Scalable Ambient Obscurance (SAO) applied to it.\n *\n * SAO is configured by {@link SAO}.\n *\n * @type {Boolean}\n * @abstract\n */\n get saoEnabled() {\n return false; // TODO: Support SAO on Meshes\n }\n\n /**\n * Sets the RGB colorize color for this Mesh.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n set colorize(value) {\n let colorize = this._state.colorize;\n if (!colorize) {\n colorize = this._state.colorize = new Float32Array(4);\n colorize[3] = 1;\n }\n if (value) {\n colorize[0] = value[0];\n colorize[1] = value[1];\n colorize[2] = value[2];\n } else {\n colorize[0] = 1;\n colorize[1] = 1;\n colorize[2] = 1;\n }\n const colorized = (!!value);\n this.scene._objectColorizeUpdated(this, colorized);\n this.glRedraw();\n }\n\n /**\n * Gets the RGB colorize color for this Mesh.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n get colorize() {\n return this._state.colorize;\n }\n\n /**\n * Sets the opacity factor for this Mesh.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n let colorize = this._state.colorize;\n if (!colorize) {\n colorize = this._state.colorize = new Float32Array(4);\n colorize[0] = 1;\n colorize[1] = 1;\n colorize[2] = 1;\n }\n const opacityUpdated = (opacity !== null && opacity !== undefined);\n colorize[3] = opacityUpdated ? opacity : 1.0;\n this.scene._objectOpacityUpdated(this, opacityUpdated);\n this.glRedraw();\n }\n\n /**\n * Gets the opacity factor for this Mesh.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n return this._state.colorize[3];\n }\n\n /**\n * Gets if this Mesh is transparent.\n * @returns {Boolean}\n */\n get transparent() {\n return this._material.alphaMode === 2 /* blend */ || this._state.colorize[3] < 1\n }\n\n /**\n * Sets the Mesh's rendering order relative to other Meshes.\n *\n * Default value is ````0````.\n *\n * This can be set on multiple transparent Meshes, to make them render in a specific order for correct alpha blending.\n *\n * @type {Number}\n */\n set layer(value) {\n // TODO: Only accept rendering layer in range [0...MAX_layer]\n value = value || 0;\n value = Math.round(value);\n if (value === this._state.layer) {\n return;\n }\n this._state.layer = value;\n this._renderer.needStateSort();\n }\n\n /**\n * Gets the Mesh's rendering order relative to other Meshes.\n *\n * Default value is ````0````.\n *\n * This can be set on multiple transparent Meshes, to make them render in a specific order for correct alpha blending.\n *\n * @type {Number}\n */\n get layer() {\n return this._state.layer;\n }\n\n /**\n * Gets if the Node's position is stationary.\n *\n * When true, will disable the effect of {@link Camera} translations for this Mesh, while still allowing it to rotate. This is useful for skyboxes.\n *\n * @type {Boolean}\n */\n get stationary() {\n return this._state.stationary;\n }\n\n /**\n * Gets the Node's billboarding behaviour.\n *\n * Options are:\n * * ````\"none\"```` - (default) - No billboarding.\n * * ````\"spherical\"```` - Mesh is billboarded to face the viewpoint, rotating both vertically and horizontally.\n * * ````\"cylindrical\"```` - Mesh is billboarded to face the viewpoint, rotating only about its vertically axis. Use this mode for things like trees on a landscape.\n * @type {String}\n */\n get billboard() {\n return this._state.billboard;\n }\n\n /**\n * Sets the Mesh's 3D World-space offset.\n *\n * The offset dynamically translates the Mesh in World-space.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * Provide a null or undefined value to reset to the default value.\n *\n * @type {Number[]}\n */\n set offset(value) {\n this._state.offset.set(value || [0, 0, 0]);\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Mesh's 3D World-space offset.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get offset() {\n return this._state.offset;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Drawable members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that Mesh implements {@link Drawable}.\n * @final\n * @type {Boolean}\n */\n get isDrawable() {\n return true;\n }\n\n /**\n * Property with final value ````true```` to indicate that xeokit should render this Mesh in sorted order, relative to other Meshes.\n *\n * The sort order is determined by {@link Mesh#stateSortCompare}.\n *\n * Sorting is essential for rendering performance, so that xeokit is able to avoid applying runs of the same state changes to the GPU, ie. can collapse them.\n *\n * @type {Boolean}\n */\n get isStateSortable() {\n return true;\n }\n\n /**\n * Comparison function used by the renderer to determine the order in which xeokit should render the Mesh, relative to to other Meshes.\n *\n * xeokit requires this method because Mesh implements {@link Drawable}.\n *\n * Sorting is essential for rendering performance, so that xeokit is able to avoid needlessly applying runs of the same rendering state changes to the GPU, ie. can collapse them.\n *\n * @param {Mesh} mesh1\n * @param {Mesh} mesh2\n * @returns {number}\n */\n stateSortCompare(mesh1, mesh2) {\n return (mesh1._state.layer - mesh2._state.layer)\n || (mesh1._drawRenderer.id - mesh2._drawRenderer.id) // Program state\n || (mesh1._material._state.id - mesh2._material._state.id) // Material state\n || (mesh1._geometry._state.id - mesh2._geometry._state.id); // Geometry state\n }\n\n /** @private */\n rebuildRenderFlags() {\n this.renderFlags.reset();\n if (!this._getActiveSectionPlanes()) {\n this.renderFlags.culled = true;\n return;\n }\n this.renderFlags.numLayers = 1;\n this.renderFlags.numVisibleLayers = 1;\n this.renderFlags.visibleLayers[0] = 0;\n this._updateRenderFlags();\n }\n\n /**\n * @private\n */\n _updateRenderFlags() {\n\n const renderFlags = this.renderFlags;\n const state = this._state;\n\n if (state.xrayed) {\n const xrayMaterial = this._xrayMaterial._state;\n if (xrayMaterial.fill) {\n if (xrayMaterial.fillAlpha < 1.0) {\n renderFlags.xrayedSilhouetteTransparent = true;\n } else {\n renderFlags.xrayedSilhouetteOpaque = true;\n }\n }\n if (xrayMaterial.edges) {\n if (xrayMaterial.edgeAlpha < 1.0) {\n renderFlags.xrayedEdgesTransparent = true;\n } else {\n renderFlags.xrayedEdgesOpaque = true;\n }\n }\n } else {\n const normalMaterial = this._material._state;\n if (normalMaterial.alpha < 1.0 || state.colorize[3] < 1.0) {\n renderFlags.colorTransparent = true;\n } else {\n renderFlags.colorOpaque = true;\n }\n if (state.edges) {\n const edgeMaterial = this._edgeMaterial._state;\n if (edgeMaterial.alpha < 1.0) {\n renderFlags.edgesTransparent = true;\n } else {\n renderFlags.edgesOpaque = true;\n }\n }\n if (state.selected) {\n const selectedMaterial = this._selectedMaterial._state;\n if (selectedMaterial.fill) {\n if (selectedMaterial.fillAlpha < 1.0) {\n renderFlags.selectedSilhouetteTransparent = true;\n } else {\n renderFlags.selectedSilhouetteOpaque = true;\n }\n }\n if (selectedMaterial.edges) {\n if (selectedMaterial.edgeAlpha < 1.0) {\n renderFlags.selectedEdgesTransparent = true;\n } else {\n renderFlags.selectedEdgesOpaque = true;\n }\n }\n } else if (state.highlighted) {\n const highlightMaterial = this._highlightMaterial._state;\n if (highlightMaterial.fill) {\n if (highlightMaterial.fillAlpha < 1.0) {\n renderFlags.highlightedSilhouetteTransparent = true;\n } else {\n renderFlags.highlightedSilhouetteOpaque = true;\n }\n }\n if (highlightMaterial.edges) {\n if (highlightMaterial.edgeAlpha < 1.0) {\n renderFlags.highlightedEdgesTransparent = true;\n } else {\n renderFlags.highlightedEdgesOpaque = true;\n }\n }\n }\n }\n }\n\n _getActiveSectionPlanes() {\n\n if (this._state.clippable) {\n\n const sectionPlanes = this.scene._sectionPlanesState.sectionPlanes;\n const numSectionPlanes = sectionPlanes.length;\n\n if (numSectionPlanes > 0) {\n for (let i = 0; i < numSectionPlanes; i++) {\n\n const sectionPlane = sectionPlanes[i];\n const renderFlags = this.renderFlags;\n\n if (!sectionPlane.active) {\n renderFlags.sectionPlanesActivePerLayer[i] = false;\n\n } else {\n\n if (this._state.rtcCenter) {\n\n const intersect = math.planeAABB3Intersect(sectionPlane.dir, sectionPlane.dist, this.aabb);\n const outside = (intersect === -1);\n\n if (outside) {\n return false;\n }\n\n const intersecting = (intersect === 0);\n renderFlags.sectionPlanesActivePerLayer[i] = intersecting;\n\n } else {\n renderFlags.sectionPlanesActivePerLayer[i] = true;\n }\n }\n }\n }\n }\n\n return true;\n }\n\n /**\n * Defines the appearance of this Mesh when xrayed.\n *\n * Mesh is xrayed when {@link Mesh#xrayed} is ````true````.\n *\n * Set to {@link Scene#xrayMaterial} by default.\n *\n * @type {EmphasisMaterial}\n */\n get xrayMaterial() {\n return this._xrayMaterial;\n }\n\n /**\n * Defines the appearance of this Mesh when highlighted.\n *\n * Mesh is xrayed when {@link Mesh#highlighted} is ````true````.\n *\n * Set to {@link Scene#highlightMaterial} by default.\n *\n * @type {EmphasisMaterial}\n */\n get highlightMaterial() {\n return this._highlightMaterial;\n }\n\n /**\n * Defines the appearance of this Mesh when selected.\n *\n * Mesh is xrayed when {@link Mesh#selected} is ````true````.\n *\n * Set to {@link Scene#selectedMaterial} by default.\n *\n * @type {EmphasisMaterial}\n */\n get selectedMaterial() {\n return this._selectedMaterial;\n }\n\n /**\n * Defines the appearance of this Mesh when edges are enhanced.\n *\n * Mesh is xrayed when {@link Mesh#edges} is ````true````.\n *\n * Set to {@link Scene#edgeMaterial} by default.\n *\n * @type {EdgeMaterial}\n */\n get edgeMaterial() {\n return this._edgeMaterial;\n }\n\n // ---------------------- NORMAL RENDERING -----------------------------------\n\n /** @private */\n drawColorOpaque(frameCtx) {\n if (this._drawRenderer || (this._drawRenderer = DrawRenderer.get(this))) {\n this._drawRenderer.drawMesh(frameCtx, this);\n }\n }\n\n /** @private */\n drawColorTransparent(frameCtx) {\n if (this._drawRenderer || (this._drawRenderer = DrawRenderer.get(this))) {\n this._drawRenderer.drawMesh(frameCtx, this);\n }\n }\n\n // ---------------------- RENDERING SAO POST EFFECT TARGETS --------------\n\n // TODO\n\n // ---------------------- EMPHASIS RENDERING -----------------------------------\n\n /** @private */\n drawSilhouetteXRayed(frameCtx) {\n if (this._emphasisFillRenderer || (this._emphasisFillRenderer = EmphasisFillRenderer.get(this))) {\n this._emphasisFillRenderer.drawMesh(frameCtx, this, 0); // 0 == xray\n }\n }\n\n /** @private */\n drawSilhouetteHighlighted(frameCtx) {\n if (this._emphasisFillRenderer || (this._emphasisFillRenderer = EmphasisFillRenderer.get(this))) {\n this._emphasisFillRenderer.drawMesh(frameCtx, this, 1); // 1 == highlight\n }\n }\n\n /** @private */\n drawSilhouetteSelected(frameCtx) {\n if (this._emphasisFillRenderer || (this._emphasisFillRenderer = EmphasisFillRenderer.get(this))) {\n this._emphasisFillRenderer.drawMesh(frameCtx, this, 2); // 2 == selected\n }\n }\n\n // ---------------------- EDGES RENDERING -----------------------------------\n\n /** @private */\n drawEdgesColorOpaque(frameCtx) {\n if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {\n this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 3); // 3 == edges\n }\n }\n\n /** @private */\n drawEdgesColorTransparent(frameCtx) {\n if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {\n this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 3); // 3 == edges\n }\n }\n\n /** @private */\n drawEdgesXRayed(frameCtx) {\n if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {\n this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 0); // 0 == xray\n }\n }\n\n /** @private */\n drawEdgesHighlighted(frameCtx) {\n if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {\n this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 1); // 1 == highlight\n }\n }\n\n /** @private */\n drawEdgesSelected(frameCtx) {\n if (this._emphasisEdgesRenderer || (this._emphasisEdgesRenderer = EmphasisEdgesRenderer.get(this))) {\n this._emphasisEdgesRenderer.drawMesh(frameCtx, this, 2); // 2 == selected\n }\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n /** @private */\n drawOcclusion(frameCtx) {\n if (this._state.occluder && this._occlusionRenderer || (this._occlusionRenderer = OcclusionRenderer.get(this))) {\n this._occlusionRenderer.drawMesh(frameCtx, this);\n }\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n /** @private */\n drawShadow(frameCtx) {\n if (this._shadowRenderer || (this._shadowRenderer = ShadowRenderer.get(this))) {\n this._shadowRenderer.drawMesh(frameCtx, this);\n }\n }\n\n // ---------------------- PICKING RENDERING ----------------------------------\n\n /** @private */\n drawPickMesh(frameCtx) {\n if (this._pickMeshRenderer || (this._pickMeshRenderer = PickMeshRenderer.get(this))) {\n this._pickMeshRenderer.drawMesh(frameCtx, this);\n }\n }\n\n /** @private\n */\n canPickTriangle() {\n return this._geometry.isReadableGeometry; // VBOGeometry does not support surface picking because it has no geometry data in browser memory\n }\n\n /** @private */\n drawPickTriangles(frameCtx) {\n if (this._pickTriangleRenderer || (this._pickTriangleRenderer = PickTriangleRenderer.get(this))) {\n this._pickTriangleRenderer.drawMesh(frameCtx, this);\n }\n }\n\n /** @private */\n pickTriangleSurface(pickViewMatrix, pickProjMatrix, pickResult) {\n pickTriangleSurface(this, pickViewMatrix, pickProjMatrix, pickResult);\n }\n\n /** @private */\n drawPickVertices(frameCtx) {\n\n }\n\n /**\n * @private\n * @returns {PerformanceNode}\n */\n delegatePickedEntity() {\n return this;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Component members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Destroys this Mesh.\n */\n destroy() {\n super.destroy(); // xeokit.Object\n this._putDrawRenderers();\n this._putPickRenderers();\n this._putOcclusionRenderer();\n this.scene._renderer.putPickID(this._state.pickID); // TODO: somehow puch this down into xeokit framework?\n if (this._isObject) {\n this.scene._deregisterObject(this);\n if (this._visible) {\n this.scene._objectVisibilityUpdated(this, false);\n }\n if (this._xrayed) {\n this.scene._objectXRayedUpdated(this, false);\n }\n if (this._selected) {\n this.scene._objectSelectedUpdated(this, false);\n }\n if (this._highlighted) {\n this.scene._objectHighlightedUpdated(this, false);\n }\n this.scene._objectColorizeUpdated(this, false);\n this.scene._objectOpacityUpdated(this, false);\n this.scene._objectOffsetUpdated(this, false);\n }\n if (this._isModel) {\n this.scene._deregisterModel(this);\n }\n this.glRedraw();\n }\n\n}\n\n\nconst pickTriangleSurface = (function () {\n\n // Cached vars to avoid garbage collection\n\n const localRayOrigin = math.vec3();\n const localRayDir = math.vec3();\n const positionA = math.vec3();\n const positionB = math.vec3();\n const positionC = math.vec3();\n const triangleVertices = math.vec3();\n const position = math.vec4();\n const worldPos = math.vec3();\n const viewPos = math.vec3();\n const bary = math.vec3();\n const normalA = math.vec3();\n const normalB = math.vec3();\n const normalC = math.vec3();\n const uva = math.vec3();\n const uvb = math.vec3();\n const uvc = math.vec3();\n const tempVec4a = math.vec4();\n const tempVec4b = math.vec4();\n const tempVec4c = math.vec4();\n const tempVec3 = math.vec3();\n const tempVec3b = math.vec3();\n const tempVec3c = math.vec3();\n const tempVec3d = math.vec3();\n const tempVec3e = math.vec3();\n const tempVec3f = math.vec3();\n const tempVec3g = math.vec3();\n const tempVec3h = math.vec3();\n const tempVec3i = math.vec3();\n const tempVec3j = math.vec3();\n const tempVec3k = math.vec3();\n\n return function (mesh, pickViewMatrix, pickProjMatrix, pickResult) {\n\n var primIndex = pickResult.primIndex;\n\n if (primIndex !== undefined && primIndex !== null && primIndex > -1) {\n\n const geometry = mesh.geometry._state;\n const scene = mesh.scene;\n const camera = scene.camera;\n const canvas = scene.canvas;\n\n if (geometry.primitiveName === \"triangles\") {\n\n // Triangle picked; this only happens when the\n // Mesh has a Geometry that has primitives of type \"triangle\"\n\n pickResult.primitive = \"triangle\";\n\n // Get the World-space positions of the triangle's vertices\n\n const i = primIndex; // Indicates the first triangle index in the indices array\n\n const indices = geometry.indices; // Indices into geometry arrays, not into shared VertexBufs\n const positions = geometry.positions;\n\n let ia3;\n let ib3;\n let ic3;\n\n if (indices) {\n\n var ia = indices[i + 0];\n var ib = indices[i + 1];\n var ic = indices[i + 2];\n\n triangleVertices[0] = ia;\n triangleVertices[1] = ib;\n triangleVertices[2] = ic;\n\n pickResult.indices = triangleVertices;\n\n ia3 = ia * 3;\n ib3 = ib * 3;\n ic3 = ic * 3;\n\n } else {\n\n ia3 = i * 3;\n ib3 = ia3 + 3;\n ic3 = ib3 + 3;\n }\n\n positionA[0] = positions[ia3 + 0];\n positionA[1] = positions[ia3 + 1];\n positionA[2] = positions[ia3 + 2];\n\n positionB[0] = positions[ib3 + 0];\n positionB[1] = positions[ib3 + 1];\n positionB[2] = positions[ib3 + 2];\n\n positionC[0] = positions[ic3 + 0];\n positionC[1] = positions[ic3 + 1];\n positionC[2] = positions[ic3 + 2];\n\n if (geometry.compressGeometry) {\n\n // Decompress vertex positions\n\n const positionsDecodeMatrix = geometry.positionsDecodeMatrix;\n if (positionsDecodeMatrix) {\n geometryCompressionUtils.decompressPosition(positionA, positionsDecodeMatrix, positionA);\n geometryCompressionUtils.decompressPosition(positionB, positionsDecodeMatrix, positionB);\n geometryCompressionUtils.decompressPosition(positionC, positionsDecodeMatrix, positionC);\n }\n }\n\n // Attempt to ray-pick the triangle in local space\n\n let canvasPos;\n\n if (pickResult.canvasPos) {\n canvasPos = pickResult.canvasPos;\n math.canvasPosToLocalRay(canvas.canvas, pickViewMatrix, pickProjMatrix, mesh.worldMatrix, canvasPos, localRayOrigin, localRayDir);\n\n } else if (pickResult.origin && pickResult.direction) {\n math.worldRayToLocalRay(mesh.worldMatrix, pickResult.origin, pickResult.direction, localRayOrigin, localRayDir);\n }\n\n math.normalizeVec3(localRayDir);\n math.rayPlaneIntersect(localRayOrigin, localRayDir, positionA, positionB, positionC, position);\n\n // Get Local-space cartesian coordinates of the ray-triangle intersection\n\n pickResult.localPos = position;\n pickResult.position = position;\n\n // Get interpolated World-space coordinates\n\n // Need to transform homogeneous coords\n\n tempVec4a[0] = position[0];\n tempVec4a[1] = position[1];\n tempVec4a[2] = position[2];\n tempVec4a[3] = 1;\n\n // Get World-space cartesian coordinates of the ray-triangle intersection\n\n math.transformVec4(mesh.worldMatrix, tempVec4a, tempVec4b);\n\n worldPos[0] = tempVec4b[0];\n worldPos[1] = tempVec4b[1];\n worldPos[2] = tempVec4b[2];\n\n pickResult.worldPos = worldPos;\n\n // Get View-space cartesian coordinates of the ray-triangle intersection\n\n math.transformVec4(camera.matrix, tempVec4b, tempVec4c);\n\n viewPos[0] = tempVec4c[0];\n viewPos[1] = tempVec4c[1];\n viewPos[2] = tempVec4c[2];\n\n pickResult.viewPos = viewPos;\n\n // Get barycentric coordinates of the ray-triangle intersection\n\n math.cartesianToBarycentric(position, positionA, positionB, positionC, bary);\n\n pickResult.bary = bary;\n\n // Get interpolated normal vector\n\n const normals = geometry.normals;\n\n if (normals) {\n\n if (geometry.compressGeometry) {\n\n // Decompress vertex normals\n\n const ia2 = ia * 3;\n const ib2 = ib * 3;\n const ic2 = ic * 3;\n\n geometryCompressionUtils.decompressNormal(normals.subarray(ia2, ia2 + 2), normalA);\n geometryCompressionUtils.decompressNormal(normals.subarray(ib2, ib2 + 2), normalB);\n geometryCompressionUtils.decompressNormal(normals.subarray(ic2, ic2 + 2), normalC);\n\n } else {\n\n normalA[0] = normals[ia3];\n normalA[1] = normals[ia3 + 1];\n normalA[2] = normals[ia3 + 2];\n\n normalB[0] = normals[ib3];\n normalB[1] = normals[ib3 + 1];\n normalB[2] = normals[ib3 + 2];\n\n normalC[0] = normals[ic3];\n normalC[1] = normals[ic3 + 1];\n normalC[2] = normals[ic3 + 2];\n }\n\n const normal = math.addVec3(math.addVec3(\n math.mulVec3Scalar(normalA, bary[0], tempVec3),\n math.mulVec3Scalar(normalB, bary[1], tempVec3b), tempVec3c),\n math.mulVec3Scalar(normalC, bary[2], tempVec3d), tempVec3e);\n\n pickResult.worldNormal = math.normalizeVec3(math.transformVec3(mesh.worldNormalMatrix, normal, tempVec3f));\n }\n\n // Get interpolated UV coordinates\n\n const uvs = geometry.uv;\n\n if (uvs) {\n\n uva[0] = uvs[(ia * 2)];\n uva[1] = uvs[(ia * 2) + 1];\n\n uvb[0] = uvs[(ib * 2)];\n uvb[1] = uvs[(ib * 2) + 1];\n\n uvc[0] = uvs[(ic * 2)];\n uvc[1] = uvs[(ic * 2) + 1];\n\n if (geometry.compressGeometry) {\n\n // Decompress vertex UVs\n\n const uvDecodeMatrix = geometry.uvDecodeMatrix;\n if (uvDecodeMatrix) {\n geometryCompressionUtils.decompressUV(uva, uvDecodeMatrix, uva);\n geometryCompressionUtils.decompressUV(uvb, uvDecodeMatrix, uvb);\n geometryCompressionUtils.decompressUV(uvc, uvDecodeMatrix, uvc);\n }\n }\n\n pickResult.uv = math.addVec3(\n math.addVec3(\n math.mulVec2Scalar(uva, bary[0], tempVec3g),\n math.mulVec2Scalar(uvb, bary[1], tempVec3h), tempVec3i),\n math.mulVec2Scalar(uvc, bary[2], tempVec3j), tempVec3k);\n }\n }\n }\n }\n})();\n\n/**\n * @desc Creates a cylinder-shaped {@link Geometry}.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a cylinder-shaped {@link ReadableGeometry} :\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildCylinderGeometry)]\n *\n * ````javascript\n *\n * import {Viewer, Mesh, buildCylinderGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildCylinderGeometry({\n * center: [0,0,0],\n * radiusTop: 2.0,\n * radiusBottom: 2.0,\n * height: 5.0,\n * radialSegments: 20,\n * heightSegments: 1,\n * openEnded: false\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildCylinderGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for the {@link Geometry}, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radiusTop=1] Radius of top.\n * @param {Number} [cfg.radiusBottom=1] Radius of bottom.\n * @param {Number} [cfg.height=1] Height.\n * @param {Number} [cfg.radialSegments=60] Number of horizontal segments.\n * @param {Number} [cfg.heightSegments=1] Number of vertical segments.\n * @param {Boolean} [cfg.openEnded=false] Whether or not the cylinder has solid caps on the ends.\n * @returns {Object} Configuration for a {@link Geometry} subtype.\n */\nfunction buildCylinderGeometry(cfg = {}) {\n\n let radiusTop = cfg.radiusTop || 1;\n if (radiusTop < 0) {\n console.error(\"negative radiusTop not allowed - will invert\");\n radiusTop *= -1;\n }\n\n let radiusBottom = cfg.radiusBottom || 1;\n if (radiusBottom < 0) {\n console.error(\"negative radiusBottom not allowed - will invert\");\n radiusBottom *= -1;\n }\n\n let height = cfg.height || 1;\n if (height < 0) {\n console.error(\"negative height not allowed - will invert\");\n height *= -1;\n }\n\n let radialSegments = cfg.radialSegments || 32;\n if (radialSegments < 0) {\n console.error(\"negative radialSegments not allowed - will invert\");\n radialSegments *= -1;\n }\n if (radialSegments < 3) {\n radialSegments = 3;\n }\n\n let heightSegments = cfg.heightSegments || 1;\n if (heightSegments < 0) {\n console.error(\"negative heightSegments not allowed - will invert\");\n heightSegments *= -1;\n }\n if (heightSegments < 1) {\n heightSegments = 1;\n }\n\n const openEnded = !!cfg.openEnded;\n\n let center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const heightHalf = height / 2;\n const heightLength = height / heightSegments;\n const radialAngle = (2.0 * Math.PI / radialSegments);\n const radialLength = 1.0 / radialSegments;\n //var nextRadius = this._radiusBottom;\n const radiusChange = (radiusTop - radiusBottom) / heightSegments;\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let h;\n let i;\n\n let x;\n let z;\n\n let currentRadius;\n let currentHeight;\n\n let first;\n let second;\n\n let startIndex;\n let tu;\n let tv;\n\n // create vertices\n const normalY = (90.0 - (Math.atan(height / (radiusBottom - radiusTop))) * 180 / Math.PI) / 90.0;\n\n for (h = 0; h <= heightSegments; h++) {\n currentRadius = radiusTop - h * radiusChange;\n currentHeight = heightHalf - h * heightLength;\n\n for (i = 0; i <= radialSegments; i++) {\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n\n normals.push(currentRadius * x);\n normals.push(normalY); //todo\n normals.push(currentRadius * z);\n\n uvs.push((i * radialLength));\n uvs.push(h * 1 / heightSegments);\n\n positions.push((currentRadius * x) + centerX);\n positions.push((currentHeight) + centerY);\n positions.push((currentRadius * z) + centerZ);\n }\n }\n\n // create faces\n for (h = 0; h < heightSegments; h++) {\n for (i = 0; i <= radialSegments; i++) {\n\n first = h * (radialSegments + 1) + i;\n second = first + radialSegments;\n\n indices.push(first);\n indices.push(second);\n indices.push(second + 1);\n\n indices.push(first);\n indices.push(second + 1);\n indices.push(first + 1);\n }\n }\n\n // create top cap\n if (!openEnded && radiusTop > 0) {\n startIndex = (positions.length / 3);\n\n // top center\n normals.push(0.0);\n normals.push(1.0);\n normals.push(0.0);\n\n uvs.push(0.5);\n uvs.push(0.5);\n\n positions.push(0 + centerX);\n positions.push(heightHalf + centerY);\n positions.push(0 + centerZ);\n\n // top triangle fan\n for (i = 0; i <= radialSegments; i++) {\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n tu = (0.5 * Math.sin(i * radialAngle)) + 0.5;\n tv = (0.5 * Math.cos(i * radialAngle)) + 0.5;\n\n normals.push(radiusTop * x);\n normals.push(1.0);\n normals.push(radiusTop * z);\n\n uvs.push(tu);\n uvs.push(tv);\n\n positions.push((radiusTop * x) + centerX);\n positions.push((heightHalf) + centerY);\n positions.push((radiusTop * z) + centerZ);\n }\n\n for (i = 0; i < radialSegments; i++) {\n center = startIndex;\n first = startIndex + 1 + i;\n\n indices.push(first);\n indices.push(first + 1);\n indices.push(center);\n }\n }\n\n // create bottom cap\n if (!openEnded && radiusBottom > 0) {\n\n startIndex = (positions.length / 3);\n\n // top center\n normals.push(0.0);\n normals.push(-1.0);\n normals.push(0.0);\n\n uvs.push(0.5);\n uvs.push(0.5);\n\n positions.push(0 + centerX);\n positions.push(0 - heightHalf + centerY);\n positions.push(0 + centerZ);\n\n // top triangle fan\n for (i = 0; i <= radialSegments; i++) {\n\n x = Math.sin(i * radialAngle);\n z = Math.cos(i * radialAngle);\n\n tu = (0.5 * Math.sin(i * radialAngle)) + 0.5;\n tv = (0.5 * Math.cos(i * radialAngle)) + 0.5;\n\n normals.push(radiusBottom * x);\n normals.push(-1.0);\n normals.push(radiusBottom * z);\n\n uvs.push(tu);\n uvs.push(tv);\n\n positions.push((radiusBottom * x) + centerX);\n positions.push((0 - heightHalf) + centerY);\n positions.push((radiusBottom * z) + centerZ);\n }\n\n for (i = 0; i < radialSegments; i++) {\n\n center = startIndex;\n first = startIndex + 1 + i;\n\n indices.push(center);\n indices.push(first + 1);\n indices.push(first);\n }\n }\n\n return utils.apply(cfg, {\n positions: positions,\n normals: normals,\n uv: uvs,\n indices: indices\n });\n}\n\n/**\n * @desc Creates a sphere-shaped {@link Geometry}.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a sphere-shaped {@link ReadableGeometry} :\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildSphereGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * center: [0,0,0],\n * radius: 1.5,\n * heightSegments: 60,\n * widthSegments: 60\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildSphereGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for the {@link Geometry}, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radius=1] Radius.\n * @param {Number} [cfg.heightSegments=24] Number of latitudinal bands.\n * @param {Number} [cfg.widthSegments=18] Number of longitudinal bands.\n * @returns {Object} Configuration for a {@link Geometry} subtype.\n */\nfunction buildSphereGeometry(cfg = {}) {\n\n const lod = cfg.lod || 1;\n\n const centerX = cfg.center ? cfg.center[0] : 0;\n const centerY = cfg.center ? cfg.center[1] : 0;\n const centerZ = cfg.center ? cfg.center[2] : 0;\n\n let radius = cfg.radius || 1;\n if (radius < 0) {\n console.error(\"negative radius not allowed - will invert\");\n radius *= -1;\n }\n\n let heightSegments = cfg.heightSegments || 18;\n if (heightSegments < 0) {\n console.error(\"negative heightSegments not allowed - will invert\");\n heightSegments *= -1;\n }\n heightSegments = Math.floor(lod * heightSegments);\n if (heightSegments < 18) {\n heightSegments = 18;\n }\n\n let widthSegments = cfg.widthSegments || 18;\n if (widthSegments < 0) {\n console.error(\"negative widthSegments not allowed - will invert\");\n widthSegments *= -1;\n }\n widthSegments = Math.floor(lod * widthSegments);\n if (widthSegments < 18) {\n widthSegments = 18;\n }\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let i;\n let j;\n\n let theta;\n let sinTheta;\n let cosTheta;\n\n let phi;\n let sinPhi;\n let cosPhi;\n\n let x;\n let y;\n let z;\n\n let u;\n let v;\n\n let first;\n let second;\n\n for (i = 0; i <= heightSegments; i++) {\n\n theta = i * Math.PI / heightSegments;\n sinTheta = Math.sin(theta);\n cosTheta = Math.cos(theta);\n\n for (j = 0; j <= widthSegments; j++) {\n\n phi = j * 2 * Math.PI / widthSegments;\n sinPhi = Math.sin(phi);\n cosPhi = Math.cos(phi);\n\n x = cosPhi * sinTheta;\n y = cosTheta;\n z = sinPhi * sinTheta;\n u = 1.0 - j / widthSegments;\n v = i / heightSegments;\n\n normals.push(x);\n normals.push(y);\n normals.push(z);\n\n uvs.push(u);\n uvs.push(v);\n\n positions.push(centerX + radius * x);\n positions.push(centerY + radius * y);\n positions.push(centerZ + radius * z);\n }\n }\n\n for (i = 0; i < heightSegments; i++) {\n for (j = 0; j < widthSegments; j++) {\n\n first = (i * (widthSegments + 1)) + j;\n second = first + widthSegments + 1;\n\n indices.push(first + 1);\n indices.push(second + 1);\n indices.push(second);\n indices.push(first + 1);\n indices.push(second);\n indices.push(first);\n }\n }\n\n return utils.apply(cfg, {\n positions: positions,\n normals: normals,\n uv: uvs,\n indices: indices\n });\n}\n\nconst letters = {\n ' ': {width: 16, points: []},\n '!': {\n width: 10, points: [\n [5, 21],\n [5, 7],\n [-1, -1],\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n '\"': {\n width: 16, points: [\n [4, 21],\n [4, 14],\n [-1, -1],\n [12, 21],\n [12, 14]\n ]\n },\n '#': {\n width: 21, points: [\n [11, 25],\n [4, -7],\n [-1, -1],\n [17, 25],\n [10, -7],\n [-1, -1],\n [4, 12],\n [18, 12],\n [-1, -1],\n [3, 6],\n [17, 6]\n ]\n },\n '$': {\n width: 20, points: [\n [8, 25],\n [8, -4],\n [-1, -1],\n [12, 25],\n [12, -4],\n [-1, -1],\n [17, 18],\n [15, 20],\n [12, 21],\n [8, 21],\n [5, 20],\n [3, 18],\n [3, 16],\n [4, 14],\n [5, 13],\n [7, 12],\n [13, 10],\n [15, 9],\n [16, 8],\n [17, 6],\n [17, 3],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [3, 3]\n ]\n },\n '%': {\n width: 24, points: [\n [21, 21],\n [3, 0],\n [-1, -1],\n [8, 21],\n [10, 19],\n [10, 17],\n [9, 15],\n [7, 14],\n [5, 14],\n [3, 16],\n [3, 18],\n [4, 20],\n [6, 21],\n [8, 21],\n [10, 20],\n [13, 19],\n [16, 19],\n [19, 20],\n [21, 21],\n [-1, -1],\n [17, 7],\n [15, 6],\n [14, 4],\n [14, 2],\n [16, 0],\n [18, 0],\n [20, 1],\n [21, 3],\n [21, 5],\n [19, 7],\n [17, 7]\n ]\n },\n '&': {\n width: 26, points: [\n [23, 12],\n [23, 13],\n [22, 14],\n [21, 14],\n [20, 13],\n [19, 11],\n [17, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [7, 0],\n [5, 1],\n [4, 2],\n [3, 4],\n [3, 6],\n [4, 8],\n [5, 9],\n [12, 13],\n [13, 14],\n [14, 16],\n [14, 18],\n [13, 20],\n [11, 21],\n [9, 20],\n [8, 18],\n [8, 16],\n [9, 13],\n [11, 10],\n [16, 3],\n [18, 1],\n [20, 0],\n [22, 0],\n [23, 1],\n [23, 2]\n ]\n },\n '\\'': {\n width: 10, points: [\n [5, 19],\n [4, 20],\n [5, 21],\n [6, 20],\n [6, 18],\n [5, 16],\n [4, 15]\n ]\n },\n '(': {\n width: 14, points: [\n [11, 25],\n [9, 23],\n [7, 20],\n [5, 16],\n [4, 11],\n [4, 7],\n [5, 2],\n [7, -2],\n [9, -5],\n [11, -7]\n ]\n },\n ')': {\n width: 14, points: [\n [3, 25],\n [5, 23],\n [7, 20],\n [9, 16],\n [10, 11],\n [10, 7],\n [9, 2],\n [7, -2],\n [5, -5],\n [3, -7]\n ]\n },\n '*': {\n width: 16, points: [\n [8, 21],\n [8, 9],\n [-1, -1],\n [3, 18],\n [13, 12],\n [-1, -1],\n [13, 18],\n [3, 12]\n ]\n },\n '+': {\n width: 26, points: [\n [13, 18],\n [13, 0],\n [-1, -1],\n [4, 9],\n [22, 9]\n ]\n },\n ',': {\n width: 10, points: [\n [6, 1],\n [5, 0],\n [4, 1],\n [5, 2],\n [6, 1],\n [6, -1],\n [5, -3],\n [4, -4]\n ]\n },\n '-': {\n width: 26, points: [\n [4, 9],\n [22, 9]\n ]\n },\n '.': {\n width: 10, points: [\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n '/': {\n width: 22, points: [\n [20, 25],\n [2, -7]\n ]\n },\n '0': {\n width: 20, points: [\n [9, 21],\n [6, 20],\n [4, 17],\n [3, 12],\n [3, 9],\n [4, 4],\n [6, 1],\n [9, 0],\n [11, 0],\n [14, 1],\n [16, 4],\n [17, 9],\n [17, 12],\n [16, 17],\n [14, 20],\n [11, 21],\n [9, 21]\n ]\n },\n '1': {\n width: 20, points: [\n [6, 17],\n [8, 18],\n [11, 21],\n [11, 0]\n ]\n },\n '2': {\n width: 20, points: [\n [4, 16],\n [4, 17],\n [5, 19],\n [6, 20],\n [8, 21],\n [12, 21],\n [14, 20],\n [15, 19],\n [16, 17],\n [16, 15],\n [15, 13],\n [13, 10],\n [3, 0],\n [17, 0]\n ]\n },\n '3': {\n width: 20, points: [\n [5, 21],\n [16, 21],\n [10, 13],\n [13, 13],\n [15, 12],\n [16, 11],\n [17, 8],\n [17, 6],\n [16, 3],\n [14, 1],\n [11, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4]\n ]\n },\n '4': {\n width: 20, points: [\n [13, 21],\n [3, 7],\n [18, 7],\n [-1, -1],\n [13, 21],\n [13, 0]\n ]\n },\n '5': {\n width: 20, points: [\n [15, 21],\n [5, 21],\n [4, 12],\n [5, 13],\n [8, 14],\n [11, 14],\n [14, 13],\n [16, 11],\n [17, 8],\n [17, 6],\n [16, 3],\n [14, 1],\n [11, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4]\n ]\n },\n '6': {\n width: 20, points: [\n [16, 18],\n [15, 20],\n [12, 21],\n [10, 21],\n [7, 20],\n [5, 17],\n [4, 12],\n [4, 7],\n [5, 3],\n [7, 1],\n [10, 0],\n [11, 0],\n [14, 1],\n [16, 3],\n [17, 6],\n [17, 7],\n [16, 10],\n [14, 12],\n [11, 13],\n [10, 13],\n [7, 12],\n [5, 10],\n [4, 7]\n ]\n },\n '7': {\n width: 20, points: [\n [17, 21],\n [7, 0],\n [-1, -1],\n [3, 21],\n [17, 21]\n ]\n },\n '8': {\n width: 20, points: [\n [8, 21],\n [5, 20],\n [4, 18],\n [4, 16],\n [5, 14],\n [7, 13],\n [11, 12],\n [14, 11],\n [16, 9],\n [17, 7],\n [17, 4],\n [16, 2],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [4, 2],\n [3, 4],\n [3, 7],\n [4, 9],\n [6, 11],\n [9, 12],\n [13, 13],\n [15, 14],\n [16, 16],\n [16, 18],\n [15, 20],\n [12, 21],\n [8, 21]\n ]\n },\n '9': {\n width: 20, points: [\n [16, 14],\n [15, 11],\n [13, 9],\n [10, 8],\n [9, 8],\n [6, 9],\n [4, 11],\n [3, 14],\n [3, 15],\n [4, 18],\n [6, 20],\n [9, 21],\n [10, 21],\n [13, 20],\n [15, 18],\n [16, 14],\n [16, 9],\n [15, 4],\n [13, 1],\n [10, 0],\n [8, 0],\n [5, 1],\n [4, 3]\n ]\n },\n ':': {\n width: 10, points: [\n [5, 14],\n [4, 13],\n [5, 12],\n [6, 13],\n [5, 14],\n [-1, -1],\n [5, 2],\n [4, 1],\n [5, 0],\n [6, 1],\n [5, 2]\n ]\n },\n ';': {\n width: 10, points: [\n [5, 14],\n [4, 13],\n [5, 12],\n [6, 13],\n [5, 14],\n [-1, -1],\n [6, 1],\n [5, 0],\n [4, 1],\n [5, 2],\n [6, 1],\n [6, -1],\n [5, -3],\n [4, -4]\n ]\n },\n '<': {\n width: 24, points: [\n [20, 18],\n [4, 9],\n [20, 0]\n ]\n },\n '=': {\n width: 26, points: [\n [4, 12],\n [22, 12],\n [-1, -1],\n [4, 6],\n [22, 6]\n ]\n },\n '>': {\n width: 24, points: [\n [4, 18],\n [20, 9],\n [4, 0]\n ]\n },\n '?': {\n width: 18, points: [\n [3, 16],\n [3, 17],\n [4, 19],\n [5, 20],\n [7, 21],\n [11, 21],\n [13, 20],\n [14, 19],\n [15, 17],\n [15, 15],\n [14, 13],\n [13, 12],\n [9, 10],\n [9, 7],\n [-1, -1],\n [9, 2],\n [8, 1],\n [9, 0],\n [10, 1],\n [9, 2]\n ]\n },\n '@': {\n width: 27, points: [\n [18, 13],\n [17, 15],\n [15, 16],\n [12, 16],\n [10, 15],\n [9, 14],\n [8, 11],\n [8, 8],\n [9, 6],\n [11, 5],\n [14, 5],\n [16, 6],\n [17, 8],\n [-1, -1],\n [12, 16],\n [10, 14],\n [9, 11],\n [9, 8],\n [10, 6],\n [11, 5],\n [-1, -1],\n [18, 16],\n [17, 8],\n [17, 6],\n [19, 5],\n [21, 5],\n [23, 7],\n [24, 10],\n [24, 12],\n [23, 15],\n [22, 17],\n [20, 19],\n [18, 20],\n [15, 21],\n [12, 21],\n [9, 20],\n [7, 19],\n [5, 17],\n [4, 15],\n [3, 12],\n [3, 9],\n [4, 6],\n [5, 4],\n [7, 2],\n [9, 1],\n [12, 0],\n [15, 0],\n [18, 1],\n [20, 2],\n [21, 3],\n [-1, -1],\n [19, 16],\n [18, 8],\n [18, 6],\n [19, 5]\n ]\n },\n 'A': {\n width: 18, points: [\n [9, 21],\n [1, 0],\n [-1, -1],\n [9, 21],\n [17, 0],\n [-1, -1],\n [4, 7],\n [14, 7]\n ]\n },\n 'B': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 15],\n [17, 13],\n [16, 12],\n [13, 11],\n [-1, -1],\n [4, 11],\n [13, 11],\n [16, 10],\n [17, 9],\n [18, 7],\n [18, 4],\n [17, 2],\n [16, 1],\n [13, 0],\n [4, 0]\n ]\n },\n 'C': {\n width: 21, points: [\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5]\n ]\n },\n 'D': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [11, 21],\n [14, 20],\n [16, 18],\n [17, 16],\n [18, 13],\n [18, 8],\n [17, 5],\n [16, 3],\n [14, 1],\n [11, 0],\n [4, 0]\n ]\n },\n 'E': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [17, 21],\n [-1, -1],\n [4, 11],\n [12, 11],\n [-1, -1],\n [4, 0],\n [17, 0]\n ]\n },\n 'F': {\n width: 18, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [17, 21],\n [-1, -1],\n [4, 11],\n [12, 11]\n ]\n },\n 'G': {\n width: 21, points: [\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [18, 8],\n [-1, -1],\n [13, 8],\n [18, 8]\n ]\n },\n 'H': {\n width: 22, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [18, 21],\n [18, 0],\n [-1, -1],\n [4, 11],\n [18, 11]\n ]\n },\n 'I': {\n width: 8, points: [\n [4, 21],\n [4, 0]\n ]\n },\n 'J': {\n width: 16, points: [\n [12, 21],\n [12, 5],\n [11, 2],\n [10, 1],\n [8, 0],\n [6, 0],\n [4, 1],\n [3, 2],\n [2, 5],\n [2, 7]\n ]\n },\n 'K': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [18, 21],\n [4, 7],\n [-1, -1],\n [9, 12],\n [18, 0]\n ]\n },\n 'L': {\n width: 17, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 0],\n [16, 0]\n ]\n },\n 'M': {\n width: 24, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [12, 0],\n [-1, -1],\n [20, 21],\n [12, 0],\n [-1, -1],\n [20, 21],\n [20, 0]\n ]\n },\n 'N': {\n width: 22, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [18, 0],\n [-1, -1],\n [18, 21],\n [18, 0]\n ]\n },\n 'O': {\n width: 22, points: [\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [19, 8],\n [19, 13],\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21]\n ]\n },\n 'P': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 14],\n [17, 12],\n [16, 11],\n [13, 10],\n [4, 10]\n ]\n },\n 'Q': {\n width: 22, points: [\n [9, 21],\n [7, 20],\n [5, 18],\n [4, 16],\n [3, 13],\n [3, 8],\n [4, 5],\n [5, 3],\n [7, 1],\n [9, 0],\n [13, 0],\n [15, 1],\n [17, 3],\n [18, 5],\n [19, 8],\n [19, 13],\n [18, 16],\n [17, 18],\n [15, 20],\n [13, 21],\n [9, 21],\n [-1, -1],\n [12, 4],\n [18, -2]\n ]\n },\n 'R': {\n width: 21, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 21],\n [13, 21],\n [16, 20],\n [17, 19],\n [18, 17],\n [18, 15],\n [17, 13],\n [16, 12],\n [13, 11],\n [4, 11],\n [-1, -1],\n [11, 11],\n [18, 0]\n ]\n },\n 'S': {\n width: 20, points: [\n [17, 18],\n [15, 20],\n [12, 21],\n [8, 21],\n [5, 20],\n [3, 18],\n [3, 16],\n [4, 14],\n [5, 13],\n [7, 12],\n [13, 10],\n [15, 9],\n [16, 8],\n [17, 6],\n [17, 3],\n [15, 1],\n [12, 0],\n [8, 0],\n [5, 1],\n [3, 3]\n ]\n },\n 'T': {\n width: 16, points: [\n [8, 21],\n [8, 0],\n [-1, -1],\n [1, 21],\n [15, 21]\n ]\n },\n 'U': {\n width: 22, points: [\n [4, 21],\n [4, 6],\n [5, 3],\n [7, 1],\n [10, 0],\n [12, 0],\n [15, 1],\n [17, 3],\n [18, 6],\n [18, 21]\n ]\n },\n 'V': {\n width: 18, points: [\n [1, 21],\n [9, 0],\n [-1, -1],\n [17, 21],\n [9, 0]\n ]\n },\n 'W': {\n width: 24, points: [\n [2, 21],\n [7, 0],\n [-1, -1],\n [12, 21],\n [7, 0],\n [-1, -1],\n [12, 21],\n [17, 0],\n [-1, -1],\n [22, 21],\n [17, 0]\n ]\n },\n 'X': {\n width: 20, points: [\n [3, 21],\n [17, 0],\n [-1, -1],\n [17, 21],\n [3, 0]\n ]\n },\n 'Y': {\n width: 18, points: [\n [1, 21],\n [9, 11],\n [9, 0],\n [-1, -1],\n [17, 21],\n [9, 11]\n ]\n },\n 'Z': {\n width: 20, points: [\n [17, 21],\n [3, 0],\n [-1, -1],\n [3, 21],\n [17, 21],\n [-1, -1],\n [3, 0],\n [17, 0]\n ]\n },\n '[': {\n width: 14, points: [\n [4, 25],\n [4, -7],\n [-1, -1],\n [5, 25],\n [5, -7],\n [-1, -1],\n [4, 25],\n [11, 25],\n [-1, -1],\n [4, -7],\n [11, -7]\n ]\n },\n '\\\\': {\n width: 14, points: [\n [0, 21],\n [14, -3]\n ]\n },\n ']': {\n width: 14, points: [\n [9, 25],\n [9, -7],\n [-1, -1],\n [10, 25],\n [10, -7],\n [-1, -1],\n [3, 25],\n [10, 25],\n [-1, -1],\n [3, -7],\n [10, -7]\n ]\n },\n '^': {\n width: 16, points: [\n [6, 15],\n [8, 18],\n [10, 15],\n [-1, -1],\n [3, 12],\n [8, 17],\n [13, 12],\n [-1, -1],\n [8, 17],\n [8, 0]\n ]\n },\n '_': {\n width: 16, points: [\n [0, -2],\n [16, -2]\n ]\n },\n '`': {\n width: 10, points: [\n [6, 21],\n [5, 20],\n [4, 18],\n [4, 16],\n [5, 15],\n [6, 16],\n [5, 17]\n ]\n },\n 'a': {\n width: 19, points: [\n [15, 14],\n [15, 0],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'b': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 11],\n [6, 13],\n [8, 14],\n [11, 14],\n [13, 13],\n [15, 11],\n [16, 8],\n [16, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [8, 0],\n [6, 1],\n [4, 3]\n ]\n },\n 'c': {\n width: 18, points: [\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'd': {\n width: 19, points: [\n [15, 21],\n [15, 0],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'e': {\n width: 18, points: [\n [3, 8],\n [15, 8],\n [15, 10],\n [14, 12],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'f': {\n width: 12, points: [\n [10, 21],\n [8, 21],\n [6, 20],\n [5, 17],\n [5, 0],\n [-1, -1],\n [2, 14],\n [9, 14]\n ]\n },\n 'g': {\n width: 19, points: [\n [15, 14],\n [15, -2],\n [14, -5],\n [13, -6],\n [11, -7],\n [8, -7],\n [6, -6],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'h': {\n width: 19, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0]\n ]\n },\n 'i': {\n width: 8, points: [\n [3, 21],\n [4, 20],\n [5, 21],\n [4, 22],\n [3, 21],\n [-1, -1],\n [4, 14],\n [4, 0]\n ]\n },\n 'j': {\n width: 10, points: [\n [5, 21],\n [6, 20],\n [7, 21],\n [6, 22],\n [5, 21],\n [-1, -1],\n [6, 14],\n [6, -3],\n [5, -6],\n [3, -7],\n [1, -7]\n ]\n },\n 'k': {\n width: 17, points: [\n [4, 21],\n [4, 0],\n [-1, -1],\n [14, 14],\n [4, 4],\n [-1, -1],\n [8, 8],\n [15, 0]\n ]\n },\n 'l': {\n width: 8, points: [\n [4, 21],\n [4, 0]\n ]\n },\n 'm': {\n width: 30, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0],\n [-1, -1],\n [15, 10],\n [18, 13],\n [20, 14],\n [23, 14],\n [25, 13],\n [26, 10],\n [26, 0]\n ]\n },\n 'n': {\n width: 19, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 10],\n [7, 13],\n [9, 14],\n [12, 14],\n [14, 13],\n [15, 10],\n [15, 0]\n ]\n },\n 'o': {\n width: 19, points: [\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3],\n [16, 6],\n [16, 8],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14]\n ]\n },\n 'p': {\n width: 19, points: [\n [4, 14],\n [4, -7],\n [-1, -1],\n [4, 11],\n [6, 13],\n [8, 14],\n [11, 14],\n [13, 13],\n [15, 11],\n [16, 8],\n [16, 6],\n [15, 3],\n [13, 1],\n [11, 0],\n [8, 0],\n [6, 1],\n [4, 3]\n ]\n },\n 'q': {\n width: 19, points: [\n [15, 14],\n [15, -7],\n [-1, -1],\n [15, 11],\n [13, 13],\n [11, 14],\n [8, 14],\n [6, 13],\n [4, 11],\n [3, 8],\n [3, 6],\n [4, 3],\n [6, 1],\n [8, 0],\n [11, 0],\n [13, 1],\n [15, 3]\n ]\n },\n 'r': {\n width: 13, points: [\n [4, 14],\n [4, 0],\n [-1, -1],\n [4, 8],\n [5, 11],\n [7, 13],\n [9, 14],\n [12, 14]\n ]\n },\n 's': {\n width: 17, points: [\n [14, 11],\n [13, 13],\n [10, 14],\n [7, 14],\n [4, 13],\n [3, 11],\n [4, 9],\n [6, 8],\n [11, 7],\n [13, 6],\n [14, 4],\n [14, 3],\n [13, 1],\n [10, 0],\n [7, 0],\n [4, 1],\n [3, 3]\n ]\n },\n 't': {\n width: 12, points: [\n [5, 21],\n [5, 4],\n [6, 1],\n [8, 0],\n [10, 0],\n [-1, -1],\n [2, 14],\n [9, 14]\n ]\n },\n 'u': {\n width: 19, points: [\n [4, 14],\n [4, 4],\n [5, 1],\n [7, 0],\n [10, 0],\n [12, 1],\n [15, 4],\n [-1, -1],\n [15, 14],\n [15, 0]\n ]\n },\n 'v': {\n width: 16, points: [\n [2, 14],\n [8, 0],\n [-1, -1],\n [14, 14],\n [8, 0]\n ]\n },\n 'w': {\n width: 22, points: [\n [3, 14],\n [7, 0],\n [-1, -1],\n [11, 14],\n [7, 0],\n [-1, -1],\n [11, 14],\n [15, 0],\n [-1, -1],\n [19, 14],\n [15, 0]\n ]\n },\n 'x': {\n width: 17, points: [\n [3, 14],\n [14, 0],\n [-1, -1],\n [14, 14],\n [3, 0]\n ]\n },\n 'y': {\n width: 16, points: [\n [2, 14],\n [8, 0],\n [-1, -1],\n [14, 14],\n [8, 0],\n [6, -4],\n [4, -6],\n [2, -7],\n [1, -7]\n ]\n },\n 'z': {\n width: 17, points: [\n [14, 14],\n [3, 0],\n [-1, -1],\n [3, 14],\n [14, 14],\n [-1, -1],\n [3, 0],\n [14, 0]\n ]\n },\n '{': {\n width: 14, points: [\n [9, 25],\n [7, 24],\n [6, 23],\n [5, 21],\n [5, 19],\n [6, 17],\n [7, 16],\n [8, 14],\n [8, 12],\n [6, 10],\n [-1, -1],\n [7, 24],\n [6, 22],\n [6, 20],\n [7, 18],\n [8, 17],\n [9, 15],\n [9, 13],\n [8, 11],\n [4, 9],\n [8, 7],\n [9, 5],\n [9, 3],\n [8, 1],\n [7, 0],\n [6, -2],\n [6, -4],\n [7, -6],\n [-1, -1],\n [6, 8],\n [8, 6],\n [8, 4],\n [7, 2],\n [6, 1],\n [5, -1],\n [5, -3],\n [6, -5],\n [7, -6],\n [9, -7]\n ]\n },\n '|': {\n width: 8, points: [\n [4, 25],\n [4, -7]\n ]\n },\n '}': {\n width: 14, points: [\n [5, 25],\n [7, 24],\n [8, 23],\n [9, 21],\n [9, 19],\n [8, 17],\n [7, 16],\n [6, 14],\n [6, 12],\n [8, 10],\n [-1, -1],\n [7, 24],\n [8, 22],\n [8, 20],\n [7, 18],\n [6, 17],\n [5, 15],\n [5, 13],\n [6, 11],\n [10, 9],\n [6, 7],\n [5, 5],\n [5, 3],\n [6, 1],\n [7, 0],\n [8, -2],\n [8, -4],\n [7, -6],\n [-1, -1],\n [8, 8],\n [6, 6],\n [6, 4],\n [7, 2],\n [8, 1],\n [9, -1],\n [9, -3],\n [8, -5],\n [7, -6],\n [5, -7]\n ]\n },\n '~': {\n width: 24, points: [\n [3, 6],\n [3, 8],\n [4, 11],\n [6, 12],\n [8, 12],\n [10, 11],\n [14, 8],\n [16, 7],\n [18, 7],\n [20, 8],\n [21, 10],\n [-1, -1],\n [3, 8],\n [4, 10],\n [6, 11],\n [8, 11],\n [10, 10],\n [14, 7],\n [16, 6],\n [18, 6],\n [20, 7],\n [21, 10],\n [21, 12]\n ]\n }\n};\n\n/**\n * @desc Creates wireframe vector text {@link Geometry}.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with vector text {@link ReadableGeometry} :\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildVectorTextGeometry)]\n *\n * ````javascript\n *\n * import {Viewer, Mesh, buildVectorTextGeometry, ReadableGeometry, PhongMaterial} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 100];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildVectorTextGeometry({\n * origin: [0,0,0],\n * text: \"On the other side of the screen, it all looked so easy\"\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildVectorTextGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number[]} [cfg.origin] 3D point indicating the top left corner.\n * @param {Number} [cfg.size=1] Size of each character.\n * @param {String} [cfg.text=\"\"] The text.\n * @returns {Object} Configuration for a {@link Geometry} subtype.\n */\nfunction buildVectorTextGeometry(cfg = {}) {\n\n var origin = cfg.origin || [0, 0, 0];\n var xOrigin = origin[0];\n var yOrigin = origin[1];\n var zOrigin = origin[2];\n var size = cfg.size || 1;\n\n var positions = [];\n var indices = [];\n var text = cfg.text;\n if (utils.isNumeric(text)) {\n text = \"\" + text;\n }\n var lines = (text || \"\").split(\"\\n\");\n var countVerts = 0;\n var y = 0;\n var x;\n var str;\n var len;\n var c;\n var mag = 1.0 / 25.0;\n var penUp;\n var p1;\n var p2;\n var pointsLen;\n var a;\n\n for (var iLine = 0; iLine < lines.length; iLine++) {\n\n x = 0;\n str = lines[iLine];\n len = str.length;\n\n for (var i = 0; i < len; i++) {\n\n c = letters[str.charAt(i)];\n\n if (!c) {\n continue;\n }\n\n penUp = 1;\n p1 = -1;\n p2 = -1;\n\n pointsLen = c.points.length;\n\n for (var j = 0; j < pointsLen; j++) {\n a = c.points[j];\n\n if (a[0] === -1 && a[1] === -1) {\n penUp = 1;\n continue;\n }\n\n positions.push((x + (a[0] * size) * mag) + xOrigin);\n positions.push((y + (a[1] * size) * mag) + yOrigin);\n positions.push(0 + zOrigin);\n\n if (p1 === -1) {\n p1 = countVerts;\n } else if (p2 === -1) {\n p2 = countVerts;\n } else {\n p1 = p2;\n p2 = countVerts;\n }\n countVerts++;\n\n if (penUp) {\n penUp = false;\n\n } else {\n indices.push(p1);\n indices.push(p2);\n }\n }\n x += c.width * mag * size;\n\n }\n y -= 35 * mag * size;\n }\n\n return utils.apply(cfg, {\n primitive: \"lines\",\n positions: positions,\n indices: indices\n });\n}\n\n/**\n * {@link Viewer} plugin that shows the axii of the World-space coordinate system.\n *\n * ## Usage\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#gizmos_AxisGizmoPlugin)]\n *\n * ````JavaScript````\n * import {Viewer, XKTLoaderPlugin, AxisGizmoPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * new AxisGizmoPlugin(viewer, {\n * canvasId: \"myAxisGizmoCanvas\"\n * });\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"../assets/models/xkt/Schependomlaan.xkt\",\n * edges: true\n * });\n * ````\n */\nclass AxisGizmoPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"AxisGizmo\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {String} [cfg.canvasId] ID of an existing HTML canvas to display the AxisGizmo - either this or canvasElement is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLCanvasElement} [cfg.canvasElement] Reference of an existing HTML canvas to display the AxisGizmo - either this or canvasId is mandatory. When both values are given, the element reference is always preferred to the ID.\n */\n constructor(viewer, cfg) {\n\n cfg = cfg || {};\n\n super(\"AxisGizmo\", viewer, cfg);\n\n const camera = viewer.scene.camera;\n\n if (!cfg.canvasId && !cfg.canvasElement) {\n this.error(\"Config expected: either 'canvasId' or 'canvasElement'\");\n }\n\n try {\n this._axisGizmoScene = new Scene(viewer, {\n canvasId: cfg.canvasId,\n canvasElement: cfg.canvasElement,\n transparent: true\n });\n } catch (error) {\n this.error(error);\n return;\n }\n\n const axisGizmoScene = this._axisGizmoScene;\n\n axisGizmoScene.clearLights();\n\n new AmbientLight(axisGizmoScene, {color: [0.45, 0.45, 0.5], intensity: 0.9});\n new DirLight(axisGizmoScene, {dir: [-0.5, 0.5, -0.6], color: [0.8, 0.8, 0.7], intensity: 1.0, space: \"view\"});\n new DirLight(axisGizmoScene, {dir: [0.5, -0.5, -0.6], color: [0.8, 0.8, 0.8], intensity: 1.0, space: \"view\"});\n\n // Rotate helper in synch with target camera\n\n const helperCamera = axisGizmoScene.camera;\n\n camera.on(\"matrix\", function () {\n\n const eye = camera.eye;\n const look = camera.look;\n const up = camera.up;\n\n const eyeLook = math.mulVec3Scalar(math.normalizeVec3(math.subVec3(eye, look, [])), 22);\n\n helperCamera.look = [0, 0, 0];\n helperCamera.eye = eyeLook;\n helperCamera.up = up;\n });\n\n // ----------------- Components that are shared among more than one mesh ---------------\n\n const arrowHead = new ReadableGeometry(axisGizmoScene, buildCylinderGeometry({\n radiusTop: 0.01,\n radiusBottom: 0.6,\n height: 1.7,\n radialSegments: 20,\n heightSegments: 1,\n openEnded: false\n }));\n\n const arrowShaft = new ReadableGeometry(axisGizmoScene, buildCylinderGeometry({\n radiusTop: 0.2,\n radiusBottom: 0.2,\n height: 4.5,\n radialSegments: 20,\n heightSegments: 1,\n openEnded: false\n }));\n\n const xAxisMaterial = new PhongMaterial(axisGizmoScene, { // Red by convention\n diffuse: [1, 0.3, 0.3],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n });\n\n const xAxisLabelMaterial = new PhongMaterial(axisGizmoScene, { // Red by convention\n emissive: [1, 0.3, 0.3],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n });\n\n const yAxisMaterial = new PhongMaterial(axisGizmoScene, { // Green by convention\n diffuse: [0.3, 1, 0.3],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n });\n\n const yAxisLabelMaterial = new PhongMaterial(axisGizmoScene, { // Green by convention\n emissive: [0.3, 1, 0.3],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n });\n\n const zAxisMaterial = new PhongMaterial(axisGizmoScene, { // Blue by convention\n diffuse: [0.3, 0.3, 1],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n });\n\n const zAxisLabelMaterial = new PhongMaterial(axisGizmoScene, {\n emissive: [0.3, 0.3, 1],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n });\n\n const ballMaterial = new PhongMaterial(axisGizmoScene, {\n diffuse: [0.5, 0.5, 0.5],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n });\n\n // ----------------- Meshes ------------------------------\n\n this._meshes = [\n\n // Sphere behind gnomon\n\n new Mesh(axisGizmoScene, {\n geometry: new ReadableGeometry(axisGizmoScene, buildSphereGeometry({\n radius: 9.0,\n heightSegments: 60,\n widthSegments: 60\n })),\n material: new PhongMaterial(axisGizmoScene, {\n diffuse: [0.0, 0.0, 0.0],\n emissive: [0.1, 0.1, 0.1],\n ambient: [0.1, 0.1, 0.2],\n specular: [0, 0, 0],\n alpha: 0.4,\n alphaMode: \"blend\",\n frontface: \"cw\"\n }),\n pickable: false,\n collidable: false,\n visible: cfg.visible !== false\n }),\n\n // Ball at center of axis\n\n new Mesh(axisGizmoScene, { // Arrow\n geometry: new ReadableGeometry(axisGizmoScene, buildSphereGeometry({\n radius: 1.0\n })),\n material: ballMaterial,\n pickable: false,\n collidable: false,\n visible: cfg.visible !== false\n }),\n\n // X-axis arrow, shaft and label\n\n new Mesh(axisGizmoScene, { // Arrow\n geometry: arrowHead,\n material: xAxisMaterial,\n pickable: false,\n collidable: false,\n visible: cfg.visible !== false,\n position: [5, 0, 0],\n rotation: [0, 0, -90]\n }),\n\n new Mesh(axisGizmoScene, { // Shaft\n geometry: arrowShaft,\n material: xAxisMaterial,\n pickable: false,\n collidable: false,\n visible: cfg.visible !== false,\n position: [2, 0, 0],\n rotation: [0, 0, 90]\n }),\n\n new Mesh(axisGizmoScene, { // Label\n geometry: new ReadableGeometry(axisGizmoScene, buildVectorTextGeometry({text: \"X\", size: 1.5})),\n material: xAxisLabelMaterial,\n pickable: false,\n collidable: false,\n visible: cfg.visible !== false,\n position: [7, 0, 0],\n billboard: \"spherical\"\n }),\n\n // Y-axis arrow, shaft and label\n\n new Mesh(axisGizmoScene, { // Arrow\n geometry: arrowHead,\n material: yAxisMaterial,\n pickable: false,\n collidable: false,\n visible: cfg.visible !== false,\n position: [0, 5, 0]\n }),\n\n new Mesh(axisGizmoScene, { // Shaft\n geometry: arrowShaft,\n material: yAxisMaterial,\n pickable: false,\n collidable: false,\n visible: cfg.visible !== false,\n position: [0, 2, 0]\n }),\n\n new Mesh(axisGizmoScene, { // Label\n geometry: new ReadableGeometry(axisGizmoScene, buildVectorTextGeometry({text: \"Y\", size: 1.5})),\n material: yAxisLabelMaterial,\n pickable: false,\n collidable: false,\n visible: cfg.visible !== false,\n position: [0, 7, 0],\n billboard: \"spherical\"\n }),\n\n // Z-axis arrow, shaft and label\n\n new Mesh(axisGizmoScene, { // Arrow\n geometry: arrowHead,\n material: zAxisMaterial,\n pickable: false,\n collidable: false,\n visible: cfg.visible !== false,\n position: [0, 0, 5],\n rotation: [90, 0, 0]\n }),\n\n new Mesh(axisGizmoScene, { // Shaft\n geometry: arrowShaft,\n material: zAxisMaterial,\n pickable: false,\n collidable: false,\n visible: cfg.visible !== false,\n position: [0, 0, 2],\n rotation: [90, 0, 0]\n }),\n\n new Mesh(axisGizmoScene, { // Label\n geometry: new ReadableGeometry(axisGizmoScene, buildVectorTextGeometry({text: \"Z\", size: 1.5})),\n material: zAxisLabelMaterial,\n pickable: false,\n collidable: false,\n visible: cfg.visible !== false,\n position: [0, 0, 7],\n billboard: \"spherical\"\n })\n ];\n }\n\n /** Shows or hides this AxisGizmoPlugin.\n *\n * @param visible\n */\n setVisible(visible) {\n for (let i = 0; i < this._meshes.length; i++) {\n this._meshes[i].visible = visible;\n }\n }\n\n /**\n * Destroys this AxisGizmoPlugin.\n */\n destroy() {\n this._axisGizmoCanvas = null;\n this._axisGizmoScene.destroy();\n this._axisGizmoScene = null;\n super.destroy();\n }\n}\n\n/**\n * @desc An arbitrarily-aligned World-space clipping plane.\n *\n * * Slices portions off objects to create cross-section views or reveal interiors.\n * * Registered by {@link SectionPlane#id} in {@link Scene#sectionPlanes}.\n * * Indicates World-space position in {@link SectionPlane#pos} and orientation in {@link SectionPlane#dir}.\n * * Discards elements from the half-space in the direction of {@link SectionPlane#dir}.\n * * Can be be enabled or disabled via {@link SectionPlane#active}.\n *\n * ## Usage\n *\n * In the example below, we'll create two SectionPlanes to slice a model loaded from glTF. Note that we could also create them\n * using a {@link SectionPlanesPlugin}.\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin, SectionPlane} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * const gltfLoaderPlugin = new GLTFModelsPlugin(viewer, {\n * id: \"GLTFModels\"\n * });\n *\n * const model = gltfLoaderPlugin.load({\n * id: \"myModel\",\n * src: \"./models/gltf/mygltfmodel.gltf\"\n * });\n *\n * // Create a SectionPlane on negative diagonal\n * const sectionPlane1 = new SectionPlane(viewer.scene, {\n * pos: [1.0, 1.0, 1.0],\n * dir: [-1.0, -1.0, -1.0],\n * active: true\n * }),\n *\n * // Create a SectionPlane on positive diagonal\n * const sectionPlane2 = new SectionPlane(viewer.scene, {\n * pos: [-1.0, -1.0, -1.0],\n * dir: [1.0, 1.0, 1.0],\n * active: true\n * });\n * ````\n */\nclass SectionPlane extends Component {\n\n /**\n @private\n */\n get type() {\n return \"SectionPlane\";\n }\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this SectionPlane as well.\n * @param {*} [cfg] SectionPlane configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Boolean} [cfg.active=true] Indicates whether or not this SectionPlane is active.\n * @param {Number[]} [cfg.pos=[0,0,0]] World-space position of the SectionPlane.\n * @param {Number[]} [cfg.dir=[0,0,-1]] Vector perpendicular to the plane surface, indicating the SectionPlane plane orientation.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n active: true,\n pos: math.vec3(),\n dir: math.vec3(),\n dist: 0\n });\n\n this.active = cfg.active;\n this.pos = cfg.pos;\n this.dir = cfg.dir;\n\n this.scene._sectionPlaneCreated(this);\n }\n\n /**\n * Sets if this SectionPlane is active or not.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} value Set ````true```` to activate else ````false```` to deactivate.\n */\n set active(value) {\n this._state.active = value !== false;\n this.glRedraw();\n this.fire(\"active\", this._state.active);\n }\n\n /**\n * Gets if this SectionPlane is active or not.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} Returns ````true```` if active.\n */\n get active() {\n return this._state.active;\n }\n\n /**\n * Sets the World-space position of this SectionPlane's plane.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * @param {Number[]} value New position.\n */\n set pos(value) {\n this._state.pos.set(value || [0, 0, 0]);\n this._state.dist = (-math.dotVec3(this._state.pos, this._state.dir));\n this.fire(\"pos\", this._state.pos);\n }\n\n /**\n * Gets the World-space position of this SectionPlane's plane.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * @returns {Number[]} Current position.\n */\n get pos() {\n return this._state.pos;\n }\n\n /**\n * Sets the direction of this SectionPlane's plane.\n *\n * Default value is ````[0, 0, -1]````.\n *\n * @param {Number[]} value New direction.\n */\n set dir(value) {\n this._state.dir.set(value || [0, 0, -1]);\n this._state.dist = (-math.dotVec3(this._state.pos, this._state.dir));\n this.glRedraw();\n this.fire(\"dir\", this._state.dir);\n }\n\n /**\n * Gets the direction of this SectionPlane's plane.\n *\n * Default value is ````[0, 0, -1]````.\n *\n * @returns {Number[]} value Current direction.\n */\n get dir() {\n return this._state.dir;\n }\n\n /**\n * Gets this SectionPlane's distance to the origin of the World-space coordinate system.\n *\n * This is the dot product of {@link SectionPlane#pos} and {@link SectionPlane#dir} and is automatically re-calculated\n * each time either of two properties are updated.\n *\n * @returns {Number}\n */\n get dist() {\n return this._state.dist;\n }\n\n /**\n * Inverts the direction of {@link SectionPlane#dir}.\n */\n flipDir() {\n const dir = this._state.dir;\n dir[0] *= -1.0;\n dir[1] *= -1.0;\n dir[2] *= -1.0;\n this._state.dist = (-math.dotVec3(this._state.pos, this._state.dir));\n this.fire(\"dir\", this._state.dir);\n this.glRedraw();\n }\n\n /**\n * @destroy\n */\n destroy() {\n this._state.destroy();\n this.scene._sectionPlaneDestroyed(this);\n super.destroy();\n }\n}\n\nconst tempVec3$4 = math.vec3();\n\n/**\n * {@link Viewer} plugin that saves and loads BCF viewpoints as JSON objects.\n *\n * BCF is a format for managing issues on a BIM project. This plugin's viewpoints conform to\n * the BCF Version 2.1 specification.\n *\n * ## Saving a BCF Viewpoint\n *\n * In the example below we'll create a {@link Viewer}, load an ````.XKT```` model into it using an {@link XKTLoaderPlugin},\n * slice the model in half using a {@link SectionPlanesPlugin}, then use a {@link BCFViewpointsPlugin#getViewpoint}\n * to save a viewpoint to JSON, which we'll log to the JavaScript developer console.\n *\n * * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BCF_SaveViewpoint)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, SectionPlanesPlugin, BCFViewpointsPlugin} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // Add a XKTLoaderPlugin\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * // Add a SectionPlanesPlugin\n * const sectionPlanes = new SectionPlanesPlugin(viewer);\n *\n * // Add a BCFViewpointsPlugin\n * const bcfViewpoints = new BCFViewpointsPlugin(viewer);\n *\n * // Load an .XKT model\n * const modelNode = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true // Emphasise edges\n * });\n *\n * // Slice it in half\n * sectionPlanes.createSectionPlane({\n * id: \"myClip\",\n * pos: [0, 0, 0],\n * dir: [0.5, 0.0, 0.5]\n * });\n *\n * // When model is loaded, set camera, select some objects and capture a BCF viewpoint to the console\n * modelNode.on(\"loaded\", () => {\n *\n * const scene = viewer.scene;\n * const camera = scene.camera;\n *\n * camera.eye = [-2.37, 18.97, -26.12];\n * camera.look = [10.97, 5.82, -11.22];\n * camera.up = [0.36, 0.83, 0.40];\n *\n * scene.setObjectsSelected([\n * \"3b2U496P5Ebhz5FROhTwFH\",\n * \"2MGtJUm9nD$Re1_MDIv0g2\",\n * \"3IbuwYOm5EV9Q6cXmwVWqd\",\n * \"3lhisrBxL8xgLCRdxNG$2v\",\n * \"1uDn0xT8LBkP15zQc9MVDW\"\n * ], true);\n *\n * const viewpoint = bcfViewpoints.getViewpoint();\n * const viewpointStr = JSON.stringify(viewpoint, null, 4);\n *\n * console.log(viewpointStr);\n * });\n * ````\n *\n * ## Saving View Setup Hints\n *\n * BCFViewpointsPlugin can optionally save hints in the viewpoint, which indicate how to set up the view when\n * loading it again.\n *\n * Here's the {@link BCFViewpointsPlugin#getViewpoint} call again, this time saving some hints:\n *\n * ````javascript\n * const viewpoint = bcfViewpoints.getViewpoint({ // Options\n * spacesVisible: true, // Force IfcSpace types visible in the viewpoint (default is false)\n * spaceBoundariesVisible: false, // Show IfcSpace boundaries in the viewpoint (default is false)\n * openingsVisible: true // Force IfcOpening types visible in the viewpoint (default is false)\n * });\n * ````\n *\n * ## Loading a BCF Viewpoint\n *\n * Assuming that we have our BCF viewpoint in a JSON object, let's now restore it with {@link BCFViewpointsPlugin#setViewpoint}:\n *\n * ````javascript\n * bcfViewpoints.setViewpoint(viewpoint);\n * ````\n *\n * ## Handling BCF Incompatibility with xeokit's Camera\n *\n * xeokit's {@link Camera#look} is the current 3D *point-of-interest* (POI).\n *\n * A BCF viewpoint, however, has a direction vector instead of a POI, and so {@link BCFViewpointsPlugin#getViewpoint} saves\n * xeokit's POI as a normalized vector from {@link Camera#eye} to {@link Camera#look}, which unfortunately loses\n * that positional information. Loading the viewpoint with {@link BCFViewpointsPlugin#setViewpoint} will restore {@link Camera#look} to\n * the viewpoint's camera position, offset by the normalized vector.\n *\n * As shown below, providing a ````rayCast```` option to ````setViewpoint```` will set {@link Camera#look} to the closest\n * surface intersection on the direction vector. Internally, ````setViewpoint```` supports this option by firing a ray\n * along the vector, and if that hits an {@link Entity}, sets {@link Camera#look} to ray's intersection point with the\n * Entity's surface.\n *\n * ````javascript\n * bcfViewpoints.setViewpoint(viewpoint, {\n * rayCast: true // <<--------------- Attempt to set Camera#look to surface intersection point (default)\n * });\n * ````\n *\n * ## Dealing With Loaded Models That Are Not in the Viewpoint\n *\n * If, for example, we load model \"duplex\", hide some objects, then save a BCF viewpoint with\n * ````BCFViewpointsPlugin#getViewpoint````, then load another model, \"schependomlaan\", then load the viewpoint again\n * with ````BCFViewpointsPlugin#setViewpoint````, then sometimes all of the objects in model \"schependomlaan\" become\n * visible, along with the visible objects in the viewpoint, which belong to model \"duplex\".\n *\n * The reason is that, when saving a BCF viewpoint, BCF logic works like the following pseudo code:\n *\n * ````\n * If numVisibleObjects < numInvisibleObjects\n * save IDs of visible objects in BCF\n * exceptions = \"visible objects\"\n * else\n * save IDS of invisible objects in BCF\n * exceptions = \"invisible objects\"\n * ````\n *\n * When loading the viewpoint again:\n *\n * ````\n * If exceptions = \"visible objects\"\n * hide all objects\n * show visible objects in BCF\n * else\n * show all objects\n * hide invisible objects in BCF\n * ````\n *\n * When the exception is \"visible objects\", loading the viewpoint shows all the objects in the first, which includes\n * objects in \"schependomlaan\", which can be confusing, because those were not even loaded when we first\n * saved the viewpoint..\n *\n * To solve this, we can supply a ````defaultInvisible```` option to {@link BCFViewpointsPlugin#getViewpoint}, which\n * will force the plugin to save the IDs of all visible objects while making invisible objects the exception.\n *\n * That way, when we load the viewpoint again, after loading model \"schependomlaan\", the plugin will hide all objects\n * in the scene first (which will include objects belonging to model \"schependomlaan\"), then make the objects in the\n * viewpoint visible (which will only be those of object \"duplex\").\n *\n * ````javascript\n * const viewpoint = bcfViewpoints.getViewpoint({ // Options\n * //..\n * defaultInvisible: true\n * });\n * ````\n *\n * [[Run an example](http://xeokit.github.io/xeokit-sdk/examples/#BCF_LoadViewpoint_defaultInvisible)]\n *\n * ## Behaviour with XKTLoaderPlugin globalizeObjectIds\n *\n * Whenever we use {@link XKTLoaderPlugin} to load duplicate copies of the same model, after configuring\n * {@link XKTLoaderPlugin#globalizeObjectIds} ````true```` to avoid ````Entity```` ID clashes, this has consequences\n * for BCF viewpoints created by {@link BCFViewpointsPlugin#getViewpoint}.\n *\n * When no duplicate copies of a model are loaded like this, viewpoints created by {@link BCFViewpointsPlugin#getViewpoint} will\n * continue to load as usual in other BIM viewers. Conversely, a viewpoint created for a single model in other BIM viewers\n * will continue to load as usual with ````BCFViewpointsPlugin````.\n *\n * When duplicate copies of a model are loaded, however, viewpoints created by {@link BCFViewpointsPlugin#getViewpoint}\n * will contain certain changes that will affect the viewpoint's portability, however. Such viewpoints will\n * use ````authoring_tool_id```` fields to save the globalized ````Entity#id```` values, which enables the viewpoints to\n * capture the states of the individual ````Entitys```` that represent the duplicate IFC elements. Take a look at the\n * following two examples to learn more.\n *\n * * [Example: Saving a BCF viewpoint containing duplicate models](https://xeokit.github.io/xeokit-sdk/examples/#BCF_SaveViewpoint_MultipleModels)\n * * [Example: Loading a BCF viewpoint containing duplicate models](https://xeokit.github.io/xeokit-sdk/examples/#BCF_LoadViewpoint_MultipleModels)\n *\n * **Caveat:** when loading a BCF viewpoint, we always assume that we have loaded in our target BIM viewer the same models that were\n * loaded in the viewpoint's original authoring application when the viewpoint was created. In the case of multi-model\n * viewpoints, the target BIM viewer, whether it be xeokit or another BIM viewer, will need to first have those exact\n * models loaded, with their objects having globalized IDs, following the same prefixing scheme we're using in\n * xeokit. Then, the viewpoint's ````authoring_tool_id```` fields will be able to resolve to their objects within the\n * target viewer.\n*\n * @class BCFViewpointsPlugin\n */\nclass BCFViewpointsPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"BCFViewpoints\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {String} [cfg.originatingSystem] Identifies the originating system for BCF records.\n * @param {String} [cfg.authoringTool] Identifies the authoring tool for BCF records.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"BCFViewpoints\", viewer, cfg);\n\n /**\n * Identifies the originating system to include in BCF viewpoints saved by this plugin.\n * @property originatingSystem\n * @type {string}\n */\n this.originatingSystem = cfg.originatingSystem || \"xeokit.io\";\n\n /**\n * Identifies the authoring tool to include in BCF viewpoints saved by this plugin.\n * @property authoringTool\n * @type {string}\n */\n this.authoringTool = cfg.authoringTool || \"xeokit.io\";\n }\n\n /**\n * Saves viewer state to a BCF viewpoint.\n *\n * Note that xeokit's {@link Camera#look} is the **point-of-interest**, whereas the BCF ````camera_direction```` is a\n * direction vector. Therefore, we save ````camera_direction```` as the vector from {@link Camera#eye} to {@link Camera#look}.\n *\n * @param {*} [options] Options for getting the viewpoint.\n * @param {Boolean} [options.spacesVisible=false] Indicates whether ````IfcSpace```` types should be forced visible in the viewpoint.\n * @param {Boolean} [options.openingsVisible=false] Indicates whether ````IfcOpening```` types should be forced visible in the viewpoint.\n * @param {Boolean} [options.spaceBoundariesVisible=false] Indicates whether the boundaries of ````IfcSpace```` types should be visible in the viewpoint.\n * @param {Boolean} [options.snapshot=true] Indicates whether the snapshot should be included in the viewpoint.\n * @param {Boolean} [options.defaultInvisible=false] When ````true````, will save the default visibility of all objects\n * as ````false````. This means that when we load the viewpoint again, and there are additional models loaded that\n * were not saved in the viewpoint, those models will be hidden when we load the viewpoint, and that only the\n * objects in the viewpoint will be visible.\n * @param {Boolean} [options.reverseClippingPlanes=false] When ````true````, clipping planes are reversed (https://github.com/buildingSMART/BCF-XML/issues/193)\n * @returns {*} BCF JSON viewpoint object\n * @example\n *\n * const viewer = new Viewer();\n *\n * const bcfPlugin = new BCFPlugin(viewer, {\n * //...\n * });\n *\n * const viewpoint = bcfPlugin.getViewpoint({ // Options - see constructor\n * spacesVisible: false, // Default\n * spaceBoundariesVisible: false, // Default\n * openingsVisible: false // Default\n * });\n *\n * // viewpoint will resemble the following:\n *\n * {\n * perspective_camera: {\n * camera_view_point: {\n * x: 0.0,\n * y: 0.0,\n * z: 0.0\n * },\n * camera_direction: {\n * x: 1.0,\n * y: 1.0,\n * z: 2.0\n * },\n * camera_up_vector: {\n * x: 0.0,\n * y: 0.0,\n * z: 1.0\n * },\n * field_of_view: 90.0\n * },\n * lines: [],\n * clipping_planes: [{\n * location: {\n * x: 0.5,\n * y: 0.5,\n * z: 0.5\n * },\n * direction: {\n * x: 1.0,\n * y: 0.0,\n * z: 0.0\n * }\n * }],\n * bitmaps: [],\n * snapshot: {\n * snapshot_type: png,\n * snapshot_data: \"data:image/png;base64,......\"\n * },\n * components: {\n * visibility: {\n * default_visibility: false,\n * exceptions: [{\n * ifc_guid: 4$cshxZO9AJBebsni$z9Yk,\n * originating_system: xeokit.io,\n * authoring_tool_id: xeokit/v1.0\n * }]\n * },\n * selection: [{\n * ifc_guid: \"4$cshxZO9AJBebsni$z9Yk\",\n * }]\n * }\n * }\n */\n getViewpoint(options = {}) {\n const scene = this.viewer.scene;\n const camera = scene.camera;\n const realWorldOffset = scene.realWorldOffset;\n const reverseClippingPlanes = (options.reverseClippingPlanes === true);\n let bcfViewpoint = {};\n\n // Camera\n let lookDirection = math.normalizeVec3(math.subVec3(camera.look, camera.eye, math.vec3()));\n let eye = camera.eye;\n let up = camera.up;\n\n if (camera.yUp) {\n // BCF is Z up\n lookDirection = YToZ(lookDirection);\n eye = YToZ(eye);\n up = YToZ(up);\n }\n\n const camera_view_point = xyzArrayToObject(math.addVec3(eye, realWorldOffset));\n\n if (camera.projection === \"ortho\") {\n bcfViewpoint.orthogonal_camera = {\n camera_view_point: camera_view_point,\n camera_direction: xyzArrayToObject(lookDirection),\n camera_up_vector: xyzArrayToObject(up),\n view_to_world_scale: camera.ortho.scale,\n };\n } else {\n bcfViewpoint.perspective_camera = {\n camera_view_point: camera_view_point,\n camera_direction: xyzArrayToObject(lookDirection),\n camera_up_vector: xyzArrayToObject(up),\n field_of_view: camera.perspective.fov,\n };\n }\n\n // Clipping planes\n\n const sectionPlanes = scene.sectionPlanes;\n for (let id in sectionPlanes) {\n if (sectionPlanes.hasOwnProperty(id)) {\n let sectionPlane = sectionPlanes[id];\n\n let location = sectionPlane.pos;\n\n let direction;\n if (reverseClippingPlanes) {\n direction = math.negateVec3(sectionPlane.dir, math.vec3());\n } else {\n direction = sectionPlane.dir;\n }\n\n if (camera.yUp) {\n // BCF is Z up\n location = YToZ(location);\n direction = YToZ(direction);\n }\n math.addVec3(location, realWorldOffset);\n\n location = xyzArrayToObject(location);\n direction = xyzArrayToObject(direction);\n if (!bcfViewpoint.clipping_planes) {\n bcfViewpoint.clipping_planes = [];\n }\n bcfViewpoint.clipping_planes.push({location, direction});\n }\n }\n\n // Entity states\n\n bcfViewpoint.components = {\n visibility: {\n view_setup_hints: {\n spaces_visible: !!options.spacesVisible,\n space_boundaries_visible: !!options.spaceBoundariesVisible,\n openings_visible: !!options.openingsVisible\n }\n }\n };\n\n const opacityObjectIds = new Set(scene.opacityObjectIds);\n const xrayedObjectIds = new Set(scene.xrayedObjectIds);\n const colorizedObjectIds = new Set(scene.colorizedObjectIds);\n\n const coloringMap = Object.values(scene.objects)\n .filter(entity => opacityObjectIds.has(entity.id) || colorizedObjectIds.has(entity.id) || xrayedObjectIds.has(entity.id))\n .reduce((coloringMap, entity) => {\n\n let color = colorizeToRGB(entity.colorize);\n let alpha;\n\n if (entity.xrayed) {\n if (scene.xrayMaterial.fillAlpha === 0.0 && scene.xrayMaterial.edgeAlpha !== 0.0) {\n // BCF can't deal with edges. If xRay is implemented only with edges, set an arbitrary opacity\n alpha = 0.1;\n } else {\n alpha = scene.xrayMaterial.fillAlpha;\n }\n alpha = Math.round(alpha * 255).toString(16).padStart(2, \"0\");\n color = alpha + color;\n } else if (opacityObjectIds.has(entity.id)) {\n alpha = Math.round(entity.opacity * 255).toString(16).padStart(2, \"0\");\n color = alpha + color;\n }\n\n if (!coloringMap[color]) {\n coloringMap[color] = [];\n }\n\n const objectId = entity.id;\n const originalSystemId = entity.originalSystemId;\n const component = {\n ifc_guid: originalSystemId,\n originating_system: this.originatingSystem\n };\n if (originalSystemId !== objectId) {\n component.authoring_tool_id = objectId;\n }\n\n coloringMap[color].push(component);\n\n return coloringMap;\n\n }, {});\n\n const coloringArray = Object.entries(coloringMap).map(([color, components]) => {\n return {color, components};\n });\n\n bcfViewpoint.components.coloring = coloringArray;\n\n const objectIds = scene.objectIds;\n const visibleObjects = scene.visibleObjects;\n const visibleObjectIds = scene.visibleObjectIds;\n const invisibleObjectIds = objectIds.filter(id => !visibleObjects[id]);\n const selectedObjectIds = scene.selectedObjectIds;\n\n if (options.defaultInvisible || visibleObjectIds.length < invisibleObjectIds.length) {\n bcfViewpoint.components.visibility.exceptions = this._createBCFComponents(visibleObjectIds);\n bcfViewpoint.components.visibility.default_visibility = false;\n } else {\n bcfViewpoint.components.visibility.exceptions = this._createBCFComponents(invisibleObjectIds);\n bcfViewpoint.components.visibility.default_visibility = true;\n }\n\n bcfViewpoint.components.selection = this._createBCFComponents(selectedObjectIds);\n\n if (options.snapshot !== false) {\n bcfViewpoint.snapshot = {\n snapshot_type: \"png\",\n snapshot_data: this.viewer.getSnapshot({format: \"png\"})\n };\n }\n\n return bcfViewpoint;\n }\n\n _createBCFComponents(objectIds) {\n const scene = this.viewer.scene;\n const components = [];\n for (let i = 0, len = objectIds.length; i < len; i++) {\n const objectId = objectIds[i];\n const entity = scene.objects[objectId];\n if (entity) {\n const component = {\n ifc_guid: entity.originalSystemId,\n originating_system: this.originatingSystem\n };\n if (entity.originalSystemId !== objectId) {\n component.authoring_tool_id = objectId;\n }\n components.push(component);\n }\n }\n return components;\n }\n\n /**\n * Sets viewer state to the given BCF viewpoint.\n *\n * Note that xeokit's {@link Camera#look} is the **point-of-interest**, whereas the BCF ````camera_direction```` is a\n * direction vector. Therefore, when loading a BCF viewpoint, we set {@link Camera#look} to the absolute position\n * obtained by offsetting the BCF ````camera_view_point```` along ````camera_direction````.\n *\n * When loading a viewpoint, we also have the option to find {@link Camera#look} as the closest point of intersection\n * (on the surface of any visible and pickable {@link Entity}) with a 3D ray fired from ````camera_view_point```` in\n * the direction of ````camera_direction````.\n *\n * @param {*} bcfViewpoint BCF JSON viewpoint object,\n * shows default visible entities and restores camera to initial default position.\n * @param {*} [options] Options for setting the viewpoint.\n * @param {Boolean} [options.rayCast=true] When ````true```` (default), will attempt to set {@link Camera#look} to the closest\n * point of surface intersection with a ray fired from the BCF ````camera_view_point```` in the direction of ````camera_direction````.\n * @param {Boolean} [options.immediate=true] When ````true```` (default), immediately set camera position.\n * @param {Boolean} [options.duration] Flight duration in seconds. Overrides {@link CameraFlightAnimation#duration}. Only applies when ````immediate```` is ````false````.\n * @param {Boolean} [options.reset=true] When ````true```` (default), set {@link Entity#xrayed} and {@link Entity#highlighted} ````false```` on all scene objects.\n * @param {Boolean} [options.reverseClippingPlanes=false] When ````true````, clipping planes are reversed (https://github.com/buildingSMART/BCF-XML/issues/193)\n * @param {Boolean} [options.updateCompositeObjects=false] When ````true````, then when visibility and selection updates refer to composite objects (eg. an IfcBuildingStorey),\n * then this method will apply the updates to objects within those composites.\n */\n setViewpoint(bcfViewpoint, options = {}) {\n if (!bcfViewpoint) {\n return;\n }\n\n const viewer = this.viewer;\n const scene = viewer.scene;\n const camera = scene.camera;\n const rayCast = (options.rayCast !== false);\n const immediate = (options.immediate !== false);\n const reset = (options.reset !== false);\n const realWorldOffset = scene.realWorldOffset;\n const reverseClippingPlanes = (options.reverseClippingPlanes === true);\n\n scene.clearSectionPlanes();\n\n if (bcfViewpoint.clipping_planes) {\n bcfViewpoint.clipping_planes.forEach(function (e) {\n let pos = xyzObjectToArray(e.location, tempVec3$4);\n let dir = xyzObjectToArray(e.direction, tempVec3$4);\n\n if (reverseClippingPlanes) {\n math.negateVec3(dir);\n }\n math.subVec3(pos, realWorldOffset);\n\n if (camera.yUp) {\n pos = ZToY(pos);\n dir = ZToY(dir);\n }\n new SectionPlane(scene, {pos, dir});\n });\n }\n\n if (reset) {\n scene.setObjectsXRayed(scene.xrayedObjectIds, false);\n scene.setObjectsHighlighted(scene.highlightedObjectIds, false);\n scene.setObjectsSelected(scene.selectedObjectIds, false);\n }\n\n if (bcfViewpoint.components) {\n\n if (bcfViewpoint.components.visibility) {\n\n if (!bcfViewpoint.components.visibility.default_visibility) {\n scene.setObjectsVisible(scene.objectIds, false);\n if (bcfViewpoint.components.visibility.exceptions) {\n bcfViewpoint.components.visibility.exceptions.forEach((component) => this._withBCFComponent(options, component, entity => entity.visible = true));\n }\n } else {\n scene.setObjectsVisible(scene.objectIds, true);\n if (bcfViewpoint.components.visibility.exceptions) {\n bcfViewpoint.components.visibility.exceptions.forEach((component) => this._withBCFComponent(options, component, entity => entity.visible = false));\n }\n }\n\n const view_setup_hints = bcfViewpoint.components.visibility.view_setup_hints;\n if (view_setup_hints) {\n if (view_setup_hints.spaces_visible === false) {\n scene.setObjectsVisible(viewer.metaScene.getObjectIDsByType(\"IfcSpace\"), false);\n }\n if (view_setup_hints.openings_visible === false) {\n scene.setObjectsVisible(viewer.metaScene.getObjectIDsByType(\"IfcOpening\"), false);\n }\n if (view_setup_hints.space_boundaries_visible !== undefined) ;\n }\n }\n\n if (bcfViewpoint.components.selection) {\n scene.setObjectsSelected(scene.selectedObjectIds, false);\n bcfViewpoint.components.selection.forEach(component => this._withBCFComponent(options, component, entity => entity.selected = true));\n\n }\n\n if (bcfViewpoint.components.coloring) {\n bcfViewpoint.components.coloring.forEach(coloring => {\n\n let color = coloring.color;\n let alpha = 0;\n let alphaDefined = false;\n\n if (color.length === 8) {\n alpha = parseInt(color.substring(0, 2), 16) / 256;\n if (alpha <= 1.0 && alpha >= 0.95) {\n alpha = 1.0;\n }\n color = color.substring(2);\n alphaDefined = true;\n }\n\n const colorize = [\n parseInt(color.substring(0, 2), 16) / 256,\n parseInt(color.substring(2, 4), 16) / 256,\n parseInt(color.substring(4, 6), 16) / 256\n ];\n\n coloring.components.map(component =>\n this._withBCFComponent(options, component, entity => {\n entity.colorize = colorize;\n if (alphaDefined) {\n entity.opacity = alpha;\n }\n }));\n });\n }\n }\n\n if (bcfViewpoint.perspective_camera || bcfViewpoint.orthogonal_camera) {\n let eye;\n let look;\n let up;\n let projection;\n\n if (bcfViewpoint.perspective_camera) {\n eye = xyzObjectToArray(bcfViewpoint.perspective_camera.camera_view_point, tempVec3$4);\n look = xyzObjectToArray(bcfViewpoint.perspective_camera.camera_direction, tempVec3$4);\n up = xyzObjectToArray(bcfViewpoint.perspective_camera.camera_up_vector, tempVec3$4);\n\n camera.perspective.fov = bcfViewpoint.perspective_camera.field_of_view;\n\n projection = \"perspective\";\n } else {\n eye = xyzObjectToArray(bcfViewpoint.orthogonal_camera.camera_view_point, tempVec3$4);\n look = xyzObjectToArray(bcfViewpoint.orthogonal_camera.camera_direction, tempVec3$4);\n up = xyzObjectToArray(bcfViewpoint.orthogonal_camera.camera_up_vector, tempVec3$4);\n\n camera.ortho.scale = bcfViewpoint.orthogonal_camera.view_to_world_scale;\n\n projection = \"ortho\";\n }\n\n math.subVec3(eye, realWorldOffset);\n\n if (camera.yUp) {\n eye = ZToY(eye);\n look = ZToY(look);\n up = ZToY(up);\n }\n\n if (rayCast) {\n const hit = scene.pick({\n pickSurface: true, // <<------ This causes picking to find the intersection point on the entity\n origin: eye,\n direction: look\n });\n look = (hit ? hit.worldPos : math.addVec3(eye, look, tempVec3$4));\n } else {\n look = math.addVec3(eye, look, tempVec3$4);\n }\n\n if (immediate) {\n camera.eye = eye;\n camera.look = look;\n camera.up = up;\n camera.projection = projection;\n } else {\n viewer.cameraFlight.flyTo({eye, look, up, duration: options.duration, projection});\n }\n }\n }\n\n _withBCFComponent(options, component, callback) {\n\n const viewer = this.viewer;\n const scene = viewer.scene;\n\n if (component.authoring_tool_id && component.originating_system === this.originatingSystem) {\n\n const id = component.authoring_tool_id;\n const entity = scene.objects[id];\n\n if (entity) {\n callback(entity);\n return\n }\n\n if (options.updateCompositeObjects) {\n const metaObject = viewer.metaScene.metaObjects[id];\n if (metaObject) {\n scene.withObjects(viewer.metaScene.getObjectIDsInSubtree(id), callback);\n return;\n }\n }\n }\n\n if (component.ifc_guid) {\n\n const originalSystemId = component.ifc_guid;\n const entity = scene.objects[originalSystemId];\n\n if (entity) {\n callback(entity);\n return;\n }\n\n if (options.updateCompositeObjects) {\n const metaObject = viewer.metaScene.metaObjects[originalSystemId];\n if (metaObject) {\n scene.withObjects(viewer.metaScene.getObjectIDsInSubtree(originalSystemId), callback);\n return;\n }\n }\n\n Object.keys(scene.models).forEach((modelId) => {\n\n const id = math.globalizeObjectId(modelId, originalSystemId);\n const entity = scene.objects[id];\n\n if (entity) {\n callback(entity);\n return;\n }\n\n if (options.updateCompositeObjects) {\n const metaObject = viewer.metaScene.metaObjects[id];\n if (metaObject) {\n scene.withObjects(viewer.metaScene.getObjectIDsInSubtree(id), callback);\n return;\n }\n }\n });\n }\n }\n\n /**\n * Destroys this BCFViewpointsPlugin.\n */\n destroy() {\n super.destroy();\n }\n}\n\nfunction xyzArrayToObject(arr) {\n return {\"x\": arr[0], \"y\": arr[1], \"z\": arr[2]};\n}\n\nfunction xyzObjectToArray(xyz, arry) {\n arry = new Float64Array(3);\n arry[0] = xyz.x;\n arry[1] = xyz.y;\n arry[2] = xyz.z;\n return arry;\n}\n\nfunction YToZ(vec) {\n return new Float64Array([vec[0], -vec[2], vec[1]]);\n}\n\nfunction ZToY(vec) {\n return new Float64Array([vec[0], vec[2], -vec[1]]);\n}\n\nfunction colorizeToRGB(color) {\n let rgb = \"\";\n rgb += Math.round(color[0] * 255).toString(16).padStart(2, \"0\");\n rgb += Math.round(color[1] * 255).toString(16).padStart(2, \"0\");\n rgb += Math.round(color[2] * 255).toString(16).padStart(2, \"0\");\n return rgb;\n}\n\nvar distVec3 = math.vec3();\n\nconst lengthWire = (x1, y1, x2, y2) => {\n var a = x1 - x2;\n var b = y1 - y2;\n return Math.sqrt(a * a + b * b);\n};\n\n/**\n * @desc Measures the distance between two 3D points.\n *\n * See {@link DistanceMeasurementsPlugin} for more info.\n */\nclass DistanceMeasurement extends Component {\n\n /**\n * @private\n */\n constructor(plugin, cfg = {}) {\n\n super(plugin.viewer.scene, cfg);\n\n /**\n * The {@link DistanceMeasurementsPlugin} that owns this DistanceMeasurement.\n * @type {DistanceMeasurementsPlugin}\n */\n this.plugin = plugin;\n\n this._container = cfg.container;\n if (!this._container) {\n throw \"config missing: container\";\n }\n\n this._eventSubs = {};\n\n var scene = this.plugin.viewer.scene;\n\n this._originMarker = new Marker(scene, cfg.origin);\n this._targetMarker = new Marker(scene, cfg.target);\n\n this._originWorld = math.vec3();\n this._targetWorld = math.vec3();\n\n this._wp = new Float64Array(24);\n this._vp = new Float64Array(24);\n this._pp = new Float64Array(24);\n this._cp = new Int16Array(8);\n\n this._xAxisLabelCulled = false;\n this._yAxisLabelCulled = false;\n this._zAxisLabelCulled = false;\n\n this._originDot = new Dot(this._container, {});\n\n this._targetDot = new Dot(this._container, {});\n\n this._lengthWire = new Wire(this._container, {\n color: \"#00BBFF\",\n thickness: 2\n });\n\n this._xAxisWire = new Wire(this._container, {\n color: \"red\",\n thickness: 1\n });\n\n this._yAxisWire = new Wire(this._container, {\n color: \"green\",\n thickness: 1\n });\n\n this._zAxisWire = new Wire(this._container, {\n color: \"blue\",\n thickness: 1\n });\n\n this._lengthLabel = new Label(this._container, {\n fillColor: \"#00BBFF\",\n prefix: \"\",\n text: \"\"\n });\n\n this._xAxisLabel = new Label(this._container, {\n fillColor: \"red\",\n prefix: \"X\",\n text: \"\"\n });\n\n this._yAxisLabel = new Label(this._container, {\n fillColor: \"green\",\n prefix: \"Y\",\n text: \"\"\n });\n\n this._zAxisLabel = new Label(this._container, {\n fillColor: \"blue\",\n prefix: \"Z\",\n text: \"\"\n });\n\n this._wpDirty = false;\n this._vpDirty = false;\n this._cpDirty = false;\n\n this._visible = false;\n this._originVisible = false;\n this._targetVisible = false;\n this._wireVisible = false;\n this._axisVisible = false;\n\n this._originMarker.on(\"worldPos\", (value) => {\n this._originWorld.set(value || [0, 0, 0]);\n this._wpDirty = true;\n this._needUpdate(0); // No lag\n });\n\n this._targetMarker.on(\"worldPos\", (value) => {\n this._targetWorld.set(value || [0, 0, 0]);\n this._wpDirty = true;\n this._needUpdate(0); // No lag\n });\n\n this._onViewMatrix = scene.camera.on(\"viewMatrix\", () => {\n this._vpDirty = true;\n this._needUpdate(0); // No lag\n });\n\n this._onProjMatrix = scene.camera.on(\"projMatrix\", () => {\n this._cpDirty = true;\n this._needUpdate();\n });\n\n this._onCanvasBoundary = scene.canvas.on(\"boundary\", () => {\n this._cpDirty = true;\n this._needUpdate(0); // No lag\n });\n\n this._onMetricsUnits = scene.metrics.on(\"units\", () => {\n this._cpDirty = true;\n this._needUpdate();\n });\n\n this._onMetricsScale = scene.metrics.on(\"scale\", () => {\n this._cpDirty = true;\n this._needUpdate();\n });\n\n this._onMetricsOrigin = scene.metrics.on(\"origin\", () => {\n this._cpDirty = true;\n this._needUpdate();\n });\n\n this.approximate = cfg.approximate;\n this.visible = cfg.visible;\n this.originVisible = cfg.originVisible;\n this.targetVisible = cfg.targetVisible;\n this.wireVisible = cfg.wireVisible;\n this.axisVisible = cfg.axisVisible;\n }\n\n _update() {\n\n if (!this._visible) {\n return;\n }\n\n const scene = this.plugin.viewer.scene;\n\n if (this._wpDirty) {\n\n this._wp[0] = this._originWorld[0];\n this._wp[1] = this._originWorld[1];\n this._wp[2] = this._originWorld[2];\n this._wp[3] = 1.0;\n\n this._wp[4] = this._targetWorld[0];\n this._wp[5] = this._originWorld[1];\n this._wp[6] = this._originWorld[2];\n this._wp[7] = 1.0;\n\n this._wp[8] = this._targetWorld[0];\n this._wp[9] = this._targetWorld[1];\n this._wp[10] = this._originWorld[2];\n this._wp[11] = 1.0;\n\n this._wp[12] = this._targetWorld[0];\n this._wp[13] = this._targetWorld[1];\n this._wp[14] = this._targetWorld[2];\n this._wp[15] = 1.0;\n\n this._wpDirty = false;\n this._vpDirty = true;\n }\n\n if (this._vpDirty) {\n\n math.transformPositions4(scene.camera.viewMatrix, this._wp, this._vp);\n\n this._vp[3] = 1.0;\n this._vp[7] = 1.0;\n this._vp[11] = 1.0;\n this._vp[15] = 1.0;\n\n this._vpDirty = false;\n this._cpDirty = true;\n }\n\n const near = -0.3;\n const vpz1 = this._originMarker.viewPos[2];\n const vpz2 = this._targetMarker.viewPos[2];\n\n if (vpz1 > near || vpz2 > near) {\n\n this._xAxisLabel.setVisible(false);\n this._yAxisLabel.setVisible(false);\n this._zAxisLabel.setVisible(false);\n this._lengthLabel.setVisible(false);\n\n this._xAxisWire.setVisible(false);\n this._yAxisWire.setVisible(false);\n this._zAxisWire.setVisible(false);\n this._lengthWire.setVisible(false);\n\n this._originDot.setVisible(false);\n this._targetDot.setVisible(false);\n\n return;\n }\n\n if (this._cpDirty) {\n\n math.transformPositions4(scene.camera.project.matrix, this._vp, this._pp);\n\n var pp = this._pp;\n var cp = this._cp;\n\n var canvas = scene.canvas.canvas;\n var offsets = canvas.getBoundingClientRect();\n var top = offsets.top;\n var left = offsets.left;\n var aabb = scene.canvas.boundary;\n var canvasWidth = aabb[2];\n var canvasHeight = aabb[3];\n var j = 0;\n\n const metrics = this.plugin.viewer.scene.metrics;\n const scale = metrics.scale;\n const units = metrics.units;\n const unitInfo = metrics.unitsInfo[units];\n const unitAbbrev = unitInfo.abbrev;\n\n for (var i = 0, len = pp.length; i < len; i += 4) {\n cp[j] = left + Math.floor((1 + pp[i + 0] / pp[i + 3]) * canvasWidth / 2);\n cp[j + 1] = top + Math.floor((1 - pp[i + 1] / pp[i + 3]) * canvasHeight / 2);\n j += 2;\n }\n\n this._originDot.setPos(cp[0], cp[1]);\n this._targetDot.setPos(cp[6], cp[7]);\n\n this._lengthWire.setStartAndEnd(cp[0], cp[1], cp[6], cp[7]);\n\n this._xAxisWire.setStartAndEnd(cp[0], cp[1], cp[2], cp[3]);\n this._yAxisWire.setStartAndEnd(cp[2], cp[3], cp[4], cp[5]);\n this._zAxisWire.setStartAndEnd(cp[4], cp[5], cp[6], cp[7]);\n\n this._lengthLabel.setPosOnWire(cp[0], cp[1], cp[6], cp[7]);\n this._xAxisLabel.setPosOnWire(cp[0], cp[1], cp[2], cp[3]);\n this._yAxisLabel.setPosOnWire(cp[2], cp[3], cp[4], cp[5]);\n this._zAxisLabel.setPosOnWire(cp[4], cp[5], cp[6], cp[7]);\n\n const tilde = this._approximate ? \" ~ \" : \" = \";\n\n this._length = Math.abs(math.lenVec3(math.subVec3(this._targetWorld, this._originWorld, distVec3)));\n this._lengthLabel.setText(tilde + (this._length * scale).toFixed(2) + unitAbbrev);\n\n const xAxisCanvasLength = Math.abs(lengthWire(cp[0], cp[1], cp[2], cp[3]));\n const yAxisCanvasLength = Math.abs(lengthWire(cp[2], cp[3], cp[4], cp[5]));\n const zAxisCanvasLength = Math.abs(lengthWire(cp[4], cp[5], cp[6], cp[7]));\n\n const labelMinAxisLength = this.plugin.labelMinAxisLength;\n\n this._xAxisLabelCulled = (xAxisCanvasLength < labelMinAxisLength);\n this._yAxisLabelCulled = (yAxisCanvasLength < labelMinAxisLength);\n this._zAxisLabelCulled = (zAxisCanvasLength < labelMinAxisLength);\n\n if (!this._xAxisLabelCulled) {\n this._xAxisLabel.setText(tilde + Math.abs((this._targetWorld[0] - this._originWorld[0]) * scale).toFixed(2) + unitAbbrev);\n this._xAxisLabel.setVisible(true);\n } else {\n this._xAxisLabel.setVisible(false);\n }\n\n if (!this._yAxisLabelCulled) {\n this._yAxisLabel.setText(tilde + Math.abs((this._targetWorld[1] - this._originWorld[1]) * scale).toFixed(2) + unitAbbrev);\n this._yAxisLabel.setVisible(true);\n } else {\n this._yAxisLabel.setVisible(false);\n }\n\n if (!this._zAxisLabelCulled) {\n this._zAxisLabel.setText(tilde + Math.abs((this._targetWorld[2] - this._originWorld[2]) * scale).toFixed(2) + unitAbbrev);\n this._zAxisLabel.setVisible(true);\n } else {\n this._zAxisLabel.setVisible(false);\n }\n\n this._originDot.setVisible(this._visible && this._originVisible);\n this._targetDot.setVisible(this._visible && this._targetVisible);\n this._xAxisWire.setVisible(true);\n this._yAxisWire.setVisible(true);\n this._zAxisWire.setVisible(true);\n this._lengthWire.setVisible(true);\n this._lengthLabel.setVisible(true);\n\n this._cpDirty = false;\n }\n }\n\n /**\n * Sets whether this DistanceMeasurement indicates that its measurement is approximate.\n *\n * This is ````true```` by default.\n *\n * @type {Boolean}\n */\n set approximate(approximate) {\n approximate = approximate !== false;\n if (this._approximate === approximate) {\n return;\n }\n this._approximate = approximate;\n this._cpDirty = true;\n this._needUpdate(0);\n }\n\n /**\n * Gets whether this DistanceMeasurement indicates that its measurement is approximate.\n *\n * This is ````true```` by default.\n *\n * @type {Boolean}\n */\n get approximate() {\n return this._approximate;\n }\n\n /**\n * Gets the origin {@link Marker}.\n *\n * @type {Marker}\n */\n get origin() {\n return this._originMarker;\n }\n\n /**\n * Gets the target {@link Marker}.\n *\n * @type {Marker}\n */\n get target() {\n return this._targetMarker;\n }\n\n /**\n * Gets the World-space direct point-to-point distance between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target}.\n *\n * @type {Number}\n */\n get length() {\n this._update();\n const scale = this.plugin.viewer.scene.metrics.scale;\n return this._length * scale;\n }\n\n /**\n * Sets whether this DistanceMeasurement is visible or not.\n *\n * @type Boolean\n */\n set visible(value) {\n value = value !== false;\n this._visible = value;\n this._originDot.setVisible(this._visible && this._originVisible);\n this._targetDot.setVisible(this._visible && this._targetVisible);\n this._lengthWire.setVisible(this._visible && this._wireVisible);\n var axisVisible = this._visible && this._axisVisible;\n this._xAxisWire.setVisible(axisVisible);\n this._yAxisWire.setVisible(axisVisible);\n this._zAxisWire.setVisible(axisVisible);\n this._lengthLabel.setVisible(axisVisible);\n this._xAxisLabel.setVisible(axisVisible && !this._xAxisLabelCulled);\n this._yAxisLabel.setVisible(axisVisible && !this._yAxisLabelCulled);\n this._zAxisLabel.setVisible(axisVisible && !this._zAxisLabelCulled);\n }\n\n /**\n * Gets whether this DistanceMeasurement is visible or not.\n *\n * @type Boolean\n */\n get visible() {\n return this._visible;\n }\n\n /**\n * Sets if the origin {@link Marker} is visible.\n *\n * @type {Boolean}\n */\n set originVisible(value) {\n value = value !== false;\n this._originVisible = value;\n this._originDot.setVisible(this._visible && this._originVisible);\n }\n\n /**\n * Gets if the origin {@link Marker} is visible.\n *\n * @type {Boolean}\n */\n get originVisible() {\n return this._originVisible;\n }\n\n /**\n * Sets if the target {@link Marker} is visible.\n *\n * @type {Boolean}\n */\n set targetVisible(value) {\n value = value !== false;\n this._targetVisible = value;\n this._targetDot.setVisible(this._visible && this._targetVisible);\n }\n\n /**\n * Gets if the target {@link Marker} is visible.\n *\n * @type {Boolean}\n */\n get targetVisible() {\n return this._targetVisible;\n }\n\n /**\n * Sets if the axis-aligned wires between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} are visible.\n *\n * @type {Boolean}\n */\n set axisVisible(value) {\n value = value !== false;\n this._axisVisible = value;\n var axisVisible = this._visible && this._axisVisible;\n this._xAxisWire.setVisible(axisVisible);\n this._yAxisWire.setVisible(axisVisible);\n this._zAxisWire.setVisible(axisVisible);\n this._xAxisLabel.setVisible(axisVisible && !this._xAxisLabelCulled);\n this._yAxisLabel.setVisible(axisVisible && !this._yAxisLabelCulled);\n this._zAxisLabel.setVisible(axisVisible && !this._zAxisLabelCulled);\n }\n\n /**\n * Gets if the axis-aligned wires between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} are visible.\n *\n * @type {Boolean}\n */\n get axisVisible() {\n return this._axisVisible;\n }\n\n /**\n * Sets if the direct point-to-point wire between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} is visible.\n *\n * @type {Boolean}\n */\n set wireVisible(value) {\n value = value !== false;\n this._wireVisible = value;\n var wireVisible = this._visible && this._wireVisible;\n this._lengthLabel.setVisible(wireVisible);\n this._lengthWire.setVisible(wireVisible);\n }\n\n /**\n * Gets if the direct point-to-point wire between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target} is visible.\n *\n * @type {Boolean}\n */\n get wireVisible() {\n return this._wireVisible;\n }\n\n /**\n * @private\n */\n destroy() {\n\n const scene = this.plugin.viewer.scene;\n const metrics = scene.metrics;\n\n if (this._onViewMatrix) {\n scene.camera.off(this._onViewMatrix);\n }\n if (this._onProjMatrix) {\n scene.camera.off(this._onProjMatrix);\n }\n if (this._onCanvasBoundary) {\n scene.canvas.off(this._onCanvasBoundary);\n }\n\n if (this._onMetricsUnits) {\n metrics.off(this._onMetricsUnits);\n }\n if (this._onMetricsScale) {\n metrics.off(this._onMetricsScale);\n }\n if (this._onMetricsOrigin) {\n metrics.off(this._onMetricsOrigin);\n }\n\n this._originDot.destroy();\n this._targetDot.destroy();\n this._xAxisWire.destroy();\n this._yAxisWire.destroy();\n this._zAxisWire.destroy();\n this._lengthLabel.destroy();\n this._xAxisLabel.destroy();\n this._yAxisLabel.destroy();\n this._zAxisLabel.destroy();\n this._lengthWire.destroy();\n\n super.destroy();\n }\n}\n\nconst HOVERING = 0;\nconst FINDING_ORIGIN = 1;\nconst FINDING_TARGET = 2;\n\n/**\n * Creates {@link DistanceMeasurement}s from mouse and touch input.\n *\n * Belongs to a {@link DistanceMeasurementsPlugin}. Located at {@link DistanceMeasurementsPlugin#control}.\n *\n * Once the DistanceMeasurementControl is activated, the first click on any {@link Entity} begins constructing a {@link DistanceMeasurement}, fixing its origin to that Entity. The next click on any Entity will complete the DistanceMeasurement, fixing its target to that second Entity. The DistanceMeasurementControl will then wait for the next click on any Entity, to begin constructing another DistanceMeasurement, and so on, until deactivated.\n *\n * See {@link DistanceMeasurementsPlugin} for more info.\n */\nclass DistanceMeasurementsControl extends Component {\n\n /**\n * @private\n */\n constructor(plugin) {\n\n super(plugin.viewer.scene);\n\n /**\n * The {@link DistanceMeasurementsPlugin} that owns this DistanceMeasurementsControl.\n * @type {DistanceMeasurementsPlugin}\n */\n this.plugin = plugin;\n\n this._active = false;\n this._state = HOVERING;\n this._currentDistMeasurement = null;\n this._prevDistMeasurement = null;\n this._onHoverSurface = null;\n this._onHoverOff = null;\n }\n\n /** Gets if this DistanceMeasurementsControl is currently active, where it is responding to input.\n *\n * @returns {boolean}\n */\n get active() {\n return this._active;\n }\n\n /**\n * Activates this DistanceMeasurementsControl, ready to respond to input.\n */\n activate() {\n\n if (this._active) {\n return;\n }\n\n const cameraControl = this.plugin.viewer.cameraControl;\n\n let over = false;\n let entity = null;\n let worldPos = math.vec3();\n const hoverCanvasPos = math.vec2();\n\n const pickSurfacePrecisionEnabled = this.plugin.viewer.scene.pickSurfacePrecisionEnabled;\n\n this._onHoverSurface = cameraControl.on(\"hoverSurface\", e => {\n\n over = true;\n entity = e.entity;\n worldPos.set(e.worldPos);\n hoverCanvasPos.set(e.canvasPos);\n\n if (this._state === HOVERING) {\n document.body.style.cursor = \"pointer\";\n return;\n }\n\n if (this._currentDistMeasurement) {\n switch (this._state) {\n case FINDING_TARGET:\n this._currentDistMeasurement.wireVisible = true;\n this._currentDistMeasurement.axisVisible = true;\n this._currentDistMeasurement.target.entity = e.entity;\n this._currentDistMeasurement.target.worldPos = e.worldPos;\n document.body.style.cursor = \"pointer\";\n break;\n }\n }\n });\n\n let lastX;\n let lastY;\n const tolerance = 5;\n\n this._onInputMouseDown = this.plugin.viewer.scene.input.on(\"mousedown\", (coords) => {\n lastX = coords[0];\n lastY = coords[1];\n });\n\n this._onInputMouseUp = this.plugin.viewer.scene.input.on(\"mouseup\", (coords) => {\n\n if (coords[0] > lastX + tolerance || coords[0] < lastX - tolerance || coords[1] > lastY + tolerance || coords[1] < lastY - tolerance) {\n return;\n }\n\n switch (this._state) {\n\n case HOVERING:\n\n if (this._prevDistMeasurement) {\n this._prevDistMeasurement.originVisible = true;\n this._prevDistMeasurement.targetVisible = true;\n this._prevDistMeasurement.axisVisible = true;\n }\n if (over) {\n if (pickSurfacePrecisionEnabled) {\n const pickResult = this.plugin.viewer.scene.pick({\n canvasPos: hoverCanvasPos,\n pickSurface: true,\n pickSurfacePrecision: true\n });\n if (pickResult && pickResult.worldPos) {\n worldPos.set(pickResult.worldPos);\n }\n }\n this._currentDistMeasurement = this.plugin.createMeasurement({\n id: math.createUUID(),\n origin: {\n entity: entity,\n worldPos: worldPos\n },\n target: {\n entity: entity,\n worldPos: worldPos\n },\n approximate: true\n });\n this._currentDistMeasurement.axisVisible = false;\n this._currentDistMeasurement.targetVisible = true;\n this._prevDistMeasurement = this._currentDistMeasurement;\n this._state = FINDING_TARGET;\n }\n break;\n\n case FINDING_TARGET:\n\n if (over) {\n\n if (pickSurfacePrecisionEnabled) {\n const pickResult = this.plugin.viewer.scene.pick({\n canvasPos: hoverCanvasPos,\n pickSurface: true,\n pickSurfacePrecision: true\n });\n if (pickResult && pickResult.worldPos) {\n this._currentDistMeasurement.target.worldPos = pickResult.worldPos;\n }\n this._currentDistMeasurement.approximate = false;\n }\n\n this._currentDistMeasurement.axisVisible = true;\n this._currentDistMeasurement.targetVisible = true;\n this._currentDistMeasurement = null;\n this._prevDistMeasurement = null;\n\n this._state = HOVERING;\n\n } else {\n\n if (this._currentDistMeasurement) {\n this._currentDistMeasurement.destroy();\n this._currentDistMeasurement = null;\n this._prevDistMeasurement = null;\n this._state = HOVERING;\n }\n }\n break;\n }\n });\n\n this._onHoverOff = cameraControl.on(\"hoverOff\", e => {\n over = false;\n if (this._currentDistMeasurement) {\n switch (this._state) {\n case HOVERING:\n break;\n case FINDING_ORIGIN:\n this._currentDistMeasurement.wireVisible = false;\n this._currentDistMeasurement.originVisible = false;\n this._currentDistMeasurement.axisVisible = false;\n break;\n case FINDING_TARGET:\n this._currentDistMeasurement.wireVisible = false;\n this._currentDistMeasurement.targetVisible = false;\n this._currentDistMeasurement.axisVisible = false;\n break;\n }\n }\n document.body.style.cursor = \"default\";\n });\n\n this._active = true;\n }\n\n /**\n * Deactivates this DistanceMeasurementsControl, making it unresponsive to input.\n *\n * Destroys any {@link DistanceMeasurement} under construction.\n */\n deactivate() {\n\n if (!this._active) {\n return;\n }\n\n this.reset();\n\n const cameraControl = this.plugin.viewer.cameraControl;\n const input = this.plugin.viewer.scene.input;\n\n input.off(this._onInputMouseDown);\n\n cameraControl.off(this._onHoverSurface);\n cameraControl.off(this._onHoverOff);\n\n this._currentDistMeasurement = null;\n\n this._active = false;\n }\n\n /**\n * Resets this DistanceMeasurementsControl.\n *\n * Destroys any {@link DistanceMeasurement} under construction.\n *\n * Does nothing if the DistanceMeasurementsControl is not active.\n */\n reset() {\n\n if (!this._active) {\n return;\n }\n\n if (this._currentDistMeasurement) {\n this._currentDistMeasurement.destroy();\n this._currentDistMeasurement = null;\n }\n this._prevDistMeasurement = null;\n this._state = HOVERING;\n }\n\n /**\n * @private\n */\n destroy() {\n this.deactivate();\n super.destroy();\n }\n\n}\n\n/**\n * {@link Viewer} plugin for measuring point-to-point distances.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/#measurements_distance_createWithMouse)\n *\n * * [[Example 1: Model with distance measurements](https://xeokit.github.io/xeokit-sdk/examples/#measurements_distance_modelWithMeasurements)]\n * * [[Example 2: Create distance measurements with mouse](https://xeokit.github.io/xeokit-sdk/examples/#measurements_distance_createWithMouse)]\n * * [[Example 3: Configuring units and scale](https://xeokit.github.io/xeokit-sdk/examples/#measurements_distance_unitsAndScale)]\n *\n * ## Overview\n *\n * * A {@link DistanceMeasurement} represents a point-to-point measurement between two 3D points on one or two {@link Entity}s.\n * * As shown on the screen capture above, a DistanceMeasurement has one wire (light blue) that shows the direct point-to-point measurement,\n * and three more wires (red, green and blue) that show the distance on each of the World-space X, Y and Z axis.\n * * Create DistanceMeasurements programmatically with {@link DistanceMeasurementsPlugin#createMeasurement}.\n * * Create DistanceMeasurements interactively using the {@link DistanceMeasurementsControl}, located at {@link DistanceMeasurementsPlugin#control}.\n * * Existing DistanceMeasurements are registered by ID in {@link DistanceMeasurementsPlugin#measurements}.\n * * Destroy DistanceMeasurements using {@link DistanceMeasurementsPlugin#destroyMeasurement}.\n * * Configure global measurement units and scale via {@link Metrics}, located at {@link Scene#metrics}.\n *\n * ## Example 1: Creating DistanceMeasurements Programmatically\n *\n * In our first example, we'll use an {@link XKTLoaderPlugin} to load a model, and then use a DistanceMeasurementsPlugin to programmatically create two {@link DistanceMeasurement}s.\n *\n * Note how each DistanceMeasurement has ````origin```` and ````target```` endpoints, which each indicate a 3D World-space\n * position on the surface of an {@link Entity}. The endpoints can be attached to the same Entity, or to different Entitys.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_distance_modelWithMeasurements)]\n *\n * ````JavaScript\n * import {Viewer, XKTLoaderPlugin, DistanceMeasurementsPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-2.37, 18.97, -26.12];\n * viewer.scene.camera.look = [10.97, 5.82, -11.22];\n * viewer.scene.camera.up = [0.36, 0.83, 0.40];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const distanceMeasurements = new DistanceMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * const myMeasurement1 = distanceMeasurements.createMeasurement({\n * id: \"distanceMeasurement1\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [0.044, 5.998, 17.767]\n * },\n * target: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FLOH\"],\n * worldPos: [4.738, 3.172, 17.768]\n * },\n * visible: true,\n * wireVisible: true\n * });\n *\n * const myMeasurement2 = distanceMeasurements.createMeasurement({\n * id: \"distanceMeasurement2\",\n * origin: {\n * entity: viewer.scene.objects[\"2O2Fr$t4X7Zf8NOew3FNr2\"],\n * worldPos: [0.457, 2.532, 17.766]\n * },\n * target: {\n * entity: viewer.scene.objects[\"1CZILmCaHETO8tf3SgGEXu\"],\n * worldPos: [0.436, 0.001, 22.135]\n * },\n * visible: true,\n * wireVisible: true\n * });\n * });\n * ````\n *\n * ## Example 2: Creating DistanceMeasurements Interactively\n *\n * In our second example, we'll use an {@link XKTLoaderPlugin} to load a model, then we'll use the DistanceMeasurementPlugin's {@link DistanceMeasurementsControl} to interactively create {@link DistanceMeasurement}s with mouse or touch input.\n *\n * After we've activated the DistanceMeasurementsControl, the first click on any {@link Entity} begins constructing a DistanceMeasurement, fixing its\n * origin to that Entity. The next click on any Entity will complete the DistanceMeasurement, fixing its target to that second Entity.\n *\n * The DistanceMeasurementControl will then wait for the next click on any Entity, to begin constructing\n * another DistanceMeasurement, and so on, until deactivated again.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_distance_createWithMouse)]\n *\n * ````JavaScript\n * import {Viewer, XKTLoaderPlugin, DistanceMeasurementsPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-2.37, 18.97, -26.12];\n * viewer.scene.camera.look = [10.97, 5.82, -11.22];\n * viewer.scene.camera.up = [0.36, 0.83, 0.40];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const distanceMeasurements = new DistanceMeasurementsPlugin(viewer);\n *\n * const model = xktLoader.load({\n * src: \"./models/xkt/duplex/duplex.xkt\"\n * });\n *\n * distanceMeasurements.control.activate(); // <------------ Activate the DistanceMeasurementsControl\n * ````\n *\n * ## Example 3: Configuring Measurement Units and Scale\n *\n * In our third example, we'll use the {@link Scene}'s {@link Metrics} to set the global unit of measurement to ````\"meters\"````. We'll also specify that a unit within the World-space coordinate system represents ten meters.\n *\n * The wires belonging to our DistanceMeasurements show their lengths in Real-space coordinates, in the current unit of measurement. They will dynamically update as we set these configurations.\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#measurements_distance_unitsAndScale)]\n *\n * ````JavaScript\n * const metrics = viewer.scene.metrics;\n\n * metrics.units = \"meters\";\n * metrics.scale = 10.0;\n * ````\n */\nclass DistanceMeasurementsPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} [cfg] Plugin configuration.\n * @param {String} [cfg.id=\"DistanceMeasurements\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Number} [cfg.labelMinAxisLength=25] The minimum length, in pixels, of an axis wire beyond which its label is shown.\n * @param {HTMLElement} [cfg.container] Container DOM element for markers and labels. Defaults to ````document.body````.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"DistanceMeasurements\", viewer);\n\n this._container = cfg.container || document.body;\n\n this._control = new DistanceMeasurementsControl(this);\n\n this._measurements = {};\n\n this.labelMinAxisLength = cfg.labelMinAxisLength;\n }\n\n /**\n * @private\n */\n send(name, value) {\n\n }\n\n /**\n * Gets the {@link DistanceMeasurementsControl}, which creates {@link DistanceMeasurement}s from user input.\n *\n * @type {DistanceMeasurementsControl}\n */\n get control() {\n return this._control;\n }\n\n /**\n * Gets the existing {@link DistanceMeasurement}s, each mapped to its {@link DistanceMeasurement#id}.\n *\n * @type {{String:DistanceMeasurement}}\n */\n get measurements() {\n return this._measurements;\n }\n\n /**\n * Sets the minimum length, in pixels, of an axis wire beyond which its label is shown.\n *\n * The axis wire's label is not shown when its length is less than this value.\n *\n * This is ````25```` pixels by default.\n *\n * Must not be less than ````1````.\n *\n * @type {number}\n */\n set labelMinAxisLength(labelMinAxisLength) {\n if (labelMinAxisLength < 1) {\n this.error(\"labelMinAxisLength must be >= 1; defaulting to 25\");\n labelMinAxisLength = 25;\n }\n this._labelMinAxisLength = labelMinAxisLength || 25;\n }\n\n /**\n * Gets the minimum length, in pixels, of an axis wire beyond which its label is shown.\n * @returns {number}\n */\n get labelMinAxisLength() {\n return this._labelMinAxisLength;\n }\n\n /**\n * Creates a {@link DistanceMeasurement}.\n *\n * The DistanceMeasurement is then registered by {@link DistanceMeasurement#id} in {@link DistanceMeasurementsPlugin#measurements}.\n *\n * @param {Object} params {@link DistanceMeasurement} configuration.\n * @param {String} params.id Unique ID to assign to {@link DistanceMeasurement#id}. The DistanceMeasurement will be registered by this in {@link DistanceMeasurementsPlugin#measurements} and {@link Scene.components}. Must be unique among all components in the {@link Viewer}.\n * @param {Number[]} params.origin.worldPos Origin World-space 3D position.\n * @param {Entity} params.origin.entity Origin Entity.\n * @param {Number[]} params.target.worldPos Target World-space 3D position.\n * @param {Entity} params.target.entity Target Entity.\n * @param {Boolean} [params.visible=true] Whether to initially show the {@link DistanceMeasurement}.\n * @param {Boolean} [params.originVisible=true] Whether to initially show the {@link DistanceMeasurement} origin.\n * @param {Boolean} [params.targetVisible=true] Whether to initially show the {@link DistanceMeasurement} target.\n * @param {Boolean} [params.wireVisible=true] Whether to initially show the direct point-to-point wire between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target}.\n * @param {Boolean} [params.axisVisible=true] Whether to initially show the axis-aligned wires between {@link DistanceMeasurement#origin} and {@link DistanceMeasurement#target}.\n * @returns {DistanceMeasurement} The new {@link DistanceMeasurement}.\n */\n createMeasurement(params = {}) {\n if (this.viewer.scene.components[params.id]) {\n this.error(\"Viewer scene component with this ID already exists: \" + params.id);\n delete params.id;\n }\n const origin = params.origin;\n const target = params.target;\n const measurement = new DistanceMeasurement(this, {\n id: params.id,\n plugin: this,\n container: this._container,\n origin: {\n entity: origin.entity,\n worldPos: origin.worldPos\n },\n target: {\n entity: target.entity,\n worldPos: target.worldPos\n },\n visible: params.visible,\n wireVisible: params.wireVisible,\n originVisible: params.originVisible,\n targetVisible: params.targetVisible,\n });\n this._measurements[measurement.id] = measurement;\n measurement.on(\"destroyed\", () => {\n delete this._measurements[measurement.id];\n });\n return measurement;\n }\n\n /**\n * Destroys a {@link DistanceMeasurement}.\n *\n * @param {String} id ID of DistanceMeasurement to destroy.\n */\n destroyMeasurement(id) {\n const measurement = this._measurements[id];\n if (!measurement) {\n this.log(\"DistanceMeasurement not found: \" + id);\n return;\n }\n measurement.destroy();\n }\n\n /**\n * Destroys all {@link DistanceMeasurement}s.\n */\n clear() {\n const ids = Object.keys(this._measurements);\n for (var i = 0, len = ids.length; i < len; i++) {\n this.destroyMeasurement(ids[i]);\n }\n }\n\n /**\n * Destroys this DistanceMeasurementsPlugin.\n *\n * Destroys all {@link DistanceMeasurement}s first.\n */\n destroy() {\n this.clear();\n super.destroy();\n }\n}\n\n/**\n * {@link Viewer} plugin that improves interactivity by disabling expensive rendering effects while the {@link Camera} is moving.\n *\n * # Usage\n *\n * In the example below, we'll create a {@link Viewer}, add a {@link FastNavPlugin}, then use an {@link XKTLoaderPlugin} to load a model.\n *\n * This viewer will only render the model with enhanced edges, physically-based rendering (PBR) and scalable\n * ambient obscurance (SAO) when the camera is not moving.\n *\n * Note how we enable SAO and PBR on the ````Scene```` and the model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#performance_FastNavPlugin)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, FastNavPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true,\n * pbrEnabled: true,\n * saoEnabled: true\n * });\n *\n * viewer.scene.camera.eye = [-66.26, 105.84, -281.92];\n * viewer.scene.camera.look = [42.45, 49.62, -43.59];\n * viewer.scene.camera.up = [0.05, 0.95, 0.15];\n *\n * new FastNavPlugin(viewer, {\n * pbrEnabled: true,\n * saoEnabled: true,\n * edgesEnabled: true\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/HolterTower.xkt\",\n * edges: true,\n * saoEnabled: true,\n * pbrEnabled: true\n * });\n * ````\n *\n * @class FastNavPlugin\n */\nclass FastNavPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg FastNavPlugin configuration.\n * @param {String} [cfg.id=\"FastNav\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Boolean} [cfg.pbrEnabled] Whether to enable physically-based rendering (PBR) when the camera stops moving. When not specified, PBR will be enabled if its currently enabled for the Viewer (see {@link Viewer#pbrEnabled}).\n * @param {Boolean} [cfg.saoEnabled] Whether to enable scalable ambient occlusion (SAO) when the camera stops moving. When not specified, SAO will be enabled if its currently enabled for the Viewer (see {@link Scene#pbrEnabled}).\n * @param {Boolean} [cfg.edgesEnabled] Whether to show enhanced edges when the camera stops moving. When not specified, edges will be enabled if they're currently enabled for the Viewer (see {@link EdgeMaterial#edges}).\n */\n constructor(viewer, cfg = {}) {\n\n super(\"FastNav\", viewer);\n\n this._pbrEnabled = (cfg.pbrEnabled !== undefined && cfg.pbrEnabled !== null) ? cfg.pbrEnabled : viewer.scene.pbrEnabled;\n this._saoEnabled = (cfg.saoEnabled !== undefined && cfg.saoEnabled !== null) ? cfg.saoEnabled : viewer.scene.sao.enabled;\n this._edgesEnabled = (cfg.edgesEnabled !== undefined && cfg.edgesEnabled !== null) ? cfg.edgesEnabled : viewer.scene.edgeMaterial.edges;\n\n this._pInterval = null;\n this._fadeMillisecs = 500;\n\n let timeoutDuration = 600; // Milliseconds\n let timer = timeoutDuration;\n let fastMode = false;\n\n this._onCanvasBoundary = viewer.scene.canvas.on(\"boundary\", () => {\n timer = timeoutDuration;\n if (!fastMode) {\n this._cancelFade();\n viewer.scene.pbrEnabled = false;\n viewer.scene.sao.enabled = false;\n viewer.scene.edgeMaterial.edges = false;\n fastMode = true;\n }\n });\n\n this._onCameraMatrix = viewer.scene.camera.on(\"matrix\", () => {\n timer = timeoutDuration;\n if (!fastMode) {\n this._cancelFade();\n viewer.scene.pbrEnabled = false;\n viewer.scene.sao.enabled = false;\n viewer.scene.edgeMaterial.edges = false;\n fastMode = true;\n }\n });\n\n this._onSceneTick = viewer.scene.on(\"tick\", (tickEvent) => { // Milliseconds\n if (!fastMode) {\n return;\n }\n timer -= tickEvent.deltaTime;\n if (timer <= 0) {\n if (fastMode) {\n this._startFade();\n this._pInterval2 = setTimeout(() => { // Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624\n viewer.scene.pbrEnabled = this._pbrEnabled;\n viewer.scene.sao.enabled = this._saoEnabled;\n viewer.scene.edgeMaterial.edges = this._edgesEnabled;\n }, 100);\n\n fastMode = false;\n }\n }\n });\n\n let down = false;\n\n this._onSceneMouseDown = viewer.scene.input.on(\"mousedown\", () => {\n down = true;\n });\n\n this._onSceneMouseUp = viewer.scene.input.on(\"mouseup\", () => {\n down = false;\n });\n\n this._onSceneMouseMove = viewer.scene.input.on(\"mousemove\", () => {\n if (!down) {\n return;\n }\n timer = timeoutDuration;\n if (!fastMode) {\n this._cancelFade();\n viewer.scene.pbrEnabled = false;\n viewer.scene.sao.enabled = false;\n viewer.scene.edgeMaterial.edges = false;\n fastMode = true;\n }\n });\n }\n\n _startFade() {\n\n if (!this._img) {\n this._initFade();\n }\n\n const interval = 50;\n const inc = 1 / (this._fadeMillisecs / interval);\n\n if (this._pInterval) {\n clearInterval(this._pInterval);\n this._pInterval = null;\n }\n\n const viewer = this.viewer;\n\n const canvas = viewer.scene.canvas.canvas;\n const canvasOffset = cumulativeOffset(canvas);\n const zIndex = (parseInt(canvas.style[\"z-index\"]) || 0) + 1;\n this._img.style.position = \"fixed\";\n this._img.style[\"margin\"] = 0 + \"px\";\n this._img.style[\"z-index\"] = zIndex;\n this._img.style[\"background\"] = canvas.style.background;\n this._img.style.left = canvasOffset.left + \"px\";\n this._img.style.top = canvasOffset.top + \"px\";\n this._img.style.width = canvas.width + \"px\";\n this._img.style.height = canvas.height + \"px\";\n this._img.width = canvas.width;\n this._img.height = canvas.height;\n this._img.src = \"\"; // Needed by Firefox - https://github.com/xeokit/xeokit-sdk/issues/624\n this._img.src = viewer.getSnapshot({\n format: \"png\",\n includeGizmos: true\n });\n this._img.style.visibility = \"visible\";\n this._img.style.opacity = 1;\n\n let opacity = 1;\n this._pInterval = setInterval(() => {\n opacity -= inc;\n if (opacity > 0) {\n this._img.style.opacity = opacity;\n const canvasOffset = cumulativeOffset(canvas);\n this._img.style.left = canvasOffset.left + \"px\";\n this._img.style.top = canvasOffset.top + \"px\";\n this._img.style.width = canvas.width + \"px\";\n this._img.style.height = canvas.height + \"px\";\n this._img.style.opacity = opacity;\n this._img.width = canvas.width;\n this._img.height = canvas.height;\n\n } else {\n this._img.style.opacity = 0;\n this._img.style.visibility = \"hidden\";\n clearInterval(this._pInterval);\n this._pInterval = null;\n }\n }, interval);\n }\n\n _initFade() {\n this._img = document.createElement('img');\n const canvas = this.viewer.scene.canvas.canvas;\n const canvasOffset = cumulativeOffset(canvas);\n (parseInt(canvas.style[\"z-index\"]) || 0) + 1;\n this._img.style.position = \"absolute\";\n this._img.style.visibility = \"hidden\";\n this._img.style[\"pointer-events\"] = \"none\";\n this._img.style[\"z-index\"] = 5;\n this._img.style.left = canvasOffset.left + \"px\";\n this._img.style.top = canvasOffset.top + \"px\";\n this._img.style.width = canvas.width + \"px\";\n this._img.style.height = canvas.height + \"px\";\n this._img.style.opacity = 1;\n this._img.width = canvas.width;\n this._img.height = canvas.height;\n this._img.left = canvasOffset.left;\n this._img.top = canvasOffset.top;\n canvas.parentNode.insertBefore(this._img, canvas.nextSibling);\n }\n\n _cancelFade() {\n if (!this._img) {\n return;\n }\n if (this._pInterval) {\n clearInterval(this._pInterval);\n this._pInterval = null;\n }\n if (this._pInterval2) {\n clearInterval(this._pInterval2);\n this._pInterval2 = null;\n }\n this._img.style.opacity = 0;\n this._img.style.visibility = \"hidden\";\n }\n\n /**\n * Sets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n */\n set pbrEnabled(pbrEnabled) {\n this._pbrEnabled = pbrEnabled;\n }\n\n /**\n * Gets whether to enable physically-based rendering (PBR) when the camera stops moving.\n *\n * @return {Boolean} Whether PBR will be enabled.\n */\n get pbrEnabled() {\n return this._pbrEnabled\n }\n\n /**\n * Sets whether to enable scalable ambient occlusion (SAO) when the camera stops moving.\n *\n * @return {Boolean} Whether SAO will be enabled.\n */\n set saoEnabled(saoEnabled) {\n this._saoEnabled = saoEnabled;\n }\n\n /**\n * Gets whether the FastNavPlugin enables SAO when switching to quality rendering.\n *\n * @return {Boolean} Whether SAO will be enabled.\n */\n get saoEnabled() {\n return this._saoEnabled\n }\n\n /**\n * Sets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n */\n set edgesEnabled(edgesEnabled) {\n this._edgesEnabled = edgesEnabled;\n }\n\n /**\n * Gets whether to show enhanced edges when the camera stops moving.\n *\n * @return {Boolean} Whether edge enhancement will be enabled.\n */\n get edgesEnabled() {\n return this._edgesEnabled\n }\n\n /**\n * @private\n */\n send(name, value) {\n switch (name) {\n case \"clear\":\n this._cancelFade();\n break;\n }\n }\n\n /**\n * Destroys this plugin.\n */\n destroy() {\n this._cancelFade();\n this.viewer.scene.camera.off(this._onCameraMatrix);\n this.viewer.scene.canvas.off(this._onCanvasBoundary);\n this.viewer.scene.input.off(this._onSceneMouseDown);\n this.viewer.scene.input.off(this._onSceneMouseUp);\n this.viewer.scene.input.off(this._onSceneMouseMove);\n this.viewer.scene.off(this._onSceneTick);\n super.destroy();\n if (this._img) {\n this._img.parentNode.removeChild(this._img);\n this._img = null;\n }\n }\n}\n\nfunction cumulativeOffset(element) {\n let top = 0, left = 0;\n do {\n top += element.offsetTop || 0;\n left += element.offsetLeft || 0;\n element = element.offsetParent;\n } while (element);\n\n return {\n top: top,\n left: left\n };\n}\n\n/**\n * Default data access strategy for {@link GLTFLoaderPlugin}.\n *\n * This just loads assets using XMLHttpRequest.\n */\nclass GLTFDefaultDataSource {\n\n constructor() {\n }\n\n /**\n * Gets metamodel JSON.\n *\n * @param {String|Number} metaModelSrc Identifies the metamodel JSON asset.\n * @param {{Function(*)}} ok Fired on successful loading of the metamodel JSON asset.\n * @param {{Function(*)}} error Fired on error while loading the metamodel JSON asset.\n */\n getMetaModel(metaModelSrc, ok, error) {\n utils.loadJSON(metaModelSrc,\n (json) => {\n ok(json);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n\n /**\n * Gets glTF JSON.\n *\n * @param {String|Number} glTFSrc Identifies the glTF JSON asset.\n * @param {Function} ok Fired on successful loading of the glTF JSON asset.\n * @param {Function} error Fired on error while loading the glTF JSON asset.\n */\n getGLTF(glTFSrc, ok, error) {\n utils.loadJSON(glTFSrc,\n (gltf) => {\n ok(gltf);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n\n /**\n * Gets glTF binary attachment.\n *\n * Note that this method requires the source of the glTF JSON asset. This is because the binary attachment\n * source could be relative to the glTF source, IE. it may not be a global ID.\n *\n * @param {String|Number} glTFSrc Identifies the glTF JSON asset.\n * @param {String|Number} binarySrc Identifies the glTF binary asset.\n * @param {Function} ok Fired on successful loading of the glTF binary asset.\n * @param {Function} error Fired on error while loading the glTF binary asset.\n */\n getArrayBuffer(glTFSrc, binarySrc, ok, error) {\n loadArraybuffer(glTFSrc, binarySrc,\n (arrayBuffer) => {\n ok(arrayBuffer);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n}\n\nfunction loadArraybuffer(glTFSrc, binarySrc, ok, err) {\n // Check for data: URI\n var defaultCallback = () => {\n };\n ok = ok || defaultCallback;\n err = err || defaultCallback;\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n const dataUriRegexResult = binarySrc.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n var data = dataUriRegexResult[3];\n data = window.decodeURIComponent(data);\n if (isBase64) {\n data = window.atob(data);\n }\n try {\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (var i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n window.setTimeout(function () {\n ok(buffer);\n }, 0);\n } catch (error) {\n window.setTimeout(function () {\n err(error);\n }, 0);\n }\n } else {\n const basePath = getBasePath(glTFSrc);\n const url = basePath + binarySrc;\n const request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.responseType = 'arraybuffer';\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n ok(request.response);\n } else {\n err('loadArrayBuffer error : ' + request.response);\n }\n }\n };\n request.send(null);\n }\n}\n\nfunction getBasePath(src) {\n var i = src.lastIndexOf(\"/\");\n return (i !== 0) ? src.substring(0, i + 1) : \"\";\n}\n\n/**\n * @private\n * @implements Pickable\n */\nclass PerformanceMesh {\n\n constructor(model, id, color, opacity, layer = null, portionId = 0) {\n\n /**\n * The PerformanceModel that contains this PerformanceModelMesh.\n *\n * A PerformanceModelMesh always belongs to exactly one PerformanceModel.\n *\n * @property model\n * @type {PerformanceModel}\n * @final\n */\n this.model = model;\n\n /**\n * The PerformanceNode that contains this PerformanceModelMesh.\n *\n * A PerformanceModelMesh always belongs to exactly one PerformanceNode.\n *\n * @property object\n * @type {PerformanceNode}\n * @final\n */\n this.object = null;\n\n /**\n * The PerformanceNode that contains this PerformanceModelMesh.\n *\n * A PerformanceModelMesh always belongs to exactly one PerformanceNode.\n *\n * @property object\n * @type {PerformanceNode}\n * @final\n */\n this.parent = null;\n\n /**\n * ID of this PerformanceModelMesh, unique within the xeokit.Scene.\n *\n * @property id\n * @type {String}\n * @final\n */\n this.id = id;\n\n /**\n *\n * @type {Number}\n * @private\n */\n this.pickId = this.model.scene._renderer.getPickID(this);\n\n /**\n * World-space 3D axis-aligned bounding box (AABB).\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @property aabb\n * @final\n * @type {Float64Array}\n */\n this.aabb = math.AABB3();\n\n this._layer = layer;\n this._portionId = portionId;\n\n this._color = [color[0], color[1], color[2], opacity]; // [0..255]\n this._colorize = [color[0], color[1], color[2], opacity]; // [0..255]\n this._colorizing = false;\n\n this._transparent = (opacity < 255);\n\n this.numTriangles = 0;\n\n /**\n * 3D origin of the PerformanceMesh's vertex positions, if they are in relative-to-center (RTC) coordinates.\n *\n * When this is defined, then the positions are RTC, which means that they are relative to this position.\n *\n * @property rtcCenter\n * @type {Float64Array}\n */\n this.rtcCenter = null;\n }\n\n /**\n * @private\n */\n _finalize(entityFlags) {\n this._layer.initFlags(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setVisible(entityFlags) {\n this._layer.setVisible(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setColor(color) {\n this._color[0] = color[0];\n this._color[1] = color[1];\n this._color[2] = color[2];\n if (!this._colorizing) {\n this._layer.setColor(this._portionId, this._color, false);\n }\n }\n\n /** @private */\n _setColorize(colorize) {\n const setOpacity = false;\n if (colorize) {\n this._colorize[0] = colorize[0];\n this._colorize[1] = colorize[1];\n this._colorize[2] = colorize[2];\n this._layer.setColor(this._portionId, this._colorize, setOpacity);\n this._colorizing = true;\n } else {\n this._layer.setColor(this._portionId, this._color, setOpacity);\n this._colorizing = false;\n }\n }\n\n /** @private */\n _setOpacity(opacity, entityFlags) {\n const newTransparent = (opacity < 255);\n const lastTransparent = this._transparent;\n const changingTransparency = (lastTransparent !== newTransparent);\n this._color[3] = opacity;\n this._colorize[3] = opacity;\n this._transparent = newTransparent;\n if (this._colorizing) {\n this._layer.setColor(this._portionId, this._colorize);\n } else {\n this._layer.setColor(this._portionId, this._color);\n }\n if (changingTransparency) {\n this._layer.setTransparent(this._portionId, entityFlags, newTransparent);\n }\n }\n\n /**\n * @private\n */\n _setOffset(offset) {\n this._layer.setOffset(this._portionId, offset);\n }\n\n /**\n * @private\n */\n _setHighlighted(entityFlags) {\n this._layer.setHighlighted(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setXRayed(entityFlags) {\n this._layer.setXRayed(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setSelected(entityFlags) {\n this._layer.setSelected(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setEdges(entityFlags) {\n this._layer.setEdges(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setClippable(entityFlags) {\n this._layer.setClippable(this._portionId, entityFlags, this._transparent);\n }\n\n /**\n * @private\n */\n _setCollidable(entityFlags) {\n this._layer.setCollidable(this._portionId, entityFlags);\n }\n\n /**\n * @private\n */\n _setPickable(flags) {\n this._layer.setPickable(this._portionId, flags, this._transparent);\n }\n\n /**\n * @private\n */\n _setCulled(flags) {\n this._layer.setCulled(this._portionId, flags, this._transparent);\n }\n\n /** @private */\n canPickTriangle() {\n return false;\n }\n\n /** @private */\n drawPickTriangles(renderFlags, frameCtx) {\n // NOP\n }\n\n /** @private */\n pickTriangleSurface(pickResult) {\n // NOP\n }\n\n /** @private */\n precisionRayPickSurface(worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal) {\n return this._layer.precisionRayPickSurface ? this._layer.precisionRayPickSurface(this._portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldSurfaceNormal) : false;\n }\n\n /** @private */\n canPickWorldPos() {\n return true;\n }\n\n /** @private */\n drawPickDepths(frameCtx) {\n this.model.drawPickDepths(frameCtx);\n }\n\n /** @private */\n drawPickNormals(frameCtx) {\n this.model.drawPickNormals(frameCtx);\n }\n\n /**\n * @private\n * @returns {PerformanceNode}\n */\n delegatePickedEntity() {\n return this.parent;\n }\n\n /**\n * @private\n */\n _destroy() {\n this.model.scene._renderer.putPickID(this.pickId);\n }\n}\n\n/**\n * Provides scratch memory for methods like TrianglesBatchingLayer setFlags() and setColors(),\n * so they don't need to allocate temporary arrays that need garbage collection.\n *\n * @private\n */\nclass ScratchMemory {\n\n constructor() {\n this._uint8Arrays = {};\n this._float32Arrays = {};\n }\n\n _clear() {\n this._uint8Arrays = {};\n this._float32Arrays = {};\n }\n\n getUInt8Array(len) {\n let uint8Array = this._uint8Arrays[len];\n if (!uint8Array) {\n uint8Array = new Uint8Array(len);\n this._uint8Arrays[len] = uint8Array;\n }\n return uint8Array;\n }\n\n getFloat32Array(len) {\n let float32Array = this._float32Arrays[len];\n if (!float32Array) {\n float32Array = new Float32Array(len);\n this._float32Arrays[len] = float32Array;\n }\n return float32Array;\n }\n}\n\nconst batchingLayerScratchMemory = new ScratchMemory();\n\nlet countUsers = 0;\n\n/**\n * @private\n */\nfunction getScratchMemory() {\n countUsers++;\n return batchingLayerScratchMemory;\n}\n\n/**\n * @private\n */\nfunction putScratchMemory() {\n if (countUsers === 0) {\n return;\n }\n countUsers--;\n if (countUsers === 0) {\n batchingLayerScratchMemory._clear();\n }\n}\n\n/**\n * @private\n */\nconst RENDER_PASSES = {\n\n // Skipped - suppress rendering\n\n NOT_RENDERED: 0,\n\n // Normal rendering - mutually exclusive modes\n\n COLOR_OPAQUE: 1,\n COLOR_TRANSPARENT: 2,\n\n // Emphasis silhouette rendering - mutually exclusive modes\n\n SILHOUETTE_HIGHLIGHTED: 3,\n SILHOUETTE_SELECTED: 4,\n SILHOUETTE_XRAYED: 5,\n\n // Edges rendering - mutually exclusive modes\n\n EDGES_COLOR_OPAQUE: 6,\n EDGES_COLOR_TRANSPARENT: 7,\n EDGES_HIGHLIGHTED: 8,\n EDGES_SELECTED: 9,\n EDGES_XRAYED: 10,\n\n // Picking\n\n PICK: 11\n};\n\nconst tempVec4$5 = math.vec4();\nconst tempVec3a$S = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingColorRenderer {\n\n constructor(scene, withSAO) {\n this._scene = scene;\n this._withSAO = withSAO;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n const scene = this._scene;\n return [scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = batchingLayer.model;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$S);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n }\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uWorldNormalMatrix = program.getLocation(\"worldNormalMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uLightAmbient = program.getLocation(\"lightAmbient\");\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n\n const lights = lightsState.lights;\n let light;\n\n for (let i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n switch (light.type) {\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n case \"spot\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n }\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (this._withSAO) {\n this._uOcclusionTexture = \"uOcclusionTexture\";\n this._uSAOParams = program.getLocation(\"uSAOParams\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const lights = scene._lightsState.lights;\n const project = scene.camera.project;\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (this._uLightAmbient) {\n gl.uniform4fv(this._uLightAmbient, scene._lightsState.getAmbientColorAndIntensity());\n }\n\n for (let i = 0, len = lights.length; i < len; i++) {\n\n const light = lights[i];\n\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n }\n\n if (this._withSAO) {\n const sao = scene.sao;\n const saoEnabled = sao.possible;\n if (saoEnabled) {\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n tempVec4$5[0] = viewportWidth;\n tempVec4$5[1] = viewportHeight;\n tempVec4$5[2] = sao.blendCutoff;\n tempVec4$5[3] = sao.blendFactor;\n gl.uniform4fv(this._uSAOParams, tempVec4$5);\n this._program.bindTexture(this._uOcclusionTexture, frameCtx.occlusionTexture, 0);\n }\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n let light;\n const src = [];\n\n src.push(\"// Triangles batching draw vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec3 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \");\n\n src.push(\"vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\");\n\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n\n src.push(\"float lambertian = 1.0;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n\n src.push(\"vec3 rgb = (vec3(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0));\");\n src.push(\"vColor = vec4((lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedColor * rgb), float(color.a) / 255.0);\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching draw fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" gl_FragColor = vec4(vColor.rgb * ambient, 1.0);\");\n } else {\n src.push(\" gl_FragColor = vColor;\");\n }\n\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec4$4 = math.vec4();\nconst tempVec3a$R = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingFlatColorRenderer {\n\n constructor(scene, withSAO) {\n this._scene = scene;\n this._withSAO = withSAO;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n const scene = this._scene;\n return [scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = batchingLayer.model;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$R);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uLightAmbient = program.getLocation(\"lightAmbient\");\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n\n const lights = lightsState.lights;\n let light;\n\n for (let i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n switch (light.type) {\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n case \"spot\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n }\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (this._withSAO) {\n this._uOcclusionTexture = \"uOcclusionTexture\";\n this._uSAOParams = program.getLocation(\"uSAOParams\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const lights = scene._lightsState.lights;\n const project = scene.camera.project;\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (this._uLightAmbient) {\n gl.uniform4fv(this._uLightAmbient, scene._lightsState.getAmbientColorAndIntensity());\n }\n\n for (let i = 0, len = lights.length; i < len; i++) {\n\n const light = lights[i];\n\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n }\n\n if (this._withSAO) {\n const sao = scene.sao;\n const saoEnabled = sao.possible;\n if (saoEnabled) {\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n tempVec4$4[0] = viewportWidth;\n tempVec4$4[1] = viewportHeight;\n tempVec4$4[2] = sao.blendCutoff;\n tempVec4$4[3] = sao.blendFactor;\n gl.uniform4fv(this._uSAOParams, tempVec4$4);\n this._program.bindTexture(this._uOcclusionTexture, frameCtx.occlusionTexture, 0);\n }\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Triangles batching flat-shading draw vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"uniform mat4 worldMatrix;\");\n\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const lightsState = scene._lightsState;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching flat-shading draw fragment shader\");\n src.push(\"#extension GL_OES_standard_derivatives : enable\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n src.push(\"uniform mat4 viewMatrix;\");\n\n src.push(\"uniform vec4 lightAmbient;\");\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec4 vColor;\");\n \n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n\n src.push(\"float lambertian = 1.0;\");\n\n src.push(\"vec3 xTangent = dFdx( vViewPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vViewPosition.xyz );\");\n src.push(\"vec3 viewNormal = normalize( cross( xTangent, yTangent ) );\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n \n src.push(\"vec4 fragColor = vec4((lightAmbient.rgb * lightAmbient.a * vColor.rgb) + (reflectedColor * vColor.rgb), vColor.a);\");\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" gl_FragColor = vec4(fragColor.rgb * ambient, 1.0);\");\n } else {\n src.push(\" gl_FragColor = fragColor;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst defaultColor$4 = new Float32Array([1, 1, 1]);\nconst tempVec3a$Q = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingSilhouetteRenderer {\n\n constructor(scene, primitiveType) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n if (renderPass === RENDER_PASSES.SILHOUETTE_XRAYED) {\n const material = scene.xrayMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_HIGHLIGHTED) {\n const material = scene.highlightMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_SELECTED) {\n const material = scene.selectedMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else {\n gl.uniform4fv(this._uColor, defaultColor$4);\n }\n\n const viewMat = (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix;\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMat);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$Q);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n\n const src = [];\n\n src.push(\"// Triangles batching silhouette vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n src.push(\"uniform vec4 color;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\n\n // flags.y = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`if (int(flags.y) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n let i;\n let len;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching silhouette fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"uniform vec4 color;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = color;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$P = math.vec3();\nconst defaultColor$3 = new Float32Array([0,0,0,1]);\n\n/**\n * @private\n */\nclass TrianglesBatchingEdgesRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n if (renderPass === RENDER_PASSES.EDGES_XRAYED) {\n const material = scene.xrayMaterial._state;\n const edgeColor = material.edgeColor;\n const edgeAlpha = material.edgeAlpha;\n gl.uniform4f(this._uColor, edgeColor[0], edgeColor[1], edgeColor[2], edgeAlpha);\n\n } else if (renderPass === RENDER_PASSES.EDGES_HIGHLIGHTED) {\n const material = scene.highlightMaterial._state;\n const edgeColor = material.edgeColor;\n const edgeAlpha = material.edgeAlpha;\n gl.uniform4f(this._uColor, edgeColor[0], edgeColor[1], edgeColor[2], edgeAlpha);\n\n } else if (renderPass === RENDER_PASSES.EDGES_SELECTED) {\n const material = scene.selectedMaterial._state;\n const edgeColor = material.edgeColor;\n const edgeAlpha = material.edgeAlpha;\n gl.uniform4f(this._uColor, edgeColor[0], edgeColor[1], edgeColor[2], edgeAlpha);\n\n } else {\n gl.uniform4fv(this._uColor, defaultColor$3);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$P);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n state.edgeIndicesBuf.bind();\n\n gl.drawElements(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uColor = program.getLocation(\"color\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const project = scene.camera.project;\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Batched geometry edges drawing vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n src.push(\"uniform vec4 color;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n\n // flags.z = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n\n src.push(`if (int(flags.z) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"vColor = vec4(color.r, color.g, color.b, color.a);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry edges drawing fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$O = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingEdgesColorRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$O);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aColor.bindArrayBuffer(state.colorsBuf);\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n state.edgeIndicesBuf.bind();\n\n gl.drawElements(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aColor = program.getAttribute(\"color\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const project = scene.camera.project;\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Batched geometry edges drawing vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n\n // flags.z = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_COLOR_OPAQUE | EDGES_COLOR_TRANSPARENT\n\n src.push(`if (int(flags.z) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n //src.push(\"vColor = vec4(float(color.r-100.0) / 255.0, float(color.g-100.0) / 255.0, float(color.b-100.0) / 255.0, float(color.a) / 255.0);\");\n src.push(\"vColor = vec4(float(color.r*0.5) / 255.0, float(color.g*0.5) / 255.0, float(color.b*0.5) / 255.0, float(color.a) / 255.0);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry edges drawing fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$N = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingPickMeshRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const viewMatrix = rtcCenter ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(camera.project.far + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$N);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aPickColor) {\n this._aPickColor.bindArrayBuffer(state.pickColorsBuf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aPickColor = program.getAttribute(\"pickColor\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program.bind();\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Batched geometry picking vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 pickColor;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vPickColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry picking fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vPickColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vPickColor; \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$M = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingPickDepthRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const viewMatrix = rtcCenter ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n gl.uniform1f(this._uPickZNear, frameCtx.pickZNear);\n gl.uniform1f(this._uPickZFar, frameCtx.pickZFar);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$M);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._uPickZNear = program.getLocation(\"pickZNear\");\n this._uPickZFar = program.getLocation(\"pickZFar\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Triangles batching pick depth vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Triangles batching pick depth fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"vec4 packDepth(const in float depth) {\");\n src.push(\" const vec4 bitShift = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);\");\n src.push(\" vec4 res = fract(depth * bitShift);\");\n src.push(\" res -= res.xxyz * bitMask;\");\n src.push(\" return res;\");\n src.push(\"}\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" gl_FragColor = packDepth(zNormalizedDepth); \"); // Must be linear depth\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$L = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingPickNormalsRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const viewMatrix = rtcCenter ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(camera.project.far + 1.0) / Math.LN2); // TODO: Far should be from projection matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$L);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching pick normals vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec3 normal;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec3 vWorldNormal;\");\n src.push(\"void main(void) {\");\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vec3 worldNormal = octDecode(normal.xy); \");\n src.push(\" vWorldNormal = worldNormal;\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching pick normals fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec3 vWorldNormal;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4((vWorldNormal * 0.5) + 0.5, 1.0);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$K = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingOcclusionRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const camera = scene.camera;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$K);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching occlusion vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n // Only opaque objects can be occluders\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching occlusion fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$J = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingDepthRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._allocate();\n this._hash = this._getHash();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$J);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching depth vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec2 vHighPrecisionZW;\");\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"vHighPrecisionZW = gl_Position.zw;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = (sectionPlanesState.sectionPlanes.length > 0);\n const src = [];\n src.push(\"// Triangles batching depth fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"const float packUpScale = 256. / 255.;\");\n src.push(\"const float unpackDownscale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unpackFactors = unpackDownscale / vec4( packFactors, 1. );\");\n src.push(\"const float shiftRight8 = 1.0 / 256.;\");\n\n src.push(\"vec4 packDepthToRGBA( const in float v ) {\");\n src.push(\" vec4 r = vec4( fract( v * packFactors ), v );\");\n src.push(\" r.yzw -= r.xyz * shiftRight8;\");\n src.push(\" return r * packUpScale;\");\n src.push(\"}\");\n src.push(\"varying vec2 vHighPrecisionZW;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"]) {\n src.push(\" gl_FragColor = vec4(vec3(1.0 - fragCoordZ), 1.0); \");\n } else {\n src.push(\" gl_FragColor = packDepthToRGBA(fragCoordZ); \"); // Must be linear depth\n }\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n stats.memory.programs--;\n }\n}\n\nconst tempVec3a$I = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingNormalsRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(batchingLayer);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$I);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n this._aColor.bindArrayBuffer(state.colorsBuf);// Needed for masking out transparent entities using alpha channel\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uWorldNormalMatrix = program.getLocation(\"worldNormalMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n this._aFlags2 = program.getAttribute(\"flags2\");\n }\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if ( scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry normals vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec3 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \");\n src.push(\" vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\" vViewNormal = viewNormal;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = (sectionPlanesState.sectionPlanes.length > 0);\n const src = [];\n src.push(\"// Batched geometry normals fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"vec3 packNormalToRGB( const in vec3 normal ) {\");\n src.push(\" return normalize( normal ) * 0.5 + 0.5;\");\n src.push(\"}\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4(packNormalToRGB(vViewNormal), 1.0); \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$H = math.vec3();\n\n/**\n * Renders BatchingLayer fragment depths to a shadow map.\n *\n * @private\n */\nclass TrianglesBatchingShadowRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n if (!this._program) {\n this._allocate();\n }\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n if (scene.logarithmicDepthBufferEnabled) {\n gl.uniform1f(this._uZFar, scene.camera.project.far);\n }\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n if (this._aColor) { // Needed for masking out transparent entities using alpha channel\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n state.indicesBuf.bind();\n\n // TODO: Section planes need to be set if RTC center has changed since last RTC center recorded on frameCtx\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n const rtcCenter = batchingLayer._state.rtcCenter;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$H);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uShadowViewMatrix = program.getLocation(\"shadowViewMatrix\");\n this._uShadowProjMatrix = program.getLocation(\"shadowProjMatrix\");\n if (scene.logarithmicDepthBufferEnabled) {\n this._uZFar = program.getLocation(\"zFar\");\n }\n this._uSectionPlanes = [];\n const sectionPlanes = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n }\n\n _bindProgram(frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n program.bind();\n gl.uniformMatrix4fv(this._uShadowViewMatrix, false, frameCtx.shadowViewMatrix);\n gl.uniformMatrix4fv(this._uShadowProjMatrix, false, frameCtx.shadowProjMatrix);\n this._lastLightId = null;\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry shadow vertex shader\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n src.push(\" bool visible = (float(flags.x) > 0.0);\");\n src.push(\" bool transparent = ((float(color.a) / 255.0) < 1.0);\");\n src.push(\" if (!visible || transparent) {\");\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = shadowViewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\" vViewPosition = viewPosition;\");\n src.push(\" gl_Position = shadowProjMatrix * viewPosition;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = (sectionPlanesState.sectionPlanes.length > 0);\n const src = [];\n src.push(\"// Batched geometry shadow fragment shader\");\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vViewPosition;\");\n\n src.push(\"vec4 encodeFloat( const in float v ) {\");\n src.push(\" const vec4 bitShift = vec4(256 * 256 * 256, 256 * 256, 256, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0, 1.0 / 256.0, 1.0 / 256.0, 1.0 / 256.0);\");\n src.push(\" vec4 comp = fract(v * bitShift);\");\n src.push(\" comp -= comp.xxyz * bitMask;\");\n src.push(\" return comp;\");\n src.push(\"}\");\n\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n src.push(\" gl_FragColor = encodeFloat( gl_FragCoord.z); \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec4$3 = math.vec4();\nconst tempVec3a$G = math.vec3();\n\nconst TEXTURE_DECODE_FUNCS$1 = {\n \"linear\": \"linearToLinear\",\n \"sRGB\": \"sRGBToLinear\",\n \"gamma\": \"gammaToLinear\"\n};\n\n/**\n * @private\n */\nclass TrianglesBatchingColorQualityRenderer {\n\n constructor(scene, withSAO) {\n this._scene = scene;\n this._withSAO = withSAO;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n const scene = this._scene;\n return [scene.gammaOutput, scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = batchingLayer.model;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$G);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aNormal) {\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n }\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n if (this._aMetallicRoughness) {\n this._aMetallicRoughness.bindArrayBuffer(state.metallicRoughnessBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uWorldNormalMatrix = program.getLocation(\"worldNormalMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\n\n this._uLightAmbient = program.getLocation(\"lightAmbient\");\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n\n const lights = lightsState.lights;\n let light;\n\n for (let i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n switch (light.type) {\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n case \"spot\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n }\n\n if (lightsState.reflectionMaps.length > 0) {\n this._uReflectionMap = \"reflectionMap\";\n }\n\n if (lightsState.lightMaps.length > 0) {\n this._uLightMap = \"lightMap\";\n }\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aMetallicRoughness = program.getAttribute(\"metallicRoughness\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (this._withSAO) {\n this._uOcclusionTexture = \"uOcclusionTexture\";\n this._uSAOParams = program.getLocation(\"uSAOParams\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const maxTextureUnits = WEBGL_INFO$1.MAX_TEXTURE_UNITS;\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const lightsState = scene._lightsState;\n const lights = lightsState.lights;\n const project = scene.camera.project;\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (this._uLightAmbient) {\n gl.uniform4fv(this._uLightAmbient, scene._lightsState.getAmbientColorAndIntensity());\n }\n\n for (let i = 0, len = lights.length; i < len; i++) {\n\n const light = lights[i];\n\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n }\n\n if (lightsState.reflectionMaps.length > 0 && lightsState.reflectionMaps[0].texture && this._uReflectionMap) {\n program.bindTexture(this._uReflectionMap, lightsState.reflectionMaps[0].texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n\n if (lightsState.lightMaps.length > 0 && lightsState.lightMaps[0].texture && this._uLightMap) {\n program.bindTexture(this._uLightMap, lightsState.lightMaps[0].texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n\n if (this._withSAO) {\n const sao = scene.sao;\n const saoEnabled = sao.possible;\n if (saoEnabled) {\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n tempVec4$3[0] = viewportWidth;\n tempVec4$3[1] = viewportHeight;\n tempVec4$3[2] = sao.blendCutoff;\n tempVec4$3[3] = sao.blendFactor;\n gl.uniform4fv(this._uSAOParams, tempVec4$3);\n this._program.bindTexture(this._uOcclusionTexture, frameCtx.occlusionTexture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n if (this._uGammaFactor) {\n gl.uniform1f(this._uGammaFactor, scene.gammaFactor);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n\n const src = [];\n\n src.push(\"// Triangles batching quality draw vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec3 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec2 metallicRoughness;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n }\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\"vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \");\n src.push(\"vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n if (clippingCaps) {\n src.push(\"vClipPosition = clipPos;\");\n }\n }\n\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vViewNormal = viewNormal;\");\n src.push(\"vColor = color;\");\n src.push(\"vMetallicRoughness = metallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"vWorldNormal = worldNormal.xyz;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n\n src.push(\"// Triangles batching quality draw fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n src.push(\"uniform mat4 viewMatrix;\");\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"uniform samplerCube reflectionMap;\");\n }\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"uniform samplerCube lightMap;\");\n }\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBAToDepth( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToLinear( in vec4 value ) {\");\n src.push(\" return value;\");\n src.push(\"}\");\n src.push(\"vec4 sRGBToLinear( in vec4 value ) {\");\n src.push(\" return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\");\n src.push(\"}\");\n src.push(\"vec4 gammaToLinear( in vec4 value) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\");\n src.push(\"}\");\n if (gammaOutput) {\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n // CONSTANT DEFINITIONS\n\n src.push(\"#define PI 3.14159265359\");\n src.push(\"#define RECIPROCAL_PI 0.31830988618\");\n src.push(\"#define RECIPROCAL_PI2 0.15915494\");\n src.push(\"#define EPSILON 1e-6\");\n\n src.push(\"#define saturate(a) clamp( a, 0.0, 1.0 )\");\n\n // UTILITY DEFINITIONS\n\n src.push(\"vec3 inverseTransformDirection(in vec3 dir, in mat4 matrix) {\");\n src.push(\" return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\");\n src.push(\"}\");\n\n // STRUCTURES\n\n src.push(\"struct IncidentLight {\");\n src.push(\" vec3 color;\");\n src.push(\" vec3 direction;\");\n src.push(\"};\");\n\n src.push(\"struct ReflectedLight {\");\n src.push(\" vec3 diffuse;\");\n src.push(\" vec3 specular;\");\n src.push(\"};\");\n\n src.push(\"struct Geometry {\");\n src.push(\" vec3 position;\");\n src.push(\" vec3 viewNormal;\");\n src.push(\" vec3 worldNormal;\");\n src.push(\" vec3 viewEyeDir;\");\n src.push(\"};\");\n\n src.push(\"struct Material {\");\n src.push(\" vec3 diffuseColor;\");\n src.push(\" float specularRoughness;\");\n src.push(\" vec3 specularColor;\");\n src.push(\" float shine;\"); // Only used for Phong\n src.push(\"};\");\n\n // IRRADIANCE EVALUATION\n\n src.push(\"float GGXRoughnessToBlinnExponent(const in float ggxRoughness) {\");\n src.push(\" float r = ggxRoughness + 0.0001;\");\n src.push(\" return (2.0 / (r * r) - 2.0);\");\n src.push(\"}\");\n\n src.push(\"float getSpecularMIPLevel(const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float maxMIPLevelScalar = float( maxMIPLevel );\");\n src.push(\" float desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( ( blinnShininessExponent * blinnShininessExponent ) + 1.0 );\");\n src.push(\" return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\");\n src.push(\"}\");\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"vec3 getLightProbeIndirectRadiance(const in vec3 reflectVec, const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float mipLevel = 0.5 * getSpecularMIPLevel(blinnShininessExponent, maxMIPLevel);\"); //TODO: a random factor - fix this\n src.push(\" vec3 envMapColor = \" + TEXTURE_DECODE_FUNCS$1[lightsState.reflectionMaps[0].encoding] + \"(textureCube(reflectionMap, reflectVec, mipLevel)).rgb;\");\n src.push(\" return envMapColor;\");\n src.push(\"}\");\n }\n\n // SPECULAR BRDF EVALUATION\n\n src.push(\"vec3 F_Schlick(const in vec3 specularColor, const in float dotLH) {\");\n src.push(\" float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\");\n src.push(\" return ( 1.0 - specularColor ) * fresnel + specularColor;\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_Smith(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" return 1.0 / ( gl * gv );\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" return 0.5 / max( gv + gl, EPSILON );\");\n src.push(\"}\");\n\n src.push(\"float D_GGX(const in float alpha, const in float dotNH) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float denom = ( dotNH * dotNH) * ( a2 - 1.0 ) + 1.0;\");\n src.push(\" return RECIPROCAL_PI * a2 / ( denom * denom);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX(const in IncidentLight incidentLight, const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float alpha = ( roughness * roughness );\");\n src.push(\" vec3 halfDir = normalize( incidentLight.direction + geometry.viewEyeDir );\");\n src.push(\" float dotNL = saturate( dot( geometry.viewNormal, incidentLight.direction ) );\");\n src.push(\" float dotNV = saturate( dot( geometry.viewNormal, geometry.viewEyeDir ) );\");\n src.push(\" float dotNH = saturate( dot( geometry.viewNormal, halfDir ) );\");\n src.push(\" float dotLH = saturate( dot( incidentLight.direction, halfDir ) );\");\n src.push(\" vec3 F = F_Schlick( specularColor, dotLH );\");\n src.push(\" float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\");\n src.push(\" float D = D_GGX( alpha, dotNH );\");\n src.push(\" return F * (G * D);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX_Environment(const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float dotNV = saturate(dot(geometry.viewNormal, geometry.viewEyeDir));\");\n src.push(\" const vec4 c0 = vec4( -1, -0.0275, -0.572, 0.022);\");\n src.push(\" const vec4 c1 = vec4( 1, 0.0425, 1.04, -0.04);\");\n src.push(\" vec4 r = roughness * c0 + c1;\");\n src.push(\" float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;\");\n src.push(\" vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;\");\n src.push(\" return specularColor * AB.x + AB.y;\");\n src.push(\"}\");\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n\n src.push(\"void computePBRLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\" vec3 irradiance = \" + TEXTURE_DECODE_FUNCS$1[lightsState.lightMaps[0].encoding] + \"(textureCube(lightMap, geometry.worldNormal)).rgb;\");\n src.push(\" irradiance *= PI;\");\n src.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\");\n }\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);\");\n src.push(\" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);\");\n src.push(\" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);\");\n src.push(\" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);\");\n src.push(\" vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);\");\n src.push(\" reflectedLight.specular += radiance * specularBRDFContrib;\");\n }\n\n src.push(\"}\");\n }\n\n // MAIN LIGHTING COMPUTATION FUNCTION\n\n src.push(\"void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n src.push(\" float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));\");\n src.push(\" vec3 irradiance = dotNL * incidentLight.color * PI;\");\n src.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);\");\n src.push(\"}\");\n\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n if (clippingCaps) {\n src.push(\" if (dist > (0.002 * vClipPosition.w)) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" gl_FragColor=vec4(1.0, 0.0, 0.0, 1.0);\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" return;\");\n src.push(\"}\");\n } else {\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n src.push(\"}\");\n }\n\n src.push(\"IncidentLight light;\");\n src.push(\"Material material;\");\n src.push(\"Geometry geometry;\");\n src.push(\"ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));\");\n\n src.push(\"vec3 rgb = (vec3(float(vColor.r) / 255.0, float(vColor.g) / 255.0, float(vColor.b) / 255.0));\");\n src.push(\"float alpha = float(vColor.a) / 255.0;\");\n\n src.push(\"vec3 diffuseColor = rgb;\");\n src.push(\"float specularF0 = 1.0;\");\n src.push(\"float metallic = float(vMetallicRoughness.r) / 255.0;\");\n src.push(\"float roughness = float(vMetallicRoughness.g) / 255.0;\");\n src.push(\"float dielectricSpecular = 0.16 * specularF0 * specularF0;\");\n\n src.push(\"material.diffuseColor = diffuseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);\");\n src.push(\"material.specularRoughness = clamp(roughness, 0.04, 1.0);\");\n src.push(\"material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);\");\n\n src.push(\"geometry.position = vViewPosition.xyz;\");\n src.push(\"geometry.viewNormal = -normalize(vViewNormal);\");\n src.push(\"geometry.viewEyeDir = normalize(vViewPosition.xyz);\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"geometry.worldNormal = normalize(vWorldNormal);\");\n }\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n src.push(\"computePBRLightMapping(geometry, material, reflectedLight);\");\n }\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightPos\" + i + \" - vViewPosition.xyz);\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n\n src.push(\"light.color = lightColor\" + i + \".rgb * lightColor\" + i + \".a;\"); // a is intensity\n\n src.push(\"computePBRLighting(light, geometry, material, reflectedLight);\");\n }\n\n src.push(\"vec3 outgoingLight = (lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedLight.diffuse) + (reflectedLight.specular);\");\n\n src.push(\"vec4 fragColor;\");\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBAToDepth(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" fragColor = vec4(outgoingLight.rgb * ambient, alpha);\");\n } else {\n src.push(\" fragColor = vec4(outgoingLight.rgb, alpha);\");\n }\n\n if (gammaOutput) {\n src.push(\"fragColor = linearToGamma(fragColor, gammaFactor);\");\n }\n\n src.push(\"gl_FragColor = fragColor;\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$F = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingPickNormalsFlatRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(batchingLayer);\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const viewMatrix = rtcCenter ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(camera.project.far + 1.0) / Math.LN2); // TODO: Far should be from projection matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$F);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching pick flat normals vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n src.push(\"varying vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vWorldPosition = worldPosition;\");\n if (clipping) {\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles batching pick flat normals fragment shader\");\n src.push(\"#extension GL_OES_standard_derivatives : enable\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"varying vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"varying vec4 vFlags2;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n src.push(\" vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n src.push(\" vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(\" gl_FragColor = vec4((worldNormal * 0.5) + 0.5, 1.0);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\n/**\n * @private\n */\nclass TrianglesBatchingRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._colorRendererWithSAO && (!this._colorRendererWithSAO.getValid())) {\n this._colorRendererWithSAO.destroy();\n this._colorRendererWithSAO = null;\n }\n if (this._flatColorRenderer && (!this._flatColorRenderer.getValid())) {\n this._flatColorRenderer.destroy();\n this._flatColorRenderer = null;\n }\n if (this._flatColorRendererWithSAO && (!this._flatColorRendererWithSAO.getValid())) {\n this._flatColorRendererWithSAO.destroy();\n this._flatColorRendererWithSAO = null;\n }\n if (this._colorQualityRenderer && (!this._colorQualityRenderer.getValid())) {\n this._colorQualityRenderer.destroy();\n this._colorQualityRenderer = null;\n }\n if (this._colorQualityRendererWithSAO && (!this._colorQualityRendererWithSAO.getValid())) {\n this._colorQualityRendererWithSAO.destroy();\n this._colorQualityRendererWithSAO = null;\n }\n if (this._depthRenderer && (!this._depthRenderer.getValid())) {\n this._depthRenderer.destroy();\n this._depthRenderer = null;\n }\n if (this._normalsRenderer && (!this._normalsRenderer.getValid())) {\n this._normalsRenderer.destroy();\n this._normalsRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n if (this._edgesRenderer && (!this._edgesRenderer.getValid())) {\n this._edgesRenderer.destroy();\n this._edgesRenderer = null;\n }\n if (this._edgesColorRenderer && (!this._edgesColorRenderer.getValid())) {\n this._edgesColorRenderer.destroy();\n this._edgesColorRenderer = null;\n }\n if (this._pickMeshRenderer && (!this._pickMeshRenderer.getValid())) {\n this._pickMeshRenderer.destroy();\n this._pickMeshRenderer = null;\n }\n if (this._pickDepthRenderer && (!this._pickDepthRenderer.getValid())) {\n this._pickDepthRenderer.destroy();\n this._pickDepthRenderer = null;\n }\n if (this._pickNormalsRenderer && this._pickNormalsRenderer.getValid() === false) {\n this._pickNormalsRenderer.destroy();\n this._pickNormalsRenderer = null;\n }\n if (this._pickNormalsFlatRenderer && this._pickNormalsFlatRenderer.getValid() === false) {\n this._pickNormalsFlatRenderer.destroy();\n this._pickNormalsFlatRenderer = null;\n }\n if (this._occlusionRenderer && this._occlusionRenderer.getValid() === false) {\n this._occlusionRenderer.destroy();\n this._occlusionRenderer = null;\n }\n if (this._shadowRenderer && (!this._shadowRenderer.getValid())) {\n this._shadowRenderer.destroy();\n this._shadowRenderer = null;\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new TrianglesBatchingColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get colorRendererWithSAO() {\n if (!this._colorRendererWithSAO) {\n this._colorRendererWithSAO = new TrianglesBatchingColorRenderer(this._scene, true);\n }\n return this._colorRendererWithSAO;\n }\n\n get flatColorRenderer() {\n if (!this._flatColorRenderer) {\n this._flatColorRenderer = new TrianglesBatchingFlatColorRenderer(this._scene, false);\n }\n return this._flatColorRenderer;\n }\n\n get flatColorRendererWithSAO() {\n if (!this._flatColorRendererWithSAO) {\n this._flatColorRendererWithSAO = new TrianglesBatchingFlatColorRenderer(this._scene, true);\n }\n return this._flatColorRendererWithSAO;\n }\n\n get colorQualityRenderer() {\n if (!this._colorQualityRenderer) {\n this._colorQualityRenderer = new TrianglesBatchingColorQualityRenderer(this._scene, false);\n }\n return this._colorQualityRenderer;\n }\n\n get colorQualityRendererWithSAO() {\n if (!this._colorQualityRendererWithSAO) {\n this._colorQualityRendererWithSAO = new TrianglesBatchingColorQualityRenderer(this._scene, true);\n }\n return this._colorQualityRendererWithSAO;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new TrianglesBatchingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get depthRenderer() {\n if (!this._depthRenderer) {\n this._depthRenderer = new TrianglesBatchingDepthRenderer(this._scene);\n }\n return this._depthRenderer;\n }\n\n get normalsRenderer() {\n if (!this._normalsRenderer) {\n this._normalsRenderer = new TrianglesBatchingNormalsRenderer(this._scene);\n }\n return this._normalsRenderer;\n }\n\n get edgesRenderer() {\n if (!this._edgesRenderer) {\n this._edgesRenderer = new TrianglesBatchingEdgesRenderer(this._scene);\n }\n return this._edgesRenderer;\n }\n\n get edgesColorRenderer() {\n if (!this._edgesColorRenderer) {\n this._edgesColorRenderer = new TrianglesBatchingEdgesColorRenderer(this._scene);\n }\n return this._edgesColorRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new TrianglesBatchingPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickNormalsRenderer() {\n if (!this._pickNormalsRenderer) {\n this._pickNormalsRenderer = new TrianglesBatchingPickNormalsRenderer(this._scene);\n }\n return this._pickNormalsRenderer;\n }\n\n get pickNormalsFlatRenderer() {\n if (!this._pickNormalsFlatRenderer) {\n this._pickNormalsFlatRenderer = new TrianglesBatchingPickNormalsFlatRenderer(this._scene);\n }\n return this._pickNormalsFlatRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new TrianglesBatchingPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new TrianglesBatchingOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n get shadowRenderer() {\n if (!this._shadowRenderer) {\n this._shadowRenderer = new TrianglesBatchingShadowRenderer(this._scene);\n }\n return this._shadowRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._colorRendererWithSAO) {\n this._colorRendererWithSAO.destroy();\n }\n if (this._flatColorRenderer) {\n this._flatColorRenderer.destroy();\n }\n if (this._flatColorRendererWithSAO) {\n this._flatColorRendererWithSAO.destroy();\n }\n if (this._colorQualityRenderer) {\n this._colorQualityRenderer.destroy();\n }\n if (this._colorQualityRendererWithSAO) {\n this._colorQualityRendererWithSAO.destroy();\n }\n if (this._depthRenderer) {\n this._depthRenderer.destroy();\n }\n if (this._normalsRenderer) {\n this._normalsRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n if (this._edgesRenderer) {\n this._edgesRenderer.destroy();\n }\n if (this._edgesColorRenderer) {\n this._edgesColorRenderer.destroy();\n }\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.destroy();\n }\n if (this._pickDepthRenderer) {\n this._pickDepthRenderer.destroy();\n }\n if (this._pickNormalsRenderer) {\n this._pickNormalsRenderer.destroy();\n }\n if (this._pickNormalsFlatRenderer) {\n this._pickNormalsFlatRenderer.destroy();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.destroy();\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.destroy();\n }\n }\n}\n\nconst cachdRenderers = {};\n\n/**\n * @private\n */\nfunction getBatchingRenderers$1(scene) {\n const sceneId = scene.id;\n let batchingRenderers = cachdRenderers[sceneId];\n if (!batchingRenderers) {\n batchingRenderers = new TrianglesBatchingRenderers(scene);\n cachdRenderers[sceneId] = batchingRenderers;\n batchingRenderers._compile();\n scene.on(\"compile\", () => {\n batchingRenderers._compile();\n });\n scene.on(\"destroyed\", () => {\n delete cachdRenderers[sceneId];\n batchingRenderers._destroy();\n });\n }\n return batchingRenderers;\n}\n\nconst bigIndicesSupported$5 = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\n/**\n * @private\n */\nclass TrianglesBatchingBuffer {\n\n constructor(maxGeometryBatchSize = 5000000) {\n\n if (bigIndicesSupported$5) {\n if (maxGeometryBatchSize > 5000000) {\n maxGeometryBatchSize = 5000000;\n }\n } else {\n if (maxGeometryBatchSize > 65530) {\n maxGeometryBatchSize = 65530;\n }\n }\n\n this.maxVerts = maxGeometryBatchSize;\n this.maxIndices = maxGeometryBatchSize * 3; // Rough rule-of-thumb\n this.positions = [];\n this.colors = [];\n this.metallicRoughness = [];\n this.normals = [];\n this.pickColors = [];\n this.flags = [];\n this.flags2 = [];\n this.offsets = [];\n this.indices = [];\n this.edgeIndices = [];\n }\n}\n\nconst translate = math.mat4();\nconst scale = math.mat4();\n\n/**\n * @private\n */\nfunction quantizePositions(positions, aabb, positionsDecodeMatrix) { // http://cg.postech.ac.kr/research/mesh_comp_mobile/mesh_comp_mobile_conference.pdf\n const lenPositions = positions.length;\n const quantizedPositions = new Uint16Array(lenPositions);\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n const xwid = aabb[3] - xmin;\n const ywid = aabb[4] - ymin;\n const zwid = aabb[5] - zmin;\n const maxInt = 65525;\n const xMultiplier = maxInt / xwid;\n const yMultiplier = maxInt / ywid;\n const zMultiplier = maxInt / zwid;\n const verify = (num) => num >= 0 ? num : 0;\n for (let i = 0; i < lenPositions; i += 3) {\n quantizedPositions[i + 0] = Math.floor(verify(positions[i + 0] - xmin) * xMultiplier);\n quantizedPositions[i + 1] = Math.floor(verify(positions[i + 1] - ymin) * yMultiplier);\n quantizedPositions[i + 2] = Math.floor(verify(positions[i + 2] - zmin) * zMultiplier);\n }\n math.identityMat4(translate);\n math.translationMat4v(aabb, translate);\n math.identityMat4(scale);\n math.scalingMat4v([xwid / maxInt, ywid / maxInt, zwid / maxInt], scale);\n math.mulMat4(translate, scale, positionsDecodeMatrix);\n return quantizedPositions;\n}\n\n/**\n * @private\n */\nfunction transformAndOctEncodeNormals(worldNormalMatrix, normals, lenNormals, compressedNormals, lenCompressedNormals) {\n // http://jcgt.org/published/0003/02/01/\n let oct, dec, best, currentCos, bestCos;\n let i;\n let localNormal = new Float32Array([0, 0, 0, 0]);\n let worldNormal = new Float32Array([0, 0, 0, 0]);\n for (i = 0; i < lenNormals; i += 3) {\n localNormal[0] = normals[i];\n localNormal[1] = normals[i + 1];\n localNormal[2] = normals[i + 2];\n\n math.transformVec3(worldNormalMatrix, localNormal, worldNormal);\n math.normalizeVec3(worldNormal, worldNormal);\n\n // Test various combinations of ceil and floor to minimize rounding errors\n best = oct = octEncodeVec3(worldNormal, \"floor\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = bestCos = dot(worldNormal, dec);\n oct = octEncodeVec3(worldNormal, \"ceil\", \"floor\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(worldNormal, \"floor\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeVec3(worldNormal, \"ceil\", \"ceil\");\n dec = octDecodeVec2(oct);\n currentCos = dot(worldNormal, dec);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n compressedNormals[lenCompressedNormals + i + 0] = best[0];\n compressedNormals[lenCompressedNormals + i + 1] = best[1];\n compressedNormals[lenCompressedNormals + i + 2] = 0.0; // Unused\n }\n lenCompressedNormals += lenNormals;\n return lenCompressedNormals;\n}\n\n/**\n * @private\n */\nfunction octEncodeNormals(normals) { // http://jcgt.org/published/0003/02/01/\n const lenNormals = normals.length;\n const compressedNormals = new Int8Array(lenNormals);\n let oct, best, currentCos, bestCos;\n for (let i = 0; i < lenNormals; i += 3) {\n // Test various combinations of ceil and floor to minimize rounding errors\n best = oct = octEncodeNormal(normals, i, \"floor\", \"floor\");\n octDecodeVec2(oct);\n currentCos = bestCos = dot(normals, i);\n oct = octEncodeNormal(normals, i, \"ceil\", \"floor\");\n octDecodeVec2(oct);\n currentCos = dot(normals, i);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeNormal(normals, i, \"floor\", \"ceil\");\n octDecodeVec2(oct);\n currentCos = dot(normals, i);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n oct = octEncodeNormal(normals, i, \"ceil\", \"ceil\");\n octDecodeVec2(oct);\n currentCos = dot(normals, i);\n if (currentCos > bestCos) {\n best = oct;\n bestCos = currentCos;\n }\n compressedNormals[i + 0] = best[0];\n compressedNormals[i + 1] = best[1];\n compressedNormals[i + 2] = 0.0; // Unused\n }\n return new Int8Array(compressedNormals)\n}\n\n/**\n * @private\n */\nfunction octEncodeVec3(p, xfunc, yfunc) { // Oct-encode single normal vector in 2 bytes\n let x = p[0] / (Math.abs(p[0]) + Math.abs(p[1]) + Math.abs(p[2]));\n let y = p[1] / (Math.abs(p[0]) + Math.abs(p[1]) + Math.abs(p[2]));\n if (p[2] < 0) {\n let tempx = x;\n let tempy = y;\n tempx = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n tempy = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n x = tempx;\n y = tempy;\n }\n return new Int8Array([\n Math[xfunc](x * 127.5 + (x < 0 ? -1 : 0)),\n Math[yfunc](y * 127.5 + (y < 0 ? -1 : 0))\n ]);\n}\n\n/**\n * @private\n */\nfunction octEncodeNormal(array, i, xfunc, yfunc) { // Oct-encode single normal vector in 2 bytes\n let x = array[i] / (Math.abs(array[i]) + Math.abs(array[i + 1]) + Math.abs(array[i + 2]));\n let y = array[i + 1] / (Math.abs(array[i]) + Math.abs(array[i + 1]) + Math.abs(array[i + 2]));\n if (array[i + 2] < 0) {\n let tempx = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n let tempy = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n x = tempx;\n y = tempy;\n }\n return new Int8Array([\n Math[xfunc](x * 127.5 + (x < 0 ? -1 : 0)),\n Math[yfunc](y * 127.5 + (y < 0 ? -1 : 0))\n ]);\n}\n\n/**\n * @private\n */\nfunction octDecodeVec2(oct) { // Decode an oct-encoded normal\n let x = oct[0];\n let y = oct[1];\n x /= x < 0 ? 127 : 128;\n y /= y < 0 ? 127 : 128;\n const z = 1 - Math.abs(x) - Math.abs(y);\n if (z < 0) {\n x = (1 - Math.abs(y)) * (x >= 0 ? 1 : -1);\n y = (1 - Math.abs(x)) * (y >= 0 ? 1 : -1);\n }\n const length = Math.sqrt(x * x + y * y + z * z);\n return [\n x / length,\n y / length,\n z / length\n ];\n}\n\n/**\n * @private\n */\nfunction dot(p, vec3) { // Dot product of a normal in an array against a candidate decoding\n return p[0] * vec3[0] + p[1] * vec3[1] + p[2] * vec3[2];\n}\n\nconst tempMat4$2 = math.mat4();\nconst tempMat4b = math.mat4();\nconst tempVec4a$7 = math.vec4([0, 0, 0, 1]);\nconst tempVec4b$7 = math.vec4([0, 0, 0, 1]);\nconst tempVec4c$7 = math.vec4([0, 0, 0, 1]);\nconst tempOBB3$2 = math.OBB3();\n\nconst tempVec3a$E = math.vec3();\nconst tempVec3b$7 = math.vec3();\nconst tempVec3c$4 = math.vec3();\nconst tempVec3d$2 = math.vec3();\nconst tempVec3e$1 = math.vec3();\nconst tempVec3f$1 = math.vec3();\nconst tempVec3g$1 = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesBatchingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.autoNormals\n * @param cfg.layerIndex\n * @param cfg.positionsDecodeMatrix\n * @param cfg.maxGeometryBatchSize\n * @param cfg.rtcCenter\n * @param cfg.scratchMemory\n * @param cfg.solid\n */\n constructor(model, cfg) {\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"TrianglesBatchingLayer\" + (cfg.solid ? \"-solid\" : \"-surface\") + (cfg.autoNormals ? \"-autonormals\" : \"-normals\");\n\n /**\n * Index of this TrianglesBatchingLayer in {@link PerformanceModel#_layerList}.\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._batchingRenderers = getBatchingRenderers$1(model.scene);\n this.model = model;\n this._buffer = new TrianglesBatchingBuffer(cfg.maxGeometryBatchSize);\n this._scratchMemory = cfg.scratchMemory;\n\n this._state = new RenderState({\n positionsBuf: null,\n offsetsBuf: null,\n normalsBuf: null,\n colorsBuf: null,\n metallicRoughnessBuf: null,\n flagsBuf: null,\n flags2Buf: null,\n indicesBuf: null,\n edgeIndicesBuf: null,\n positionsDecodeMatrix: math.mat4()\n });\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numEdgesLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n this._modelAABB = math.collapseAABB3(); // Model-space AABB\n this._portions = [];\n\n this._finalized = false;\n\n if (cfg.positionsDecodeMatrix) {\n this._state.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix);\n this._preCompressed = true;\n } else {\n this._preCompressed = false;\n }\n\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n /**\n * The axis-aligned World-space boundary of this TrianglesBatchingLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\n\n /**\n * When true, this layer contains solid triangle meshes, otherwise this layer contains surface triangle meshes\n * @type {boolean}\n */\n this.solid = !!cfg.solid;\n }\n\n /**\n * Tests if there is room for another portion in this TrianglesBatchingLayer.\n *\n * @param lenPositions Number of positions we'd like to create in the portion.\n * @param lenIndices Number of indices we'd like to create in this portion.\n * @returns {boolean} True if OK to create another portion.\n */\n canCreatePortion(lenPositions, lenIndices) {\n if (this._finalized) {\n throw \"Already finalized\";\n }\n return ((this._buffer.positions.length + lenPositions) < (this._buffer.maxVerts * 3) && (this._buffer.indices.length + lenIndices) < (this._buffer.maxIndices));\n }\n\n /**\n * Creates a new portion within this TrianglesBatchingLayer, returns the new portion ID.\n *\n * Gives the portion the specified geometry, color and matrix.\n *\n * @param cfg.positions Flat float Local-space positions array.\n * @param [cfg.normals] Flat float normals array.\n * @param [cfg.colors] Flat float colors array.\n * @param cfg.indices Flat int indices array.\n * @param [cfg.edgeIndices] Flat int edges indices array.\n * @param cfg.color Quantized RGB color [0..255,0..255,0..255,0..255]\n * @param cfg.metallic Metalness factor [0..255]\n * @param cfg.roughness Roughness factor [0..255]\n * @param cfg.opacity Opacity [0..255]\n * @param [cfg.meshMatrix] Flat float 4x4 matrix\n * @param [cfg.worldMatrix] Flat float 4x4 matrix\n * @param cfg.worldAABB Flat float AABB World-space AABB\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID\n */\n createPortion(cfg) {\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n const positions = cfg.positions;\n const normals = cfg.normals;\n const indices = cfg.indices;\n const edgeIndices = cfg.edgeIndices;\n const color = cfg.color;\n const metallic = cfg.metallic;\n const roughness = cfg.roughness;\n const colors = cfg.colors;\n const opacity = cfg.opacity;\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.worldAABB;\n const pickColor = cfg.pickColor;\n\n const scene = this.model.scene;\n const buffer = this._buffer;\n const positionsIndex = buffer.positions.length;\n const vertsIndex = positionsIndex / 3;\n const numVerts = positions.length / 3;\n const lenPositions = positions.length;\n\n if (this._preCompressed) {\n\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n\n const bounds = geometryCompressionUtils.getPositionsBounds(positions);\n\n const min = geometryCompressionUtils.decompressPosition(bounds.min, this._state.positionsDecodeMatrix, []);\n const max = geometryCompressionUtils.decompressPosition(bounds.max, this._state.positionsDecodeMatrix, []);\n\n worldAABB[0] = min[0];\n worldAABB[1] = min[1];\n worldAABB[2] = min[2];\n worldAABB[3] = max[0];\n worldAABB[4] = max[1];\n worldAABB[5] = max[2];\n\n if (worldMatrix) {\n math.AABB3ToOBB3(worldAABB, tempOBB3$2);\n math.transformOBB3(worldMatrix, tempOBB3$2);\n math.OBB3ToAABB3(tempOBB3$2, worldAABB);\n }\n\n } else {\n\n const positionsBase = buffer.positions.length;\n\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n\n if (meshMatrix) {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a$7[0] = buffer.positions[i + 0];\n tempVec4a$7[1] = buffer.positions[i + 1];\n tempVec4a$7[2] = buffer.positions[i + 2];\n\n math.transformPoint4(meshMatrix, tempVec4a$7, tempVec4b$7);\n\n buffer.positions[i + 0] = tempVec4b$7[0];\n buffer.positions[i + 1] = tempVec4b$7[1];\n buffer.positions[i + 2] = tempVec4b$7[2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4b$7);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b$7, tempVec4c$7);\n math.expandAABB3Point3(worldAABB, tempVec4c$7);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b$7);\n }\n }\n\n } else {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a$7[0] = buffer.positions[i + 0];\n tempVec4a$7[1] = buffer.positions[i + 1];\n tempVec4a$7[2] = buffer.positions[i + 2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4a$7);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4a$7, tempVec4b$7);\n math.expandAABB3Point3(worldAABB, tempVec4b$7);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4a$7);\n }\n }\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\n\n if (normals && normals.length > 0) {\n\n if (this._preCompressed) {\n\n for (let i = 0, len = normals.length; i < len; i++) {\n buffer.normals.push(normals[i]);\n }\n\n } else {\n\n const worldNormalMatrix = tempMat4$2;\n\n if (meshMatrix) {\n math.inverseMat4(math.transposeMat4(meshMatrix, tempMat4b), worldNormalMatrix); // Note: order of inverse and transpose doesn't matter\n\n } else {\n math.identityMat4(worldNormalMatrix, worldNormalMatrix);\n }\n\n transformAndOctEncodeNormals(worldNormalMatrix, normals, normals.length, buffer.normals, buffer.normals.length);\n }\n }\n\n if (colors) {\n\n for (let i = 0, len = colors.length; i < len; i += 3) {\n buffer.colors.push(colors[i] * 255);\n buffer.colors.push(colors[i + 1] * 255);\n buffer.colors.push(colors[i + 2] * 255);\n buffer.colors.push(255);\n }\n\n } else if (color) {\n\n const r = color[0]; // Color is pre-quantized by PerformanceModel\n const g = color[1];\n const b = color[2];\n const a = opacity;\n\n const metallicValue = (metallic !== null && metallic !== undefined) ? metallic : 0;\n const roughnessValue = (roughness !== null && roughness !== undefined) ? roughness : 255;\n\n for (let i = 0; i < numVerts; i++) {\n\n buffer.colors.push(r);\n buffer.colors.push(g);\n buffer.colors.push(b);\n buffer.colors.push(a);\n\n buffer.metallicRoughness.push(metallicValue);\n buffer.metallicRoughness.push(roughnessValue);\n }\n }\n\n if (indices) {\n for (let i = 0, len = indices.length; i < len; i++) {\n buffer.indices.push(indices[i] + vertsIndex);\n }\n }\n\n if (edgeIndices) {\n for (let i = 0, len = edgeIndices.length; i < len; i++) {\n buffer.edgeIndices.push(edgeIndices[i] + vertsIndex);\n }\n }\n\n {\n const pickColorsBase = buffer.pickColors.length;\n const lenPickColors = numVerts * 4;\n for (let i = pickColorsBase, len = pickColorsBase + lenPickColors; i < len; i += 4) {\n buffer.pickColors.push(pickColor[0]);\n buffer.pickColors.push(pickColor[1]);\n buffer.pickColors.push(pickColor[2]);\n buffer.pickColors.push(pickColor[3]);\n }\n }\n\n if (scene.entityOffsetsEnabled) {\n for (let i = 0; i < numVerts; i++) {\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n }\n }\n\n const portionId = this._portions.length;\n\n const portion = {\n vertsBase: vertsIndex,\n numVerts: numVerts\n };\n\n if (scene.pickSurfacePrecisionEnabled) {\n // Quantized in-memory positions are initialized in finalize()\n if (indices) {\n portion.indices = indices;\n }\n if (scene.entityOffsetsEnabled) {\n portion.offset = new Float32Array(3);\n }\n }\n\n this._portions.push(portion);\n\n this._numPortions++;\n this.model.numPortions++;\n\n return portionId;\n }\n\n /**\n * Builds batch VBOs from appended geometries.\n * No more portions can then be created.\n */\n finalize() {\n\n if (this._finalized) {\n this.model.error(\"Already finalized\");\n return;\n }\n\n const state = this._state;\n const gl = this.model.scene.canvas.gl;\n const buffer = this._buffer;\n\n if (buffer.positions.length > 0) {\n\n const quantizedPositions = (this._preCompressed)\n ? new Uint16Array(buffer.positions)\n : quantizePositions(buffer.positions, this._modelAABB, state.positionsDecodeMatrix); // BOTTLENECK\n\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, quantizedPositions.length, 3, gl.STATIC_DRAW);\n\n if (this.model.scene.pickSurfacePrecisionEnabled) {\n for (let i = 0, numPortions = this._portions.length; i < numPortions; i++) {\n const portion = this._portions[i];\n const start = portion.vertsBase * 3;\n const end = start + (portion.numVerts * 3);\n portion.quantizedPositions = quantizedPositions.slice(start, end);\n }\n }\n }\n\n if (buffer.normals.length > 0) {\n const normals = new Int8Array(buffer.normals);\n let normalized = true; // For oct encoded UInts\n state.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, normals, buffer.normals.length, 3, gl.STATIC_DRAW, normalized);\n }\n\n if (buffer.colors.length > 0) {\n const colors = new Uint8Array(buffer.colors);\n let normalized = false;\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, buffer.colors.length, 4, gl.DYNAMIC_DRAW, normalized);\n }\n\n if (buffer.metallicRoughness.length > 0) {\n const metallicRoughness = new Uint8Array(buffer.metallicRoughness);\n let normalized = false;\n state.metallicRoughnessBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, metallicRoughness, buffer.metallicRoughness.length, 2, gl.STATIC_DRAW, normalized);\n }\n\n if (buffer.positions.length > 0) { // Because we build flags arrays here, get their length from the positions array\n const flagsLength = (buffer.positions.length / 3) * 4;\n const flags = new Uint8Array(flagsLength);\n const flags2 = new Uint8Array(flagsLength);\n let notNormalized = false;\n let normalized = true;\n state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags, flags.length, 4, gl.DYNAMIC_DRAW, notNormalized);\n state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags2, flags2.length, 4, gl.DYNAMIC_DRAW, normalized);\n }\n\n if (buffer.pickColors.length > 0) {\n const pickColors = new Uint8Array(buffer.pickColors);\n let normalized = false;\n state.pickColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, pickColors, buffer.pickColors.length, 4, gl.STATIC_DRAW, normalized);\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n if (buffer.offsets.length > 0) {\n const offsets = new Float32Array(buffer.offsets);\n state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, offsets, buffer.offsets.length, 3, gl.DYNAMIC_DRAW);\n }\n }\n\n const bigIndicesSupported = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\n if (buffer.indices.length > 0) {\n const indices = bigIndicesSupported ? new Uint32Array(buffer.indices) : new Uint16Array(buffer.indices);\n state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, indices, buffer.indices.length, 1, gl.STATIC_DRAW);\n }\n if (buffer.edgeIndices.length > 0) {\n const edgeIndices = bigIndicesSupported ? new Uint32Array(buffer.edgeIndices) : new Uint16Array(buffer.edgeIndices);\n state.edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, edgeIndices, buffer.edgeIndices.length, 1, gl.STATIC_DRAW);\n }\n this._buffer = null;\n this._finalized = true;\n }\n\n isEmpty() {\n return (!this._state.indicesBuf);\n }\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n this._setFlags(portionId, flags, meshTransparent);\n this._setFlags2(portionId, flags);\n }\n\n setVisible(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setHighlighted(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setXRayed(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setSelected(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setEdges(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n } else {\n this._numEdgesLayerPortions--;\n this.model.numEdgesLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags2(portionId, flags);\n }\n\n setCulled(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setColor(portionId, color) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n const portionsIdx = portionId;\n const portion = this._portions[portionsIdx];\n const vertexBase = portion.vertsBase;\n const numVerts = portion.numVerts;\n const firstColor = vertexBase * 4;\n const lenColor = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenColor);\n const r = color[0];\n const g = color[1];\n const b = color[2];\n const a = color[3];\n for (let i = 0; i < lenColor; i += 4) {\n tempArray[i + 0] = r;\n tempArray[i + 1] = g;\n tempArray[i + 2] = b;\n tempArray[i + 3] = a;\n }\n if (this._state.colorsBuf) {\n this._state.colorsBuf.setData(tempArray, firstColor, lenColor);\n }\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n _setFlags(portionId, flags, transparent) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const portionsIdx = portionId;\n const portion = this._portions[portionsIdx];\n const vertexBase = portion.vertsBase;\n const numVerts = portion.numVerts;\n const firstFlag = vertexBase * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenFlags);\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n const edges = !!(flags & ENTITY_FLAGS.EDGES);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n // Color\n\n let f0;\n if (!visible || culled || xrayed) { // Highlight & select are layered on top of color - not mutually exclusive\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (transparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Silhouette\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Edges\n\n let f2 = 0;\n if (!visible || culled) {\n f2 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f2 = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n f2 = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n f2 = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (transparent) {\n f2 = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n f2 = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n f2 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = f0; // x - normal fill\n tempArray[i + 1] = f1; // y - emphasis fill\n tempArray[i + 2] = f2; // z - edges\n tempArray[i + 3] = f3; // w - pick\n }\n\n if (this._state.flagsBuf) {\n this._state.flagsBuf.setData(tempArray, firstFlag, lenFlags);\n }\n }\n\n _setFlags2(portionId, flags) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const portionsIdx = portionId;\n const portion = this._portions[portionsIdx];\n const vertexBase = portion.vertsBase;\n const numVerts = portion.numVerts;\n const firstFlag = vertexBase * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenFlags);\n\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = clippable;\n }\n\n if (this._state.flags2Buf) {\n this._state.flags2Buf.setData(tempArray, firstFlag, lenFlags);\n }\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n const portionsIdx = portionId;\n const portion = this._portions[portionsIdx];\n const vertexBase = portion.vertsBase;\n const numVerts = portion.numVerts;\n const firstOffset = vertexBase * 3;\n const lenOffsets = numVerts * 3;\n const tempArray = this._scratchMemory.getFloat32Array(lenOffsets);\n const x = offset[0];\n const y = offset[1];\n const z = offset[2];\n for (let i = 0; i < lenOffsets; i += 3) {\n tempArray[i + 0] = x;\n tempArray[i + 1] = y;\n tempArray[i + 2] = z;\n }\n if (this._state.offsetsBuf) {\n this._state.offsetsBuf.setData(tempArray, firstOffset, lenOffsets);\n }\n if (this.model.scene.pickSurfacePrecisionEnabled) {\n portion.offset[0] = offset[0];\n portion.offset[1] = offset[1];\n portion.offset[2] = offset[2];\n }\n }\n\n // ---------------------- COLOR RENDERING -----------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (frameCtx.withSAO && this.model.saoEnabled) {\n if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.normalsBuf) {\n if (this._batchingRenderers.colorQualityRendererWithSAO) {\n this._batchingRenderers.colorQualityRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._state.normalsBuf) {\n if (this._batchingRenderers.colorRendererWithSAO) {\n this._batchingRenderers.colorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._batchingRenderers.flatColorRendererWithSAO) {\n this._batchingRenderers.flatColorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n }\n } else {\n if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.normalsBuf) {\n if (this._batchingRenderers.colorQualityRenderer) {\n this._batchingRenderers.colorQualityRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._state.normalsBuf) {\n if (this._batchingRenderers.colorRenderer) {\n this._batchingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._batchingRenderers.flatColorRenderer) {\n this._batchingRenderers.flatColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n }\n }\n }\n\n _updateBackfaceCull(renderFlags, frameCtx) {\n const backfaces = this.model.backfaces || (!this.solid) || renderFlags.sectioned;\n if (frameCtx.backfaces !== backfaces) {\n const gl = frameCtx.gl;\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.normalsBuf) {\n if (this._batchingRenderers.colorQualityRenderer) {\n this._batchingRenderers.colorQualityRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else {\n if (this._state.normalsBuf) {\n if (this._batchingRenderers.colorRenderer) {\n this._batchingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else {\n if (this._batchingRenderers.flatColorRenderer) {\n this._batchingRenderers.flatColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n }\n }\n\n // ---------------------- RENDERING SAO POST EFFECT TARGETS --------------\n\n drawDepth(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._batchingRenderers.depthRenderer) {\n this._batchingRenderers.depthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); // Assume whatever post-effect uses depth (eg SAO) does not apply to transparent objects\n }\n }\n\n drawNormals(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._batchingRenderers.normalsRenderer) {\n this._batchingRenderers.normalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); // Assume whatever post-effect uses normals (eg SAO) does not apply to transparent objects\n }\n }\n\n // ---------------------- SILHOUETTE RENDERING -----------------------------------\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n // ---------------------- EDGES RENDERING -----------------------------------\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numEdgesLayerPortions === 0) {\n return;\n }\n if (this._batchingRenderers.edgesColorRenderer) {\n this._batchingRenderers.edgesColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_COLOR_OPAQUE);\n }\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numEdgesLayerPortions === 0 || this._numTransparentLayerPortions === 0) {\n return;\n }\n if (this._batchingRenderers.edgesColorRenderer) {\n this._batchingRenderers.edgesColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_COLOR_TRANSPARENT);\n }\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._batchingRenderers.edgesRenderer) {\n this._batchingRenderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_HIGHLIGHTED);\n }\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._batchingRenderers.edgesRenderer) {\n this._batchingRenderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_SELECTED);\n }\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._batchingRenderers.edgesRenderer) {\n this._batchingRenderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_XRAYED);\n }\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n drawOcclusion(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._batchingRenderers.occlusionRenderer) {\n this._batchingRenderers.occlusionRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n drawShadow(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._batchingRenderers.shadowRenderer) {\n this._batchingRenderers.shadowRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n //---- PICKING ----------------------------------------------------------------------------------------------------\n\n drawPickMesh(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._batchingRenderers.pickMeshRenderer) {\n this._batchingRenderers.pickMeshRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickDepths(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._batchingRenderers.pickDepthRenderer) {\n this._batchingRenderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickNormals(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._state.normalsBuf) {\n if (this._batchingRenderers.pickNormalsRenderer) {\n this._batchingRenderers.pickNormalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n } else {\n if (this._batchingRenderers.pickNormalsFlatRenderer) {\n this._batchingRenderers.pickNormalsFlatRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n }\n\n //------------------------------------------------------------------------------------------------\n\n precisionRayPickSurface(portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldNormal) {\n\n if (!this.model.scene.pickSurfacePrecisionEnabled) {\n return false;\n }\n\n const state = this._state;\n const portion = this._portions[portionId];\n\n if (!portion) {\n this.model.error(\"portion not found: \" + portionId);\n return false;\n }\n\n const positions = portion.quantizedPositions;\n const indices = portion.indices;\n const rtcCenter = state.rtcCenter;\n const offset = portion.offset;\n\n const rtcRayOrigin = tempVec3a$E;\n const rtcRayDir = tempVec3b$7;\n\n rtcRayOrigin.set(rtcCenter ? math.subVec3(worldRayOrigin, rtcCenter, tempVec3c$4) : worldRayOrigin); // World -> RTC\n rtcRayDir.set(worldRayDir);\n\n if (offset) {\n math.subVec3(rtcRayOrigin, offset);\n }\n\n math.transformRay(this.model.worldNormalMatrix, rtcRayOrigin, rtcRayDir, rtcRayOrigin, rtcRayDir); // RTC -> local\n\n const a = tempVec3d$2;\n const b = tempVec3e$1;\n const c = tempVec3f$1;\n\n let gotIntersect = false;\n let closestDist = 0;\n const closestIntersectPos = tempVec3g$1;\n\n for (let i = 0, len = indices.length; i < len; i += 3) {\n\n const ia = indices[i] * 3;\n const ib = indices[i + 1] * 3;\n const ic = indices[i + 2] * 3;\n\n a[0] = positions[ia];\n a[1] = positions[ia + 1];\n a[2] = positions[ia + 2];\n\n b[0] = positions[ib];\n b[1] = positions[ib + 1];\n b[2] = positions[ib + 2];\n\n c[0] = positions[ic];\n c[1] = positions[ic + 1];\n c[2] = positions[ic + 2];\n\n math.decompressPosition(a, state.positionsDecodeMatrix);\n math.decompressPosition(b, state.positionsDecodeMatrix);\n math.decompressPosition(c, state.positionsDecodeMatrix);\n\n if (math.rayTriangleIntersect(rtcRayOrigin, rtcRayDir, a, b, c, closestIntersectPos)) {\n\n math.transformPoint3(this.model.worldMatrix, closestIntersectPos, closestIntersectPos);\n\n if (offset) {\n math.addVec3(closestIntersectPos, offset);\n }\n\n if (rtcCenter) {\n math.addVec3(closestIntersectPos, rtcCenter);\n }\n\n const dist = Math.abs(math.lenVec3(math.subVec3(closestIntersectPos, worldRayOrigin, [])));\n\n if (!gotIntersect || dist > closestDist) {\n closestDist = dist;\n worldSurfacePos.set(closestIntersectPos);\n if (worldNormal) { // Not that wasteful to eagerly compute - unlikely to hit >2 surfaces on most geometry\n math.triangleNormal(a, b, c, worldNormal);\n }\n gotIntersect = true;\n }\n }\n }\n\n if (gotIntersect && worldNormal) {\n math.transformVec3(this.model.worldNormalMatrix, worldNormal, worldNormal);\n math.normalizeVec3(worldNormal);\n }\n\n return gotIntersect;\n }\n\n // ---------\n\n destroy() {\n const state = this._state;\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n state.positionsBuf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.normalsBuf) {\n state.normalsBuf.destroy();\n state.normalsBuf = null;\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.metallicRoughnessBuf) {\n state.metallicRoughnessBuf.destroy();\n state.metallicRoughnessBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = null;\n }\n if (state.pickColorsBuf) {\n state.pickColorsBuf.destroy();\n state.pickColorsBuf = null;\n }\n if (state.indicesBuf) {\n state.indicesBuf.destroy();\n state.indicessBuf = null;\n }\n if (state.edgeIndicesBuf) {\n state.edgeIndicesBuf.destroy();\n state.edgeIndicessBuf = null;\n }\n state.destroy();\n }\n}\n\nconst tempVec4$2 = math.vec4();\nconst tempVec3a$D = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingColorRenderer {\n\n constructor(scene, withSAO) {\n this._scene = scene;\n this._withSAO = withSAO;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n const scene = this._scene;\n return [scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$D);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aModelNormalMatrixCol0.bindArrayBuffer(state.modelNormalMatrixCol0Buf);\n this._aModelNormalMatrixCol1.bindArrayBuffer(state.modelNormalMatrixCol1Buf);\n this._aModelNormalMatrixCol2.bindArrayBuffer(state.modelNormalMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uWorldNormalMatrix = program.getLocation(\"worldNormalMatrix\");\n\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uLightAmbient = program.getLocation(\"lightAmbient\");\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n\n const lights = lightsState.lights;\n let light;\n\n for (let i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n switch (light.type) {\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n case \"spot\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n }\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aOffset = program.getAttribute(\"offset\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._aModelNormalMatrixCol0 = program.getAttribute(\"modelNormalMatrixCol0\");\n this._aModelNormalMatrixCol1 = program.getAttribute(\"modelNormalMatrixCol1\");\n this._aModelNormalMatrixCol2 = program.getAttribute(\"modelNormalMatrixCol2\");\n\n this._uOcclusionTexture = \"uOcclusionTexture\";\n this._uSAOParams = program.getLocation(\"uSAOParams\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n const lights = lightsState.lights;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (this._uLightAmbient) {\n gl.uniform4fv(this._uLightAmbient, scene._lightsState.getAmbientColorAndIntensity());\n }\n\n for (let i = 0, len = lights.length; i < len; i++) {\n const light = lights[i];\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n }\n\n if (this._withSAO) {\n const sao = scene.sao;\n const saoEnabled = sao.possible;\n if (saoEnabled) {\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n tempVec4$2[0] = viewportWidth;\n tempVec4$2[1] = viewportHeight;\n tempVec4$2[2] = sao.blendCutoff;\n tempVec4$2[3] = sao.blendFactor;\n gl.uniform4fv(this._uSAOParams, tempVec4$2);\n this._program.bindTexture(this._uOcclusionTexture, frameCtx.occlusionTexture, 0);\n }\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n let i;\n let len;\n let light;\n const src = [];\n\n src.push(\"// Instancing geometry drawing vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec2 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"attribute vec4 modelNormalMatrixCol0;\");\n src.push(\"attribute vec4 modelNormalMatrixCol1;\");\n src.push(\"attribute vec4 modelNormalMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n for (i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vec4 modelNormal = vec4(octDecode(normal.xy), 0.0); \");\n src.push(\"vec4 worldNormal = worldNormalMatrix * vec4(dot(modelNormal, modelNormalMatrixCol0), dot(modelNormal, modelNormalMatrixCol1), dot(modelNormal, modelNormalMatrixCol2), 0.0);\");\n src.push(\"vec3 viewNormal = normalize(vec4(viewNormalMatrix * worldNormal).xyz);\");\n\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n\n src.push(\"float lambertian = 1.0;\");\n for (i = 0, len = lightsState.lights.length; i < len; i++) {\n light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n\n src.push(\"vec3 rgb = (vec3(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0));\");\n src.push(\"vColor = vec4((lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedColor * rgb), float(color.a) / 255.0);\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry drawing fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n\n if (this._withSAO) {\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" gl_FragColor = vec4(vColor.rgb * ambient, 1.0);\");\n } else {\n src.push(\" gl_FragColor = vColor;\");\n }\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec4$1 = math.vec4();\nconst tempVec3a$C = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingFlatColorRenderer {\n\n constructor(scene, withSAO) {\n this._scene = scene;\n this._withSAO = withSAO;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n const scene = this._scene;\n return [scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$C);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n \n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n \n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uLightAmbient = program.getLocation(\"lightAmbient\");\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n\n const lights = lightsState.lights;\n let light;\n\n for (let i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n switch (light.type) {\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n case \"spot\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n }\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aOffset = program.getAttribute(\"offset\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n \n this._uOcclusionTexture = \"uOcclusionTexture\";\n this._uSAOParams = program.getLocation(\"uSAOParams\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n const lights = lightsState.lights;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (this._uLightAmbient) {\n gl.uniform4fv(this._uLightAmbient, scene._lightsState.getAmbientColorAndIntensity());\n }\n\n for (let i = 0, len = lights.length; i < len; i++) {\n const light = lights[i];\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n }\n\n if (this._withSAO) {\n const sao = scene.sao;\n const saoEnabled = sao.possible;\n if (saoEnabled) {\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n tempVec4$1[0] = viewportWidth;\n tempVec4$1[1] = viewportHeight;\n tempVec4$1[2] = sao.blendCutoff;\n tempVec4$1[3] = sao.blendFactor;\n gl.uniform4fv(this._uSAOParams, tempVec4$1);\n this._program.bindTexture(this._uOcclusionTexture, frameCtx.occlusionTexture, 0);\n }\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Instancing geometry flat-shading drawing vertex shader\");\n src.push(\"#extension GL_OES_standard_derivatives : enable\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n \n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n \n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n let i;\n let len;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry flat-shading drawing fragment shader\");\n src.push(\"#extension GL_OES_standard_derivatives : enable\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBToFloat( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n src.push(\"uniform mat4 viewMatrix;\");\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n for (i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec4 vColor;\");\n \n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\");\n src.push(\" }\");\n src.push(\"}\");\n }\n\n src.push(\"vec3 reflectedColor = vec3(0.0, 0.0, 0.0);\");\n src.push(\"vec3 viewLightDir = vec3(0.0, 0.0, -1.0);\");\n\n src.push(\"float lambertian = 1.0;\");\n\n src.push(\"vec3 xTangent = dFdx( vViewPosition.xyz );\");\n src.push(\"vec3 yTangent = dFdy( vViewPosition.xyz );\");\n src.push(\"vec3 viewNormal = normalize( cross( xTangent, yTangent ) );\");\n\n for (i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = -normalize(lightPos\" + i + \" - viewPosition.xyz);\");\n } else {\n src.push(\"viewLightDir = -normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"viewLightDir = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"viewLightDir = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n src.push(\"lambertian = max(dot(-viewNormal, viewLightDir), 0.0);\");\n src.push(\"reflectedColor += lambertian * (lightColor\" + i + \".rgb * lightColor\" + i + \".a);\");\n }\n\n src.push(\"vec4 fragColor = vec4((lightAmbient.rgb * lightAmbient.a * vColor.rgb) + (reflectedColor * vColor.rgb), vColor.a);\");\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBToFloat(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" gl_FragColor = vec4(fragColor.rgb * ambient, 1.0);\");\n } else {\n src.push(\" gl_FragColor = fragColor;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$B = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingSilhouetteRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(instancingLayer.model.scene);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n if (renderPass === RENDER_PASSES.SILHOUETTE_XRAYED) {\n const material = scene.xrayMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_HIGHLIGHTED) {\n const material = scene.highlightMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_SELECTED) {\n const material = scene.selectedMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else {\n gl.uniform4fv(this._uColor, math.vec3([1, 1, 1]));\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$B);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0); // TODO: Is this needed\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if ( scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Instancing fill vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n src.push(\"uniform vec4 color;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\n\n // flags.y = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`if (int(flags.y) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing fill fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"uniform vec4 color;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = color;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$A = math.vec3();\nconst defaultColor$2 = new Float32Array([0,0,0,1]);\n\n/**\n * @private\n */\nclass TrianglesInstancingEdgesRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(instancingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n if (renderPass === RENDER_PASSES.EDGES_XRAYED) {\n const material = scene.xrayMaterial._state;\n const edgeColor = material.edgeColor;\n const edgeAlpha = material.edgeAlpha;\n gl.uniform4f(this._uColor, edgeColor[0], edgeColor[1], edgeColor[2], edgeAlpha);\n\n } else if (renderPass === RENDER_PASSES.EDGES_HIGHLIGHTED) {\n const material = scene.highlightMaterial._state;\n const edgeColor = material.edgeColor;\n const edgeAlpha = material.edgeAlpha;\n gl.uniform4f(this._uColor, edgeColor[0], edgeColor[1], edgeColor[2], edgeAlpha);\n\n } else if (renderPass === RENDER_PASSES.EDGES_SELECTED) {\n const material = scene.selectedMaterial._state;\n const edgeColor = material.edgeColor;\n const edgeAlpha = material.edgeAlpha;\n gl.uniform4f(this._uColor, edgeColor[0], edgeColor[1], edgeColor[2], edgeAlpha);\n\n } else {\n gl.uniform4fv(this._uColor, defaultColor$2);\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$A);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.edgeIndicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0); // TODO: Is this needed\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n\n if (this._aFlags) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n }\n\n if (this._aFlags2) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uColor = program.getLocation(\"color\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if ( scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles instancing edges vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"uniform vec4 color;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.z = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n\n src.push(`if (int(flags.z) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"vColor = vec4(color.r, color.g, color.b, color.a);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry edges drawing fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$z = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingEdgesColorRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(instancingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$z);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.edgeIndicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.LINES, state.edgeIndicesBuf.numItems, state.edgeIndicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0); // TODO: Is this needed\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n\n if (this._aFlags) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n }\n\n if (this._aFlags2) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aColor = program.getAttribute(\"color\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if ( scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Triangles instancing edges vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.z = NOT_RENDERED | EDGES_COLOR_OPAQUE | EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n // renderPass = EDGES_HIGHLIGHTED | EDGES_XRAYED | EDGES_SELECTED\n\n src.push(`if (int(flags.z) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n // src.push(\"vColor = vec4(float(color.r-100.0) / 255.0, float(color.g-100.0) / 255.0, float(color.b-100.0) / 255.0, float(color.a) / 255.0);\");\n src.push(\"vColor = vec4(float(color.r*0.5) / 255.0, float(color.g*0.5) / 255.0, float(color.b*0.5) / 255.0, float(color.a) / 255.0);\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry edges drawing fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = vColor;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$y = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingPickMeshRenderer {\n\n constructor(scene) {\n\n this._scene = scene;\n this._hash = this._getHash();\n\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const rtcPickViewMatrix = (rtcCenter) ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(camera.project.far + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPickColor.bindArrayBuffer(state.pickColorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aPickColor.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$y);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aPickColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aPickColor = program.getAttribute(\"pickColor\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n\n program.bind();\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Instancing geometry picking vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 pickColor;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vPickColor;\");\n src.push(\"void main(void) {\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry picking fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vPickColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = vPickColor; \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$x = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingPickDepthRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(instancingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const camera = scene.camera;\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const rtcPickViewMatrix = (rtcCenter) ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n gl.uniform1f(this._uPickZNear, frameCtx.pickZNear);\n gl.uniform1f(this._uPickZFar, frameCtx.pickZFar);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$x);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPickZNear = program.getLocation(\"pickZNear\");\n this._uPickZFar = program.getLocation(\"pickZFar\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n this._program.bind();\n\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Instancing geometry depth vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\" vViewPosition = viewPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry depth fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"vec4 packDepth(const in float depth) {\");\n src.push(\" const vec4 bitShift = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);\");\n src.push(\" vec4 res = fract(depth * bitShift);\");\n src.push(\" res -= res.xxyz * bitMask;\");\n src.push(\" return res;\");\n src.push(\"}\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" gl_FragColor = packDepth(zNormalizedDepth); \"); // Must be linear depth\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$w = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingPickNormalsRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(instancingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n // In practice, these binds will only happen once per frame\n // because we pick normals on a single previously-picked mesh\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const rtcPickViewMatrix = (rtcCenter) ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(camera.project.far + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$w);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aModelNormalMatrixCol0.bindArrayBuffer(state.modelNormalMatrixCol0Buf);\n this._aModelNormalMatrixCol1.bindArrayBuffer(state.modelNormalMatrixCol1Buf);\n this._aModelNormalMatrixCol2.bindArrayBuffer(state.modelNormalMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uWorldNormalMatrix = program.getLocation(\"worldNormalMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uSectionPlanes = [];\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._aModelNormalMatrixCol0 = program.getAttribute(\"modelNormalMatrixCol0\");\n this._aModelNormalMatrixCol1 = program.getAttribute(\"modelNormalMatrixCol1\");\n this._aModelNormalMatrixCol2 = program.getAttribute(\"modelNormalMatrixCol2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry normals vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec2 normal;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"attribute vec4 modelNormalMatrixCol0;\");\n src.push(\"attribute vec4 modelNormalMatrixCol1;\");\n src.push(\"attribute vec4 modelNormalMatrixCol2;\");\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec3 vWorldNormal;\");\n src.push(\"void main(void) {\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vec4 modelNormal = vec4(octDecode(normal.xy), 0.0); \");\n src.push(\" vec3 worldNormal = vec3(dot(modelNormal, modelNormalMatrixCol0), dot(modelNormal, modelNormalMatrixCol1), dot(modelNormal, modelNormalMatrixCol2));\");\n src.push(\" vWorldNormal = worldNormal;\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry normals fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec3 vWorldNormal;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4((vWorldNormal * 0.5) + 0.5, 1.0);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$v = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingOcclusionRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$v);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n }\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n if (this._aColor) {\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n }\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing occlusion vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing occlusion fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$u = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingDepthRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$u);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry depth drawing vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\");\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec2 vHighPrecisionZW;\");\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"vHighPrecisionZW = gl_Position.zw;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n let i;\n let len;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry depth drawing fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n if (!WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"]) {\n\n src.push(\"const float packUpScale = 256. / 255.;\");\n src.push(\"const float unpackDownscale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unpackFactors = unpackDownscale / vec4( packFactors, 1. );\");\n src.push(\"const float shiftRight8 = 1.0 / 256.;\");\n\n src.push(\"vec4 packDepthToRGBA( const in float v ) {\");\n src.push(\" vec4 r = vec4( fract( v * packFactors ), v );\");\n src.push(\" r.yzw -= r.xyz * shiftRight8;\");\n src.push(\" return r * packUpScale;\");\n src.push(\"}\");\n }\n src.push(\"varying vec2 vHighPrecisionZW;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"WEBGL_depth_texture\"]) {\n src.push(\" gl_FragColor = vec4(vec3(1.0 - fragCoordZ), 1.0); \");\n } else {\n src.push(\" gl_FragColor = packDepthToRGBA(fragCoordZ); \"); // Must be linear depth\n }\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$t = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingNormalsRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(instancingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$t);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uWorldNormalMatrix = program.getLocation(\"worldNormalMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n\n if (this._aFlags2) {\n this._aFlags2 = program.getAttribute(\"flags2\");\n }\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if ( scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry normals drawing vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec3 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\");\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vec4 worldNormal = worldNormalMatrix * vec4(octDecode(normal.xy), 0.0); \");\n src.push(\" vec3 viewNormal = normalize((viewNormalMatrix * worldNormal).xyz);\");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\" vViewNormal = viewNormal;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry depth drawing fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"vec3 packNormalToRGB( const in vec3 normal ) {\");\n src.push(\" return normalize( normal ) * 0.5 + 0.5;\");\n src.push(\"}\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4(packNormalToRGB(vViewNormal), 1.0); \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$s = math.vec3();\n\n/**\n * Renders InstancingLayer fragment depths to a shadow map.\n *\n * @private\n */\nclass TrianglesInstancingShadowRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._lastLightId = null;\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer( frameCtx, instancingLayer) {\n const model = instancingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx, instancingLayer);\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n // TODO: Section planes need to be set if RTC center has changed since last RTC center recorded on frameCtx\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n const rtcCenter = instancingLayer._state.rtcCenter;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$s);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uShadowViewMatrix = program.getLocation(\"shadowViewMatrix\");\n this._uShadowProjMatrix = program.getLocation(\"shadowProjMatrix\");\n this._uSectionPlanes = [];\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n }\n\n _bindProgram(frameCtx, instancingLayer) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n program.bind();\n gl.uniformMatrix4fv(this._uShadowViewMatrix, false, frameCtx.shadowViewMatrix);\n gl.uniformMatrix4fv(this._uShadowProjMatrix, false, frameCtx.shadowProjMatrix);\n this._lastLightId = null;\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry shadow drawing vertex shader\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\");\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\n src.push(\"bool visible = (float(flags.x) > 0.0);\");\n src.push(\"bool transparent = ((float(color.a) / 255.0) < 1.0);\");\n src.push(`if (!visible || transparent) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = shadowViewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\" gl_Position = shadowProjMatrix * viewPosition;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry depth drawing fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"vec3 packNormalToRGB( const in vec3 normal ) {\");\n src.push(\" return normalize( normal ) * 0.5 + 0.5;\");\n src.push(\"}\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4(packNormalToRGB(vViewNormal), 1.0); \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec4 = math.vec4();\nconst tempVec3a$r = math.vec3();\n\nconst TEXTURE_DECODE_FUNCS = {\n \"linear\": \"linearToLinear\",\n \"sRGB\": \"sRGBToLinear\",\n \"gamma\": \"gammaToLinear\"\n};\n\n/**\n * @private\n */\nclass TrianglesInstancingColorQualityRenderer {\n\n constructor(scene, withSAO) {\n this._scene = scene;\n this._withSAO = withSAO;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n const scene = this._scene;\n return [scene.gammaOutput, scene._lightsState.getHash(), scene._sectionPlanesState.getHash(), (this._withSAO ? \"sao\" : \"nosao\")].join(\";\");\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = this._scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uViewNormalMatrix, false, camera.viewNormalMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uWorldNormalMatrix, false, model.worldNormalMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$r);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aModelNormalMatrixCol0.bindArrayBuffer(state.modelNormalMatrixCol0Buf);\n this._aModelNormalMatrixCol1.bindArrayBuffer(state.modelNormalMatrixCol1Buf);\n this._aModelNormalMatrixCol2.bindArrayBuffer(state.modelNormalMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aNormal.bindArrayBuffer(state.normalsBuf);\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aMetallicRoughness.bindArrayBuffer(state.metallicRoughnessBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aMetallicRoughness.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelNormalMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aMetallicRoughness.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uWorldNormalMatrix = program.getLocation(\"worldNormalMatrix\");\n\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uViewNormalMatrix = program.getLocation(\"viewNormalMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uGammaFactor = program.getLocation(\"gammaFactor\");\n\n this._uLightAmbient = program.getLocation(\"lightAmbient\");\n this._uLightColor = [];\n this._uLightDir = [];\n this._uLightPos = [];\n this._uLightAttenuation = [];\n\n const lights = lightsState.lights;\n let light;\n\n for (var i = 0, len = lights.length; i < len; i++) {\n light = lights[i];\n switch (light.type) {\n case \"dir\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = null;\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n break;\n case \"point\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = null;\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n case \"spot\":\n this._uLightColor[i] = program.getLocation(\"lightColor\" + i);\n this._uLightPos[i] = program.getLocation(\"lightPos\" + i);\n this._uLightDir[i] = program.getLocation(\"lightDir\" + i);\n this._uLightAttenuation[i] = program.getLocation(\"lightAttenuation\" + i);\n break;\n }\n }\n\n if (lightsState.reflectionMaps.length > 0) {\n this._uReflectionMap = \"reflectionMap\";\n }\n\n if (lightsState.lightMaps.length > 0) {\n this._uLightMap = \"lightMap\";\n }\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aNormal = program.getAttribute(\"normal\");\n this._aColor = program.getAttribute(\"color\");\n this._aMetallicRoughness = program.getAttribute(\"metallicRoughness\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aOffset = program.getAttribute(\"offset\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._aModelNormalMatrixCol0 = program.getAttribute(\"modelNormalMatrixCol0\");\n this._aModelNormalMatrixCol1 = program.getAttribute(\"modelNormalMatrixCol1\");\n this._aModelNormalMatrixCol2 = program.getAttribute(\"modelNormalMatrixCol2\");\n\n this._uOcclusionTexture = \"uOcclusionTexture\";\n this._uSAOParams = program.getLocation(\"uSAOParams\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const maxTextureUnits = WEBGL_INFO$1.MAX_TEXTURE_UNITS;\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const lightsState = scene._lightsState;\n const lights = lightsState.lights;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (this._uLightAmbient) {\n gl.uniform4fv(this._uLightAmbient, scene._lightsState.getAmbientColorAndIntensity());\n }\n\n for (let i = 0, len = lights.length; i < len; i++) {\n const light = lights[i];\n if (this._uLightColor[i]) {\n gl.uniform4f(this._uLightColor[i], light.color[0], light.color[1], light.color[2], light.intensity);\n }\n if (this._uLightPos[i]) {\n gl.uniform3fv(this._uLightPos[i], light.pos);\n if (this._uLightAttenuation[i]) {\n gl.uniform1f(this._uLightAttenuation[i], light.attenuation);\n }\n }\n if (this._uLightDir[i]) {\n gl.uniform3fv(this._uLightDir[i], light.dir);\n }\n }\n\n if (lightsState.reflectionMaps.length > 0 && lightsState.reflectionMaps[0].texture && this._uReflectionMap) {\n this._program.bindTexture(this._uReflectionMap, lightsState.reflectionMaps[0].texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n\n if (lightsState.lightMaps.length > 0 && lightsState.lightMaps[0].texture && this._uLightMap) {\n this._program.bindTexture(this._uLightMap, lightsState.lightMaps[0].texture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n\n if (this._withSAO) {\n const sao = scene.sao;\n const saoEnabled = sao.possible;\n if (saoEnabled) {\n const viewportWidth = gl.drawingBufferWidth;\n const viewportHeight = gl.drawingBufferHeight;\n tempVec4[0] = viewportWidth;\n tempVec4[1] = viewportHeight;\n tempVec4[2] = sao.blendCutoff;\n tempVec4[3] = sao.blendFactor;\n gl.uniform4fv(this._uSAOParams, tempVec4);\n this._program.bindTexture(this._uOcclusionTexture, frameCtx.occlusionTexture, frameCtx.textureUnit);\n frameCtx.textureUnit = (frameCtx.textureUnit + 1) % maxTextureUnits;\n frameCtx.bindTexture++;\n }\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n if (this._uGammaFactor) {\n gl.uniform1f(this._uGammaFactor, scene.gammaFactor);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n\n src.push(\"// Instancing geometry quality drawing vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec2 normal;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec2 metallicRoughness;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"attribute vec4 modelNormalMatrixCol0;\");\n src.push(\"attribute vec4 modelNormalMatrixCol1;\");\n src.push(\"attribute vec4 modelNormalMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 worldNormalMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 viewNormalMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n\n src.push(\"vec3 octDecode(vec2 oct) {\");\n src.push(\" vec3 v = vec3(oct.xy, 1.0 - abs(oct.x) - abs(oct.y));\");\n src.push(\" if (v.z < 0.0) {\");\n src.push(\" v.xy = (1.0 - abs(v.yx)) * vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0);\");\n src.push(\" }\");\n src.push(\" return normalize(v);\");\n src.push(\"}\");\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n }\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vec4 modelNormal = vec4(octDecode(normal.xy), 0.0); \");\n src.push(\"vec4 worldNormal = worldNormalMatrix * vec4(dot(modelNormal, modelNormalMatrixCol0), dot(modelNormal, modelNormalMatrixCol1), dot(modelNormal, modelNormalMatrixCol2), 0.0);\");\n src.push(\"vec3 viewNormal = vec4(viewNormalMatrix * worldNormal).xyz;\");\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n if (clippingCaps) {\n src.push(\"vClipPosition = clipPos;\");\n }\n }\n\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vViewNormal = viewNormal;\");\n src.push(\"vColor = color;\");\n src.push(\"vMetallicRoughness = metallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"vWorldNormal = worldNormal.xyz;\");\n }\n\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const gammaOutput = scene.gammaOutput; // If set, then it expects that all textures and colors need to be outputted in premultiplied gamma. Default is false.\n const sectionPlanesState = scene._sectionPlanesState;\n const lightsState = scene._lightsState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const clippingCaps = sectionPlanesState.clippingCaps;\n const src = [];\n\n src.push(\"// Instancing geometry quality drawing fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"varying float isPerspective;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (this._withSAO) {\n src.push(\"uniform sampler2D uOcclusionTexture;\");\n src.push(\"uniform vec4 uSAOParams;\");\n\n src.push(\"const float packUpscale = 256. / 255.;\");\n src.push(\"const float unpackDownScale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unPackFactors = unpackDownScale / vec4( packFactors, 1. );\");\n\n src.push(\"float unpackRGBAToDepth( const in vec4 v ) {\");\n src.push(\" return dot( v, unPackFactors );\");\n src.push(\"}\");\n }\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"uniform samplerCube reflectionMap;\");\n }\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"uniform samplerCube lightMap;\");\n }\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n const light = lightsState.lights[i];\n if (light.type === \"ambient\") {\n continue;\n }\n src.push(\"uniform vec4 lightColor\" + i + \";\");\n if (light.type === \"dir\") {\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n if (light.type === \"point\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n }\n if (light.type === \"spot\") {\n src.push(\"uniform vec3 lightPos\" + i + \";\");\n src.push(\"uniform vec3 lightDir\" + i + \";\");\n }\n }\n\n src.push(\"uniform float gammaFactor;\");\n src.push(\"vec4 linearToLinear( in vec4 value ) {\");\n src.push(\" return value;\");\n src.push(\"}\");\n src.push(\"vec4 sRGBToLinear( in vec4 value ) {\");\n src.push(\" return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\");\n src.push(\"}\");\n src.push(\"vec4 gammaToLinear( in vec4 value) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\");\n src.push(\"}\");\n if (gammaOutput) {\n src.push(\"vec4 linearToGamma( in vec4 value, in float gammaFactor ) {\");\n src.push(\" return vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\");\n src.push(\"}\");\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n if (clippingCaps) {\n src.push(\"varying vec4 vClipPosition;\");\n }\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"varying vec4 vColor;\");\n src.push(\"varying vec2 vMetallicRoughness;\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\"varying vec3 vWorldNormal;\");\n }\n\n src.push(\"uniform mat4 viewMatrix;\");\n\n // CONSTANT DEFINITIONS\n\n src.push(\"#define PI 3.14159265359\");\n src.push(\"#define RECIPROCAL_PI 0.31830988618\");\n src.push(\"#define RECIPROCAL_PI2 0.15915494\");\n src.push(\"#define EPSILON 1e-6\");\n\n src.push(\"#define saturate(a) clamp( a, 0.0, 1.0 )\");\n\n // UTILITY DEFINITIONS\n\n src.push(\"vec3 inverseTransformDirection(in vec3 dir, in mat4 matrix) {\");\n src.push(\" return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\");\n src.push(\"}\");\n\n // STRUCTURES\n\n src.push(\"struct IncidentLight {\");\n src.push(\" vec3 color;\");\n src.push(\" vec3 direction;\");\n src.push(\"};\");\n\n src.push(\"struct ReflectedLight {\");\n src.push(\" vec3 diffuse;\");\n src.push(\" vec3 specular;\");\n src.push(\"};\");\n\n src.push(\"struct Geometry {\");\n src.push(\" vec3 position;\");\n src.push(\" vec3 viewNormal;\");\n src.push(\" vec3 worldNormal;\");\n src.push(\" vec3 viewEyeDir;\");\n src.push(\"};\");\n\n src.push(\"struct Material {\");\n src.push(\" vec3 diffuseColor;\");\n src.push(\" float specularRoughness;\");\n src.push(\" vec3 specularColor;\");\n src.push(\" float shine;\"); // Only used for Phong\n src.push(\"};\");\n\n // IRRADIANCE EVALUATION\n\n src.push(\"float GGXRoughnessToBlinnExponent(const in float ggxRoughness) {\");\n src.push(\" float r = ggxRoughness + 0.0001;\");\n src.push(\" return (2.0 / (r * r) - 2.0);\");\n src.push(\"}\");\n\n src.push(\"float getSpecularMIPLevel(const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float maxMIPLevelScalar = float( maxMIPLevel );\");\n src.push(\" float desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( ( blinnShininessExponent * blinnShininessExponent ) + 1.0 );\");\n src.push(\" return clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\");\n src.push(\"}\");\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\"vec3 getLightProbeIndirectRadiance(const in vec3 reflectVec, const in float blinnShininessExponent, const in int maxMIPLevel) {\");\n src.push(\" float mipLevel = 0.5 * getSpecularMIPLevel(blinnShininessExponent, maxMIPLevel);\"); //TODO: a random factor - fix this\n src.push(\" vec3 envMapColor = \" + TEXTURE_DECODE_FUNCS[lightsState.reflectionMaps[0].encoding] + \"(textureCube(reflectionMap, reflectVec, mipLevel)).rgb;\");\n src.push(\" return envMapColor;\");\n src.push(\"}\");\n }\n\n // SPECULAR BRDF EVALUATION\n\n src.push(\"vec3 F_Schlick(const in vec3 specularColor, const in float dotLH) {\");\n src.push(\" float fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\");\n src.push(\" return ( 1.0 - specularColor ) * fresnel + specularColor;\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_Smith(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" float gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" return 1.0 / ( gl * gv );\");\n src.push(\"}\");\n\n src.push(\"float G_GGX_SmithCorrelated(const in float alpha, const in float dotNL, const in float dotNV) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * ( dotNV * dotNV ) );\");\n src.push(\" float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * ( dotNL * dotNL ) );\");\n src.push(\" return 0.5 / max( gv + gl, EPSILON );\");\n src.push(\"}\");\n\n src.push(\"float D_GGX(const in float alpha, const in float dotNH) {\");\n src.push(\" float a2 = ( alpha * alpha );\");\n src.push(\" float denom = ( dotNH * dotNH) * ( a2 - 1.0 ) + 1.0;\");\n src.push(\" return RECIPROCAL_PI * a2 / ( denom * denom);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX(const in IncidentLight incidentLight, const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float alpha = ( roughness * roughness );\");\n src.push(\" vec3 halfDir = normalize( incidentLight.direction + geometry.viewEyeDir );\");\n src.push(\" float dotNL = saturate( dot( geometry.viewNormal, incidentLight.direction ) );\");\n src.push(\" float dotNV = saturate( dot( geometry.viewNormal, geometry.viewEyeDir ) );\");\n src.push(\" float dotNH = saturate( dot( geometry.viewNormal, halfDir ) );\");\n src.push(\" float dotLH = saturate( dot( incidentLight.direction, halfDir ) );\");\n src.push(\" vec3 F = F_Schlick( specularColor, dotLH );\");\n src.push(\" float G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\");\n src.push(\" float D = D_GGX( alpha, dotNH );\");\n src.push(\" return F * (G * D);\");\n src.push(\"}\");\n\n src.push(\"vec3 BRDF_Specular_GGX_Environment(const in Geometry geometry, const in vec3 specularColor, const in float roughness) {\");\n src.push(\" float dotNV = saturate(dot(geometry.viewNormal, geometry.viewEyeDir));\");\n src.push(\" const vec4 c0 = vec4( -1, -0.0275, -0.572, 0.022);\");\n src.push(\" const vec4 c1 = vec4( 1, 0.0425, 1.04, -0.04);\");\n src.push(\" vec4 r = roughness * c0 + c1;\");\n src.push(\" float a004 = min(r.x * r.x, exp2(-9.28 * dotNV)) * r.x + r.y;\");\n src.push(\" vec2 AB = vec2(-1.04, 1.04) * a004 + r.zw;\");\n src.push(\" return specularColor * AB.x + AB.y;\");\n src.push(\"}\");\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n\n src.push(\"void computePBRLightMapping(const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n\n if (lightsState.lightMaps.length > 0) {\n src.push(\" vec3 irradiance = \" + TEXTURE_DECODE_FUNCS[lightsState.lightMaps[0].encoding] + \"(textureCube(lightMap, geometry.worldNormal)).rgb;\");\n src.push(\" irradiance *= PI;\");\n src.push(\" vec3 diffuseBRDFContrib = (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.diffuse += irradiance * diffuseBRDFContrib;\");\n }\n\n if (lightsState.reflectionMaps.length > 0) {\n src.push(\" vec3 reflectVec = reflect(geometry.viewEyeDir, geometry.viewNormal);\");\n src.push(\" reflectVec = inverseTransformDirection(reflectVec, viewMatrix);\");\n src.push(\" float blinnExpFromRoughness = GGXRoughnessToBlinnExponent(material.specularRoughness);\");\n src.push(\" vec3 radiance = getLightProbeIndirectRadiance(reflectVec, blinnExpFromRoughness, 8);\");\n src.push(\" vec3 specularBRDFContrib = BRDF_Specular_GGX_Environment(geometry, material.specularColor, material.specularRoughness);\");\n src.push(\" reflectedLight.specular += radiance * specularBRDFContrib;\");\n }\n\n src.push(\"}\");\n }\n\n // MAIN LIGHTING COMPUTATION FUNCTION\n\n src.push(\"void computePBRLighting(const in IncidentLight incidentLight, const in Geometry geometry, const in Material material, inout ReflectedLight reflectedLight) {\");\n src.push(\" float dotNL = saturate(dot(geometry.viewNormal, incidentLight.direction));\");\n src.push(\" vec3 irradiance = dotNL * incidentLight.color * PI;\");\n src.push(\" reflectedLight.diffuse += irradiance * (RECIPROCAL_PI * material.diffuseColor);\");\n src.push(\" reflectedLight.specular += irradiance * BRDF_Specular_GGX(incidentLight, geometry, material.specularColor, material.specularRoughness);\");\n src.push(\"}\");\n\n src.push(\"void main(void) {\");\n\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n if (clippingCaps) {\n src.push(\" if (dist > (0.002 * vClipPosition.w)) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n src.push(\" if (dist > 0.0) { \");\n src.push(\" gl_FragColor=vec4(1.0, 0.0, 0.0, 1.0);\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" return;\");\n src.push(\"}\");\n } else {\n src.push(\" if (dist > 0.0) { \");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n src.push(\"}\");\n }\n\n src.push(\"IncidentLight light;\");\n src.push(\"Material material;\");\n src.push(\"Geometry geometry;\");\n src.push(\"ReflectedLight reflectedLight = ReflectedLight(vec3(0.0,0.0,0.0), vec3(0.0,0.0,0.0));\");\n\n src.push(\"vec3 rgb = (vec3(float(vColor.r) / 255.0, float(vColor.g) / 255.0, float(vColor.b) / 255.0));\");\n src.push(\"float alpha = float(vColor.a) / 255.0;\");\n\n src.push(\"vec3 diffuseColor = rgb;\");\n src.push(\"float specularF0 = 1.0;\");\n src.push(\"float metallic = float(vMetallicRoughness.r) / 255.0;\");\n src.push(\"float roughness = float(vMetallicRoughness.g) / 255.0;\");\n src.push(\"float dielectricSpecular = 0.16 * specularF0 * specularF0;\");\n\n src.push(\"material.diffuseColor = diffuseColor * (1.0 - dielectricSpecular) * (1.0 - metallic);\");\n src.push(\"material.specularRoughness = clamp(roughness, 0.04, 1.0);\");\n src.push(\"material.specularColor = mix(vec3(dielectricSpecular), diffuseColor, metallic);\");\n\n src.push(\"geometry.position = vViewPosition.xyz;\");\n src.push(\"geometry.viewNormal = -normalize(vViewNormal);\");\n src.push(\"geometry.viewEyeDir = normalize(vViewPosition.xyz);\");\n if (lightsState.lightMaps.length > 0) {\n src.push(\"geometry.worldNormal = normalize(vWorldNormal);\");\n }\n\n if (lightsState.lightMaps.length > 0 || lightsState.reflectionMaps.length > 0) {\n src.push(\"computePBRLightMapping(geometry, material, reflectedLight);\");\n }\n\n for (let i = 0, len = lightsState.lights.length; i < len; i++) {\n\n const light = lightsState.lights[i];\n\n if (light.type === \"ambient\") {\n continue;\n }\n if (light.type === \"dir\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"point\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightPos\" + i + \" - vViewPosition.xyz);\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightPos\" + i + \", 0.0)).xyz);\");\n }\n } else if (light.type === \"spot\") {\n if (light.space === \"view\") {\n src.push(\"light.direction = normalize(lightDir\" + i + \");\");\n } else {\n src.push(\"light.direction = normalize((viewMatrix * vec4(lightDir\" + i + \", 0.0)).xyz);\");\n }\n } else {\n continue;\n }\n\n src.push(\"light.color = lightColor\" + i + \".rgb * lightColor\" + i + \".a;\"); // a is intensity\n\n src.push(\"computePBRLighting(light, geometry, material, reflectedLight);\");\n }\n\n src.push(\"vec3 outgoingLight = (lightAmbient.rgb * lightAmbient.a * rgb) + (reflectedLight.diffuse) + (reflectedLight.specular);\");\n\n src.push(\"vec4 fragColor;\");\n\n if (this._withSAO) {\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBAToDepth(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" fragColor = vec4(outgoingLight.rgb * ambient, alpha);\");\n } else {\n src.push(\" fragColor = vec4(outgoingLight.rgb, alpha);\");\n }\n\n if (gammaOutput) {\n src.push(\"fragColor = linearToGamma(fragColor, gammaFactor);\");\n }\n\n src.push(\"gl_FragColor = fragColor;\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$q = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingPickNormalsFlatRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(instancingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n // In practice, these binds will only happen once per frame\n // because we pick normals on a single previously-picked mesh\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const rtcPickViewMatrix = (rtcCenter) ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(camera.project.far + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$q);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.TRIANGLES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uSectionPlanes = [];\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry normals vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"bool isPerspectiveMatrix(mat4 m) {\");\n src.push(\" return (m[2][3] == - 1.0);\");\n src.push(\"}\");\n src.push(\"varying float isPerspective;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"void main(void) {\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n src.push(\"isPerspective = float (isPerspectiveMatrix(projMatrix));\");\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Batched geometry normals fragment shader\");\n src.push(\"#extension GL_OES_standard_derivatives : enable\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float isPerspective;\");\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n src.push(\"varying vec4 vWorldPosition;\");\n if (clipping) {\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec3 vWorldNormal;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\" gl_FragDepthEXT = isPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" vec3 xTangent = dFdx( vWorldPosition.xyz );\");\n src.push(\" vec3 yTangent = dFdy( vWorldPosition.xyz );\");\n src.push(\" vec3 worldNormal = normalize( cross( xTangent, yTangent ) );\");\n src.push(\" gl_FragColor = vec4((worldNormal * 0.5) + 0.5, 1.0);\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\n/**\n * @private\n */\nclass TrianglesInstancingRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._colorRendererWithSAO && (!this._colorRendererWithSAO.getValid())) {\n this._colorRendererWithSAO.destroy();\n this._colorRendererWithSAO = null;\n }\n if (this._flatColorRenderer && (!this._flatColorRenderer.getValid())) {\n this._flatColorRenderer.destroy();\n this._flatColorRenderer = null;\n }\n if (this._flatColorRendererWithSAO && (!this._flatColorRendererWithSAO.getValid())) {\n this._flatColorRendererWithSAO.destroy();\n this._flatColorRendererWithSAO = null;\n }\n if (this._colorQualityRenderer && (!this._colorQualityRenderer.getValid())) {\n this._colorQualityRenderer.destroy();\n this._colorQualityRenderer = null;\n }\n if (this._colorQualityRendererWithSAO && (!this._colorQualityRendererWithSAO.getValid())) {\n this._colorQualityRendererWithSAO.destroy();\n this._colorQualityRendererWithSAO = null;\n }\n if (this._depthRenderer && (!this._depthRenderer.getValid())) {\n this._depthRenderer.destroy();\n this._depthRenderer = null;\n }\n if (this._normalsRenderer && (!this._normalsRenderer.getValid())) {\n this._normalsRenderer.destroy();\n this._normalsRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n if (this._edgesRenderer && (!this._edgesRenderer.getValid())) {\n this._edgesRenderer.destroy();\n this._edgesRenderer = null;\n }\n if (this._edgesColorRenderer && (!this._edgesColorRenderer.getValid())) {\n this._edgesColorRenderer.destroy();\n this._edgesColorRenderer = null;\n }\n if (this._pickMeshRenderer && (!this._pickMeshRenderer.getValid())) {\n this._pickMeshRenderer.destroy();\n this._pickMeshRenderer = null;\n }\n if (this._pickDepthRenderer && (!this._pickDepthRenderer.getValid())) {\n this._pickDepthRenderer.destroy();\n this._pickDepthRenderer = null;\n }\n if (this._pickNormalsRenderer && this._pickNormalsRenderer.getValid() === false) {\n this._pickNormalsRenderer.destroy();\n this._pickNormalsRenderer = null;\n }\n if (this._pickNormalsFlatRenderer && (!this._pickNormalsFlatRenderer.getValid())) {\n this._pickNormalsFlatRenderer.destroy();\n this._pickNormalsFlatRenderer = null;\n }\n if (this._occlusionRenderer && this._occlusionRenderer.getValid() === false) {\n this._occlusionRenderer.destroy();\n this._occlusionRenderer = null;\n }\n if (this._shadowRenderer && (!this._shadowRenderer.getValid())) {\n this._shadowRenderer.destroy();\n this._shadowRenderer = null;\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new TrianglesInstancingColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get colorRendererWithSAO() {\n if (!this._colorRendererWithSAO) {\n this._colorRendererWithSAO = new TrianglesInstancingColorRenderer(this._scene, true);\n }\n return this._colorRendererWithSAO;\n }\n\n get flatColorRenderer() {\n if (!this._flatColorRenderer) {\n this._flatColorRenderer = new TrianglesInstancingFlatColorRenderer(this._scene, false);\n }\n return this._flatColorRenderer;\n }\n\n get flatColorRendererWithSAO() {\n if (!this._flatColorRendererWithSAO) {\n this._flatColorRendererWithSAO = new TrianglesInstancingFlatColorRenderer(this._scene, true);\n }\n return this._flatColorRendererWithSAO;\n }\n\n get colorQualityRenderer() {\n if (!this._colorQualityRenderer) {\n this._colorQualityRenderer = new TrianglesInstancingColorQualityRenderer(this._scene, false);\n }\n return this._colorQualityRenderer;\n }\n\n get colorQualityRendererWithSAO() {\n if (!this._colorQualityRendererWithSAO) {\n this._colorQualityRendererWithSAO = new TrianglesInstancingColorQualityRenderer(this._scene, true);\n }\n return this._colorQualityRendererWithSAO;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new TrianglesInstancingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get depthRenderer() {\n if (!this._depthRenderer) {\n this._depthRenderer = new TrianglesInstancingDepthRenderer(this._scene);\n }\n return this._depthRenderer;\n }\n\n get normalsRenderer() {\n if (!this._normalsRenderer) {\n this._normalsRenderer = new TrianglesInstancingNormalsRenderer(this._scene);\n }\n return this._normalsRenderer;\n }\n\n get edgesRenderer() {\n if (!this._edgesRenderer) {\n this._edgesRenderer = new TrianglesInstancingEdgesRenderer(this._scene);\n }\n return this._edgesRenderer;\n }\n\n get edgesColorRenderer() {\n if (!this._edgesColorRenderer) {\n this._edgesColorRenderer = new TrianglesInstancingEdgesColorRenderer(this._scene);\n }\n return this._edgesColorRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new TrianglesInstancingPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickNormalsRenderer() {\n if (!this._pickNormalsRenderer) {\n this._pickNormalsRenderer = new TrianglesInstancingPickNormalsRenderer(this._scene);\n }\n return this._pickNormalsRenderer;\n }\n\n get pickNormalsFlatRenderer() {\n if (!this._pickNormalsFlatRenderer) {\n this._pickNormalsFlatRenderer = new TrianglesInstancingPickNormalsFlatRenderer(this._scene);\n }\n return this._pickNormalsFlatRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new TrianglesInstancingPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new TrianglesInstancingOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n get shadowRenderer() {\n if (!this._shadowRenderer) {\n this._shadowRenderer = new TrianglesInstancingShadowRenderer(this._scene);\n }\n return this._shadowRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._colorRendererWithSAO) {\n this._colorRendererWithSAO.destroy();\n }\n if (this._flatColorRenderer) {\n this._flatColorRenderer.destroy();\n }\n if (this._flatColorRendererWithSAO) {\n this._flatColorRendererWithSAO.destroy();\n }\n if (this._colorQualityRenderer) {\n this._colorQualityRenderer.destroy();\n }\n if (this._colorQualityRendererWithSAO) {\n this._colorQualityRendererWithSAO.destroy();\n }\n if (this._depthRenderer) {\n this._depthRenderer.destroy();\n }\n if (this._normalsRenderer) {\n this._normalsRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n if (this._edgesRenderer) {\n this._edgesRenderer.destroy();\n }\n if (this._edgesColorRenderer) {\n this._edgesColorRenderer.destroy();\n }\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.destroy();\n }\n if (this._pickDepthRenderer) {\n this._pickDepthRenderer.destroy();\n }\n if (this._pickNormalsRenderer) {\n this._pickNormalsRenderer.destroy();\n }\n if (this._pickNormalsFlatRenderer) {\n this._pickNormalsFlatRenderer.destroy();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.destroy();\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers$4 = {};\n\n/**\n * @private\n */\nfunction getInstancingRenderers$1(scene) {\n const sceneId = scene.id;\n let instancingRenderers = cachedRenderers$4[sceneId];\n if (!instancingRenderers) {\n instancingRenderers = new TrianglesInstancingRenderers(scene);\n cachedRenderers$4[sceneId] = instancingRenderers;\n instancingRenderers._compile();\n scene.on(\"compile\", () => {\n instancingRenderers._compile();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers$4[sceneId];\n instancingRenderers._destroy();\n });\n }\n return instancingRenderers;\n}\n\nconst bigIndicesSupported$4 = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\nconst tempUint8Vec4$2 = new Uint8Array(4);\nconst tempVec4a$6 = math.vec4([0, 0, 0, 1]);\nconst tempVec4b$6 = math.vec4([0, 0, 0, 1]);\nconst tempVec4c$6 = math.vec4([0, 0, 0, 1]);\nconst tempVec3fa$2 = new Float32Array(3);\n\nconst tempVec3a$p = math.vec3();\nconst tempVec3b$6 = math.vec3();\nconst tempVec3c$3 = math.vec3();\nconst tempVec3d$1 = math.vec3();\nconst tempVec3e = math.vec3();\nconst tempVec3f = math.vec3();\nconst tempVec3g = math.vec3();\n\n/**\n * @private\n */\nclass TrianglesInstancingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positions Flat float Local-space positions array.\n * @param [cfg.normals] Flat float normals array.\n * @param cfg.indices Flat int indices array.\n * @param [cfg.edgeIndices] Flat int edges indices array.\n * @param cfg.edgeThreshold\n * @param cfg.rtcCenter\n * @params cfg.solid\n */\n constructor(model, cfg) {\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"TrianglesInstancingLayer\" + (cfg.solid ? \"-solid\" : \"-surface\") + (cfg.normals ? \"-normals\" : \"-autoNormals\");\n\n /**\n * Index of this InstancingLayer in PerformanceModel#_layerList\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._instancingRenderers = getInstancingRenderers$1(model.scene);\n this.model = model;\n this._aabb = math.collapseAABB3();\n\n const stateCfg = {\n positionsDecodeMatrix: math.mat4(),\n numInstances: 0,\n obb: math.OBB3(),\n rtcCenter: null\n };\n\n const preCompressed = (!!cfg.positionsDecodeMatrix);\n const pickSurfacePrecisionEnabled = this.model.scene.pickSurfacePrecisionEnabled;\n const gl = this.model.scene.canvas.gl;\n\n if (cfg.positions) {\n\n if (preCompressed) {\n\n const normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.positions, cfg.positions.length, 3, gl.STATIC_DRAW, normalized);\n stateCfg.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix);\n\n const localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n geometryCompressionUtils.decompressAABB(localAABB, stateCfg.positionsDecodeMatrix);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n\n if (pickSurfacePrecisionEnabled) {\n stateCfg.quantizedPositions = cfg.positions;\n }\n\n } else {\n\n const lenPositions = cfg.positions.length;\n const localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n const quantizedPositions = quantizePositions(cfg.positions, localAABB, stateCfg.positionsDecodeMatrix);\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, lenPositions, 3, gl.STATIC_DRAW, normalized);\n\n if (pickSurfacePrecisionEnabled) {\n stateCfg.quantizedPositions = quantizedPositions;\n }\n }\n }\n\n if (cfg.normals && cfg.normals.length > 0) {\n\n if (preCompressed) {\n\n const normalized = true; // For oct-encoded UInt8\n stateCfg.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.normals, cfg.normals.length, 3, gl.STATIC_DRAW, normalized);\n\n } else {\n\n const compressedNormals = octEncodeNormals(cfg.normals);\n const normalized = true; // For oct-encoded UInt8\n stateCfg.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, compressedNormals, compressedNormals.length, 3, gl.STATIC_DRAW, normalized);\n }\n }\n\n if (cfg.indices) {\n stateCfg.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, bigIndicesSupported$4 ? new Uint32Array(cfg.indices) : new Uint16Array(cfg.indices), cfg.indices.length, 1, gl.STATIC_DRAW);\n\n if (pickSurfacePrecisionEnabled) {\n stateCfg.indices = cfg.indices;\n }\n }\n\n let edgeIndices = cfg.edgeIndices;\n if (!edgeIndices) {\n edgeIndices = buildEdgeIndices(cfg.positions, cfg.indices, null, cfg.edgeThreshold || 10);\n }\n stateCfg.edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, bigIndicesSupported$4 ? new Uint32Array(edgeIndices) : new Uint16Array(edgeIndices), edgeIndices.length, 1, gl.STATIC_DRAW);\n\n this._state = new RenderState(stateCfg);\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numEdgesLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n /** @private */\n this.numIndices = (cfg.indices) ? cfg.indices.length / 3 : 0;\n\n // Vertex arrays\n this._colors = [];\n this._metallicRoughness = [];\n this._pickColors = [];\n this._offsets = [];\n\n // Modeling matrix per instance, array for each column\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n\n // Modeling normal matrix per instance, array for each column\n this._modelNormalMatrixCol0 = [];\n this._modelNormalMatrixCol1 = [];\n this._modelNormalMatrixCol2 = [];\n\n this._portions = [];\n\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n this._finalized = false;\n\n /**\n * The axis-aligned World-space boundary of this InstancingLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\n\n /**\n * When true, this layer contains solid triangle meshes, otherwise this layer contains surface triangle meshes\n * @type {boolean}\n */\n this.solid = !!cfg.solid;\n }\n\n /**\n * Creates a new portion within this InstancingLayer, returns the new portion ID.\n *\n * The portion will instance this InstancingLayer's geometry.\n *\n * Gives the portion the specified color and matrix.\n *\n * @param cfg Portion params\n * @param cfg.color Color [0..255,0..255,0..255]\n * @param cfg.metallic Metalness factor [0..255]\n * @param cfg.roughness Roughness factor [0..255]\n * @param cfg.opacity Opacity [0..255].\n * @param cfg.meshMatrix Flat float 4x4 matrix.\n * @param [cfg.worldMatrix] Flat float 4x4 matrix.\n * @param cfg.worldAABB Flat float AABB.\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID.\n */\n createPortion(cfg) {\n\n const color = cfg.color;\n const metallic = cfg.metallic;\n const roughness = cfg.roughness;\n const opacity = cfg.opacity;\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.aabb;\n const pickColor = cfg.pickColor;\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n // TODO: find AABB for portion by transforming the geometry local AABB by the given meshMatrix?\n\n const r = color[0]; // Color is pre-quantized by PerformanceModel\n const g = color[1];\n const b = color[2];\n color[3];\n\n this._colors.push(r);\n this._colors.push(g);\n this._colors.push(b);\n this._colors.push(opacity);\n\n this._metallicRoughness.push((metallic !== null && metallic !== undefined) ? metallic : 0);\n this._metallicRoughness.push((roughness !== null && roughness !== undefined) ? roughness : 255);\n\n if (this.model.scene.entityOffsetsEnabled) {\n this._offsets.push(0);\n this._offsets.push(0);\n this._offsets.push(0);\n }\n\n this._modelMatrixCol0.push(meshMatrix[0]);\n this._modelMatrixCol0.push(meshMatrix[4]);\n this._modelMatrixCol0.push(meshMatrix[8]);\n this._modelMatrixCol0.push(meshMatrix[12]);\n\n this._modelMatrixCol1.push(meshMatrix[1]);\n this._modelMatrixCol1.push(meshMatrix[5]);\n this._modelMatrixCol1.push(meshMatrix[9]);\n this._modelMatrixCol1.push(meshMatrix[13]);\n\n this._modelMatrixCol2.push(meshMatrix[2]);\n this._modelMatrixCol2.push(meshMatrix[6]);\n this._modelMatrixCol2.push(meshMatrix[10]);\n this._modelMatrixCol2.push(meshMatrix[14]);\n\n if (this._state.normalsBuf) {\n\n // Note: order of inverse and transpose doesn't matter\n\n let transposedMat = math.transposeMat4(meshMatrix, math.mat4()); // TODO: Use cached matrix\n let normalMatrix = math.inverseMat4(transposedMat);\n\n this._modelNormalMatrixCol0.push(normalMatrix[0]);\n this._modelNormalMatrixCol0.push(normalMatrix[4]);\n this._modelNormalMatrixCol0.push(normalMatrix[8]);\n this._modelNormalMatrixCol0.push(normalMatrix[12]);\n\n this._modelNormalMatrixCol1.push(normalMatrix[1]);\n this._modelNormalMatrixCol1.push(normalMatrix[5]);\n this._modelNormalMatrixCol1.push(normalMatrix[9]);\n this._modelNormalMatrixCol1.push(normalMatrix[13]);\n\n this._modelNormalMatrixCol2.push(normalMatrix[2]);\n this._modelNormalMatrixCol2.push(normalMatrix[6]);\n this._modelNormalMatrixCol2.push(normalMatrix[10]);\n this._modelNormalMatrixCol2.push(normalMatrix[14]);\n }\n\n // Per-vertex pick colors\n\n this._pickColors.push(pickColor[0]);\n this._pickColors.push(pickColor[1]);\n this._pickColors.push(pickColor[2]);\n this._pickColors.push(pickColor[3]);\n\n // Expand AABB\n\n math.collapseAABB3(worldAABB);\n const obb = this._state.obb;\n const lenPositions = obb.length;\n for (let i = 0; i < lenPositions; i += 4) {\n tempVec4a$6[0] = obb[i + 0];\n tempVec4a$6[1] = obb[i + 1];\n tempVec4a$6[2] = obb[i + 2];\n math.transformPoint4(meshMatrix, tempVec4a$6, tempVec4b$6);\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b$6, tempVec4c$6);\n math.expandAABB3Point3(worldAABB, tempVec4c$6);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b$6);\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\n\n this._state.numInstances++;\n\n const portionId = this._portions.length;\n\n const portion = {};\n\n if (this.model.scene.pickSurfacePrecisionEnabled) {\n portion.matrix = meshMatrix.slice();\n portion.inverseMatrix = null; // Lazy-computed in precisionRayPickSurface\n portion.normalMatrix = null; // Lazy-computed in precisionRayPickSurface\n }\n\n this._portions.push(portion);\n\n this._numPortions++;\n this.model.numPortions++;\n\n return portionId;\n }\n\n finalize() {\n if (this._finalized) {\n throw \"Already finalized\";\n }\n const gl = this.model.scene.canvas.gl;\n const colorsLength = this._colors.length;\n const flagsLength = colorsLength;\n if (colorsLength > 0) {\n let notNormalized = false;\n this._state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._colors), this._colors.length, 4, gl.DYNAMIC_DRAW, notNormalized);\n this._colors = []; // Release memory\n }\n if (this._metallicRoughness.length > 0) {\n const metallicRoughness = new Uint8Array(this._metallicRoughness);\n let normalized = false;\n this._state.metallicRoughnessBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, metallicRoughness, this._metallicRoughness.length, 2, gl.STATIC_DRAW, normalized);\n }\n if (flagsLength > 0) {\n // Because we only build flags arrays here,\n // get their length from the colors array\n let notNormalized = false;\n let normalized = true;\n this._state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, notNormalized);\n this._state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, normalized);\n }\n if (this.model.scene.entityOffsetsEnabled) {\n if (this._offsets.length > 0) {\n const notNormalized = false;\n this._state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._offsets), this._offsets.length, 3, gl.DYNAMIC_DRAW, notNormalized);\n this._offsets = []; // Release memory\n }\n }\n if (this._modelMatrixCol0.length > 0) {\n\n const normalized = false;\n\n this._state.modelMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol0), this._modelMatrixCol0.length, 4, gl.STATIC_DRAW, normalized);\n this._state.modelMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol1), this._modelMatrixCol1.length, 4, gl.STATIC_DRAW, normalized);\n this._state.modelMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol2), this._modelMatrixCol2.length, 4, gl.STATIC_DRAW, normalized);\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n\n if (this._state.normalsBuf) {\n this._state.modelNormalMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol0), this._modelNormalMatrixCol0.length, 4, gl.STATIC_DRAW, normalized);\n this._state.modelNormalMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol1), this._modelNormalMatrixCol1.length, 4, gl.STATIC_DRAW, normalized);\n this._state.modelNormalMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelNormalMatrixCol2), this._modelNormalMatrixCol2.length, 4, gl.STATIC_DRAW, normalized);\n this._modelNormalMatrixCol0 = [];\n this._modelNormalMatrixCol1 = [];\n this._modelNormalMatrixCol2 = [];\n }\n }\n if (this._pickColors.length > 0) {\n const normalized = false;\n this._state.pickColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._pickColors), this._pickColors.length, 4, gl.STATIC_DRAW, normalized);\n this._pickColors = []; // Release memory\n }\n this._finalized = true;\n }\n\n // The following setters are called by PerformanceMesh, in turn called by PerformanceNode, only after the layer is finalized.\n // It's important that these are called after finalize() in order to maintain integrity of counts like _numVisibleLayerPortions etc.\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n this._setFlags(portionId, flags, meshTransparent);\n this._setFlags2(portionId, flags);\n }\n\n setVisible(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setHighlighted(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setXRayed(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setSelected(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setEdges(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n } else {\n this._numEdgesLayerPortions--;\n this.model.numEdgesLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags2(portionId, flags);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags2(portionId, flags, meshTransparent);\n }\n\n setCulled(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setColor(portionId, color) { // RGBA color is normalized as ints\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n tempUint8Vec4$2[0] = color[0];\n tempUint8Vec4$2[1] = color[1];\n tempUint8Vec4$2[2] = color[2];\n tempUint8Vec4$2[3] = color[3];\n if (this._state.colorsBuf) {\n this._state.colorsBuf.setData(tempUint8Vec4$2, portionId * 4, 4);\n }\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n // setMatrix(portionId, matrix) {\n //\n // if (!this._finalized) {\n // throw \"Not finalized\";\n // }\n //\n // var offset = portionId * 4;\n //\n // tempFloat32Vec4[0] = matrix[0];\n // tempFloat32Vec4[1] = matrix[4];\n // tempFloat32Vec4[2] = matrix[8];\n // tempFloat32Vec4[3] = matrix[12];\n //\n // this._state.modelMatrixCol0Buf.setData(tempFloat32Vec4, offset, 4);\n //\n // tempFloat32Vec4[0] = matrix[1];\n // tempFloat32Vec4[1] = matrix[5];\n // tempFloat32Vec4[2] = matrix[9];\n // tempFloat32Vec4[3] = matrix[13];\n //\n // this._state.modelMatrixCol1Buf.setData(tempFloat32Vec4, offset, 4);\n //\n // tempFloat32Vec4[0] = matrix[2];\n // tempFloat32Vec4[1] = matrix[6];\n // tempFloat32Vec4[2] = matrix[10];\n // tempFloat32Vec4[3] = matrix[14];\n //\n // this._state.modelMatrixCol2Buf.setData(tempFloat32Vec4, offset, 4);\n // }\n\n _setFlags(portionId, flags, meshTransparent) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n const edges = !!(flags & ENTITY_FLAGS.EDGES);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n // Normal fill\n\n let f0;\n if (!visible || culled || xrayed) { // Highlight & select are layered on top of color - not mutually exclusive\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (meshTransparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Emphasis fill\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Edges\n\n let f2 = 0;\n if (!visible || culled) {\n f2 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f2 = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n f2 = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n f2 = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (meshTransparent) {\n f2 = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n f2 = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n f2 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n tempUint8Vec4$2[0] = f0; // x - normal fill\n tempUint8Vec4$2[1] = f1; // y - emphasis fill\n tempUint8Vec4$2[2] = f2; // z - edges\n tempUint8Vec4$2[3] = f3; // w - pick\n\n if (this._state.flagsBuf) {\n this._state.flagsBuf.setData(tempUint8Vec4$2, portionId * 4, 4);\n }\n }\n\n _setFlags2(portionId, flags) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n tempUint8Vec4$2[0] = clippable;\n\n if (this._state.flags2Buf) {\n this._state.flags2Buf.setData(tempUint8Vec4$2, portionId * 4, 4);\n }\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n tempVec3fa$2[0] = offset[0];\n tempVec3fa$2[1] = offset[1];\n tempVec3fa$2[2] = offset[2];\n if (this._state.offsetsBuf) {\n this._state.offsetsBuf.setData(tempVec3fa$2, portionId * 3, 3);\n }\n }\n\n // ---------------------- COLOR RENDERING -----------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (frameCtx.withSAO && this.model.saoEnabled) {\n if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.normalsBuf) {\n if (this._instancingRenderers.colorQualityRendererWithSAO) {\n this._instancingRenderers.colorQualityRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._state.normalsBuf) {\n if (this._instancingRenderers.colorRendererWithSAO) {\n this._instancingRenderers.colorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._instancingRenderers.flatColorRendererWithSAO) {\n this._instancingRenderers.flatColorRendererWithSAO.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n }\n } else {\n if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.normalsBuf) {\n if (this._instancingRenderers.colorQualityRenderer) {\n this._instancingRenderers.colorQualityRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._state.normalsBuf) {\n if (this._instancingRenderers.colorRenderer) {\n this._instancingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n } else {\n if (this._instancingRenderers.flatColorRenderer) {\n this._instancingRenderers.flatColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n }\n }\n }\n\n _updateBackfaceCull(renderFlags, frameCtx) {\n const backfaces = this.model.backfaces || (!this.solid) || renderFlags.sectioned;\n if (frameCtx.backfaces !== backfaces) {\n const gl = frameCtx.gl;\n if (backfaces) {\n gl.disable(gl.CULL_FACE);\n } else {\n gl.enable(gl.CULL_FACE);\n }\n frameCtx.backfaces = backfaces;\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (frameCtx.pbrEnabled && this.model.pbrEnabled && this._state.normalsBuf) {\n if (this._instancingRenderers.colorQualityRenderer) {\n this._instancingRenderers.colorQualityRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else {\n if (this._state.normalsBuf) {\n if (this._instancingRenderers.colorRenderer) {\n this._instancingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n } else {\n if (this._instancingRenderers.flatColorRenderer) {\n this._instancingRenderers.flatColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n }\n }\n\n // ---------------------- RENDERING SAO POST EFFECT TARGETS --------------\n\n drawDepth(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._instancingRenderers.depthRenderer) {\n this._instancingRenderers.depthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); // Assume whatever post-effect uses depth (eg SAO) does not apply to transparent objects\n }\n }\n\n drawNormals(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._instancingRenderers.normalsRenderer) {\n this._instancingRenderers.normalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE); // Assume whatever post-effect uses normals (eg SAO) does not apply to transparent objects\n }\n }\n\n // ---------------------- SILHOUETTE RENDERING -----------------------------------\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._instancingRenderers.silhouetteRenderer) {\n this._instancingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._instancingRenderers.silhouetteRenderer) {\n this._instancingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._instancingRenderers.silhouetteRenderer) {\n this._instancingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n // ---------------------- EDGES RENDERING -----------------------------------\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numEdgesLayerPortions === 0) {\n return;\n }\n if (this._instancingRenderers.edgesColorRenderer) {\n this._instancingRenderers.edgesColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_COLOR_OPAQUE);\n }\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numEdgesLayerPortions === 0) {\n return;\n }\n if (this._instancingRenderers.edgesColorRenderer) {\n this._instancingRenderers.edgesColorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_COLOR_TRANSPARENT);\n }\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._instancingRenderers.edgesRenderer) {\n this._instancingRenderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_XRAYED);\n }\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._instancingRenderers.edgesRenderer) {\n this._instancingRenderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_HIGHLIGHTED);\n }\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._instancingRenderers.edgesRenderer) {\n this._instancingRenderers.edgesRenderer.drawLayer(frameCtx, this, RENDER_PASSES.EDGES_SELECTED);\n }\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n drawOcclusion(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._instancingRenderers.occlusionRenderer) {\n // Only opaque, filled objects can be occluders\n this._instancingRenderers.occlusionRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n drawShadow(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._instancingRenderers.shadowRenderer) {\n this._instancingRenderers.shadowRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n //---- PICKING ----------------------------------------------------------------------------------------------------\n\n drawPickMesh(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._instancingRenderers.pickMeshRenderer) {\n this._instancingRenderers.pickMeshRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickDepths(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._instancingRenderers.pickDepthRenderer) {\n this._instancingRenderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickNormals(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n this._updateBackfaceCull(renderFlags, frameCtx);\n if (this._instancingRenderers.pickNormalsRenderer) {\n this._instancingRenderers.pickNormalsRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n //-----------------------------------------------------------------------------------------\n\n precisionRayPickSurface(portionId, worldRayOrigin, worldRayDir, worldSurfacePos, worldNormal) {\n\n if (!this.model.scene.pickSurfacePrecisionEnabled) {\n return false;\n }\n\n const state = this._state;\n const portion = this._portions[portionId];\n\n if (!portion) {\n this.model.error(\"portion not found: \" + portionId);\n return false;\n }\n\n if (!portion.inverseMatrix) {\n portion.inverseMatrix = math.inverseMat4(portion.matrix, math.mat4());\n }\n\n if (worldNormal && !portion.normalMatrix) {\n portion.normalMatrix = math.transposeMat4(portion.inverseMatrix, math.mat4());\n }\n\n const quantizedPositions = state.quantizedPositions;\n const indices = state.indices;\n const rtcCenter = state.rtcCenter;\n const offset = portion.offset;\n\n const rtcRayOrigin = tempVec3a$p;\n const rtcRayDir = tempVec3b$6;\n\n rtcRayOrigin.set(rtcCenter ? math.subVec3(worldRayOrigin, rtcCenter, tempVec3c$3) : worldRayOrigin); // World -> RTC\n rtcRayDir.set(worldRayDir);\n\n if (offset) {\n math.subVec3(rtcRayOrigin, offset);\n }\n\n math.transformRay(this.model.worldNormalMatrix, rtcRayOrigin, rtcRayDir, rtcRayOrigin, rtcRayDir);\n\n math.transformRay(portion.inverseMatrix, rtcRayOrigin, rtcRayDir, rtcRayOrigin, rtcRayDir);\n\n const a = tempVec3d$1;\n const b = tempVec3e;\n const c = tempVec3f;\n\n let gotIntersect = false;\n let closestDist = 0;\n const closestIntersectPos = tempVec3g;\n\n for (let i = 0, len = indices.length; i < len; i += 3) {\n\n const ia = indices[i + 0] * 3;\n const ib = indices[i + 1] * 3;\n const ic = indices[i + 2] * 3;\n\n a[0] = quantizedPositions[ia];\n a[1] = quantizedPositions[ia + 1];\n a[2] = quantizedPositions[ia + 2];\n\n b[0] = quantizedPositions[ib];\n b[1] = quantizedPositions[ib + 1];\n b[2] = quantizedPositions[ib + 2];\n\n c[0] = quantizedPositions[ic];\n c[1] = quantizedPositions[ic + 1];\n c[2] = quantizedPositions[ic + 2];\n\n math.decompressPosition(a, state.positionsDecodeMatrix);\n math.decompressPosition(b, state.positionsDecodeMatrix);\n math.decompressPosition(c, state.positionsDecodeMatrix);\n\n if (math.rayTriangleIntersect(rtcRayOrigin, rtcRayDir, a, b, c, closestIntersectPos)) {\n\n math.transformPoint3(portion.matrix, closestIntersectPos, closestIntersectPos);\n\n math.transformPoint3(this.model.worldMatrix, closestIntersectPos, closestIntersectPos);\n\n if (offset) {\n math.addVec3(closestIntersectPos, offset);\n }\n\n if (rtcCenter) {\n math.addVec3(closestIntersectPos, rtcCenter);\n }\n\n const dist = Math.abs(math.lenVec3(math.subVec3(closestIntersectPos, worldRayOrigin, [])));\n\n if (!gotIntersect || dist > closestDist) {\n closestDist = dist;\n worldSurfacePos.set(closestIntersectPos);\n if (worldNormal) { // Not that wasteful to eagerly compute - unlikely to hit >2 surfaces on most geometry\n math.triangleNormal(a, b, c, worldNormal);\n }\n gotIntersect = true;\n }\n }\n }\n\n if (gotIntersect && worldNormal) {\n math.transformVec3(portion.normalMatrix, worldNormal, worldNormal);\n math.transformVec3(this.model.worldNormalMatrix, worldNormal, worldNormal);\n math.normalizeVec3(worldNormal);\n }\n\n return gotIntersect;\n }\n\n destroy() {\n const state = this._state;\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n state.positionsBuf = null;\n }\n if (state.normalsBuf) {\n state.normalsBuf.destroy();\n state.normalsBuf = null;\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.metallicRoughnessBuf) {\n state.metallicRoughnessBuf.destroy();\n state.metallicRoughnessBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.modelMatrixCol0Buf) {\n state.modelMatrixCol0Buf.destroy();\n state.modelMatrixCol0Buf = null;\n }\n if (state.modelMatrixCol1Buf) {\n state.modelMatrixCol1Buf.destroy();\n state.modelMatrixCol1Buf = null;\n }\n if (state.modelMatrixCol2Buf) {\n state.modelMatrixCol2Buf.destroy();\n state.modelMatrixCol2Buf = null;\n }\n if (state.modelNormalMatrixCol0Buf) {\n state.modelNormalMatrixCol0Buf.destroy();\n state.modelNormalMatrixCol0Buf = null;\n }\n if (state.modelNormalMatrixCol1Buf) {\n state.modelNormalMatrixCol1Buf.destroy();\n state.modelNormalMatrixCol1Buf = null;\n }\n if (state.modelNormalMatrixCol2Buf) {\n state.modelNormalMatrixCol2Buf.destroy();\n state.modelNormalMatrixCol2Buf = null;\n }\n if (state.indicesBuf) {\n state.indicesBuf.destroy();\n state.indicessBuf = null;\n }\n if (state.edgeIndicesBuf) {\n state.edgeIndicesBuf.destroy();\n state.edgeIndicessBuf = null;\n }\n if (state.pickColorsBuf) {\n state.pickColorsBuf.destroy();\n state.pickColorsBuf = null;\n }\n state.destroy();\n }\n}\n\nconst tempVec3a$o = math.vec3();\n\n/**\n * @private\n */\nclass LinesBatchingColorRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = batchingLayer.model;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.lineWidth(scene.linesMaterial.lineWidth);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$o);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const project = scene.camera.project;\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Lines batching color vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Lines batching color fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" gl_FragColor = vColor;\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst defaultColor$1 = new Float32Array([1, 1, 1]);\nconst tempVec3a$n = math.vec3();\n\n/**\n * @private\n */\nclass LinesBatchingSilhouetteRenderer {\n\n constructor(scene, primitiveType) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, batchingLayer, renderPass) {\n\n const model = batchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = batchingLayer._state;\n const rtcCenter = batchingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n if (renderPass === RENDER_PASSES.SILHOUETTE_XRAYED) {\n const material = scene.xrayMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_HIGHLIGHTED) {\n const material = scene.highlightMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_SELECTED) {\n const material = scene.selectedMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else {\n gl.uniform4fv(this._uColor, defaultColor$1);\n }\n\n const viewMat = (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix;\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMat);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.lineWidth(scene.linesMaterial.lineWidth);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = batchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$n);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, batchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n state.indicesBuf.bind();\n\n gl.drawElements(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n\n const src = [];\n\n src.push(\"// Lines batching silhouette vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n src.push(\"uniform vec4 color;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\n\n // flags.y = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`if (int(flags.y) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Lines batching silhouette fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"uniform vec4 color;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = color;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\n/**\n * @private\n */\nclass LinesBatchingRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new LinesBatchingColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new LinesBatchingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers$3 = {};\n\n/**\n * @private\n */\nfunction getBatchingRenderers(scene) {\n const sceneId = scene.id;\n let batchingRenderers = cachedRenderers$3[sceneId];\n if (!batchingRenderers) {\n batchingRenderers = new LinesBatchingRenderers(scene);\n cachedRenderers$3[sceneId] = batchingRenderers;\n batchingRenderers._compile();\n scene.on(\"compile\", () => {\n batchingRenderers._compile();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers$3[sceneId];\n batchingRenderers._destroy();\n });\n }\n return batchingRenderers;\n}\n\nconst bigIndicesSupported$3 = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\n/**\n * @private\n */\nclass LinesBatchingBuffer {\n\n constructor(maxGeometryBatchSize = 5000000) {\n\n if (bigIndicesSupported$3) {\n if (maxGeometryBatchSize > 5000000) {\n maxGeometryBatchSize = 5000000;\n }\n } else {\n if (maxGeometryBatchSize > 65530) {\n maxGeometryBatchSize = 65530;\n }\n }\n\n this.maxVerts = maxGeometryBatchSize;\n this.maxIndices = maxGeometryBatchSize * 3; // Rough rule-of-thumb\n this.positions = [];\n this.colors = [];\n this.flags = [];\n this.flags2 = [];\n this.offsets = [];\n this.indices = [];\n }\n}\n\nconst tempVec4a$5 = math.vec4([0, 0, 0, 1]);\nconst tempVec4b$5 = math.vec4([0, 0, 0, 1]);\nconst tempVec4c$5 = math.vec4([0, 0, 0, 1]);\nconst tempOBB3$1 = math.OBB3();\n\n/**\n * @private\n */\nclass LinesBatchingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positionsDecodeMatrix\n * @param cfg.maxGeometryBatchSize\n * @param cfg.rtcCenter\n * @param cfg.scratchMemory\n */\n constructor(model, cfg) {\n\n /**\n * Index of this LinesBatchingLayer in {@link PerformanceModel#_layerList}.\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._batchingRenderers = getBatchingRenderers(model.scene);\n this.model = model;\n this._buffer = new LinesBatchingBuffer(cfg.maxGeometryBatchSize);\n this._scratchMemory = cfg.scratchMemory;\n\n this._state = new RenderState({\n positionsBuf: null,\n offsetsBuf: null,\n colorsBuf: null,\n flagsBuf: null,\n flags2Buf: null,\n indicesBuf: null,\n positionsDecodeMatrix: math.mat4(),\n rtcCenter: null\n });\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numEdgesLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n this._modelAABB = math.collapseAABB3(); // Model-space AABB\n this._portions = [];\n\n this._finalized = false;\n this._positionsDecodeMatrix = cfg.positionsDecodeMatrix;\n this._preCompressed = (!!this._positionsDecodeMatrix);\n\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n /**\n * The axis-aligned World-space boundary of this LinesBatchingLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\n }\n\n /**\n * Tests if there is room for another portion in this LinesBatchingLayer.\n *\n * @param lenPositions Number of positions we'd like to create in the portion.\n * @param lenIndices Number of indices we'd like to create in this portion.\n * @returns {boolean} True if OK to create another portion.\n */\n canCreatePortion(lenPositions, lenIndices) {\n if (this._finalized) {\n throw \"Already finalized\";\n }\n return ((this._buffer.positions.length + lenPositions) < (this._buffer.maxVerts * 3) && (this._buffer.indices.length + lenIndices) < (this._buffer.maxIndices));\n }\n\n /**\n * Creates a new portion within this LinesBatchingLayer, returns the new portion ID.\n *\n * Gives the portion the specified geometry, color and matrix.\n *\n * @param cfg.positions Flat float Local-space positions array.\n * @param cfg.indices Flat int indices array.\n * @param cfg.color Quantized RGB color [0..255,0..255,0..255,0..255]\n * @param cfg.opacity Opacity [0..255]\n * @param [cfg.meshMatrix] Flat float 4x4 matrix\n * @param [cfg.worldMatrix] Flat float 4x4 matrix\n * @param cfg.worldAABB Flat float AABB World-space AABB\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID\n */\n createPortion(cfg) {\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n const positions = cfg.positions;\n const indices = cfg.indices;\n const color = cfg.color;\n const opacity = cfg.opacity;\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.worldAABB;\n cfg.pickColor;\n\n const buffer = this._buffer;\n const positionsIndex = buffer.positions.length;\n const vertsIndex = positionsIndex / 3;\n const numVerts = positions.length / 3;\n const lenPositions = positions.length;\n\n if (this._preCompressed) {\n\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n\n const bounds = geometryCompressionUtils.getPositionsBounds(positions);\n\n const min = geometryCompressionUtils.decompressPosition(bounds.min, this._positionsDecodeMatrix, []);\n const max = geometryCompressionUtils.decompressPosition(bounds.max, this._positionsDecodeMatrix, []);\n\n worldAABB[0] = min[0];\n worldAABB[1] = min[1];\n worldAABB[2] = min[2];\n worldAABB[3] = max[0];\n worldAABB[4] = max[1];\n worldAABB[5] = max[2];\n\n if (worldMatrix) {\n math.AABB3ToOBB3(worldAABB, tempOBB3$1);\n math.transformOBB3(worldMatrix, tempOBB3$1);\n math.OBB3ToAABB3(tempOBB3$1, worldAABB);\n }\n\n } else {\n\n const positionsBase = buffer.positions.length;\n\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n\n if (meshMatrix) {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a$5[0] = buffer.positions[i + 0];\n tempVec4a$5[1] = buffer.positions[i + 1];\n tempVec4a$5[2] = buffer.positions[i + 2];\n\n math.transformPoint4(meshMatrix, tempVec4a$5, tempVec4b$5);\n\n buffer.positions[i + 0] = tempVec4b$5[0];\n buffer.positions[i + 1] = tempVec4b$5[1];\n buffer.positions[i + 2] = tempVec4b$5[2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4b$5);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b$5, tempVec4c$5);\n math.expandAABB3Point3(worldAABB, tempVec4c$5);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b$5);\n }\n }\n\n } else {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a$5[0] = buffer.positions[i + 0];\n tempVec4a$5[1] = buffer.positions[i + 1];\n tempVec4a$5[2] = buffer.positions[i + 2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4a$5);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4a$5, tempVec4b$5);\n math.expandAABB3Point3(worldAABB, tempVec4b$5);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4a$5);\n }\n }\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\n\n if (color) {\n\n const r = color[0]; // Color is pre-quantized by PerformanceModel\n const g = color[1];\n const b = color[2];\n const a = opacity;\n\n for (let i = 0; i < numVerts; i++) {\n buffer.colors.push(r);\n buffer.colors.push(g);\n buffer.colors.push(b);\n buffer.colors.push(a);\n }\n }\n\n if (indices) {\n for (let i = 0, len = indices.length; i < len; i++) {\n buffer.indices.push(indices[i] + vertsIndex);\n }\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n for (let i = 0; i < numVerts; i++) {\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n }\n }\n\n const portionId = this._portions.length / 2;\n\n this._portions.push(vertsIndex);\n this._portions.push(numVerts);\n\n this._numPortions++;\n this.model.numPortions++;\n\n return portionId;\n }\n\n /**\n * Builds batch VBOs from appended geometries.\n * No more portions can then be created.\n */\n finalize() {\n\n if (this._finalized) {\n this.model.error(\"Already finalized\");\n return;\n }\n\n const state = this._state;\n const gl = this.model.scene.canvas.gl;\n const buffer = this._buffer;\n\n if (buffer.positions.length > 0) {\n if (this._preCompressed) {\n state.positionsDecodeMatrix = this._positionsDecodeMatrix;\n const positions = new Uint16Array(buffer.positions);\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, buffer.positions.length, 3, gl.STATIC_DRAW);\n } else {\n const positions = new Float32Array(buffer.positions);\n const quantizedPositions = quantizePositions(positions, this._modelAABB, state.positionsDecodeMatrix);\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, buffer.positions.length, 3, gl.STATIC_DRAW);\n }\n }\n\n if (buffer.colors.length > 0) {\n const colors = new Uint8Array(buffer.colors);\n let normalized = false;\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, buffer.colors.length, 4, gl.DYNAMIC_DRAW, normalized);\n }\n\n if (buffer.colors.length > 0) { // Because we build flags arrays here, get their length from the colors array\n const flagsLength = buffer.colors.length;\n const flags = new Uint8Array(flagsLength);\n const flags2 = new Uint8Array(flagsLength);\n let notNormalized = false;\n let normalized = true;\n state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags, flags.length, 4, gl.DYNAMIC_DRAW, notNormalized);\n state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags2, flags2.length, 4, gl.DYNAMIC_DRAW, normalized);\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n if (buffer.offsets.length > 0) {\n const offsets = new Float32Array(buffer.offsets);\n state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, offsets, buffer.offsets.length, 3, gl.DYNAMIC_DRAW);\n }\n }\n\n const bigIndicesSupported = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\n if (buffer.indices.length > 0) {\n const indices = bigIndicesSupported ? new Uint32Array(buffer.indices) : new Uint16Array(buffer.indices);\n state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, indices, buffer.indices.length, 1, gl.STATIC_DRAW);\n }\n\n this._buffer = null;\n this._finalized = true;\n }\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n this._setFlags(portionId, flags, meshTransparent);\n this._setFlags2(portionId, flags);\n }\n\n setVisible(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setHighlighted(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setXRayed(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setSelected(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setEdges(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n } else {\n this._numEdgesLayerPortions--;\n this.model.numEdgesLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags2(portionId, flags);\n }\n\n setCulled(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setColor(portionId, color) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstColor = vertexBase * 4;\n const lenColor = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenColor);\n const r = color[0];\n const g = color[1];\n const b = color[2];\n const a = color[3];\n for (let i = 0; i < lenColor; i += 4) {\n tempArray[i + 0] = r;\n tempArray[i + 1] = g;\n tempArray[i + 2] = b;\n tempArray[i + 3] = a;\n }\n this._state.colorsBuf.setData(tempArray, firstColor, lenColor);\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n _setFlags(portionId, flags, transparent) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstFlag = vertexBase * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenFlags);\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n // Color\n\n let f0;\n if (!visible || culled || xrayed) {\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (transparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Silhouette\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = f0; // x - color\n tempArray[i + 1] = f1; // y - silhouette - select/highlight/xray\n tempArray[i + 2] = 0; // z - edges\n tempArray[i + 3] = f3; // w - pickable\n }\n\n this._state.flagsBuf.setData(tempArray, firstFlag, lenFlags);\n }\n\n _setFlags2(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstFlag = vertexBase * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenFlags);\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = clippable;\n }\n this._state.flags2Buf.setData(tempArray, firstFlag, lenFlags);\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstOffset = vertexBase * 3;\n const lenOffsets = numVerts * 3;\n const tempArray = this._scratchMemory.getFloat32Array(lenOffsets);\n const x = offset[0];\n const y = offset[1];\n const z = offset[2];\n for (let i = 0; i < lenOffsets; i += 3) {\n tempArray[i + 0] = x;\n tempArray[i + 1] = y;\n tempArray[i + 2] = z;\n }\n this._state.offsetsBuf.setData(tempArray, firstOffset, lenOffsets);\n }\n\n //-- RENDERING ----------------------------------------------------------------------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._batchingRenderers.colorRenderer) {\n this._batchingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._batchingRenderers.colorRenderer) {\n this._batchingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n\n drawDepth(renderFlags, frameCtx) {\n }\n\n drawNormals(renderFlags, frameCtx) {\n }\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._batchingRenderers.silhouetteRenderer) {\n this._batchingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n }\n\n drawPickMesh(frameCtx) {\n }\n\n drawPickDepths(frameCtx) {\n }\n\n drawPickNormals(frameCtx) {\n }\n\n drawOcclusion(frameCtx) {\n }\n\n drawShadow(frameCtx) {\n }\n\n destroy() {\n const state = this._state;\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n state.positionsBuf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = null;\n }\n if (state.indicesBuf) {\n state.indicesBuf.destroy();\n state.indicessBuf = null;\n }\n state.destroy();\n }\n}\n\nconst tempVec3a$m = math.vec3();\n\n/**\n * @private\n */\nclass LinesInstancingColorRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.lineWidth(scene.linesMaterial.lineWidth);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$m);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aOffset = program.getAttribute(\"offset\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uOcclusionTexture = \"uOcclusionTexture\";\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n this._program.bind();\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n if ( scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Lines instancing color vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n src.push(\"uniform vec4 lightAmbient;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, float(color.a) / 255.0);\");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n let i;\n let len;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Lines instancing color fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n\n // Doing SAO blend in the main solid fill draw shader just so that edge lines can be drawn over the top\n // Would be more efficient to defer this, then render lines later, using same depth buffer for Z-reject\n\n if (this._withSAO) {\n src.push(\" float viewportWidth = uSAOParams[0];\");\n src.push(\" float viewportHeight = uSAOParams[1];\");\n src.push(\" float blendCutoff = uSAOParams[2];\");\n src.push(\" float blendFactor = uSAOParams[3];\");\n src.push(\" vec2 uv = vec2(gl_FragCoord.x / viewportWidth, gl_FragCoord.y / viewportHeight);\");\n src.push(\" float ambient = smoothstep(blendCutoff, 1.0, unpackRGBAToDepth(texture2D(uOcclusionTexture, uv))) * blendFactor;\");\n src.push(\" gl_FragColor = vec4(vColor.rgb * ambient, vColor.a);\");\n } else {\n src.push(\" gl_FragColor = vColor;\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$l = math.vec3();\n\n/**\n * @private\n */\nclass LinesInstancingSilhouetteRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n\n if (!this._program) {\n this._allocate(instancingLayer.model.scene);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n if (renderPass === RENDER_PASSES.SILHOUETTE_XRAYED) {\n const material = scene.xrayMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_HIGHLIGHTED) {\n const material = scene.highlightMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_SELECTED) {\n const material = scene.selectedMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else {\n gl.uniform4fv(this._uColor, math.vec3([1, 1, 1]));\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.lineWidth(scene.linesMaterial.lineWidth);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$l);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n state.indicesBuf.bind();\n\n instanceExt.drawElementsInstancedANGLE(gl.LINES, state.indicesBuf.numItems, state.indicesBuf.itemType, 0, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0); // TODO: Is this needed\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if ( scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Lines instancing silhouette vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n src.push(\"uniform vec4 color;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\n\n // flags.y = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`if (int(flags.y) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"gl_Position = clipPos;\");\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Lines instancing silhouette fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"uniform vec4 color;\");\n src.push(\"void main(void) {\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = color;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\n/**\n * @private\n */\nclass LinesInstancingRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new LinesInstancingColorRenderer(this._scene);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new LinesInstancingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers$2 = {};\n\n/**\n * @private\n */\nfunction getInstancingRenderers(scene) {\n const sceneId = scene.id;\n let instancingRenderers = cachedRenderers$2[sceneId];\n if (!instancingRenderers) {\n instancingRenderers = new LinesInstancingRenderers(scene);\n cachedRenderers$2[sceneId] = instancingRenderers;\n instancingRenderers._compile();\n scene.on(\"compile\", () => {\n instancingRenderers._compile();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers$2[sceneId];\n instancingRenderers._destroy();\n });\n }\n return instancingRenderers;\n}\n\nconst bigIndicesSupported$2 = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\nconst tempUint8Vec4$1 = new Uint8Array(4);\n\nconst tempVec4a$4 = math.vec4([0, 0, 0, 1]);\nconst tempVec4b$4 = math.vec4([0, 0, 0, 1]);\nconst tempVec4c$4 = math.vec4([0, 0, 0, 1]);\n\nconst tempVec3fa$1 = new Float32Array(3);\n\n/**\n * @private\n */\nclass LinesInstancingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positions Flat float Local-space positions array.\n * @param cfg.indices Flat int indices array.\n * @param cfg.rtcCenter\n */\n constructor(model, cfg) {\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"LinesInstancingLayer\";\n\n /**\n * Index of this InstancingLayer in PerformanceModel#_layerList\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._linesInstancingRenderers = getInstancingRenderers(model.scene);\n this.model = model;\n this._aabb = math.collapseAABB3();\n\n const gl = model.scene.canvas.gl;\n\n const stateCfg = {\n positionsDecodeMatrix: math.mat4(),\n numInstances: 0,\n obb: math.OBB3(),\n rtcCenter: null\n };\n\n const preCompressed = (!!cfg.positionsDecodeMatrix);\n\n if (cfg.positions) {\n\n if (preCompressed) {\n\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.positions, cfg.positions.length, 3, gl.STATIC_DRAW, normalized);\n stateCfg.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix);\n\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n geometryCompressionUtils.decompressAABB(localAABB, stateCfg.positionsDecodeMatrix);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n\n } else {\n\n let lenPositions = cfg.positions.length;\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n const quantizedPositions = quantizePositions(cfg.positions, localAABB, stateCfg.positionsDecodeMatrix);\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, lenPositions, 3, gl.STATIC_DRAW, normalized);\n }\n }\n\n if (cfg.indices) {\n stateCfg.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, bigIndicesSupported$2 ? new Uint32Array(cfg.indices) : new Uint16Array(cfg.indices), cfg.indices.length, 1, gl.STATIC_DRAW);\n }\n\n this._state = new RenderState(stateCfg);\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numEdgesLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n /** @private */\n this.numIndices = (cfg.indices) ? cfg.indices.length / 3 : 0;\n\n // Vertex arrays\n this._colors = [];\n this._offsets = [];\n\n // Modeling matrix per instance, array for each column\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n\n this._portions = [];\n\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n this._finalized = false;\n\n /**\n * The axis-aligned World-space boundary of this InstancingLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\n }\n\n /**\n * Creates a new portion within this InstancingLayer, returns the new portion ID.\n *\n * The portion will instance this InstancingLayer's geometry.\n *\n * Gives the portion the specified color and matrix.\n *\n * @param cfg Portion params\n * @param cfg.color Color [0..255,0..255,0..255]\n * @param cfg.opacity Opacity [0..255].\n * @param cfg.meshMatrix Flat float 4x4 matrix.\n * @param [cfg.worldMatrix] Flat float 4x4 matrix.\n * @param cfg.aabb Flat float AABB.\n * @returns {number} Portion ID.\n */\n createPortion(cfg) {\n\n const color = cfg.color;\n const opacity = cfg.opacity;\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.aabb;\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n // TODO: find AABB for portion by transforming the geometry local AABB by the given meshMatrix?\n\n const r = color[0]; // Color is pre-quantized by PerformanceModel\n const g = color[1];\n const b = color[2];\n color[3];\n\n this._colors.push(r);\n this._colors.push(g);\n this._colors.push(b);\n this._colors.push(opacity);\n\n if (this.model.scene.entityOffsetsEnabled) {\n this._offsets.push(0);\n this._offsets.push(0);\n this._offsets.push(0);\n }\n\n this._modelMatrixCol0.push(meshMatrix[0]);\n this._modelMatrixCol0.push(meshMatrix[4]);\n this._modelMatrixCol0.push(meshMatrix[8]);\n this._modelMatrixCol0.push(meshMatrix[12]);\n\n this._modelMatrixCol1.push(meshMatrix[1]);\n this._modelMatrixCol1.push(meshMatrix[5]);\n this._modelMatrixCol1.push(meshMatrix[9]);\n this._modelMatrixCol1.push(meshMatrix[13]);\n\n this._modelMatrixCol2.push(meshMatrix[2]);\n this._modelMatrixCol2.push(meshMatrix[6]);\n this._modelMatrixCol2.push(meshMatrix[10]);\n this._modelMatrixCol2.push(meshMatrix[14]);\n\n // Expand AABB\n\n math.collapseAABB3(worldAABB);\n const obb = this._state.obb;\n const lenPositions = obb.length;\n for (let i = 0; i < lenPositions; i += 4) {\n tempVec4a$4[0] = obb[i + 0];\n tempVec4a$4[1] = obb[i + 1];\n tempVec4a$4[2] = obb[i + 2];\n math.transformPoint4(meshMatrix, tempVec4a$4, tempVec4b$4);\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b$4, tempVec4c$4);\n math.expandAABB3Point3(worldAABB, tempVec4c$4);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b$4);\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\n\n this._state.numInstances++;\n\n const portionId = this._portions.length;\n this._portions.push({});\n\n this._numPortions++;\n this.model.numPortions++;\n\n return portionId;\n }\n\n finalize() {\n if (this._finalized) {\n throw \"Already finalized\";\n }\n const gl = this.model.scene.canvas.gl;\n const colorsLength = this._colors.length;\n const flagsLength = colorsLength;\n if (colorsLength > 0) {\n let notNormalized = false;\n this._state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._colors), this._colors.length, 4, gl.DYNAMIC_DRAW, notNormalized);\n this._colors = []; // Release memory\n }\n if (flagsLength > 0) {\n // Because we only build flags arrays here, \n // get their length from the colors array\n let notNormalized = false;\n let normalized = true;\n this._state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, notNormalized);\n this._state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, normalized);\n }\n if (this.model.scene.entityOffsetsEnabled) {\n if (this._offsets.length > 0) {\n const notNormalized = false;\n this._state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._offsets), this._offsets.length, 3, gl.DYNAMIC_DRAW, notNormalized);\n this._offsets = []; // Release memory\n }\n }\n if (this._modelMatrixCol0.length > 0) {\n const normalized = false;\n this._state.modelMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol0), this._modelMatrixCol0.length, 4, gl.STATIC_DRAW, normalized);\n this._state.modelMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol1), this._modelMatrixCol1.length, 4, gl.STATIC_DRAW, normalized);\n this._state.modelMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol2), this._modelMatrixCol2.length, 4, gl.STATIC_DRAW, normalized);\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n }\n this._finalized = true;\n }\n\n // The following setters are called by PerformanceMesh, in turn called by PerformanceNode, only after the layer is finalized.\n // It's important that these are called after finalize() in order to maintain integrity of counts like _numVisibleLayerPortions etc.\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n this._setFlags(portionId, flags, meshTransparent);\n this._setFlags2(portionId, flags);\n }\n\n setVisible(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setHighlighted(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setXRayed(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setSelected(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setEdges(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n } else {\n this._numEdgesLayerPortions--;\n this.model.numEdgesLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags2(portionId, flags);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags2(portionId, flags, meshTransparent);\n }\n\n setCulled(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setColor(portionId, color) { // RGBA color is normalized as ints\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n tempUint8Vec4$1[0] = color[0];\n tempUint8Vec4$1[1] = color[1];\n tempUint8Vec4$1[2] = color[2];\n tempUint8Vec4$1[3] = color[3];\n this._state.colorsBuf.setData(tempUint8Vec4$1, portionId * 4, 4);\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n _setFlags(portionId, flags, meshTransparent) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n const edges = !!(flags & ENTITY_FLAGS.EDGES);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n // Normal fill\n\n let f0;\n if (!visible || culled || xrayed) {\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (meshTransparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Emphasis fill\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Edges\n\n let f2 = 0;\n if (!visible || culled) {\n f2 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f2 = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n f2 = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n f2 = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (meshTransparent) {\n f2 = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n f2 = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n f2 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n tempUint8Vec4$1[0] = f0; // x - normal fill\n tempUint8Vec4$1[1] = f1; // y - emphasis fill\n tempUint8Vec4$1[2] = f2; // z - edges\n tempUint8Vec4$1[3] = f3; // w - pick\n\n this._state.flagsBuf.setData(tempUint8Vec4$1, portionId * 4, 4);\n }\n\n _setFlags2(portionId, flags) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n tempUint8Vec4$1[0] = clippable;\n\n this._state.flags2Buf.setData(tempUint8Vec4$1, portionId * 4, 4);\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n tempVec3fa$1[0] = offset[0];\n tempVec3fa$1[1] = offset[1];\n tempVec3fa$1[2] = offset[2];\n this._state.offsetsBuf.setData(tempVec3fa$1, portionId * 3, 3);\n }\n\n // ---------------------- NORMAL RENDERING -----------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n\n if (this._linesInstancingRenderers.colorRenderer) {\n this._linesInstancingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._linesInstancingRenderers.colorRenderer) {\n this._linesInstancingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n\n // ---------------------- RENDERING SAO POST EFFECT TARGETS --------------\n\n drawDepth(renderFlags, frameCtx) {\n }\n\n drawNormals(renderFlags, frameCtx) {\n }\n\n // ---------------------- EMPHASIS RENDERING -----------------------------------\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._linesInstancingRenderers.silhouetteRenderer) {\n this._linesInstancingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._linesInstancingRenderers.silhouetteRenderer) {\n this._linesInstancingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._linesInstancingRenderers.silhouetteRenderer) {\n this._linesInstancingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n // ---------------------- EDGES RENDERING -----------------------------------\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n drawOcclusion(renderFlags, frameCtx) {\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n drawShadow(renderFlags, frameCtx) {\n }\n\n //---- PICKING ----------------------------------------------------------------------------------------------------\n\n drawPickMesh(renderFlags, frameCtx) {\n }\n\n drawPickDepths(renderFlags, frameCtx) {\n }\n\n drawPickNormals(renderFlags, frameCtx) {\n }\n\n\n destroy() {\n const state = this._state;\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n state.positionsBuf = null;\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.modelMatrixCol0Buf) {\n state.modelMatrixCol0Buf.destroy();\n state.modelMatrixCol0Buf = null;\n }\n if (state.modelMatrixCol1Buf) {\n state.modelMatrixCol1Buf.destroy();\n state.modelMatrixCol1Buf = null;\n }\n if (state.modelMatrixCol2Buf) {\n state.modelMatrixCol2Buf.destroy();\n state.modelMatrixCol2Buf = null;\n }\n if (state.indicesBuf) {\n state.indicesBuf.destroy();\n state.indicessBuf = null;\n }\n state.destroy();\n }\n}\n\nconst tempVec3a$k = math.vec3();\n\n/**\n * @private\n */\nclass PointsBatchingColorRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n }\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, pointsBatchingLayer, renderPass) {\n\n const scene = this._scene;\n const camera = scene.camera;\n const model = pointsBatchingLayer.model;\n const gl = scene.canvas.gl;\n const state = pointsBatchingLayer._state;\n const rtcCenter = pointsBatchingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = pointsBatchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$k);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, pointsBatchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n }\n\n if (pointsMaterial.filterIntensity) {\n gl.uniform2f(this._uIntensityRange, pointsMaterial.minIntensity, pointsMaterial.maxIntensity);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const pointsMaterial = scene.pointsMaterial._state;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader(scene));\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (pointsMaterial.filterIntensity) {\n this._uIntensityRange = program.getLocation(\"intensityRange\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n const project = scene.camera.project;\n\n program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial;\n const src = [];\n\n src.push(\"// Points batching color vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"uniform mat4 worldMatrix;\");\n\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (pointsMaterial.filterIntensity) {\n src.push(\"uniform vec2 intensityRange;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n if (pointsMaterial.filterIntensity) {\n src.push(\"float intensity = float(color.a) / 255.0;\");\n src.push(\"if (intensity < intensityRange[0] || intensity > intensityRange[1]) {\");\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n }\n\n src.push(\"vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\"worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, 1.0);\");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n if (pointsMaterial.filterIntensity) {\n src.push(\"}\");\n }\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n\n src.push(\"// Points batching color fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" gl_FragColor = vColor;\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst defaultColor = new Float32Array([1, 1, 1]);\nconst tempVec3a$j = math.vec3();\n\n/**\n * @private\n */\nclass PointsBatchingSilhouetteRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, pointsBatchingLayer, renderPass) {\n\n const model = pointsBatchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = pointsBatchingLayer._state;\n const rtcCenter = pointsBatchingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n if (renderPass === RENDER_PASSES.SILHOUETTE_XRAYED) {\n const material = scene.xrayMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_HIGHLIGHTED) {\n const material = scene.highlightMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_SELECTED) {\n const material = scene.selectedMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else {\n gl.uniform4fv(this._uColor, defaultColor);\n }\n\n const viewMat = (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix;\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMat);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = pointsBatchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$j);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, pointsBatchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points batching silhouette vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n src.push(\"uniform vec4 color;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\n\n // flags.y = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`if (int(flags.y) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n let i;\n let len;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points batching silhouette vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"uniform vec4 color;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = color;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$i = math.vec3();\n\n/**\n * @private\n */\nclass PointsBatchingPickMeshRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + (this._scene.pointsMaterial.hash);\n }\n\n drawLayer(frameCtx, pointsBatchingLayer, renderPass) {\n\n const model = pointsBatchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = pointsBatchingLayer._state;\n const rtcCenter = pointsBatchingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate(pointsBatchingLayer);\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const viewMatrix = rtcCenter ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(camera.project.far + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = pointsBatchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$i);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, pointsBatchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n if (this._aPickColor) {\n this._aPickColor.bindArrayBuffer(state.pickColorsBuf);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aPickColor = program.getAttribute(\"pickColor\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n this._program.bind();\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points batching pick mesh vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 pickColor;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vPickColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n src.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"gl_PointSize += 10.0;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points batching pick mesh vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vPickColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vPickColor; \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$h = math.vec3();\n\n/**\n * @private\n */\nclass PointsBatchingPickDepthRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + (this._scene.pointsMaterial.hash);\n }\n\n drawLayer(frameCtx, pointsBatchingLayer, renderPass) {\n\n const model = pointsBatchingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = pointsBatchingLayer._state;\n const rtcCenter = pointsBatchingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate();\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const viewMatrix = rtcCenter ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, viewMatrix);\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n gl.uniform1f(this._uPickZNear, frameCtx.pickZNear);\n gl.uniform1f(this._uPickZFar, frameCtx.pickZFar);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = pointsBatchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$h);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n //=============================================================\n // TODO: Use drawElements count and offset to draw only one entity\n //=============================================================\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, pointsBatchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n if (this._aFlags) {\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n }\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._uPickZNear = program.getLocation(\"pickZNear\");\n this._uPickZFar = program.getLocation(\"pickZFar\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n this._program.bind();\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points batched pick depth vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vViewPosition = viewPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"gl_PointSize += 10.0;\");\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points batched pick depth fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"vec4 packDepth(const in float depth) {\");\n src.push(\" const vec4 bitShift = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);\");\n src.push(\" vec4 res = fract(depth * bitShift);\");\n src.push(\" res -= res.xxyz * bitMask;\");\n src.push(\" return res;\");\n src.push(\"}\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (var i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" gl_FragColor = packDepth(zNormalizedDepth); \"); // Must be linear depth\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$g = math.vec3();\n\n/**\n * @private\n */\nclass PointsBatchingOcclusionRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + (this._scene.pointsMaterial.hash);\n }\n\n drawLayer(frameCtx, pointsBatchingLayer, renderPass) {\n\n const model = pointsBatchingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = pointsBatchingLayer._state;\n const camera = scene.camera;\n const rtcCenter = pointsBatchingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate(pointsBatchingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = pointsBatchingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$g);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, pointsBatchingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n gl.drawArrays(gl.POINTS, 0, state.positionsBuf.numItems);\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const clipping = scene._sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push(\"// Points batching occlusion vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n // Only opaque objects can be occluders\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\" } else {\");\n src.push(\" vec4 worldPosition = worldMatrix * (positionsDecodeMatrix * vec4(position, 1.0)); \");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\" gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\" }\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points batching occlusion fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\" if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\" }\");\n }\n src.push(\" if (dist > 0.0) { discard; }\");\n src.push(\" }\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\n/**\n * @private\n */\nclass PointsBatchingRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n if (this._pickMeshRenderer && (!this._pickMeshRenderer.getValid())) {\n this._pickMeshRenderer.destroy();\n this._pickMeshRenderer = null;\n }\n if (this._pickDepthRenderer && (!this._pickDepthRenderer.getValid())) {\n this._pickDepthRenderer.destroy();\n this._pickDepthRenderer = null;\n }\n if (this._occlusionRenderer && this._occlusionRenderer.getValid() === false) {\n this._occlusionRenderer.destroy();\n this._occlusionRenderer = null;\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new PointsBatchingColorRenderer(this._scene);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new PointsBatchingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new PointsBatchingPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new PointsBatchingPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new PointsBatchingOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.destroy();\n }\n if (this._pickDepthRenderer) {\n this._pickDepthRenderer.destroy();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers$1 = {};\n\n/**\n * @private\n */\nfunction getPointsBatchingRenderers(scene) {\n const sceneId = scene.id;\n let renderers = cachedRenderers$1[sceneId];\n if (!renderers) {\n renderers = new PointsBatchingRenderers(scene);\n cachedRenderers$1[sceneId] = renderers;\n renderers._compile();\n scene.on(\"compile\", () => {\n renderers._compile();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers$1[sceneId];\n renderers._destroy();\n });\n }\n return renderers;\n}\n\nconst bigIndicesSupported$1 = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\n\n/**\n * @private\n */\nclass PointsBatchingBuffer {\n\n constructor(maxGeometryBatchSize = 5000000) {\n\n if (bigIndicesSupported$1) {\n if (maxGeometryBatchSize > 5000000) {\n maxGeometryBatchSize = 5000000;\n }\n } else {\n if (maxGeometryBatchSize > 65530) {\n maxGeometryBatchSize = 65530;\n }\n }\n\n this.maxVerts = maxGeometryBatchSize;\n this.maxIndices = maxGeometryBatchSize * 3; // Rough rule-of-thumb\n this.positions = [];\n this.colors = [];\n this.intensities = [];\n this.pickColors = [];\n this.flags = [];\n this.flags2 = [];\n this.offsets = [];\n }\n}\n\nconst tempVec3a$f = math.vec4();\nconst tempVec3b$5 = math.vec4();\nconst tempVec4a$3 = math.vec4([0, 0, 0, 1]);\nconst tempVec4b$3 = math.vec4([0, 0, 0, 1]);\nconst tempVec4c$3 = math.vec4([0, 0, 0, 1]);\nconst tempOBB3 = math.OBB3();\n\n/**\n * @private\n */\nclass PointsBatchingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positionsDecodeMatrix\n * @param cfg.maxGeometryBatchSize\n * @param cfg.rtcCenter\n * @param cfg.scratchMemory\n */\n constructor(model, cfg) {\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"PointsBatchingLayer\";\n\n /**\n * Index of this PointCloudLayer in {@link PerformanceModel#_layerList}.\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._pointsBatchingRenderers = getPointsBatchingRenderers(model.scene);\n this.model = model;\n this._buffer = new PointsBatchingBuffer(cfg.maxGeometryBatchSize);\n this._scratchMemory = cfg.scratchMemory;\n\n this._state = new RenderState({\n positionsBuf: null,\n offsetsBuf: null,\n colorsBuf: null,\n flagsBuf: null,\n flags2Buf: null,\n positionsDecodeMatrix: math.mat4(),\n rtcCenter: null\n });\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n this._modelAABB = math.collapseAABB3(); // Model-space AABB\n this._portions = [];\n\n this._finalized = false;\n this._positionsDecodeMatrix = cfg.positionsDecodeMatrix;\n this._preCompressed = (!!this._positionsDecodeMatrix);\n\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n /**\n * The axis-aligned World-space boundary of this PointCloudLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\n }\n\n /**\n * Tests if there is room for another portion in this PointCloudLayer.\n *\n * @param lenPositions Number of positions we'd like to create in the portion.\n * @returns {boolean} True if OK to create another portion.\n */\n canCreatePortion(lenPositions) {\n if (this._finalized) {\n throw \"Already finalized\";\n }\n return ((this._buffer.positions.length + lenPositions) < (this._buffer.maxVerts * 3));\n }\n\n /**\n * Creates a new portion within this PointCloudLayer, returns the new portion ID.\n *\n * Gives the portion the specified geometry, color and matrix.\n *\n * @param cfg.positions Flat float Local-space positions array.\n * @param [cfg.colorsCompressed] Quantized RGB colors [0..255,0..255,0..255,0..255]\n * @param [cfg.colors] Flat float colors array.\n * @param cfg.color Float RGB color [0..1,0..1,0..1]\n\n * @param [cfg.meshMatrix] Flat float 4x4 matrix\n * @param [cfg.worldMatrix] Flat float 4x4 matrix\n * @param cfg.worldAABB Flat float AABB World-space AABB\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID\n */\n createPortion(cfg) {\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n const positions = cfg.positions;\n const color = cfg.color;\n const colorsCompressed = cfg.colorsCompressed;\n const colors = cfg.colors;\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.worldAABB;\n const pickColor = cfg.pickColor;\n\n const buffer = this._buffer;\n const positionsIndex = buffer.positions.length;\n const vertsIndex = positionsIndex / 3;\n const numVerts = positions.length / 3;\n const lenPositions = positions.length;\n\n if (this._preCompressed) {\n\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n\n const bounds = geometryCompressionUtils.getPositionsBounds(positions);\n\n const min = geometryCompressionUtils.decompressPosition(bounds.min, this._positionsDecodeMatrix, tempVec3a$f);\n const max = geometryCompressionUtils.decompressPosition(bounds.max, this._positionsDecodeMatrix, tempVec3b$5);\n\n worldAABB[0] = min[0];\n worldAABB[1] = min[1];\n worldAABB[2] = min[2];\n worldAABB[3] = max[0];\n worldAABB[4] = max[1];\n worldAABB[5] = max[2];\n\n if (worldMatrix) {\n math.AABB3ToOBB3(worldAABB, tempOBB3);\n math.transformOBB3(worldMatrix, tempOBB3);\n math.OBB3ToAABB3(tempOBB3, worldAABB);\n }\n\n } else {\n\n const positionsBase = buffer.positions.length;\n\n for (let i = 0, len = positions.length; i < len; i++) {\n buffer.positions.push(positions[i]);\n }\n\n if (meshMatrix) {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a$3[0] = buffer.positions[i + 0];\n tempVec4a$3[1] = buffer.positions[i + 1];\n tempVec4a$3[2] = buffer.positions[i + 2];\n\n math.transformPoint4(meshMatrix, tempVec4a$3, tempVec4b$3);\n\n buffer.positions[i + 0] = tempVec4b$3[0];\n buffer.positions[i + 1] = tempVec4b$3[1];\n buffer.positions[i + 2] = tempVec4b$3[2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4b$3);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b$3, tempVec4c$3);\n math.expandAABB3Point3(worldAABB, tempVec4c$3);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b$3);\n }\n }\n\n } else {\n\n for (let i = positionsBase, len = positionsBase + lenPositions; i < len; i += 3) {\n\n tempVec4a$3[0] = buffer.positions[i + 0];\n tempVec4a$3[1] = buffer.positions[i + 1];\n tempVec4a$3[2] = buffer.positions[i + 2];\n\n math.expandAABB3Point3(this._modelAABB, tempVec4a$3);\n\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4a$3, tempVec4b$3);\n math.expandAABB3Point3(worldAABB, tempVec4b$3);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4a$3);\n }\n }\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\n\n if (colorsCompressed) {\n for (let i = 0, len = colorsCompressed.length; i < len; i++) {\n buffer.colors.push(colorsCompressed[i]);\n }\n\n } else if (colors) {\n for (let i = 0, len = colors.length; i < len; i++) {\n buffer.colors.push(colors[i] * 255);\n }\n\n } else if (color) {\n\n const r = color[0]; // Color is pre-quantized by PerformanceModel\n const g = color[1];\n const b = color[2];\n const a = 1.0;\n\n for (let i = 0; i < numVerts; i++) {\n buffer.colors.push(r);\n buffer.colors.push(g);\n buffer.colors.push(b);\n buffer.colors.push(a);\n }\n }\n\n {\n const pickColorsBase = buffer.pickColors.length;\n const lenPickColors = numVerts * 4;\n for (let i = pickColorsBase, len = pickColorsBase + lenPickColors; i < len; i += 4) {\n buffer.pickColors.push(pickColor[0]);\n buffer.pickColors.push(pickColor[1]);\n buffer.pickColors.push(pickColor[2]);\n buffer.pickColors.push(pickColor[3]);\n }\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n for (let i = 0; i < numVerts; i++) {\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n buffer.offsets.push(0);\n }\n }\n\n const portionId = this._portions.length / 2;\n\n this._portions.push(vertsIndex);\n this._portions.push(numVerts);\n\n this._numPortions++;\n this.model.numPortions++;\n\n return portionId;\n }\n\n /**\n * Builds batch VBOs from appended geometries.\n * No more portions can then be created.\n */\n finalize() {\n\n if (this._finalized) {\n this.model.error(\"Already finalized\");\n return;\n }\n\n const state = this._state;\n const gl = this.model.scene.canvas.gl;\n const buffer = this._buffer;\n\n if (buffer.positions.length > 0) {\n if (this._preCompressed) {\n state.positionsDecodeMatrix = this._positionsDecodeMatrix;\n const positions = new Uint16Array(buffer.positions);\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, buffer.positions.length, 3, gl.STATIC_DRAW);\n } else {\n const positions = new Float32Array(buffer.positions);\n const quantizedPositions = quantizePositions(positions, this._modelAABB, state.positionsDecodeMatrix);\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, buffer.positions.length, 3, gl.STATIC_DRAW);\n }\n }\n\n if (buffer.colors.length > 0) {\n const colors = new Uint8Array(buffer.colors);\n let normalized = false;\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, buffer.colors.length, 4, gl.STATIC_DRAW, normalized);\n }\n\n if (buffer.positions.length > 0) { // Because we build flags arrays here, get their length from the positions array\n const flagsLength = (buffer.positions.length / 3) * 4;\n const flags = new Uint8Array(flagsLength);\n const flags2 = new Uint8Array(flagsLength);\n let notNormalized = false;\n let normalized = true;\n state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags, flags.length, 4, gl.DYNAMIC_DRAW, notNormalized);\n state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, flags2, flags2.length, 4, gl.DYNAMIC_DRAW, normalized);\n }\n\n if (buffer.pickColors.length > 0) {\n const pickColors = new Uint8Array(buffer.pickColors);\n let normalized = false;\n state.pickColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, pickColors, buffer.pickColors.length, 4, gl.STATIC_DRAW, normalized);\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n if (buffer.offsets.length > 0) {\n const offsets = new Float32Array(buffer.offsets);\n state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, offsets, buffer.offsets.length, 3, gl.DYNAMIC_DRAW);\n }\n }\n\n this._buffer = null;\n this._finalized = true;\n }\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n this._setFlags(portionId, flags, meshTransparent);\n this._setFlags2(portionId, flags);\n }\n\n setVisible(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setHighlighted(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setXRayed(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setSelected(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setEdges(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n // Not applicable to point clouds\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags2(portionId, flags);\n }\n\n setCulled(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, transparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n setColor(portionId, color) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstColor = vertexBase * 4;\n const lenColor = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenColor);\n const r = color[0];\n const g = color[1];\n const b = color[2];\n for (let i = 0; i < lenColor; i += 4) {\n tempArray[i + 0] = r;\n tempArray[i + 1] = g;\n tempArray[i + 2] = b;\n }\n this._state.colorsBuf.setData(tempArray, firstColor, lenColor);\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n _setFlags(portionId, flags, transparent) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstFlag = vertexBase * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenFlags);\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n // Normal fill\n\n let f0;\n if (!visible || culled || xrayed) {\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (transparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Emphasis fill\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = f0; // x - normal fill\n tempArray[i + 1] = f1; // y - emphasis fill\n tempArray[i + 2] = 0; // z - edges - don't care\n tempArray[i + 3] = f3; // w - pick\n }\n\n this._state.flagsBuf.setData(tempArray, firstFlag, lenFlags);\n }\n\n _setFlags2(portionId, flags) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstFlag = vertexBase * 4;\n const lenFlags = numVerts * 4;\n const tempArray = this._scratchMemory.getUInt8Array(lenFlags);\n\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n\n for (let i = 0; i < lenFlags; i += 4) {\n tempArray[i + 0] = clippable;\n }\n\n this._state.flags2Buf.setData(tempArray, firstFlag, lenFlags);\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n const portionsIdx = portionId * 2;\n const vertexBase = this._portions[portionsIdx];\n const numVerts = this._portions[portionsIdx + 1];\n const firstOffset = vertexBase * 3;\n const lenOffsets = numVerts * 3;\n const tempArray = this._scratchMemory.getFloat32Array(lenOffsets);\n const x = offset[0];\n const y = offset[1];\n const z = offset[2];\n for (let i = 0; i < lenOffsets; i += 3) {\n tempArray[i + 0] = x;\n tempArray[i + 1] = y;\n tempArray[i + 2] = z;\n }\n this._state.offsetsBuf.setData(tempArray, firstOffset, lenOffsets);\n }\n\n //-- NORMAL RENDERING ----------------------------------------------------------------------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._pointsBatchingRenderers.colorRenderer) {\n this._pointsBatchingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._pointsBatchingRenderers.colorRenderer) {\n this._pointsBatchingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n\n // -- RENDERING SAO POST EFFECT TARGETS ----------------------------------------------------------------------------\n\n drawDepth(renderFlags, frameCtx) {\n }\n\n drawNormals(renderFlags, frameCtx) {\n }\n\n // -- EMPHASIS RENDERING -------------------------------------------------------------------------------------------\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._pointsBatchingRenderers.silhouetteRenderer) {\n this._pointsBatchingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._pointsBatchingRenderers.silhouetteRenderer) {\n this._pointsBatchingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._pointsBatchingRenderers.silhouetteRenderer) {\n this._pointsBatchingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n //-- EDGES RENDERING -----------------------------------------------------------------------------------------------\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n }\n\n //---- PICKING ----------------------------------------------------------------------------------------------------\n\n drawPickMesh(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._pointsBatchingRenderers.pickMeshRenderer) {\n this._pointsBatchingRenderers.pickMeshRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickDepths(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._pointsBatchingRenderers.pickDepthRenderer) {\n this._pointsBatchingRenderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickNormals(renderFlags, frameCtx) {\n }\n\n //---- OCCLUSION TESTING -------------------------------------------------------------------------------------------\n\n drawOcclusion(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._pointsBatchingRenderers.occlusionRenderer) {\n this._pointsBatchingRenderers.occlusionRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n //---- SHADOWS -----------------------------------------------------------------------------------------------------\n\n drawShadow(renderFlags, frameCtx) {\n }\n\n destroy() {\n const state = this._state;\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n state.positionsBuf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = null;\n }\n if (state.pickColorsBuf) {\n state.pickColorsBuf.destroy();\n state.pickColorsBuf = null;\n }\n state.destroy();\n }\n}\n\nconst tempVec3a$e = math.vec3();\n\n/**\n * @private\n */\nclass PointsInstancingColorRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n }\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n this._aColor.bindArrayBuffer(state.colorsBuf);\n\n if (pointsMaterial.filterIntensity) {\n gl.uniform2f(this._uIntensityRange, pointsMaterial.minIntensity, pointsMaterial.maxIntensity);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$e);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const pointsMaterial = scene.pointsMaterial._state;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aOffset = program.getAttribute(\"offset\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uOcclusionTexture = \"uOcclusionTexture\";\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (pointsMaterial.filterIntensity) {\n this._uIntensityRange = program.getLocation(\"intensityRange\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points instancing color vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (pointsMaterial.filterIntensity) {\n src.push(\"uniform vec2 intensityRange;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vColor;\");\n\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE | COLOR_TRANSPARENT\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n if (pointsMaterial.filterIntensity) {\n src.push(\"float intensity = float(color.a) / 255.0;\");\n src.push(\"if (intensity < intensityRange[0] || intensity > intensityRange[1]) {\");\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n }\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\"vColor = vec4(float(color.r) / 255.0, float(color.g) / 255.0, float(color.b) / 255.0, 1.0);\");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n if (pointsMaterial.filterIntensity) {\n src.push(\"}\");\n }\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing color fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vColor;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" gl_FragColor = vColor;\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$d = math.vec3();\n\n/**\n * @private\n */\nclass PointsInstancingSilhouetteRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate(instancingLayer.model.scene);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n if (renderPass === RENDER_PASSES.SILHOUETTE_XRAYED) {\n const material = scene.xrayMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_HIGHLIGHTED) {\n const material = scene.highlightMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else if (renderPass === RENDER_PASSES.SILHOUETTE_SELECTED) {\n const material = scene.selectedMaterial._state;\n const fillColor = material.fillColor;\n const fillAlpha = material.fillAlpha;\n gl.uniform4f(this._uColor, fillColor[0], fillColor[1], fillColor[2], fillAlpha);\n\n } else {\n gl.uniform4fv(this._uColor, math.vec3([1, 1, 1]));\n }\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$d);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf, gl.UNSIGNED_BYTE, true);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0); // TODO: Is this needed\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) {\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uColor = program.getLocation(\"color\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if ( scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if ( scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points instancing silhouette vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n src.push(\"uniform vec4 color;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"void main(void) {\");\n\n // flags.y = NOT_RENDERED | SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n // renderPass = SILHOUETTE_HIGHLIGHTED | SILHOUETTE_SELECTED | | SILHOUETTE_XRAYED\n\n src.push(`if (int(flags.y) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n src.push(\"vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\"worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\"vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing silhouette fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"uniform vec4 color;\");\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = color;\");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$c = math.vec3();\n\n/**\n * @private\n */\nclass PointsInstancingPickMeshRenderer {\n\n constructor(scene) {\n\n this._scene = scene;\n this._hash = this._getHash();\n\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx);\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const rtcPickViewMatrix = (rtcCenter) ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(camera.project.far + 1.0) / Math.LN2); // TODO: Far from pick project matrix?\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPickColor.bindArrayBuffer(state.pickColorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aPickColor.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$c);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aPickColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aPickColor = program.getAttribute(\"pickColor\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram(frameCtx) {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n\n program.bind();\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points instancing pick mesh vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 pickColor;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"varying vec4 vPickColor;\");\n src.push(\"void main(void) {\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n\n\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n src.push(\" vPickColor = vec4(float(pickColor.r) / 255.0, float(pickColor.g) / 255.0, float(pickColor.b) / 255.0, float(pickColor.a) / 255.0);\");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing pick mesh fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vPickColor;\");\n src.push(\"void main(void) {\");\n\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"gl_FragColor = vPickColor; \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$b = math.vec3();\n\n/**\n * @private\n */\nclass PointsInstancingPickDepthRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate(instancingLayer);\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n const camera = scene.camera;\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniform1i(this._uPickInvisible, frameCtx.pickInvisible);\n\n const pickViewMatrix = frameCtx.pickViewMatrix || camera.viewMatrix;\n const rtcPickViewMatrix = (rtcCenter) ? createRTCViewMat(pickViewMatrix, rtcCenter) : pickViewMatrix;\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, rtcPickViewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, frameCtx.pickProjMatrix);\n\n gl.uniform1f(this._uPickZNear, frameCtx.pickZNear);\n gl.uniform1f(this._uPickZFar, frameCtx.pickZFar);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(frameCtx.pickZFar + 1.0) / Math.LN2); // TODO: Far from pick project matrix\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$b);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPickInvisible = program.getLocation(\"pickInvisible\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPickZNear = program.getLocation(\"pickZNear\");\n this._uPickZFar = program.getLocation(\"pickZFar\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n this._program.bind();\n\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points instancing pick depth vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n\n src.push(\"attribute vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform bool pickInvisible;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"void main(void) {\");\n\n // flags.w = NOT_RENDERED | PICK\n // renderPass = PICK\n\n src.push(`if (int(flags.w) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n src.push(\" vFlags2 = flags2;\");\n }\n src.push(\" vViewPosition = viewPosition;\");\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing pick depth fragment shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n\n src.push(\"uniform float pickZNear;\");\n src.push(\"uniform float pickZFar;\");\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec4 vViewPosition;\");\n src.push(\"vec4 packDepth(const in float depth) {\");\n src.push(\" const vec4 bitShift = vec4(256.0*256.0*256.0, 256.0*256.0, 256.0, 1.0);\");\n src.push(\" const vec4 bitMask = vec4(0.0, 1.0/256.0, 1.0/256.0, 1.0/256.0);\");\n src.push(\" vec4 res = fract(depth * bitShift);\");\n src.push(\" res -= res.xxyz * bitMask;\");\n src.push(\" return res;\");\n src.push(\"}\");\n src.push(\"void main(void) {\");\n\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" float zNormalizedDepth = abs((pickZNear + vViewPosition.z) / (pickZFar - pickZNear));\");\n src.push(\" gl_FragColor = packDepth(zNormalizedDepth); \"); // Must be linear depth\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$a = math.vec3();\n\n/**\n * @private\n */\nclass PointsInstancingOcclusionRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$a);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n if (this._aColor) {\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n }\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n // Cleanup\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n if (this._aColor) {\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n }\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n this._uSectionPlanes = [];\n\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n\n src.push(\"// Points instancing occlusion vertex shader\");\n\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n\n src.push(\"attribute vec4 modelMatrixCol0;\"); // Modeling matrix\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\");\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\" vWorldPosition = worldPosition;\");\n }\n\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing occlusion vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"void main(void) {\");\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0; i < sectionPlanesState.sectionPlanes.length; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0); \"); // Occluders are blue\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$9 = math.vec3();\n\n/**\n * @private\n */\nclass PointsInstancingDepthRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash() + this._scene.pointsMaterial.hash;\n }\n\n drawLayer(frameCtx, instancingLayer, renderPass) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const camera = scene.camera;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n const rtcCenter = instancingLayer._state.rtcCenter;\n const pointsMaterial = scene.pointsMaterial._state;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram();\n }\n\n gl.uniform1i(this._uRenderPass, renderPass);\n\n gl.uniformMatrix4fv(this._uWorldMatrix, false, model.worldMatrix);\n gl.uniformMatrix4fv(this._uViewMatrix, false, (rtcCenter) ? createRTCViewMat(camera.viewMatrix, rtcCenter) : camera.viewMatrix);\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$9);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n gl.uniform1f(this._uPointSize, pointsMaterial.pointSize);\n const nearPlaneHeight = (scene.camera.projection === \"ortho\") ? 1.0 : (gl.drawingBufferHeight / (2 * Math.tan(0.5 * scene.camera.perspective.fov * Math.PI / 180.0)));\n gl.uniform1f(this._uNearPlaneHeight, nearPlaneHeight);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n\n this._program = new Program(gl, this._buildShader());\n\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n\n const program = this._program;\n\n this._uRenderPass = program.getLocation(\"renderPass\");\n\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uWorldMatrix = program.getLocation(\"worldMatrix\");\n this._uViewMatrix = program.getLocation(\"viewMatrix\");\n this._uProjMatrix = program.getLocation(\"projMatrix\");\n\n this._uSectionPlanes = [];\n\n for (let i = 0, len = scene._sectionPlanesState.sectionPlanes.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n\n this._uPointSize = program.getLocation(\"pointSize\");\n this._uNearPlaneHeight = program.getLocation(\"nearPlaneHeight\");\n\n if (scene.logarithmicDepthBufferEnabled) {\n this._uLogDepthBufFC = program.getLocation(\"logDepthBufFC\");\n }\n }\n\n _bindProgram() {\n\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const project = scene.camera.project;\n\n this._program.bind();\n\n gl.uniformMatrix4fv(this._uProjMatrix, false, project.matrix);\n\n if (scene.logarithmicDepthBufferEnabled) {\n const logDepthBufFC = 2.0 / (Math.log(project.far + 1.0) / Math.LN2);\n gl.uniform1f(this._uLogDepthBufFC, logDepthBufFC);\n }\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const pointsMaterial = scene.pointsMaterial._state;\n const src = [];\n src.push(\"// Points instancing depth vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"uniform int renderPass;\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\");\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 worldMatrix;\");\n src.push(\"uniform mat4 viewMatrix;\");\n src.push(\"uniform mat4 projMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n\n src.push(\"uniform float pointSize;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"uniform float nearPlaneHeight;\");\n }\n\n if (scene.logarithmicDepthBufferEnabled) {\n src.push(\"uniform float logDepthBufFC;\");\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\n\n // flags.x = NOT_RENDERED | COLOR_OPAQUE | COLOR_TRANSPARENT\n // renderPass = COLOR_OPAQUE\n\n src.push(`if (int(flags.x) != renderPass) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = worldMatrix * vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = viewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\"vec4 clipPos = projMatrix * viewPosition;\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"vFragDepth = 1.0 + clipPos.w;\");\n } else {\n src.push(\"clipPos.z = log2( max( 1e-6, clipPos.w + 1.0 ) ) * logDepthBufFC - 1.0;\");\n src.push(\"clipPos.z *= clipPos.w;\");\n }\n }\n src.push(\"gl_Position = clipPos;\");\n if (pointsMaterial.perspectivePoints) {\n src.push(\"gl_PointSize = (nearPlaneHeight * pointSize) / clipPos.w;\");\n src.push(\"gl_PointSize = max(gl_PointSize, \" + Math.floor(pointsMaterial.minPerspectivePointSize) + \".0);\");\n src.push(\"gl_PointSize = min(gl_PointSize, \" + Math.floor(pointsMaterial.maxPerspectivePointSize) + \".0);\");\n } else {\n src.push(\"gl_PointSize = pointSize;\");\n }\n src.push(\"}\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n let i;\n let len;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Points instancing depth vertex shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled) {\n if (WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n\n src.push(\"const float packUpScale = 256. / 255.;\");\n src.push(\"const float unpackDownscale = 255. / 256.;\");\n src.push(\"const vec3 packFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\");\n src.push(\"const vec4 unpackFactors = unpackDownscale / vec4( packFactors, 1. );\");\n src.push(\"const float shiftRight8 = 1.0 / 256.;\");\n\n src.push(\"vec4 packDepthToRGBA( const in float v ) {\");\n src.push(\" vec4 r = vec4( fract( v * packFactors ), v );\");\n src.push(\" r.yzw -= r.xyz * shiftRight8;\");\n src.push(\" return r * packUpScale;\");\n src.push(\"}\");\n\n src.push(\"void main(void) {\");\n\n if (scene.pointsMaterial.roundPoints) {\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n }\n\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n src.push(\" gl_FragColor = packDepthToRGBA( gl_FragCoord.z); \"); // Must be linear depth\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\nconst tempVec3a$8 = math.vec3();\n\n/**\n * Renders InstancingLayer fragment depths to a shadow map.\n *\n * @private\n */\nclass PointsInstancingShadowRenderer {\n\n constructor(scene) {\n this._scene = scene;\n this._hash = this._getHash();\n this._lastLightId = null;\n this._allocate();\n }\n\n getValid() {\n return this._hash === this._getHash();\n };\n\n _getHash() {\n return this._scene._sectionPlanesState.getHash();\n }\n\n drawLayer( frameCtx, instancingLayer) {\n\n const model = instancingLayer.model;\n const scene = model.scene;\n const gl = scene.canvas.gl;\n const state = instancingLayer._state;\n const instanceExt = this._instanceExt;\n\n if (!this._program) {\n this._allocate();\n if (this.errors) {\n return;\n }\n }\n\n if (frameCtx.lastProgramId !== this._program.id) {\n frameCtx.lastProgramId = this._program.id;\n this._bindProgram(frameCtx, instancingLayer);\n }\n\n gl.uniformMatrix4fv(this._uPositionsDecodeMatrix, false, instancingLayer._state.positionsDecodeMatrix);\n\n this._aModelMatrixCol0.bindArrayBuffer(state.modelMatrixCol0Buf);\n this._aModelMatrixCol1.bindArrayBuffer(state.modelMatrixCol1Buf);\n this._aModelMatrixCol2.bindArrayBuffer(state.modelMatrixCol2Buf);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 1);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 1);\n\n this._aPosition.bindArrayBuffer(state.positionsBuf);\n\n if (this._aOffset) {\n this._aOffset.bindArrayBuffer(state.offsetsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 1);\n }\n\n this._aColor.bindArrayBuffer(state.colorsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 1);\n\n this._aFlags.bindArrayBuffer(state.flagsBuf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 1);\n\n if (this._aFlags2) {\n this._aFlags2.bindArrayBuffer(state.flags2Buf);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 1);\n }\n\n // TODO: Section planes need to be set if RTC center has changed since last RTC center recorded on frameCtx\n\n const numSectionPlanes = scene._sectionPlanesState.sectionPlanes.length;\n if (numSectionPlanes > 0) {\n const sectionPlanes = scene._sectionPlanesState.sectionPlanes;\n const baseIndex = instancingLayer.layerIndex * numSectionPlanes;\n const renderFlags = model.renderFlags;\n const rtcCenter = instancingLayer._state.rtcCenter;\n for (let sectionPlaneIndex = 0; sectionPlaneIndex < numSectionPlanes; sectionPlaneIndex++) {\n const sectionPlaneUniforms = this._uSectionPlanes[sectionPlaneIndex];\n if (sectionPlaneUniforms) {\n const active = renderFlags.sectionPlanesActivePerLayer[baseIndex + sectionPlaneIndex];\n gl.uniform1i(sectionPlaneUniforms.active, active ? 1 : 0);\n if (active) {\n const sectionPlane = sectionPlanes[sectionPlaneIndex];\n if (rtcCenter) {\n const rtcSectionPlanePos = getPlaneRTCPos(sectionPlane.dist, sectionPlane.dir, rtcCenter, tempVec3a$8);\n gl.uniform3fv(sectionPlaneUniforms.pos, rtcSectionPlanePos);\n } else {\n gl.uniform3fv(sectionPlaneUniforms.pos, sectionPlane.pos);\n }\n gl.uniform3fv(sectionPlaneUniforms.dir, sectionPlane.dir);\n }\n }\n }\n }\n\n gl.uniform1f(this._uPointSize, 10);\n\n instanceExt.drawArraysInstancedANGLE(gl.POINTS, 0, state.positionsBuf.numItems, state.numInstances);\n\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol0.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol1.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aModelMatrixCol2.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aColor.location, 0);\n instanceExt.vertexAttribDivisorANGLE(this._aFlags.location, 0);\n\n if (this._aFlags2) { // Won't be in shader when not clipping\n instanceExt.vertexAttribDivisorANGLE(this._aFlags2.location, 0);\n }\n\n if (this._aOffset) {\n instanceExt.vertexAttribDivisorANGLE(this._aOffset.location, 0);\n }\n }\n\n _allocate() {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const sectionPlanesState = scene._sectionPlanesState;\n this._program = new Program(gl, this._buildShader());\n if (this._program.errors) {\n this.errors = this._program.errors;\n return;\n }\n this._instanceExt = gl.getExtension(\"ANGLE_instanced_arrays\");\n const program = this._program;\n this._uPositionsDecodeMatrix = program.getLocation(\"positionsDecodeMatrix\");\n this._uShadowViewMatrix = program.getLocation(\"shadowViewMatrix\");\n this._uShadowProjMatrix = program.getLocation(\"shadowProjMatrix\");\n this._uSectionPlanes = [];\n const clips = sectionPlanesState.sectionPlanes;\n for (let i = 0, len = clips.length; i < len; i++) {\n this._uSectionPlanes.push({\n active: program.getLocation(\"sectionPlaneActive\" + i),\n pos: program.getLocation(\"sectionPlanePos\" + i),\n dir: program.getLocation(\"sectionPlaneDir\" + i)\n });\n }\n this._aPosition = program.getAttribute(\"position\");\n this._aOffset = program.getAttribute(\"offset\");\n this._aColor = program.getAttribute(\"color\");\n this._aFlags = program.getAttribute(\"flags\");\n this._aFlags2 = program.getAttribute(\"flags2\");\n this._aModelMatrixCol0 = program.getAttribute(\"modelMatrixCol0\");\n this._aModelMatrixCol1 = program.getAttribute(\"modelMatrixCol1\");\n this._aModelMatrixCol2 = program.getAttribute(\"modelMatrixCol2\");\n this._uPointSize = program.getLocation(\"pointSize\");\n }\n\n _bindProgram(frameCtx, instancingLayer) {\n const scene = this._scene;\n const gl = scene.canvas.gl;\n const program = this._program;\n program.bind();\n gl.uniformMatrix4fv(this._uShadowViewMatrix, false, frameCtx.shadowViewMatrix);\n gl.uniformMatrix4fv(this._uShadowProjMatrix, false, frameCtx.shadowProjMatrix);\n this._lastLightId = null;\n }\n\n _buildShader() {\n return {\n vertex: this._buildVertexShader(),\n fragment: this._buildFragmentShader()\n };\n }\n\n _buildVertexShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry shadow drawing vertex shader\");\n src.push(\"attribute vec3 position;\");\n if (scene.entityOffsetsEnabled) {\n src.push(\"attribute vec3 offset;\");\n }\n src.push(\"attribute vec4 color;\");\n src.push(\"attribute vec4 flags;\");\n src.push(\"attribute vec4 flags2;\");\n src.push(\"attribute vec4 modelMatrixCol0;\");\n src.push(\"attribute vec4 modelMatrixCol1;\");\n src.push(\"attribute vec4 modelMatrixCol2;\");\n src.push(\"uniform mat4 shadowViewMatrix;\");\n src.push(\"uniform mat4 shadowProjMatrix;\");\n src.push(\"uniform mat4 positionsDecodeMatrix;\");\n src.push(\"uniform float pointSize;\");\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n }\n src.push(\"void main(void) {\");\n src.push(\"bool visible = (float(flags.x) > 0.0);\");\n src.push(\"bool transparent = ((float(color.a) / 255.0) < 1.0);\");\n src.push(`if (!visible || transparent) {`);\n src.push(\" gl_Position = vec4(0.0, 0.0, 0.0, 0.0);\"); // Cull vertex\n src.push(\"} else {\");\n src.push(\" vec4 worldPosition = positionsDecodeMatrix * vec4(position, 1.0); \");\n src.push(\" worldPosition = vec4(dot(worldPosition, modelMatrixCol0), dot(worldPosition, modelMatrixCol1), dot(worldPosition, modelMatrixCol2), 1.0);\");\n if (scene.entityOffsetsEnabled) {\n src.push(\" worldPosition.xyz = worldPosition.xyz + offset;\");\n }\n src.push(\" vec4 viewPosition = shadowViewMatrix * worldPosition; \");\n\n if (clipping) {\n src.push(\"vWorldPosition = worldPosition;\");\n src.push(\"vFlags2 = flags2;\");\n }\n src.push(\" gl_Position = shadowProjMatrix * viewPosition;\");\n src.push(\"}\");\n src.push(\"gl_PointSize = pointSize;\");\n src.push(\"}\");\n return src;\n }\n\n _buildFragmentShader() {\n const scene = this._scene;\n const sectionPlanesState = scene._sectionPlanesState;\n const clipping = sectionPlanesState.sectionPlanes.length > 0;\n const src = [];\n src.push(\"// Instancing geometry depth drawing fragment shader\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"#extension GL_EXT_frag_depth : enable\");\n }\n src.push(\"#ifdef GL_FRAGMENT_PRECISION_HIGH\");\n src.push(\"precision highp float;\");\n src.push(\"precision highp int;\");\n src.push(\"#else\");\n src.push(\"precision mediump float;\");\n src.push(\"precision mediump int;\");\n src.push(\"#endif\");\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"uniform float logDepthBufFC;\");\n src.push(\"varying float vFragDepth;\");\n }\n if (clipping) {\n src.push(\"varying vec4 vWorldPosition;\");\n src.push(\"varying vec4 vFlags2;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"uniform bool sectionPlaneActive\" + i + \";\");\n src.push(\"uniform vec3 sectionPlanePos\" + i + \";\");\n src.push(\"uniform vec3 sectionPlaneDir\" + i + \";\");\n }\n }\n src.push(\"varying vec3 vViewNormal;\");\n src.push(\"vec3 packNormalToRGB( const in vec3 normal ) {\");\n src.push(\" return normalize( normal ) * 0.5 + 0.5;\");\n src.push(\"}\");\n src.push(\"void main(void) {\");\n src.push(\" vec2 cxy = 2.0 * gl_PointCoord - 1.0;\");\n src.push(\" float r = dot(cxy, cxy);\");\n src.push(\" if (r > 1.0) {\");\n src.push(\" discard;\");\n src.push(\" }\");\n if (clipping) {\n src.push(\" bool clippable = (float(vFlags2.x) > 0.0);\");\n src.push(\" if (clippable) {\");\n src.push(\" float dist = 0.0;\");\n for (let i = 0, len = sectionPlanesState.sectionPlanes.length; i < len; i++) {\n src.push(\"if (sectionPlaneActive\" + i + \") {\");\n src.push(\" dist += clamp(dot(-sectionPlaneDir\" + i + \".xyz, vWorldPosition.xyz - sectionPlanePos\" + i + \".xyz), 0.0, 1000.0);\");\n src.push(\"}\");\n }\n src.push(\"if (dist > 0.0) { discard; }\");\n src.push(\"}\");\n }\n if (scene.logarithmicDepthBufferEnabled && WEBGL_INFO.SUPPORTED_EXTENSIONS[\"EXT_frag_depth\"]) {\n src.push(\"gl_FragDepthEXT = log2( vFragDepth ) * logDepthBufFC * 0.5;\");\n }\n src.push(\" gl_FragColor = vec4(packNormalToRGB(vViewNormal), 1.0); \");\n src.push(\"}\");\n return src;\n }\n\n webglContextRestored() {\n this._program = null;\n }\n\n destroy() {\n if (this._program) {\n this._program.destroy();\n }\n this._program = null;\n }\n}\n\n/**\n * @private\n */\nclass PointsInstancingRenderers {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n _compile() {\n if (this._colorRenderer && (!this._colorRenderer.getValid())) {\n this._colorRenderer.destroy();\n this._colorRenderer = null;\n }\n if (this._depthRenderer && (!this._depthRenderer.getValid())) {\n this._depthRenderer.destroy();\n this._depthRenderer = null;\n }\n if (this._silhouetteRenderer && (!this._silhouetteRenderer.getValid())) {\n this._silhouetteRenderer.destroy();\n this._silhouetteRenderer = null;\n }\n if (this._pickMeshRenderer && (!this._pickMeshRenderer.getValid())) {\n this._pickMeshRenderer.destroy();\n this._pickMeshRenderer = null;\n }\n if (this._pickDepthRenderer && (!this._pickDepthRenderer.getValid())) {\n this._pickDepthRenderer.destroy();\n this._pickDepthRenderer = null;\n }\n if (this._occlusionRenderer && this._occlusionRenderer.getValid() === false) {\n this._occlusionRenderer.destroy();\n this._occlusionRenderer = null;\n }\n if (this._shadowRenderer && (!this._shadowRenderer.getValid())) {\n this._shadowRenderer.destroy();\n this._shadowRenderer = null;\n }\n }\n\n get colorRenderer() {\n if (!this._colorRenderer) {\n this._colorRenderer = new PointsInstancingColorRenderer(this._scene, false);\n }\n return this._colorRenderer;\n }\n\n get silhouetteRenderer() {\n if (!this._silhouetteRenderer) {\n this._silhouetteRenderer = new PointsInstancingSilhouetteRenderer(this._scene);\n }\n return this._silhouetteRenderer;\n }\n\n get depthRenderer() {\n if (!this._depthRenderer) {\n this._depthRenderer = new PointsInstancingDepthRenderer(this._scene);\n }\n return this._depthRenderer;\n }\n\n get pickMeshRenderer() {\n if (!this._pickMeshRenderer) {\n this._pickMeshRenderer = new PointsInstancingPickMeshRenderer(this._scene);\n }\n return this._pickMeshRenderer;\n }\n\n get pickDepthRenderer() {\n if (!this._pickDepthRenderer) {\n this._pickDepthRenderer = new PointsInstancingPickDepthRenderer(this._scene);\n }\n return this._pickDepthRenderer;\n }\n\n get occlusionRenderer() {\n if (!this._occlusionRenderer) {\n this._occlusionRenderer = new PointsInstancingOcclusionRenderer(this._scene);\n }\n return this._occlusionRenderer;\n }\n\n get shadowRenderer() {\n if (!this._shadowRenderer) {\n this._shadowRenderer = new PointsInstancingShadowRenderer(this._scene);\n }\n return this._shadowRenderer;\n }\n\n _destroy() {\n if (this._colorRenderer) {\n this._colorRenderer.destroy();\n }\n if (this._depthRenderer) {\n this._depthRenderer.destroy();\n }\n if (this._silhouetteRenderer) {\n this._silhouetteRenderer.destroy();\n }\n if (this._pickMeshRenderer) {\n this._pickMeshRenderer.destroy();\n }\n if (this._pickDepthRenderer) {\n this._pickDepthRenderer.destroy();\n }\n if (this._occlusionRenderer) {\n this._occlusionRenderer.destroy();\n }\n if (this._shadowRenderer) {\n this._shadowRenderer.destroy();\n }\n }\n}\n\nconst cachedRenderers = {};\n\n/**\n * @private\n */\nfunction getPointsInstancingRenderers(scene) {\n const sceneId = scene.id;\n let instancingRenderers = cachedRenderers[sceneId];\n if (!instancingRenderers) {\n instancingRenderers = new PointsInstancingRenderers(scene);\n cachedRenderers[sceneId] = instancingRenderers;\n instancingRenderers._compile();\n scene.on(\"compile\", () => {\n instancingRenderers._compile();\n });\n scene.on(\"destroyed\", () => {\n delete cachedRenderers[sceneId];\n instancingRenderers._destroy();\n });\n }\n return instancingRenderers;\n}\n\nconst tempUint8Vec4 = new Uint8Array(4);\nconst tempVec4a$2 = math.vec4([0, 0, 0, 1]);\nconst tempVec4b$2 = math.vec4([0, 0, 0, 1]);\nconst tempVec4c$2 = math.vec4([0, 0, 0, 1]);\nconst tempVec3fa = new Float32Array(3);\n\n/**\n * @private\n */\nclass PointsInstancingLayer {\n\n /**\n * @param model\n * @param cfg\n * @param cfg.layerIndex\n * @param cfg.positions Flat float Local-space positions array.\n * @param cfg.rtcCenter\n */\n constructor(model, cfg) {\n\n /**\n * State sorting key.\n * @type {string}\n */\n this.sortId = \"PointsInstancingLayer\";\n\n /**\n * Index of this InstancingLayer in PerformanceModel#_layerList\n * @type {Number}\n */\n this.layerIndex = cfg.layerIndex;\n\n this._pointsInstancingRenderers = getPointsInstancingRenderers(model.scene);\n this.model = model;\n this._aabb = math.collapseAABB3();\n\n const gl = model.scene.canvas.gl;\n\n const stateCfg = {\n positionsDecodeMatrix: math.mat4(),\n numInstances: 0,\n obb: math.OBB3(),\n rtcCenter: null\n };\n\n const preCompressedPositions = (!!cfg.positionsDecodeMatrix);\n\n if (!cfg.positions) {\n throw \"positions expected\";\n }\n\n const numVerts = cfg.positions.length / 3;\n\n if (preCompressedPositions) {\n\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, cfg.positions, cfg.positions.length, 3, gl.STATIC_DRAW, normalized);\n stateCfg.positionsDecodeMatrix.set(cfg.positionsDecodeMatrix);\n\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n geometryCompressionUtils.decompressAABB(localAABB, stateCfg.positionsDecodeMatrix);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n\n } else {\n\n let lenPositions = cfg.positions.length;\n let localAABB = math.collapseAABB3();\n math.expandAABB3Points3(localAABB, cfg.positions);\n math.AABB3ToOBB3(localAABB, stateCfg.obb);\n const quantizedPositions = quantizePositions(cfg.positions, localAABB, stateCfg.positionsDecodeMatrix);\n let normalized = false;\n stateCfg.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, quantizedPositions, lenPositions, 3, gl.STATIC_DRAW, normalized);\n }\n\n if (cfg.colorsCompressed) {\n const colorsCompressed = new Uint8Array(cfg.colorsCompressed);\n let notNormalized = false;\n stateCfg.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colorsCompressed, colorsCompressed.length, 4, gl.STATIC_DRAW, notNormalized);\n\n } else if (cfg.colors) {\n const colors = cfg.colors;\n const colorsCompressed = new Uint8Array(colors.length);\n for (let i = 0, len = colors.length; i < len; i++) {\n colorsCompressed[i] = colors[i] * 255;\n }\n let notNormalized = false;\n stateCfg.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colorsCompressed, colorsCompressed.length, 4, gl.STATIC_DRAW, notNormalized);\n\n } else {\n const colorsCompressed = new Uint8Array(numVerts * 4);\n for (let i = 0, len = numVerts * 4; i < len; i++) {\n colorsCompressed[i] = 255;\n }\n let notNormalized = false;\n stateCfg.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colorsCompressed, colorsCompressed.length, 4, gl.STATIC_DRAW, notNormalized);\n }\n\n this._state = new RenderState(stateCfg);\n\n // These counts are used to avoid unnecessary render passes\n this._numPortions = 0;\n this._numVisibleLayerPortions = 0;\n this._numTransparentLayerPortions = 0;\n this._numXRayedLayerPortions = 0;\n this._numHighlightedLayerPortions = 0;\n this._numSelectedLayerPortions = 0;\n this._numClippableLayerPortions = 0;\n this._numEdgesLayerPortions = 0;\n this._numPickableLayerPortions = 0;\n this._numCulledLayerPortions = 0;\n\n // Vertex arrays\n this._pickColors = [];\n this._offsets = [];\n\n // Modeling matrix per instance, array for each column\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n\n this._portions = [];\n\n if (cfg.rtcCenter) {\n this._state.rtcCenter = math.vec3(cfg.rtcCenter);\n }\n\n this._finalized = false;\n\n /**\n * The axis-aligned World-space boundary of this InstancingLayer's positions.\n * @type {*|Float64Array}\n */\n this.aabb = math.collapseAABB3();\n }\n\n /**\n * Creates a new portion within this InstancingLayer, returns the new portion ID.\n *\n * The portion will instance this InstancingLayer's geometry.\n *\n * Gives the portion the specified color and matrix.\n *\n * @param cfg Portion params\n * @param cfg.meshMatrix Flat float 4x4 matrix.\n * @param [cfg.worldMatrix] Flat float 4x4 matrix.\n * @param cfg.aabb Flat float AABB.\n * @param cfg.pickColor Quantized pick color\n * @returns {number} Portion ID.\n */\n createPortion(cfg) {\n\n const meshMatrix = cfg.meshMatrix;\n const worldMatrix = cfg.worldMatrix;\n const worldAABB = cfg.aabb;\n const pickColor = cfg.pickColor;\n\n if (this._finalized) {\n throw \"Already finalized\";\n }\n\n if (this.model.scene.entityOffsetsEnabled) {\n this._offsets.push(0);\n this._offsets.push(0);\n this._offsets.push(0);\n }\n\n this._modelMatrixCol0.push(meshMatrix[0]);\n this._modelMatrixCol0.push(meshMatrix[4]);\n this._modelMatrixCol0.push(meshMatrix[8]);\n this._modelMatrixCol0.push(meshMatrix[12]);\n\n this._modelMatrixCol1.push(meshMatrix[1]);\n this._modelMatrixCol1.push(meshMatrix[5]);\n this._modelMatrixCol1.push(meshMatrix[9]);\n this._modelMatrixCol1.push(meshMatrix[13]);\n\n this._modelMatrixCol2.push(meshMatrix[2]);\n this._modelMatrixCol2.push(meshMatrix[6]);\n this._modelMatrixCol2.push(meshMatrix[10]);\n this._modelMatrixCol2.push(meshMatrix[14]);\n\n // Per-vertex pick colors\n\n this._pickColors.push(pickColor[0]);\n this._pickColors.push(pickColor[1]);\n this._pickColors.push(pickColor[2]);\n this._pickColors.push(pickColor[3]);\n\n // Expand AABB\n\n math.collapseAABB3(worldAABB);\n const obb = this._state.obb;\n const lenPositions = obb.length;\n for (let i = 0; i < lenPositions; i += 4) {\n tempVec4a$2[0] = obb[i + 0];\n tempVec4a$2[1] = obb[i + 1];\n tempVec4a$2[2] = obb[i + 2];\n math.transformPoint4(meshMatrix, tempVec4a$2, tempVec4b$2);\n if (worldMatrix) {\n math.transformPoint4(worldMatrix, tempVec4b$2, tempVec4c$2);\n math.expandAABB3Point3(worldAABB, tempVec4c$2);\n } else {\n math.expandAABB3Point3(worldAABB, tempVec4b$2);\n }\n }\n\n if (this._state.rtcCenter) {\n const rtcCenter = this._state.rtcCenter;\n worldAABB[0] += rtcCenter[0];\n worldAABB[1] += rtcCenter[1];\n worldAABB[2] += rtcCenter[2];\n worldAABB[3] += rtcCenter[0];\n worldAABB[4] += rtcCenter[1];\n worldAABB[5] += rtcCenter[2];\n }\n\n math.expandAABB3(this.aabb, worldAABB);\n\n this._state.numInstances++;\n\n const portionId = this._portions.length;\n this._portions.push({});\n\n this._numPortions++;\n this.model.numPortions++;\n\n return portionId;\n }\n\n finalize() {\n if (this._finalized) {\n throw \"Already finalized\";\n }\n const gl = this.model.scene.canvas.gl;\n const flagsLength = this._pickColors.length;\n if (flagsLength > 0) {\n // Because we only build flags arrays here, \n // get their length from the colors array\n let notNormalized = false;\n let normalized = true;\n this._state.flagsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, notNormalized);\n this._state.flags2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(flagsLength), flagsLength, 4, gl.DYNAMIC_DRAW, normalized);\n }\n if (this.model.scene.entityOffsetsEnabled) {\n if (this._offsets.length > 0) {\n const notNormalized = false;\n this._state.offsetsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._offsets), this._offsets.length, 3, gl.DYNAMIC_DRAW, notNormalized);\n this._offsets = []; // Release memory\n }\n }\n if (this._modelMatrixCol0.length > 0) {\n const normalized = false;\n this._state.modelMatrixCol0Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol0), this._modelMatrixCol0.length, 4, gl.STATIC_DRAW, normalized);\n this._state.modelMatrixCol1Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol1), this._modelMatrixCol1.length, 4, gl.STATIC_DRAW, normalized);\n this._state.modelMatrixCol2Buf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Float32Array(this._modelMatrixCol2), this._modelMatrixCol2.length, 4, gl.STATIC_DRAW, normalized);\n this._modelMatrixCol0 = [];\n this._modelMatrixCol1 = [];\n this._modelMatrixCol2 = [];\n }\n if (this._pickColors.length > 0) {\n const normalized = false;\n this._state.pickColorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, new Uint8Array(this._pickColors), this._pickColors.length, 4, gl.STATIC_DRAW, normalized);\n this._pickColors = []; // Release memory\n }\n this._finalized = true;\n }\n\n // The following setters are called by PerformanceMesh, in turn called by PerformanceNode, only after the layer is finalized.\n // It's important that these are called after finalize() in order to maintain integrity of counts like _numVisibleLayerPortions etc.\n\n initFlags(portionId, flags, meshTransparent) {\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n }\n if (meshTransparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n }\n this._setFlags(portionId, flags, meshTransparent);\n this._setFlags2(portionId, flags);\n }\n\n setVisible(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.VISIBLE) {\n this._numVisibleLayerPortions++;\n this.model.numVisibleLayerPortions++;\n } else {\n this._numVisibleLayerPortions--;\n this.model.numVisibleLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setHighlighted(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.HIGHLIGHTED) {\n this._numHighlightedLayerPortions++;\n this.model.numHighlightedLayerPortions++;\n } else {\n this._numHighlightedLayerPortions--;\n this.model.numHighlightedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setXRayed(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.XRAYED) {\n this._numXRayedLayerPortions++;\n this.model.numXRayedLayerPortions++;\n } else {\n this._numXRayedLayerPortions--;\n this.model.numXRayedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setSelected(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.SELECTED) {\n this._numSelectedLayerPortions++;\n this.model.numSelectedLayerPortions++;\n } else {\n this._numSelectedLayerPortions--;\n this.model.numSelectedLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setEdges(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.EDGES) {\n this._numEdgesLayerPortions++;\n this.model.numEdgesLayerPortions++;\n } else {\n this._numEdgesLayerPortions--;\n this.model.numEdgesLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setClippable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CLIPPABLE) {\n this._numClippableLayerPortions++;\n this.model.numClippableLayerPortions++;\n } else {\n this._numClippableLayerPortions--;\n this.model.numClippableLayerPortions--;\n }\n this._setFlags2(portionId, flags);\n }\n\n setCollidable(portionId, flags) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n }\n\n setPickable(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.PICKABLE) {\n this._numPickableLayerPortions++;\n this.model.numPickableLayerPortions++;\n } else {\n this._numPickableLayerPortions--;\n this.model.numPickableLayerPortions--;\n }\n this._setFlags2(portionId, flags, meshTransparent);\n }\n\n setCulled(portionId, flags, meshTransparent) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (flags & ENTITY_FLAGS.CULLED) {\n this._numCulledLayerPortions++;\n this.model.numCulledLayerPortions++;\n } else {\n this._numCulledLayerPortions--;\n this.model.numCulledLayerPortions--;\n }\n this._setFlags(portionId, flags, meshTransparent);\n }\n\n setColor(portionId, color) { // RGBA color is normalized as ints\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n tempUint8Vec4[0] = color[0];\n tempUint8Vec4[1] = color[1];\n tempUint8Vec4[2] = color[2];\n this._state.colorsBuf.setData(tempUint8Vec4, portionId * 3, 3);\n }\n\n setTransparent(portionId, flags, transparent) {\n if (transparent) {\n this._numTransparentLayerPortions++;\n this.model.numTransparentLayerPortions++;\n } else {\n this._numTransparentLayerPortions--;\n this.model.numTransparentLayerPortions--;\n }\n this._setFlags(portionId, flags, transparent);\n }\n\n // setMatrix(portionId, matrix) {\n //\n // if (!this._finalized) {\n // throw \"Not finalized\";\n // }\n //\n // var offset = portionId * 4;\n //\n // tempFloat32Vec4[0] = matrix[0];\n // tempFloat32Vec4[1] = matrix[4];\n // tempFloat32Vec4[2] = matrix[8];\n // tempFloat32Vec4[3] = matrix[12];\n //\n // this._state.modelMatrixCol0Buf.setData(tempFloat32Vec4, offset, 4);\n //\n // tempFloat32Vec4[0] = matrix[1];\n // tempFloat32Vec4[1] = matrix[5];\n // tempFloat32Vec4[2] = matrix[9];\n // tempFloat32Vec4[3] = matrix[13];\n //\n // this._state.modelMatrixCol1Buf.setData(tempFloat32Vec4, offset, 4);\n //\n // tempFloat32Vec4[0] = matrix[2];\n // tempFloat32Vec4[1] = matrix[6];\n // tempFloat32Vec4[2] = matrix[10];\n // tempFloat32Vec4[3] = matrix[14];\n //\n // this._state.modelMatrixCol2Buf.setData(tempFloat32Vec4, offset, 4);\n // }\n\n _setFlags(portionId, flags, meshTransparent) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const visible = !!(flags & ENTITY_FLAGS.VISIBLE);\n const xrayed = !!(flags & ENTITY_FLAGS.XRAYED);\n const highlighted = !!(flags & ENTITY_FLAGS.HIGHLIGHTED);\n const selected = !!(flags & ENTITY_FLAGS.SELECTED);\n const edges = !!(flags & ENTITY_FLAGS.EDGES);\n const pickable = !!(flags & ENTITY_FLAGS.PICKABLE);\n const culled = !!(flags & ENTITY_FLAGS.CULLED);\n\n // Normal fill\n\n let f0;\n if (!visible || culled || xrayed) {\n f0 = RENDER_PASSES.NOT_RENDERED;\n } else {\n if (meshTransparent) {\n f0 = RENDER_PASSES.COLOR_TRANSPARENT;\n } else {\n f0 = RENDER_PASSES.COLOR_OPAQUE;\n }\n }\n\n // Emphasis fill\n\n let f1;\n if (!visible || culled) {\n f1 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f1 = RENDER_PASSES.SILHOUETTE_SELECTED;\n } else if (highlighted) {\n f1 = RENDER_PASSES.SILHOUETTE_HIGHLIGHTED;\n } else if (xrayed) {\n f1 = RENDER_PASSES.SILHOUETTE_XRAYED;\n } else {\n f1 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Edges\n\n let f2 = 0;\n if (!visible || culled) {\n f2 = RENDER_PASSES.NOT_RENDERED;\n } else if (selected) {\n f2 = RENDER_PASSES.EDGES_SELECTED;\n } else if (highlighted) {\n f2 = RENDER_PASSES.EDGES_HIGHLIGHTED;\n } else if (xrayed) {\n f2 = RENDER_PASSES.EDGES_XRAYED;\n } else if (edges) {\n if (meshTransparent) {\n f2 = RENDER_PASSES.EDGES_COLOR_TRANSPARENT;\n } else {\n f2 = RENDER_PASSES.EDGES_COLOR_OPAQUE;\n }\n } else {\n f2 = RENDER_PASSES.NOT_RENDERED;\n }\n\n // Pick\n\n let f3 = (visible && !culled && pickable) ? RENDER_PASSES.PICK : RENDER_PASSES.NOT_RENDERED;\n\n tempUint8Vec4[0] = f0; // x - normal fill\n tempUint8Vec4[1] = f1; // y - emphasis fill\n tempUint8Vec4[2] = f2; // z - edges\n tempUint8Vec4[3] = f3; // w - pick\n\n this._state.flagsBuf.setData(tempUint8Vec4, portionId * 4, 4);\n }\n\n _setFlags2(portionId, flags) {\n\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n\n const clippable = !!(flags & ENTITY_FLAGS.CLIPPABLE) ? 255 : 0;\n tempUint8Vec4[0] = clippable;\n\n this._state.flags2Buf.setData(tempUint8Vec4, portionId * 4, 4);\n }\n\n setOffset(portionId, offset) {\n if (!this._finalized) {\n throw \"Not finalized\";\n }\n if (!this.model.scene.entityOffsetsEnabled) {\n this.model.error(\"Entity#offset not enabled for this Viewer\"); // See Viewer entityOffsetsEnabled\n return;\n }\n tempVec3fa[0] = offset[0];\n tempVec3fa[1] = offset[1];\n tempVec3fa[2] = offset[2];\n this._state.offsetsBuf.setData(tempVec3fa, portionId * 3, 3);\n }\n\n // ---------------------- NORMAL RENDERING -----------------------------------\n\n drawColorOpaque(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === this._numPortions || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._pointsInstancingRenderers.colorRenderer) {\n this._pointsInstancingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n drawColorTransparent(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numTransparentLayerPortions === 0 || this._numXRayedLayerPortions === this._numPortions) {\n return;\n }\n if (this._pointsInstancingRenderers.colorRenderer) {\n this._pointsInstancingRenderers.colorRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_TRANSPARENT);\n }\n }\n\n // -- RENDERING SAO POST EFFECT TARGETS ----------------------------------------------------------------------------\n\n drawDepth(renderFlags, frameCtx) {\n }\n\n drawNormals(renderFlags, frameCtx) {\n }\n\n // ---------------------- EMPHASIS RENDERING -----------------------------------\n\n drawSilhouetteXRayed(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numXRayedLayerPortions === 0) {\n return;\n }\n if (this._pointsInstancingRenderers.silhouetteRenderer) {\n this._pointsInstancingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_XRAYED);\n }\n }\n\n drawSilhouetteHighlighted(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numHighlightedLayerPortions === 0) {\n return;\n }\n if (this._pointsInstancingRenderers.silhouetteRenderer) {\n this._pointsInstancingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_HIGHLIGHTED);\n }\n }\n\n drawSilhouetteSelected(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0 || this._numSelectedLayerPortions === 0) {\n return;\n }\n if (this._pointsInstancingRenderers.silhouetteRenderer) {\n this._pointsInstancingRenderers.silhouetteRenderer.drawLayer(frameCtx, this, RENDER_PASSES.SILHOUETTE_SELECTED);\n }\n }\n\n //-- EDGES RENDERING -----------------------------------------------------------------------------------------------\n\n drawEdgesColorOpaque(renderFlags, frameCtx) {\n }\n\n drawEdgesColorTransparent(renderFlags, frameCtx) {\n }\n\n drawEdgesHighlighted(renderFlags, frameCtx) {\n }\n\n drawEdgesSelected(renderFlags, frameCtx) {\n }\n\n drawEdgesXRayed(renderFlags, frameCtx) {\n }\n\n // ---------------------- OCCLUSION CULL RENDERING -----------------------------------\n\n drawOcclusion(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._pointsInstancingRenderers.occlusionRenderer) {\n // Only opaque, filled objects can be occluders\n this._pointsInstancingRenderers.occlusionRenderer.drawLayer(frameCtx, this, RENDER_PASSES.COLOR_OPAQUE);\n }\n }\n\n // ---------------------- SHADOW BUFFER RENDERING -----------------------------------\n\n drawShadow(renderFlags, frameCtx) {\n }\n\n //---- PICKING ----------------------------------------------------------------------------------------------------\n\n drawPickMesh(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._pointsInstancingRenderers.pickMeshRenderer) {\n this._pointsInstancingRenderers.pickMeshRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickDepths(renderFlags, frameCtx) {\n if (this._numCulledLayerPortions === this._numPortions || this._numVisibleLayerPortions === 0) {\n return;\n }\n if (this._pointsInstancingRenderers.pickDepthRenderer) {\n this._pointsInstancingRenderers.pickDepthRenderer.drawLayer(frameCtx, this, RENDER_PASSES.PICK);\n }\n }\n\n drawPickNormals(renderFlags, frameCtx) {\n }\n\n destroy() {\n const state = this._state;\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n state.positionsBuf = null;\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n state.colorsBuf = null;\n }\n if (state.flagsBuf) {\n state.flagsBuf.destroy();\n state.flagsBuf = null;\n }\n if (state.flags2Buf) {\n state.flags2Buf.destroy();\n state.flags2Buf = null;\n }\n if (state.offsetsBuf) {\n state.offsetsBuf.destroy();\n state.offsetsBuf = null;\n }\n if (state.modelMatrixCol0Buf) {\n state.modelMatrixCol0Buf.destroy();\n state.modelMatrixCol0Buf = null;\n }\n if (state.modelMatrixCol1Buf) {\n state.modelMatrixCol1Buf.destroy();\n state.modelMatrixCol1Buf = null;\n }\n if (state.modelMatrixCol2Buf) {\n state.modelMatrixCol2Buf.destroy();\n state.modelMatrixCol2Buf = null;\n }\n if (state.pickColorsBuf) {\n state.pickColorsBuf.destroy();\n state.pickColorsBuf = null;\n }\n state.destroy();\n }\n}\n\nconst instancedArraysSupported = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"ANGLE_instanced_arrays\"];\n\nconst tempMat4$1 = math.mat4();\n\nconst defaultScale = math.vec3([1, 1, 1]);\nconst defaultPosition = math.vec3([0, 0, 0]);\nconst defaultRotation = math.vec3([0, 0, 0]);\nconst defaultQuaternion = math.identityQuaternion();\n\n/**\n * @desc A high-performance model representation for efficient rendering and low memory usage.\n *\n * # Examples\n *\n * * [PerformanceModel using geometry batching](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_batching)\n * * [PerformanceModel using geometry batching and RTC coordinates](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_batching_rtcCenter)\n * * [PerformanceModel using geometry instancing](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_instancing)\n * * [PerformanceModel using geometry instancing and RTC coordinates](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_instancing_rtcCenter)\n *\n * # Overview\n *\n * While xeokit's standard [scene graph](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs) is great for gizmos and medium-sized models, it doesn't scale up to millions of objects in terms of memory and rendering efficiency.\n *\n * For huge models, we have the ````PerformanceModel```` representation, which is optimized to pack large amounts of geometry into memory and render it efficiently using WebGL.\n *\n * ````PerformanceModel```` is the default model representation loaded by {@link GLTFLoaderPlugin} and {@link XKTLoaderPlugin}.\n *\n * In this tutorial you'll learn how to use ````PerformanceModel```` to create high-detail content programmatically. Ordinarily you'd be learning about ````PerformanceModel```` if you were writing your own model loader plugins.\n *\n * # Contents\n *\n * - [PerformanceModel](#performancemodel)\n * - [GPU-Resident Geometry](#gpu-resident-geometry)\n * - [Picking](#picking)\n * - [Example 1: Geometry Instancing](#example-1--geometry-instancing)\n * - [Finalizing a PerformanceModel](#finalizing-a-performancemodel)\n * - [Finding Entities](#finding-entities)\n * - [Example 2: Geometry Batching](#example-2--geometry-batching)\n * - [Classifying with Metadata](#classifying-with-metadata)\n * - [Querying Metadata](#querying-metadata)\n * - [Metadata Structure](#metadata-structure)\n * - [RTC Coordinates](#rtc-coordinates)\n * - [Example 3: RTC Coordinates with Geometry Instancing](#example-2--rtc-coordinates-with-geometry-instancing)\n * - [Example 4: RTC Coordinates with Geometry Batching](#example-2--rtc-coordinates-with-geometry-batching)\n *\n * ## PerformanceModel\n *\n * ````PerformanceModel```` uses two rendering techniques internally:\n *\n * 1. ***Geometry batching*** for unique geometries, combining those into a single WebGL geometry buffer, to render in one draw call, and\n * 2. ***geometry instancing*** for geometries that are shared by multiple meshes, rendering all instances of each shared geometry in one draw call.\n *\n *
\n * These techniques come with certain limitations:\n *\n * * Non-realistic rendering - while scene graphs can use xeokit's full set of material workflows, ````PerformanceModel```` uses simple Lambertian shading without textures.\n * * Static transforms - transforms within a ````PerformanceModel```` are static and cannot be dynamically translated, rotated and scaled the way {@link Node}s and {@link Mesh}es in scene graphs can.\n * * Immutable model representation - while scene graph {@link Node}s and\n * {@link Mesh}es can be dynamically plugged together, ````PerformanceModel```` is immutable,\n * since it packs its geometries into buffers and instanced arrays.\n *\n * ````PerformanceModel````'s API allows us to exploit batching and instancing, while exposing its elements as\n * abstract {@link Entity} types.\n *\n * {@link Entity} is the abstract base class for\n * the various xeokit components that represent models, objects, or anonymous visible elements. An Entity has a unique ID and can be\n * individually shown, hidden, selected, highlighted, ghosted, culled, picked and clipped, and has its own World-space boundary.\n *\n * * A ````PerformanceModel```` is an {@link Entity} that represents a model.\n * * A ````PerformanceModel```` represents each of its objects with an {@link Entity}.\n * * Each {@link Entity} has one or more meshes that define its shape.\n * * Each mesh has either its own unique geometry, or shares a geometry with other meshes.\n *\n * ## GPU-Resident Geometry\n *\n * For a low memory footprint, ````PerformanceModel```` stores its geometries in GPU memory only, compressed (quantized) as integers. Unfortunately, GPU-resident geometry is\n * not readable by JavaScript.\n *\n *\n * ## Example 1: Geometry Instancing\n *\n * In the example below, we'll use a ````PerformanceModel````\n * to build a simple table model using geometry instancing.\n *\n * We'll start by adding a reusable box-shaped geometry to our ````PerformanceModel````.\n *\n * Then, for each object in our model we'll add an {@link Entity}\n * that has a mesh that instances our box geometry, transforming and coloring the instance.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_instancing)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_instancing)]\n *\n * ````javascript\n * import {Viewer, PerformanceModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Build a PerformanceModel representing a table\n * // with four legs, using geometry instancing\n *\n * const performanceModel = new PerformanceModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers PerformanceModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Create a reusable geometry within the PerformanceModel\n * // We'll instance this geometry by five meshes\n *\n * performanceModel.createGeometry({\n *\n * id: \"myBoxGeometry\",\n *\n * // The primitive type - allowed values are \"points\", \"lines\" and \"triangles\".\n * // See the OpenGL/WebGL specification docs\n * // for how the coordinate arrays are supposed to be laid out.\n * primitive: \"triangles\",\n *\n * // The vertices - eight for our cube, each\n * // one spanning three array elements for X,Y and Z\n * positions: [\n * 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n * 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v1 right\n * 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v1-v6-v1 top\n * -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n * -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n * 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v1 back\n * ],\n *\n * // Normal vectors, one for each vertex\n * normals: [\n * 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, // v0-v1-v2-v3 front\n * 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, // v0-v3-v4-v5 right\n * 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, // v0-v5-v6-v1 top\n * -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, // v1-v6-v7-v2 left\n * 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, // v7-v4-v3-v2 bottom\n * 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1 // v4-v7-v6-v5 back\n * ],\n *\n * // Indices - these organise the positions and and normals\n * // into geometric primitives in accordance with the \"primitive\" parameter,\n * // in this case a set of three indices for each triangle.\n * //\n * // Note that each triangle is specified in counter-clockwise winding order.\n * //\n * indices: [\n * 0, 1, 2, 0, 2, 3, // front\n * 4, 5, 6, 4, 6, 7, // right\n * 8, 9, 10, 8, 10, 11, // top\n * 12, 13, 14, 12, 14, 15, // left\n * 16, 17, 18, 16, 18, 19, // bottom\n * 20, 21, 22, 20, 22, 23\n * ]\n * });\n *\n * // Red table leg\n *\n * performanceModel.createMesh({\n * id: \"redLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * performanceModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * performanceModel.createMesh({\n * id: \"greenLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * performanceModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * performanceModel.createMesh({\n * id: \"blueLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * performanceModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg\n *\n * performanceModel.createMesh({\n * id: \"yellowLegMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * performanceModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * performanceModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * geometryId: \"myBoxGeometry\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * performanceModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n * ````\n *\n * ## Finalizing a PerformanceModel\n *\n * Before we can view and interact with our ````PerformanceModel````, we need to **finalize** it. Internally, this causes the ````PerformanceModel```` to build the\n * vertex buffer objects (VBOs) that support our geometry instances. When using geometry batching (see next example),\n * this causes ````PerformanceModel```` to build the VBOs that combine the batched geometries. Note that you can do both instancing and\n * batching within the same ````PerformanceModel````.\n *\n * Once finalized, we can't add anything more to our ````PerformanceModel````.\n *\n * ```` javascript\n * performanceModel.finalize();\n * ````\n *\n * ## Finding Entities\n *\n * As mentioned earlier, {@link Entity} is\n * the abstract base class for components that represent models, objects, or just\n * anonymous visible elements.\n *\n * Since we created configured our ````PerformanceModel```` with ````isModel: true````,\n * we're able to find it as an Entity by ID in ````viewer.scene.models````. Likewise, since\n * we configured each of its Entities with ````isObject: true````, we're able to\n * find them in ````viewer.scene.objects````.\n *\n *\n * ````javascript\n * // Get the whole table model Entity\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg object Entities\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Example 2: Geometry Batching\n *\n * Let's once more use a ````PerformanceModel````\n * to build the simple table model, this time exploiting geometry batching.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_batching)\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_batching)]\n *\n * ````javascript\n * import {Viewer, PerformanceModel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * // Create a PerformanceModel representing a table with four legs, using geometry batching\n * const performanceModel = new PerformanceModel(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <--- Registers PerformanceModel in viewer.scene.models\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n * rotation: [0, 0, 0]\n * });\n *\n * // Red table leg\n *\n * performanceModel.createMesh({\n * id: \"redLegMesh\",\n *\n * // Geometry arrays are same as for the earlier batching example\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * performanceModel.createEntity({\n * id: \"redLeg\",\n * meshIds: [\"redLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Green table leg\n *\n * performanceModel.createMesh({\n * id: \"greenLegMesh\",\n * primitive: \"triangles\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * performanceModel.createEntity({\n * id: \"greenLeg\",\n * meshIds: [\"greenLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Blue table leg\n *\n * performanceModel.createMesh({\n * id: \"blueLegMesh\",\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * performanceModel.createEntity({\n * id: \"blueLeg\",\n * meshIds: [\"blueLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Yellow table leg object\n *\n * performanceModel.createMesh({\n * id: \"yellowLegMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * performanceModel.createEntity({\n * id: \"yellowLeg\",\n * meshIds: [\"yellowLegMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Purple table top\n *\n * performanceModel.createMesh({\n * id: \"purpleTableTopMesh\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * performanceModel.createEntity({\n * id: \"purpleTableTop\",\n * meshIds: [\"purpleTableTopMesh\"],\n * isObject: true // <---- Registers Entity by ID on viewer.scene.objects\n * });\n *\n * // Finalize the PerformanceModel.\n *\n * performanceModel.finalize();\n *\n * // Find BigModelNodes by their model and object IDs\n *\n * // Get the whole table model\n * const table = viewer.scene.models[\"table\"];\n *\n * // Get some leg objects\n * const redLeg = viewer.scene.objects[\"redLeg\"];\n * const greenLeg = viewer.scene.objects[\"greenLeg\"];\n * const blueLeg = viewer.scene.objects[\"blueLeg\"];\n * ````\n *\n * ## Classifying with Metadata\n *\n * In the previous examples, we used ````PerformanceModel```` to build\n * two versions of the same table model, to demonstrate geometry batching and geometry instancing.\n *\n * We'll now classify our {@link Entity}s with metadata. This metadata\n * will work the same for both our examples, since they create the exact same structure of {@link Entity}s\n * to represent their models and objects. The abstract Entity type is, after all, intended to provide an abstract interface through which differently-implemented scene content can be accessed uniformly.\n *\n * To create the metadata, we'll create a {@link MetaModel} for our model,\n * with a {@link MetaObject} for each of it's objects. The MetaModel and MetaObjects\n * get the same IDs as the {@link Entity}s that represent their model and objects within our scene.\n *\n * ```` javascript\n * const furnitureMetaModel = viewer.metaScene.createMetaModel(\"furniture\", { // Creates a MetaModel in the MetaScene\n *\n * \"projectId\": \"myTableProject\",\n * \"revisionId\": \"V1.0\",\n *\n * \"metaObjects\": [\n * { // Creates a MetaObject in the MetaModel\n * \"id\": \"table\",\n * \"name\": \"Table\", // Same ID as an object Entity\n * \"type\": \"furniture\", // Arbitrary type, could be IFC type\n * \"properties\": { // Arbitrary properties, could be IfcPropertySet\n * \"cost\": \"200\"\n * }\n * },\n * {\n * \"id\": \"redLeg\",\n * \"name\": \"Red table Leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\", // References first MetaObject as parent\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"greenLeg\", // Node with corresponding id does not need to exist\n * \"name\": \"Green table leg\", // and MetaObject does not need to exist for Node with an id\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"blueLeg\",\n * \"name\": \"Blue table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"yellowLeg\",\n * \"name\": \"Yellow table leg\",\n * \"type\": \"leg\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"wood\"\n * }\n * },\n * {\n * \"id\": \"tableTop\",\n * \"name\": \"Purple table top\",\n * \"type\": \"surface\",\n * \"parent\": \"table\",\n * \"properties\": {\n * \"material\": \"formica\",\n * \"width\": \"60\",\n * \"depth\": \"60\",\n * \"thickness\": \"5\"\n * }\n * }\n * ]\n * });\n * ````\n *\n * ## Querying Metadata\n *\n * Having created and classified our model (either the instancing or batching example), we can now find the {@link MetaModel}\n * and {@link MetaObject}s using the IDs of their\n * corresponding {@link Entity}s.\n *\n * ````JavaScript\n * const furnitureMetaModel = scene.metaScene.metaModels[\"furniture\"];\n *\n * const redLegMetaObject = scene.metaScene.metaObjects[\"redLeg\"];\n * ````\n *\n * In the snippet below, we'll log metadata on each {@link Entity} we click on:\n *\n * ````JavaScript\n * viewer.scene.input.on(\"mouseclicked\", function (coords) {\n *\n * const hit = viewer.scene.pick({\n * canvasPos: coords\n * });\n *\n * if (hit) {\n * const entity = hit.entity;\n * const metaObject = viewer.metaScene.metaObjects[entity.id];\n * if (metaObject) {\n * console.log(JSON.stringify(metaObject.getJSON(), null, \"\\t\"));\n * }\n * }\n * });\n * ````\n *\n * ## Metadata Structure\n *\n * The {@link MetaModel}\n * organizes its {@link MetaObject}s in\n * a tree that describes their structural composition:\n *\n * ````JavaScript\n * // Get metadata on the root object\n * const tableMetaObject = furnitureMetaModel.rootMetaObject;\n *\n * // Get metadata on the leg objects\n * const redLegMetaObject = tableMetaObject.children[0];\n * const greenLegMetaObject = tableMetaObject.children[1];\n * const blueLegMetaObject = tableMetaObject.children[2];\n * const yellowLegMetaObject = tableMetaObject.children[3];\n * ````\n *\n * Given an {@link Entity}, we can find the object or model of which it is a part, or the objects that comprise it. We can also generate UI\n * components from the metadata, such as the tree view demonstrated in [this demo](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_OTCConferenceCenter).\n *\n * This hierarchy allows us to express the hierarchical structure of a model while representing it in\n * various ways in the 3D scene (such as with ````PerformanceModel````, which\n * has a non-hierarchical scene representation).\n *\n * Note also that a {@link MetaObject} does not need to have a corresponding\n * {@link Entity} and vice-versa.\n *\n * # RTC Coordinates for 64-Bit Precision\n *\n * ````PerformanceModel```` can emulate 64-bit precision on GPUs using relative-to-center (RTC) coordinates.\n *\n * Consider a model that contains many small objects, but with such large spatial extents that 32 bits of GPU precision (accurate to ~7 digits) will not be sufficient to render all of the the objects without jittering.\n *\n * To prevent jittering, we could spatially subdivide the objects into \"tiles\". Each tile would have a center position, and the positions of the objects within the tile would be relative to that center (\"RTC coordinates\").\n *\n * While the center positions of the tiles would be 64-bit values, the object positions only need to be 32-bit.\n *\n * Internally, when rendering an object with RTC coordinates, xeokit first temporarily translates the camera viewing matrix by the object's tile's RTC center, on the CPU, using 64-bit math.\n *\n * Then xeokit loads the viewing matrix into its WebGL shaders, where math happens at 32-bit precision. Within the shaders, the matrix is effectively down-cast to 32-bit precision, and the object's 32-bit vertex positions are transformed by the matrix.\n *\n * We see no jittering, because with RTC a detectable loss of GPU accuracy only starts happening to objects as they become very distant from the camera viewpoint, at which point they are too small to be discernible anyway.\n *\n * ## RTC Coordinates with Geometry Instancing\n *\n * To use RTC with ````PerformanceModel```` geometry instancing, we specify an RTC center for the geometry. Then ````PerformanceModel```` assumes that all meshes that instance that geometry are within the same RTC coordinate system, ie. the meshes ````position```` and ````rotation```` properties are assumed to be relative to the geometry's ````rtcCenter````.\n *\n * For simplicity, our example's meshes all instance the same geometry. Therefore, our example model has only one RTC center.\n *\n * Note that the axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_batching)\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_instancing_rtcCenter)]\n *\n * ````javascript\n * const rtcCenter = [100000000, 0, 100000000];\n *\n * performanceModel.createGeometry({\n * id: \"box\",\n * rtcCenter: rtcCenter, // This geometry's positions, and the transforms of all meshes that instance the geometry, are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * });\n *\n * performanceModel.createMesh({\n * id: \"leg1\",\n * geometryId: \"box\",\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * performanceModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"leg2\",\n * geometryId: \"box\",\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * performanceModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"leg3\",\n * geometryId: \"box\",\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * performanceModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"leg4\",\n * geometryId: \"box\",\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * performanceModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"top\",\n * geometryId: \"box\",\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * performanceModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n * ````\n *\n * ## RTC Coordinates with Geometry Batching\n *\n * To use RTC with ````PerformanceModel```` geometry batching, we specify an RTC center (````rtcCenter````) for each mesh. For performance, we try to have as many meshes share the same value for ````rtcCenter```` as possible. Each mesh's ````positions````, ````position```` and ````rotation```` properties are assumed to be relative to ````rtcCenter````.\n *\n * For simplicity, the meshes in our example all share the same RTC center.\n *\n * The axis-aligned World-space boundary (AABB) of our model is ````[ -6, -9, -6, 1000000006, -2.5, 1000000006]````.\n *\n * [![](http://xeokit.io/img/docs/sceneGraph.png)](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_batching)\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_PerformanceModel_batching_rtcCenter)]\n *\n * ````javascript\n * const rtcCenter = [100000000, 0, 100000000];\n *\n * performanceModel.createMesh({\n * id: \"leg1\",\n * rtcCenter: rtcCenter, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1, 0.3, 0.3]\n * });\n *\n * performanceModel.createEntity({\n * meshIds: [\"leg1\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"leg2\",\n * rtcCenter: rtcCenter, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 1.0, 0.3]\n * });\n *\n * performanceModel.createEntity({\n * meshIds: [\"leg2\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"leg3\",\n * rtcCenter: rtcCenter, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [0.3, 0.3, 1.0]\n * });\n *\n * performanceModel.createEntity({\n * meshIds: [\"leg3\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"leg4\",\n * rtcCenter: rtcCenter, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * color: [1.0, 1.0, 0.0]\n * });\n *\n * performanceModel.createEntity({\n * meshIds: [\"leg4\"],\n * isObject: true\n * });\n *\n * performanceModel.createMesh({\n * id: \"top\",\n * rtcCenter: rtcCenter, // This mesh's positions and transforms are relative to the RTC center\n * primitive: \"triangles\",\n * positions: [ 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1 ... ],\n * normals: [ 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, ... ],\n * indices: [ 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, ... ],\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * color: [1.0, 0.3, 1.0]\n * });\n *\n * performanceModel.createEntity({\n * meshIds: [\"top\"],\n * isObject: true\n * });\n ````\n *\n * @implements {Drawable}\n * @implements {Entity}\n */\nclass PerformanceModel extends Component {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Boolean} [cfg.isModel] Specify ````true```` if this PerformanceModel represents a model, in which case the PerformanceModel will be registered by {@link PerformanceModel#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position.\n * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [cfg.visible=true] Indicates if the PerformanceModel is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the PerformanceModel is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the PerformanceModel is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the PerformanceModel is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the PerformanceModel is initially included in boundary calculations.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the PerformanceModel is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the PerformanceModel is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the PerformanceModel is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the PerformanceModel's edges are initially emphasized.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] PerformanceModel's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] PerformanceModel's initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {Number} [cfg.backfaces=false] When we set this ````true````, then we force rendering of backfaces for this PerformanceModel. When\n * we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the\n * Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n * @param {Boolean} [cfg.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to this PerformanceModel. SAO is configured by the Scene's {@link SAO} component.\n * @param {Boolean} [cfg.pbrEnabled=false] Indicates if physically-based rendering (PBR) will apply to the PerformanceModel. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Number} [cfg.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Number} [cfg.maxGeometryBatchSize=50000000] Maximum geometry batch size, as number of vertices. This is optionally supplied\n * to limit the size of the batched geometry arrays that PerformanceModel internally creates for batched geometries.\n * A lower value means less heap allocation/de-allocation while creating/loading batched geometries, but more draw calls and\n * slower rendering speed. A high value means larger heap allocation/de-allocation while creating/loading, but less draw calls\n * and faster rendering speed. It's recommended to keep this somewhere roughly between ````50000```` and ````50000000```.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._maxGeometryBatchSize = cfg.maxGeometryBatchSize;\n\n this._aabb = math.collapseAABB3();\n this._aabbDirty = false;\n this._layerList = []; // For GL state efficiency when drawing, InstancingLayers are in first part, BatchingLayers are in second\n this._nodeList = [];\n\n this._lastRTCCenter = null;\n this._lastDecodeMatrix = null;\n this._lastNormals = null;\n\n this._instancingLayers = {};\n this._currentBatchingLayers = {};\n\n this._scratchMemory = getScratchMemory();\n\n this._meshes = {};\n this._nodes = {};\n\n /** @private **/\n this.renderFlags = new RenderFlags();\n\n /**\n * @private\n */\n this.numGeometries = 0; // Number of instance-able geometries created with createGeometry()\n\n // These counts are used to avoid unnecessary render passes\n // They are incremented or decremented exclusively by BatchingLayer and InstancingLayer\n /**\n * @private\n */\n this.numPortions = 0;\n\n /**\n * @private\n */\n this.numVisibleLayerPortions = 0;\n\n /**\n * @private\n */\n this.numTransparentLayerPortions = 0;\n\n /**\n * @private\n */\n this.numXRayedLayerPortions = 0;\n\n /**\n * @private\n */\n this.numHighlightedLayerPortions = 0;\n\n /**\n * @private\n */\n this.numSelectedLayerPortions = 0;\n\n /**\n * @private\n */\n this.numEdgesLayerPortions = 0;\n\n /**\n * @private\n */\n this.numPickableLayerPortions = 0;\n\n /**\n * @private\n */\n this.numClippableLayerPortions = 0;\n\n /**\n * @private\n */\n this.numCulledLayerPortions = 0;\n\n /** @private */\n this.numEntities = 0;\n\n /** @private */\n this._numTriangles = 0;\n\n /** @private */\n this._numLines = 0;\n\n /** @private */\n this._numPoints = 0;\n\n this._edgeThreshold = cfg.edgeThreshold || 10;\n\n this.visible = cfg.visible;\n this.culled = cfg.culled;\n this.pickable = cfg.pickable;\n this.clippable = cfg.clippable;\n this.collidable = cfg.collidable;\n this.castsShadow = cfg.castsShadow;\n this.receivesShadow = cfg.receivesShadow;\n this.xrayed = cfg.xrayed;\n this.highlighted = cfg.highlighted;\n this.selected = cfg.selected;\n this.edges = cfg.edges;\n this.colorize = cfg.colorize;\n this.opacity = cfg.opacity;\n this.backfaces = cfg.backfaces;\n\n // Build static matrix\n\n this._position = new Float32Array(cfg.position || [0, 0, 0]);\n this._rotation = new Float32Array(cfg.rotation || [0, 0, 0]);\n this._quaternion = new Float32Array(cfg.quaternion || [0, 0, 0, 1]);\n if (cfg.rotation) {\n math.eulerToQuaternion(this._rotation, \"XYZ\", this._quaternion);\n }\n this._scale = new Float32Array(cfg.scale || [1, 1, 1]);\n this._worldMatrix = math.mat4();\n math.composeMat4(this._position, this._quaternion, this._scale, this._worldMatrix);\n this._worldNormalMatrix = math.mat4();\n math.inverseMat4(this._worldMatrix, this._worldNormalMatrix);\n math.transposeMat4(this._worldNormalMatrix);\n\n if (cfg.matrix || cfg.position || cfg.rotation || cfg.scale || cfg.quaternion) {\n this._viewMatrix = math.mat4();\n this._viewNormalMatrix = math.mat4();\n this._viewMatrixDirty = true;\n this._worldMatrixNonIdentity = true;\n }\n\n this._opacity = 1.0;\n this._colorize = [1, 1, 1];\n\n this._saoEnabled = (cfg.saoEnabled !== false);\n\n this._pbrEnabled = (!!cfg.pbrEnabled);\n\n this._isModel = cfg.isModel;\n if (this._isModel) {\n this.scene._registerModel(this);\n }\n\n this._onCameraViewMatrix = this.scene.camera.on(\"matrix\", () => {\n this._viewMatrixDirty = true;\n });\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // PerformanceModel members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that this Component is a PerformanceModel.\n * @type {Boolean}\n */\n get isPerformanceModel() {\n return true;\n }\n\n /**\n * Gets the PerformanceModel's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get position() {\n return this._position;\n }\n\n /**\n * Gets the PerformanceModel's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get rotation() {\n return this._rotation;\n }\n\n /**\n * Gets the PerformanceModels's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n get quaternion() {\n return this._quaternion;\n }\n\n /**\n * Gets the PerformanceModel's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Gets the PerformanceModel's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n get matrix() {\n return this._worldMatrix;\n }\n\n /**\n * Gets the PerformanceModel's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n */\n get worldMatrix() {\n return this._worldMatrix;\n }\n\n /**\n * Gets the PerformanceModel's World normal matrix.\n *\n * @type {Number[]}\n */\n get worldNormalMatrix() {\n return this._worldNormalMatrix;\n }\n\n /**\n * Called by private renderers in ./lib, returns the view matrix with which to\n * render this PerformanceModel. The view matrix is the concatenation of the\n * Camera view matrix with the Performance model's world (modeling) matrix.\n *\n * @private\n */\n get viewMatrix() {\n if (!this._viewMatrix) {\n return this.scene.camera.viewMatrix;\n }\n if (this._viewMatrixDirty) {\n math.mulMat4(this.scene.camera.viewMatrix, this._worldMatrix, this._viewMatrix);\n math.inverseMat4(this._viewMatrix, this._viewNormalMatrix);\n math.transposeMat4(this._viewNormalMatrix);\n this._viewMatrixDirty = false;\n }\n return this._viewMatrix;\n }\n\n /**\n * Called by private renderers in ./lib, returns the picking view matrix with which to\n * ray-pick on this PerformanceModel.\n *\n * @private\n */\n getPickViewMatrix(pickViewMatrix) {\n if (!this._viewMatrix) {\n return pickViewMatrix;\n }\n return this._viewMatrix;\n }\n\n /**\n * Called by private renderers in ./lib, returns the view normal matrix with which to render this PerformanceModel.\n *\n * @private\n */\n get viewNormalMatrix() {\n if (!this._viewNormalMatrix) {\n return this.scene.camera.viewNormalMatrix;\n }\n if (this._viewMatrixDirty) {\n math.mulMat4(this.scene.camera.viewMatrix, this._worldMatrix, this._viewMatrix);\n math.inverseMat4(this._viewMatrix, this._viewNormalMatrix);\n math.transposeMat4(this._viewNormalMatrix);\n this._viewMatrixDirty = false;\n }\n return this._viewNormalMatrix;\n }\n\n /**\n * Creates a reusable geometry within this PerformanceModel.\n *\n * We can then supply the geometry ID to {@link PerformanceModel#createMesh} when we want to create meshes that instance the geometry.\n *\n * If provide a ````positionsDecodeMatrix```` , then ````createGeometry()```` will assume\n * that the ````positions```` and ````normals```` arrays are compressed. When compressed, ````positions```` will be\n * quantized and in World-space, and ````normals```` will be oct-encoded and in World-space.\n *\n * Note that ````positions````, ````normals```` and ````indices```` are all required together.\n *\n * @param {*} cfg Geometry properties.\n * @param {String|Number} cfg.id Mandatory ID for the geometry, to refer to with {@link PerformanceModel#createMesh}.\n * @param {String} cfg.primitive The primitive type. Accepted values are 'points', 'lines', 'triangles', 'solid' and 'surface'.\n * @param {Number[]} cfg.positions Flat array of positions.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with 'triangles' primitives. When no normals are given, the geometry will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.colors] Flat array of RGBA vertex colors as float values in range ````[0..1]````. Ignored when ````geometryId```` is given, overidden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of RGBA vertex colors as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given, overrides ````colors```` and is overriden by ````color````.\n * @param {Number[]} [cfg.indices] Array of indices. Not required for `points` primitives.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. Used only for Required for 'triangles' primitives. These are automatically generated internally if not supplied, using the ````edgeThreshold```` given to the ````PerformanceModel```` constructor.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positions````.\n * @param {Number[]} [cfg.rtcCenter] Relative-to-center (RTC) coordinate system center. When this is given, then ````positions```` are assumed to be relative to this center.\n */\n createGeometry(cfg) {\n if (!instancedArraysSupported) {\n this.error(\"WebGL instanced arrays not supported\"); // TODO: Gracefully use batching?\n return;\n }\n const geometryId = cfg.id;\n if (geometryId === undefined || geometryId === null) {\n this.error(\"Config missing: id\");\n return;\n }\n if (this._instancingLayers[geometryId]) {\n this.error(\"Geometry already created: \" + geometryId);\n return;\n }\n let instancingLayer;\n const primitive = cfg.primitive;\n if (primitive === undefined || primitive === null) {\n this.error(\"Config missing: primitive\");\n return;\n }\n switch (primitive) {\n case \"triangles\":\n instancingLayer = new TrianglesInstancingLayer(this, utils.apply({\n layerIndex: 0,\n solid: true\n }, cfg));\n this._numTriangles += (cfg.indices ? Math.round(cfg.indices.length / 3) : 0);\n break;\n case \"solid\":\n instancingLayer = new TrianglesInstancingLayer(this, utils.apply({\n layerIndex: 0,\n solid: true\n }, cfg));\n this._numTriangles += (cfg.indices ? Math.round(cfg.indices.length / 3) : 0);\n break;\n case \"surface\":\n instancingLayer = new TrianglesInstancingLayer(this, utils.apply({\n layerIndex: 0,\n solid: false\n }, cfg));\n this._numTriangles += (cfg.indices ? Math.round(cfg.indices.length / 3) : 0);\n break;\n case \"lines\":\n instancingLayer = new LinesInstancingLayer(this, utils.apply({\n layerIndex: 0\n }, cfg));\n this._numLines += (cfg.indices ? Math.round(cfg.indices.length / 2) : 0);\n break;\n case \"points\":\n instancingLayer = new PointsInstancingLayer(this, utils.apply({\n layerIndex: 0\n }, cfg));\n this._numPoints += (cfg.positions ? Math.round(cfg.positions.length / 3) : 0);\n break;\n }\n this._instancingLayers[geometryId] = instancingLayer;\n this._layerList.push(instancingLayer);\n this.numGeometries++;\n }\n\n /**\n * Creates a mesh within this PerformanceModel.\n *\n * A mesh can either share geometry with other meshes, or have its own unique geometry.\n *\n * To share a geometry with other meshes, provide the ID of a geometry created earlier\n * with {@link PerformanceModel#createGeometry}.\n *\n * To create unique geometry for the mesh, provide geometry data arrays.\n *\n * Internally, PerformanceModel will batch all unique mesh geometries into the same arrays, which improves\n * rendering performance.\n *\n * If you accompany the arrays with a ````positionsDecodeMatrix```` , then ````createMesh()```` will assume\n * that the ````positions```` and ````normals```` arrays are compressed. When compressed, ````positions```` will be\n * quantized and in World-space, and ````normals```` will be oct-encoded and in World-space.\n *\n * If you accompany the arrays with an ````rtcCenter````, then ````createMesh()```` will assume\n * that the ````positions```` are in relative-to-center (RTC) coordinates, with ````rtcCenter```` being the origin of their\n * RTC coordinate system.\n *\n * When providing either ````positionsDecodeMatrix```` or ````rtcCenter````, ````createMesh()```` will start a new\n * batch each time either of those two parameters change since the last call. Therefore, to combine arrays into the\n * minimum number of batches, it's best for performance to create your shared meshes in runs that have the same value\n * for ````positionsDecodeMatrix```` and ````rtcCenter````.\n *\n * Note that ````positions````, ````normals```` and ````indices```` are all required together.\n *\n * @param {object} cfg Object properties.\n * @param {String} cfg.id Mandatory ID for the new mesh. Must not clash with any existing components within the {@link Scene}.\n * @param {String|Number} [cfg.geometryId] ID of a geometry to instance, previously created with {@link PerformanceModel#createGeometry:method\"}}createMesh(){{/crossLink}}. Overrides all other geometry parameters given to this method.\n * @param {String} [cfg.primitive=\"triangles\"] Geometry primitive type. Ignored when ````geometryId```` is given. Accepted values are 'points', 'lines' and 'triangles'.\n * @param {Number[]} [cfg.positions] Flat array of vertex positions. Ignored when ````geometryId```` is given.\n * @param {Number[]} [cfg.colors] Flat array of RGB vertex colors as float values in range ````[0..1]````. Ignored when ````geometryId```` is given, overriden by ````color```` and ````colorsCompressed````.\n * @param {Number[]} [cfg.colorsCompressed] Flat array of RGB vertex colors as unsigned short integers in range ````[0..255]````. Ignored when ````geometryId```` is given, overrides ````colors```` and is overriden by ````color````.\n * @param {Number[]} [cfg.normals] Flat array of normal vectors. Only used with 'triangles' primitives. When no normals are given, the mesh will be flat shaded using auto-generated face-aligned normals.\n * @param {Number[]} [cfg.positionsDecodeMatrix] A 4x4 matrix for decompressing ````positions````.\n * @param {Number[]} [cfg.rtcCenter] Relative-to-center (RTC) coordinate system center. When this is given, then ````positions```` are assumed to be relative to this center.\n * @param {Number[]} [cfg.indices] Array of triangle indices. Ignored when ````geometryId```` is given.\n * @param {Number[]} [cfg.edgeIndices] Array of edge line indices. If ````geometryId```` is not given, edge line indices are\n * automatically generated internally if not given, using the ````edgeThreshold```` given to the ````PerformanceModel````\n * constructor. This parameter is ignored when ````geometryId```` is given.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position. of the mesh\n * @param {Number[]} [cfg.scale=[1,1,1]] Scale of the mesh.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Rotation of the mesh as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Mesh modelling transform matrix. Overrides the ````position````, ````scale```` and ````rotation```` parameters.\n * @param {Number[]} [cfg.color=[1,1,1]] RGB color in range ````[0..1, 0..`, 0..1]````. Overrides ````colors```` and ````colorsCompressed````.\n * @param {Number} [cfg.opacity=1] Opacity in range ````[0..1]````.\n */\n createMesh(cfg) {\n\n let id = cfg.id;\n if (id === undefined || id === null) {\n this.error(\"Config missing: id\");\n return;\n }\n if (this._meshes[id]) {\n this.error(\"PerformanceModel already has a Mesh with this ID: \" + id + \"\");\n return;\n }\n\n const geometryId = cfg.geometryId;\n const instancing = (geometryId !== undefined);\n\n if (instancing) {\n if (!instancedArraysSupported) {\n this.error(\"WebGL instanced arrays not supported\"); // TODO: Gracefully use batching?\n return;\n }\n if (!this._instancingLayers[geometryId]) {\n this.error(\"Geometry not found: \" + geometryId + \" - ensure that you create it first with createGeometry()\");\n return;\n }\n }\n\n let layer;\n let portionId;\n\n const color = (cfg.color) ? new Uint8Array([Math.floor(cfg.color[0] * 255), Math.floor(cfg.color[1] * 255), Math.floor(cfg.color[2] * 255)]) : [255, 255, 255];\n const opacity = (cfg.opacity !== undefined && cfg.opacity !== null) ? Math.floor(cfg.opacity * 255) : 255;\n const metallic = (cfg.metallic !== undefined && cfg.metallic !== null) ? Math.floor(cfg.metallic * 255) : 0;\n const roughness = (cfg.roughness !== undefined && cfg.roughness !== null) ? Math.floor(cfg.roughness * 255) : 255;\n\n const mesh = new PerformanceMesh(this, id, color, opacity);\n\n const pickId = mesh.pickId;\n\n const a = pickId >> 24 & 0xFF;\n const b = pickId >> 16 & 0xFF;\n const g = pickId >> 8 & 0xFF;\n const r = pickId & 0xFF;\n\n const pickColor = new Uint8Array([r, g, b, a]); // Quantized pick color\n\n const aabb = math.collapseAABB3();\n\n if (instancing) {\n\n let meshMatrix;\n let worldMatrix = this._worldMatrixNonIdentity ? this._worldMatrix : null;\n\n if (cfg.matrix) {\n meshMatrix = cfg.matrix;\n } else {\n const scale = cfg.scale || defaultScale;\n const position = cfg.position || defaultPosition;\n const rotation = cfg.rotation || defaultRotation;\n math.eulerToQuaternion(rotation, \"XYZ\", defaultQuaternion);\n meshMatrix = math.composeMat4(position, defaultQuaternion, scale, tempMat4$1);\n }\n\n const instancingLayer = this._instancingLayers[geometryId];\n\n layer = instancingLayer;\n\n portionId = instancingLayer.createPortion({\n color: color,\n metallic: metallic,\n roughness: roughness,\n opacity: opacity,\n meshMatrix: meshMatrix,\n worldMatrix: worldMatrix,\n aabb: aabb,\n pickColor: pickColor\n });\n\n math.expandAABB3(this._aabb, aabb);\n\n const numTriangles = Math.round(instancingLayer.numIndices / 3);\n this._numTriangles += numTriangles;\n mesh.numTriangles = numTriangles;\n\n mesh.rtcCenter = instancingLayer.rtcCenter;\n\n } else { // Batching\n\n let primitive = cfg.primitive || \"triangles\";\n\n if (primitive !== \"points\" && primitive !== \"lines\" && primitive !== \"triangles\" && primitive !== \"solid\" && primitive !== \"surface\") {\n this.error(`Unsupported value for 'primitive': '${primitive}' - supported values are 'points', 'lines', 'triangles', 'solid' and 'surface'. Defaulting to 'triangles'.`);\n primitive = \"triangles\";\n }\n\n let positions = cfg.positions;\n\n if (!positions) {\n this.error(\"Config missing: positions (no meshIds provided, so expecting geometry arrays instead)\");\n return null;\n }\n\n let indices = cfg.indices;\n let edgeIndices = cfg.edgeIndices;\n\n if (!cfg.indices && primitive === \"triangles\") {\n this.error(\"Config missing for triangles primitive: indices (no meshIds provided, so expecting geometry arrays instead)\");\n return null;\n }\n\n let needNewBatchingLayers = false;\n\n if (cfg.rtcCenter) {\n if (!this._lastRTCCenter) {\n needNewBatchingLayers = true;\n this._lastRTCCenter = math.vec3(cfg.rtcCenter);\n } else {\n if (!math.compareVec3(this._lastRTCCenter, cfg.rtcCenter)) {\n needNewBatchingLayers = true;\n this._lastRTCCenter.set(cfg.rtcCenter);\n }\n }\n }\n\n if (cfg.positionsDecodeMatrix) {\n if (!this._lastDecodeMatrix) {\n needNewBatchingLayers = true;\n this._lastDecodeMatrix = math.mat4(cfg.positionsDecodeMatrix);\n\n } else {\n if (!math.compareMat4(this._lastDecodeMatrix, cfg.positionsDecodeMatrix)) {\n needNewBatchingLayers = true;\n this._lastDecodeMatrix.set(cfg.positionsDecodeMatrix);\n }\n }\n }\n\n if (needNewBatchingLayers) {\n for (let prim in this._currentBatchingLayers) {\n if (this._currentBatchingLayers.hasOwnProperty(prim)) {\n this._currentBatchingLayers[prim].finalize();\n }\n }\n this._currentBatchingLayers = {};\n }\n\n const normalsProvided = (!!cfg.normals && cfg.normals.length > 0);\n\n if (primitive === \"triangles\" || primitive === \"solid\" || primitive === \"surface\") {\n if (this._lastNormals !== null && normalsProvided !== this._lastNormals) {\n [\"triangles\", \"solid\", \"surface\"].map(primitiveId => {\n if (this._currentBatchingLayers[primitiveId]) {\n this._currentBatchingLayers[primitiveId].finalize();\n delete this._currentBatchingLayers[primitiveId];\n }\n });\n }\n this._lastNormals = normalsProvided;\n }\n\n const worldMatrix = this._worldMatrixNonIdentity ? this._worldMatrix : null;\n let meshMatrix;\n\n if (!cfg.positionsDecodeMatrix) {\n if (cfg.matrix) {\n meshMatrix = cfg.matrix;\n } else {\n const scale = cfg.scale || defaultScale;\n const position = cfg.position || defaultPosition;\n const rotation = cfg.rotation || defaultRotation;\n math.eulerToQuaternion(rotation, \"XYZ\", defaultQuaternion);\n meshMatrix = math.composeMat4(position, defaultQuaternion, scale, tempMat4$1);\n }\n }\n\n layer = this._currentBatchingLayers[primitive];\n\n switch (primitive) {\n\n case \"triangles\":\n case \"solid\":\n case \"surface\":\n\n if (layer) {\n if (!layer.canCreatePortion(positions.length, indices.length)) {\n layer.finalize();\n delete this._currentBatchingLayers[primitive];\n layer = null;\n }\n }\n\n if (!layer) {\n layer = new TrianglesBatchingLayer(this, {\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._scratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n rtcCenter: cfg.rtcCenter, // Can be undefined\n maxGeometryBatchSize: this._maxGeometryBatchSize,\n solid: (primitive === \"solid\"),\n autoNormals: (!normalsProvided)\n });\n this._layerList.push(layer);\n this._currentBatchingLayers[primitive] = layer;\n }\n\n if (!edgeIndices) {\n edgeIndices = buildEdgeIndices(positions, indices, null, this._edgeThreshold);\n }\n\n portionId = layer.createPortion({\n positions: positions,\n normals: cfg.normals,\n indices: indices,\n edgeIndices: edgeIndices,\n color: color,\n metallic: metallic,\n roughness: roughness,\n colors: cfg.colors,\n colorsCompressed: cfg.colorsCompressed,\n opacity: opacity,\n meshMatrix: meshMatrix,\n worldMatrix: worldMatrix,\n worldAABB: aabb,\n pickColor: pickColor\n });\n\n const numTriangles = Math.round(indices.length / 3);\n this._numTriangles += numTriangles;\n mesh.numTriangles = numTriangles;\n\n break;\n\n case \"lines\":\n\n if (layer) {\n if (!layer.canCreatePortion(positions.length, indices.length)) {\n layer.finalize();\n delete this._currentBatchingLayers[primitive];\n layer = null;\n }\n }\n\n if (!layer) {\n layer = new LinesBatchingLayer(this, {\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._scratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n rtcCenter: cfg.rtcCenter, // Can be undefined\n maxGeometryBatchSize: this._maxGeometryBatchSize\n });\n this._layerList.push(layer);\n this._currentBatchingLayers[primitive] = layer;\n }\n\n portionId = layer.createPortion({\n positions: positions,\n indices: indices,\n color: color,\n colors: cfg.colors,\n colorsCompressed: cfg.colorsCompressed,\n opacity: opacity,\n meshMatrix: meshMatrix,\n worldMatrix: worldMatrix,\n worldAABB: aabb,\n pickColor: pickColor\n });\n\n this._numLines += Math.round(indices.length / 2);\n\n break;\n\n case \"points\":\n\n if (layer) {\n if (!layer.canCreatePortion(positions.length)) {\n layer.finalize();\n delete this._currentBatchingLayers[primitive];\n layer = null;\n }\n }\n\n if (!layer) {\n layer = new PointsBatchingLayer(this, {\n layerIndex: 0, // This is set in #finalize()\n scratchMemory: this._scratchMemory,\n positionsDecodeMatrix: cfg.positionsDecodeMatrix, // Can be undefined\n rtcCenter: cfg.rtcCenter, // Can be undefined\n maxGeometryBatchSize: this._maxGeometryBatchSize\n });\n this._layerList.push(layer);\n this._currentBatchingLayers[primitive] = layer;\n }\n\n portionId = layer.createPortion({\n positions: positions,\n color: color,\n colors: cfg.colors,\n colorsCompressed: cfg.colorsCompressed,\n opacity: opacity,\n meshMatrix: meshMatrix,\n worldMatrix: worldMatrix,\n worldAABB: aabb,\n pickColor: pickColor\n });\n\n this._numPoints += Math.round(positions.length / 3);\n\n break;\n }\n\n math.expandAABB3(this._aabb, aabb);\n\n this.numGeometries++;\n\n mesh.rtcCenter = cfg.rtcCenter;\n }\n\n mesh.parent = null; // Will be set within PerformanceModelNode constructor\n mesh._layer = layer;\n mesh._portionId = portionId;\n mesh.aabb = aabb;\n\n this._meshes[id] = mesh;\n }\n\n /**\n * Creates an {@link Entity} within this PerformanceModel, giving it one or more meshes previously created with {@link PerformanceModel#createMesh}.\n *\n * A mesh can only belong to one {@link Entity}, so you'll get an error if you try to reuse a mesh among multiple {@link Entity}s.\n *\n * @param {Object} cfg Entity configuration.\n * @param {String} cfg.id Optional ID for the new Entity. Must not clash with any existing components within the {@link Scene}.\n * @param {String[]} cfg.meshIds IDs of one or more meshes created previously with {@link PerformanceModel@createMesh}.\n\n * @param {Boolean} [cfg.isObject] Set ````true```` if the {@link Entity} represents an object, in which case it will be registered by {@link Entity#id} in {@link Scene#objects} and can also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.\n * @param {Boolean} [cfg.visible=true] Indicates if the Entity is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the Entity is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the Entity is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the Entity is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the Entity is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the Entity initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the Entity initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the Entity is initially xrayed. XRayed appearance is configured by {@link PerformanceModel#xrayMaterial}.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the Entity is initially highlighted. Highlighted appearance is configured by {@link PerformanceModel#highlightMaterial}.\n * @param {Boolean} [cfg.selected=false] Indicates if the Entity is initially selected. Selected appearance is configured by {@link PerformanceModel#selectedMaterial}.\n * @param {Boolean} [cfg.edges=false] Indicates if the Entity's edges are initially emphasized. Edges appearance is configured by {@link PerformanceModel#edgeMaterial}.\n * @returns {Entity}\n */\n createEntity(cfg) {\n // Validate or generate Entity ID\n let id = cfg.id;\n if (id === undefined) {\n id = math.createUUID();\n } else if (this.scene.components[id]) {\n this.error(\"Scene already has a Component with this ID: \" + id + \" - will assign random ID\");\n id = math.createUUID();\n }\n // Collect PerformanceModelNode's PerformanceModelMeshes\n const meshIds = cfg.meshIds;\n if (meshIds === undefined) {\n this.error(\"Config missing: meshIds\");\n return;\n }\n let meshes = [];\n for (let i = 0, len = meshIds.length; i < len; i++) {\n const meshId = meshIds[i];\n const mesh = this._meshes[meshId];\n if (!mesh) {\n this.error(\"Mesh with this ID not found: \" + meshId + \" - ignoring this mesh\");\n continue;\n }\n if (mesh.parent) {\n this.error(\"Mesh with ID \" + meshId + \" already belongs to object with ID \" + mesh.parent.id + \" - ignoring this mesh\");\n continue;\n }\n meshes.push(mesh);\n }\n // Create PerformanceModelNode flags\n let flags = 0;\n if (this._visible && cfg.visible !== false) {\n flags = flags | ENTITY_FLAGS.VISIBLE;\n }\n if (this._pickable && cfg.pickable !== false) {\n flags = flags | ENTITY_FLAGS.PICKABLE;\n }\n if (this._culled && cfg.culled !== false) {\n flags = flags | ENTITY_FLAGS.CULLED;\n }\n if (this._clippable && cfg.clippable !== false) {\n flags = flags | ENTITY_FLAGS.CLIPPABLE;\n }\n if (this._collidable && cfg.collidable !== false) {\n flags = flags | ENTITY_FLAGS.COLLIDABLE;\n }\n if (this._edges && cfg.edges !== false) {\n flags = flags | ENTITY_FLAGS.EDGES;\n }\n if (this._xrayed && cfg.xrayed !== false) {\n flags = flags | ENTITY_FLAGS.XRAYED;\n }\n if (this._highlighted && cfg.highlighted !== false) {\n flags = flags | ENTITY_FLAGS.HIGHLIGHTED;\n }\n if (this._selected && cfg.selected !== false) {\n flags = flags | ENTITY_FLAGS.SELECTED;\n }\n\n // Create PerformanceModelNode AABB\n let aabb;\n if (meshes.length === 1) {\n aabb = meshes[0].aabb;\n } else {\n aabb = math.collapseAABB3();\n for (let i = 0, len = meshes.length; i < len; i++) {\n math.expandAABB3(aabb, meshes[i].aabb);\n }\n }\n\n const node = new PerformanceNode(this, cfg.isObject, id, meshes, flags, aabb); // Internally sets PerformanceModelMesh#parent to this PerformanceModelNode\n this._nodeList.push(node);\n this._nodes[id] = node;\n this.numEntities++;\n return node;\n }\n\n /**\n * Finalizes this PerformanceModel.\n *\n * Immediately creates the PerformanceModel's {@link Entity}s within the {@link Scene}.\n *\n * Once finalized, you can't add anything more to this PerformanceModel.\n */\n finalize() {\n\n if (this.destroyed) {\n return;\n }\n\n for (const geometryId in this._instancingLayers) {\n if (this._instancingLayers.hasOwnProperty(geometryId)) {\n this._instancingLayers[geometryId].finalize();\n }\n }\n\n for (let primitive in this._currentBatchingLayers) {\n if (this._currentBatchingLayers.hasOwnProperty(primitive)) {\n this._currentBatchingLayers[primitive].finalize();\n }\n }\n this._currentBatchingLayers = {};\n\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n const node = this._nodeList[i];\n node._finalize();\n }\n\n // Sort layers to reduce WebGL shader switching when rendering them\n\n this._layerList.sort((a, b) => {\n if (a.sortId < b.sortId) {\n return -1;\n }\n if (a.sortId > b.sortId) {\n return 1;\n }\n return 0;\n });\n\n for (let i = 0, len = this._layerList.length; i < len; i++) {\n const layer = this._layerList[i];\n layer.layerIndex = i;\n }\n\n this.glRedraw();\n\n this.scene._aabbDirty = true;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // PerformanceModel members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Sets if backfaces are rendered for this PerformanceModel.\n *\n * Default is ````false````.\n *\n * When we set this ````true````, then backfaces are always rendered for this PerformanceModel.\n *\n * When we set this ````false````, then we allow the Viewer to decide whether to render backfaces. In this case,\n * the Viewer will:\n *\n * * hide backfaces on watertight meshes,\n * * show backfaces on open meshes, and\n * * always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n *\n * @type {Boolean}\n */\n set backfaces(backfaces) {\n backfaces = !!backfaces;\n this._backfaces = backfaces;\n this.glRedraw();\n }\n\n /**\n * Sets if backfaces are rendered for this PerformanceModel.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._backfaces;\n }\n\n /**\n * Gets the list of {@link Entity}s within this PerformanceModel.\n *\n * @returns {Entity[]}\n */\n get entityList() {\n return this._nodeList;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Entity members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that PerformanceModel is an {@link Entity}.\n * @type {Boolean}\n */\n get isEntity() {\n return true;\n }\n\n /**\n * Returns ````true```` if this PerformanceModel represents a model.\n *\n * When ````true```` the PerformanceModel will be registered by {@link PerformanceModel#id} in\n * {@link Scene#models} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n */\n get isModel() {\n return this._isModel;\n }\n\n /**\n * Returns ````false```` to indicate that PerformanceModel never represents an object.\n *\n * @type {Boolean}\n */\n get isObject() {\n return false;\n }\n\n /**\n * Gets the PerformanceModel's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n */\n get aabb() {\n if (this._aabbDirty) {\n this._rebuildAABB();\n }\n return this._aabb;\n }\n\n _rebuildAABB() {\n math.collapseAABB3(this._aabb);\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n const node = this._nodeList[i];\n math.expandAABB3(this._aabb, node.aabb);\n }\n this._aabbDirty = false;\n }\n\n /**\n * The approximate number of triangle primitives in this PerformanceModel.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n /**\n * The approximate number of line primitives in this PerformanceModel.\n *\n * @type {Number}\n */\n get numLines() {\n return this._numLines;\n }\n\n /**\n * The approximate number of point primitives in this PerformanceModel.\n *\n * @type {Number}\n */\n get numPoints() {\n return this._numPoints;\n }\n\n /**\n * Sets if this PerformanceModel is visible.\n *\n * The PerformanceModel is only rendered when {@link PerformanceModel#visible} is ````true```` and {@link PerformanceModel#culled} is ````false````.\n **\n * @type {Boolean}\n */\n set visible(visible) {\n visible = visible !== false;\n this._visible = visible;\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i].visible = visible;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link Entity}s in this PerformanceModel are visible.\n *\n * The PerformanceModel is only rendered when {@link PerformanceModel#visible} is ````true```` and {@link PerformanceModel#culled} is ````false````.\n *\n * @type {Boolean}\n */\n get visible() {\n return (this.numVisibleLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link Entity}s in this PerformanceModel are xrayed.\n *\n * @type {Boolean}\n */\n set xrayed(xrayed) {\n xrayed = !!xrayed;\n this._xrayed = xrayed;\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i].xrayed = xrayed;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link Entity}s in this PerformanceModel are xrayed.\n *\n * @type {Boolean}\n */\n get xrayed() {\n return (this.numXRayedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link Entity}s in this PerformanceModel are highlighted.\n *\n * @type {Boolean}\n */\n set highlighted(highlighted) {\n highlighted = !!highlighted;\n this._highlighted = highlighted;\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i].highlighted = highlighted;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link Entity}s in this PerformanceModel are highlighted.\n *\n * @type {Boolean}\n */\n get highlighted() {\n return (this.numHighlightedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link Entity}s in this PerformanceModel are selected.\n *\n * @type {Boolean}\n */\n set selected(selected) {\n selected = !!selected;\n this._selected = selected;\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i].selected = selected;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link Entity}s in this PerformanceModel are selected.\n *\n * @type {Boolean}\n */\n get selected() {\n return (this.numSelectedLayerPortions > 0);\n }\n\n /**\n * Sets if all {@link Entity}s in this PerformanceModel have edges emphasised.\n *\n * @type {Boolean}\n */\n set edges(edges) {\n edges = !!edges;\n this._edges = edges;\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i].edges = edges;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if any {@link Entity}s in this PerformanceModel have edges emphasised.\n *\n * @type {Boolean}\n */\n get edges() {\n return (this.numEdgesLayerPortions > 0);\n }\n\n /**\n * Sets if this PerformanceModel is culled from view.\n *\n * The PerformanceModel is only rendered when {@link PerformanceModel#visible} is true and {@link PerformanceModel#culled} is false.\n *\n * @type {Boolean}\n */\n set culled(culled) {\n culled = !!culled;\n this._culled = culled;\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i].culled = culled;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if this PerformanceModel is culled from view.\n *\n * The PerformanceModel is only rendered when {@link PerformanceModel#visible} is true and {@link PerformanceModel#culled} is false.\n *\n * @type {Boolean}\n */\n get culled() {\n return this._culled;\n }\n\n /**\n * Sets if {@link Entity}s in this PerformanceModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n set clippable(clippable) {\n clippable = clippable !== false;\n this._clippable = clippable;\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i].clippable = clippable;\n }\n this.glRedraw();\n }\n\n /**\n * Gets if {@link Entity}s in this PerformanceModel are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._clippable;\n }\n\n /**\n * Sets if {@link Entity}s in this PerformanceModel are collidable.\n *\n * @type {Boolean}\n */\n set collidable(collidable) {\n collidable = collidable !== false;\n this._collidable = collidable;\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i].collidable = collidable;\n }\n }\n\n /**\n * Gets if this PerformanceModel is collidable.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._collidable;\n }\n\n /**\n * Sets if {@link Entity}s in this PerformanceModel are pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n set pickable(pickable) {\n pickable = pickable !== false;\n this._pickable = pickable;\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i].pickable = pickable;\n }\n }\n\n /**\n * Gets if this PerformanceModel is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n get pickable() {\n return (this.numPickableLayerPortions > 0);\n }\n\n /**\n * Sets the RGB colorize color for this PerformanceModel.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n set colorize(colorize) {\n this._colorize = colorize;\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i].colorize = colorize;\n }\n }\n\n /**\n * Gets the RGB colorize color for this PerformanceModel.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n get colorize() {\n return this._colorize;\n }\n\n /**\n * Sets the opacity factor for this PerformanceModel.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n this._opacity = opacity;\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i].opacity = opacity;\n }\n }\n\n /**\n * Gets this PerformanceModel's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n return this._opacity;\n }\n\n /**\n * Sets if this PerformanceModel casts a shadow.\n *\n * @type {Boolean}\n */\n set castsShadow(castsShadow) {\n castsShadow = (castsShadow !== false);\n if (castsShadow !== this._castsShadow) {\n this._castsShadow = castsShadow;\n this.glRedraw();\n }\n }\n\n /**\n * Gets if this PerformanceModel casts a shadow.\n *\n * @type {Boolean}\n */\n get castsShadow() {\n return this._castsShadow;\n }\n\n /**\n * Sets if this PerformanceModel can have shadow cast upon it.\n *\n * @type {Boolean}\n */\n set receivesShadow(receivesShadow) {\n receivesShadow = (receivesShadow !== false);\n if (receivesShadow !== this._receivesShadow) {\n this._receivesShadow = receivesShadow;\n this.glRedraw();\n }\n }\n\n /**\n * Sets if this PerformanceModel can have shadow cast upon it.\n *\n * @type {Boolean}\n */\n get receivesShadow() {\n return this._receivesShadow;\n }\n\n /**\n * Gets if Scalable Ambient Obscurance (SAO) will apply to this PerformanceModel.\n *\n * SAO is configured by the Scene's {@link SAO} component.\n *\n * Only works when {@link SAO#enabled} is also true.\n *\n * @type {Boolean}\n */\n get saoEnabled() {\n return this._saoEnabled;\n }\n\n /**\n * Gets if physically-based rendering (PBR) is enabled for this PerformanceModel.\n *\n * Only works when {@link Scene#pbrEnabled} is also true.\n *\n * @type {Boolean}\n */\n get pbrEnabled() {\n return this._pbrEnabled;\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Drawable members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that PerformanceModel is implements {@link Drawable}.\n *\n * @type {Boolean}\n */\n get isDrawable() {\n return true;\n }\n\n /** @private */\n get isStateSortable() {\n return false\n }\n\n /** @private */\n stateSortCompare(drawable1, drawable2) {\n }\n\n /** @private */\n rebuildRenderFlags() {\n this.renderFlags.reset();\n this._updateRenderFlagsVisibleLayers();\n if (this.renderFlags.numLayers > 0 && this.renderFlags.numVisibleLayers === 0) {\n this.renderFlags.culled = true;\n return;\n }\n this._updateRenderFlags();\n }\n\n /**\n * @private\n */\n _updateRenderFlagsVisibleLayers() {\n const renderFlags = this.renderFlags;\n renderFlags.numLayers = this._layerList.length;\n renderFlags.numVisibleLayers = 0;\n for (let layerIndex = 0, len = this._layerList.length; layerIndex < len; layerIndex++) {\n const layer = this._layerList[layerIndex];\n const layerVisible = this._getActiveSectionPlanesForLayer(layer);\n if (layerVisible) {\n renderFlags.visibleLayers[renderFlags.numVisibleLayers++] = layerIndex;\n }\n }\n }\n\n /** @private */\n _getActiveSectionPlanesForLayer(layer) {\n\n const renderFlags = this.renderFlags;\n const sectionPlanes = this.scene._sectionPlanesState.sectionPlanes;\n const numSectionPlanes = sectionPlanes.length;\n const baseIndex = layer.layerIndex * numSectionPlanes;\n\n if (numSectionPlanes > 0) {\n for (let i = 0; i < numSectionPlanes; i++) {\n\n const sectionPlane = sectionPlanes[i];\n\n if (!sectionPlane.active) {\n renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = false;\n\n } else {\n renderFlags.sectionPlanesActivePerLayer[baseIndex + i] = true;\n renderFlags.sectioned = true;\n }\n }\n }\n\n return true;\n }\n\n /** @private */\n _updateRenderFlags() {\n\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n\n if (this.numCulledLayerPortions === this.numPortions) {\n return;\n }\n\n const renderFlags = this.renderFlags;\n\n renderFlags.colorOpaque = (this.numTransparentLayerPortions < this.numPortions);\n\n if (this.numTransparentLayerPortions > 0) {\n renderFlags.colorTransparent = true;\n }\n\n if (this.numXRayedLayerPortions > 0) {\n const xrayMaterial = this.scene.xrayMaterial._state;\n if (xrayMaterial.fill) {\n if (xrayMaterial.fillAlpha < 1.0) {\n renderFlags.xrayedSilhouetteTransparent = true;\n } else {\n renderFlags.xrayedSilhouetteOpaque = true;\n }\n }\n if (xrayMaterial.edges) {\n if (xrayMaterial.edgeAlpha < 1.0) {\n renderFlags.xrayedEdgesTransparent = true;\n } else {\n renderFlags.xrayedEdgesOpaque = true;\n }\n }\n }\n\n if (this.numEdgesLayerPortions > 0) {\n const edgeMaterial = this.scene.edgeMaterial._state;\n if (edgeMaterial.edges) {\n renderFlags.edgesOpaque = (this.numTransparentLayerPortions < this.numPortions);\n if (this.numTransparentLayerPortions > 0) {\n renderFlags.edgesTransparent = true;\n }\n }\n }\n\n if (this.numSelectedLayerPortions > 0) {\n const selectedMaterial = this.scene.selectedMaterial._state;\n if (selectedMaterial.fill) {\n if (selectedMaterial.fillAlpha < 1.0) {\n renderFlags.selectedSilhouetteTransparent = true;\n } else {\n renderFlags.selectedSilhouetteOpaque = true;\n }\n }\n if (selectedMaterial.edges) {\n if (selectedMaterial.edgeAlpha < 1.0) {\n renderFlags.selectedEdgesTransparent = true;\n } else {\n renderFlags.selectedEdgesOpaque = true;\n }\n }\n }\n\n if (this.numHighlightedLayerPortions > 0) {\n const highlightMaterial = this.scene.highlightMaterial._state;\n if (highlightMaterial.fill) {\n if (highlightMaterial.fillAlpha < 1.0) {\n renderFlags.highlightedSilhouetteTransparent = true;\n } else {\n renderFlags.highlightedSilhouetteOpaque = true;\n }\n }\n if (highlightMaterial.edges) {\n if (highlightMaterial.edgeAlpha < 1.0) {\n renderFlags.highlightedEdgesTransparent = true;\n } else {\n renderFlags.highlightedEdgesOpaque = true;\n }\n }\n }\n }\n\n /**\n * Configures the appearance of xrayed {@link Entity}s within this PerformanceModel.\n *\n * This is the {@link Scene#xrayMaterial}.\n *\n * @type {EmphasisMaterial}\n */\n get xrayMaterial() {\n return this.scene.xrayMaterial;\n }\n\n /**\n * Configures the appearance of highlighted {@link Entity}s within this PerformanceModel.\n *\n * This is the {@link Scene#highlightMaterial}.\n *\n * @type {EmphasisMaterial}\n */\n get highlightMaterial() {\n return this.scene.highlightMaterial;\n }\n\n /**\n * Configures the appearance of selected {@link Entity}s within this PerformanceModel.\n *\n * This is the {@link Scene#selectedMaterial}.\n *\n * @type {EmphasisMaterial}\n */\n get selectedMaterial() {\n return this.scene.selectedMaterial;\n }\n\n /**\n * Configures the appearance of edges of {@link Entity}s within this PerformanceModel.\n *\n * This is the {@link Scene#edgeMaterial}.\n *\n * @type {EdgeMaterial}\n */\n get edgeMaterial() {\n return this.scene.edgeMaterial;\n }\n\n // -------------- RENDERING ---------------------------------------------------------------------------------------\n\n /** @private */\n drawColorOpaque(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawColorOpaque(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawColorTransparent(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawColorTransparent(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawDepth(frameCtx) { // Dedicated to SAO because it skips transparent objects\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawDepth(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawNormals(frameCtx) { // Dedicated to SAO because it skips transparent objects\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawNormals(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawSilhouetteXRayed(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawSilhouetteXRayed(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawSilhouetteHighlighted(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawSilhouetteHighlighted(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawSilhouetteSelected(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawSilhouetteSelected(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesColorOpaque(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawEdgesColorOpaque(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesColorTransparent(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawEdgesColorTransparent(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesXRayed(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawEdgesXRayed(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesHighlighted(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawEdgesHighlighted(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawEdgesSelected(frameCtx) {\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawEdgesSelected(renderFlags, frameCtx);\n }\n }\n\n /**\n * @private\n */\n drawOcclusion(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawOcclusion(renderFlags, frameCtx);\n }\n }\n\n /**\n * @private\n */\n drawShadow(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawShadow(renderFlags, frameCtx);\n }\n }\n\n /** @private */\n drawPickMesh(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawPickMesh(renderFlags, frameCtx);\n }\n }\n\n /**\n * Called by PerformanceMesh.drawPickDepths()\n * @private\n */\n drawPickDepths(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawPickDepths(renderFlags, frameCtx);\n }\n }\n\n /**\n * Called by PerformanceMesh.drawPickNormals()\n * @private\n */\n drawPickNormals(frameCtx) {\n if (this.numVisibleLayerPortions === 0) {\n return;\n }\n const renderFlags = this.renderFlags;\n for (let i = 0, len = renderFlags.visibleLayers.length; i < len; i++) {\n const layerIndex = renderFlags.visibleLayers[i];\n this._layerList[layerIndex].drawPickNormals(renderFlags, frameCtx);\n }\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Component members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Destroys this PerformanceModel.\n */\n destroy() {\n for (let primitive in this._currentBatchingLayers) {\n if (this._currentBatchingLayers.hasOwnProperty(primitive)) {\n this._currentBatchingLayers[primitive].destroy();\n }\n }\n this._currentBatchingLayers = {};\n this.scene.camera.off(this._onCameraViewMatrix);\n for (let i = 0, len = this._layerList.length; i < len; i++) {\n this._layerList[i].destroy();\n }\n for (let i = 0, len = this._nodeList.length; i < len; i++) {\n this._nodeList[i]._destroy();\n }\n this.scene._aabbDirty = true;\n if (this._isModel) {\n this.scene._deregisterModel(this);\n }\n putScratchMemory();\n super.destroy();\n }\n}\n\nconst angleAxis = math.vec4(4);\nconst q1 = math.vec4();\nconst q2 = math.vec4();\nconst xAxis = math.vec3([1, 0, 0]);\nconst yAxis = math.vec3([0, 1, 0]);\nconst zAxis = math.vec3([0, 0, 1]);\n\nconst veca = math.vec3(3);\nconst vecb = math.vec3(3);\n\nconst identityMat = math.identityMat4();\n\n/**\n * @desc An {@link Entity} that is a scene graph node that can have child Nodes and {@link Mesh}es.\n *\n * ## Usage\n *\n * The example below is the same as the one given for {@link Mesh}, since the two classes work together. In this example,\n * we'll create a scene graph in which a root Node represents a group and the {@link Mesh}s are leaves. Since Node\n * implements {@link Entity}, we can designate the root Node as a model, causing it to be registered by its ID in {@link Scene#models}.\n *\n * Since {@link Mesh} also implements {@link Entity}, we can designate the leaf {@link Mesh}es as objects, causing them to\n * be registered by their IDs in {@link Scene#objects}.\n *\n * We can then find those {@link Entity} types in {@link Scene#models} and {@link Scene#objects}.\n *\n * We can also update properties of our object-Meshes via calls to {@link Scene#setObjectsHighlighted} etc.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneGraph)]\n *\n * ````javascript\n * import {Viewer, Mesh, Node, PhongMaterial} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [-21.80, 4.01, 6.56];\n * viewer.scene.camera.look = [0, -5.75, 0];\n * viewer.scene.camera.up = [0.37, 0.91, -0.11];\n *\n * new Node(viewer.scene, {\n * id: \"table\",\n * isModel: true, // <---------- Node represents a model, so is registered by ID in viewer.scene.models\n * rotation: [0, 50, 0],\n * position: [0, 0, 0],\n * scale: [1, 1, 1],\n *\n * children: [\n *\n * new Mesh(viewer.scene, { // Red table leg\n * id: \"redLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [-4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1, 0.3, 0.3]\n * })\n * }),\n *\n * new Mesh(viewer.scene, { // Green table leg\n * id: \"greenLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [4, -6, -4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.3, 1.0, 0.3]\n * })\n * }),\n *\n * new Mesh(viewer.scene, {// Blue table leg\n * id: \"blueLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.3, 0.3, 1.0]\n * })\n * }),\n *\n * new Mesh(viewer.scene, { // Yellow table leg\n * id: \"yellowLeg\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [-4, -6, 4],\n * scale: [1, 3, 1],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1.0, 1.0, 0.0]\n * })\n * }),\n *\n * new Mesh(viewer.scene, { // Purple table top\n * id: \"tableTop\",\n * isObject: true, // <------ Node represents an object, so is registered by ID in viewer.scene.objects\n * position: [0, -3, 0],\n * scale: [6, 0.5, 6],\n * rotation: [0, 0, 0],\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [1.0, 0.3, 1.0]\n * })\n * })\n * ]\n * });\n *\n * // Find Nodes and Meshes by their IDs\n *\n * var table = viewer.scene.models[\"table\"]; // Since table Node has isModel == true\n *\n * var redLeg = viewer.scene.objects[\"redLeg\"]; // Since the Meshes have isObject == true\n * var greenLeg = viewer.scene.objects[\"greenLeg\"];\n * var blueLeg = viewer.scene.objects[\"blueLeg\"];\n *\n * // Highlight one of the table leg Meshes\n *\n * viewer.scene.setObjectsHighlighted([\"redLeg\"], true); // Since the Meshes have isObject == true\n *\n * // Periodically update transforms on our Nodes and Meshes\n *\n * viewer.scene.on(\"tick\", function () {\n *\n * // Rotate legs\n * redLeg.rotateY(0.5);\n * greenLeg.rotateY(0.5);\n * blueLeg.rotateY(0.5);\n *\n * // Rotate table\n * table.rotateY(0.5);\n * table.rotateX(0.3);\n * });\n * ````\n *\n * ## Metadata\n *\n * As mentioned, we can also associate {@link MetaModel}s and {@link MetaObject}s with our Nodes and {@link Mesh}es,\n * within a {@link MetaScene}. See {@link MetaScene} for an example.\n *\n * @implements {Entity}\n */\nclass Node extends Component {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Boolean} [cfg.isModel] Specify ````true```` if this Mesh represents a model, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and may also have a corresponding {@link MetaModel} with matching {@link MetaModel#id}, registered by that ID in {@link MetaScene#metaModels}.\n * @param {Boolean} [cfg.isObject] Specify ````true```` if this Mesh represents an object, in which case the Mesh will be registered by {@link Mesh#id} in {@link Scene#objects} and may also have a corresponding {@link MetaObject} with matching {@link MetaObject#id}, registered by that ID in {@link MetaScene#metaObjects}.\n * @param {Node} [cfg.parent] The parent Node.\n * @param {Number[]} [cfg.rtcCenter] Relative-to-center (RTC) coordinate system center for this Node.\n * @param {Number[]} [cfg.position=[0,0,0]] Local 3D position.\n * @param {Number[]} [cfg.scale=[1,1,1]] Local scale.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1] Local modelling transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Number[]} [cfg.offset=[0,0,0]] World-space 3D translation offset. Translates the Node in World space, after modelling transforms.\n * @param {Boolean} [cfg.visible=true] Indicates if the Node is initially visible.\n * @param {Boolean} [cfg.culled=false] Indicates if the Node is initially culled from view.\n * @param {Boolean} [cfg.pickable=true] Indicates if the Node is initially pickable.\n * @param {Boolean} [cfg.clippable=true] Indicates if the Node is initially clippable.\n * @param {Boolean} [cfg.collidable=true] Indicates if the Node is initially included in boundary calculations.\n * @param {Boolean} [cfg.castsShadow=true] Indicates if the Node initially casts shadows.\n * @param {Boolean} [cfg.receivesShadow=true] Indicates if the Node initially receives shadows.\n * @param {Boolean} [cfg.xrayed=false] Indicates if the Node is initially xrayed.\n * @param {Boolean} [cfg.highlighted=false] Indicates if the Node is initially highlighted.\n * @param {Boolean} [cfg.selected=false] Indicates if the Mesh is initially selected.\n * @param {Boolean} [cfg.edges=false] Indicates if the Node's edges are initially emphasized.\n * @param {Number[]} [cfg.colorize=[1.0,1.0,1.0]] Node's initial RGB colorize color, multiplies by the rendered fragment colors.\n * @param {Number} [cfg.opacity=1.0] Node's initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {Array} [cfg.children] Child Nodes or {@link Mesh}es to add initially. Children must be in the same {@link Scene} and will be removed first from whatever parents they may already have.\n * @param {Boolean} [cfg.inheritStates=true] Indicates if children given to this constructor should inherit rendering state from this parent as they are added. Rendering state includes {@link Node#visible}, {@link Node#culled}, {@link Node#pickable}, {@link Node#clippable}, {@link Node#castsShadow}, {@link Node#receivesShadow}, {@link Node#selected}, {@link Node#highlighted}, {@link Node#colorize} and {@link Node#opacity}.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._parentNode = null;\n this._children = [];\n\n this._aabb = null;\n this._aabbDirty = true;\n\n this.scene._aabbDirty = true;\n\n this._numTriangles = 0;\n\n this._scale = math.vec3();\n this._quaternion = math.identityQuaternion();\n this._rotation = math.vec3();\n this._position = math.vec3();\n this._offset = math.vec3();\n\n this._localMatrix = math.identityMat4();\n this._worldMatrix = math.identityMat4();\n\n this._localMatrixDirty = true;\n this._worldMatrixDirty = true;\n\n if (cfg.matrix) {\n this.matrix = cfg.matrix;\n } else {\n this.scale = cfg.scale;\n this.position = cfg.position;\n if (cfg.quaternion) ; else {\n this.rotation = cfg.rotation;\n }\n }\n\n this._isModel = cfg.isModel;\n if (this._isModel) {\n this.scene._registerModel(this);\n }\n\n this._isObject = cfg.isObject;\n if (this._isObject) {\n this.scene._registerObject(this);\n }\n\n this.rtcCenter = cfg.rtcCenter;\n this.visible = cfg.visible;\n this.culled = cfg.culled;\n this.pickable = cfg.pickable;\n this.clippable = cfg.clippable;\n this.collidable = cfg.collidable;\n this.castsShadow = cfg.castsShadow;\n this.receivesShadow = cfg.receivesShadow;\n this.xrayed = cfg.xrayed;\n this.highlighted = cfg.highlighted;\n this.selected = cfg.selected;\n this.edges = cfg.edges;\n this.colorize = cfg.colorize;\n this.opacity = cfg.opacity;\n this.offset = cfg.offset;\n\n // Add children, which inherit state from this Node\n\n if (cfg.children) {\n const children = cfg.children;\n for (let i = 0, len = children.length; i < len; i++) {\n this.addChild(children[i], cfg.inheritStates);\n }\n }\n\n if (cfg.parentId) {\n const parentNode = this.scene.components[cfg.parentId];\n if (!parentNode) {\n this.error(\"Parent not found: '\" + cfg.parentId + \"'\");\n } else if (!parentNode.isNode) {\n this.error(\"Parent is not a Node: '\" + cfg.parentId + \"'\");\n } else {\n parentNode.addChild(this);\n }\n } else if (cfg.parent) {\n if (!cfg.parent.isNode) {\n this.error(\"Parent is not a Node\");\n }\n cfg.parent.addChild(this);\n }\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Entity members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that this Component is an Entity.\n * @type {Boolean}\n */\n get isEntity() {\n return true;\n }\n\n /**\n * Returns ````true```` if this Mesh represents a model.\n *\n * When this returns ````true````, the Mesh will be registered by {@link Mesh#id} in {@link Scene#models} and\n * may also have a corresponding {@link MetaModel}.\n *\n * @type {Boolean}\n */\n get isModel() {\n return this._isModel;\n }\n\n /**\n * Returns ````true```` if this Node represents an object.\n *\n * When ````true```` the Node will be registered by {@link Node#id} in\n * {@link Scene#objects} and may also have a {@link MetaObject} with matching {@link MetaObject#id}.\n *\n * @type {Boolean}\n * @abstract\n */\n get isObject() {\n return this._isObject;\n }\n\n /**\n * Gets the Node's World-space 3D axis-aligned bounding box.\n *\n * Represented by a six-element Float64Array containing the min/max extents of the\n * axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n */\n get aabb() {\n if (this._aabbDirty) {\n this._updateAABB();\n }\n return this._aabb;\n }\n\n /**\n * Sets the center of the relative-to-center (RTC) coordinate system for this Node and all child Nodes and {@link Mesh}s.\n *\n * @type {Float64Array}\n */\n set rtcCenter(rtcCenter) {\n if (rtcCenter) {\n if (!this._rtcCenter) {\n this._rtcCenter = math.vec3();\n }\n this._rtcCenter.set(rtcCenter);\n } else {\n if (this._rtcCenter) {\n this._rtcCenter = null;\n }\n }\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].rtcCenter = rtcCenter;\n }\n }\n\n /**\n * Gets the center of the relative-to-center (RTC) coordinate system for this Node and all child Nodes and {@link Mesh}s.\n *\n * @type {Float64Array}\n */\n get rtcCenter() {\n return this._rtcCenter;\n }\n\n /**\n * The number of triangles in this Node.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are visible.\n *\n * Only rendered both {@link Node#visible} is ````true```` and {@link Node#culled} is ````false````.\n *\n * When {@link Node#isObject} and {@link Node#visible} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n set visible(visible) {\n visible = visible !== false;\n this._visible = visible;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].visible = visible;\n }\n if (this._isObject) {\n this.scene._objectVisibilityUpdated(this, visible);\n }\n }\n\n /**\n * Gets if this Node is visible.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * When {@link Node#isObject} and {@link Node#visible} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#visibleObjects}.\n *\n * @type {Boolean}\n */\n get visible() {\n return this._visible;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are xrayed.\n *\n * When {@link Node#isObject} and {@link Node#xrayed} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#xrayedObjects}.\n *\n * @type {Boolean}\n */\n set xrayed(xrayed) {\n xrayed = !!xrayed;\n this._xrayed = xrayed;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].xrayed = xrayed;\n }\n if (this._isObject) {\n this.scene._objectXRayedUpdated(this, xrayed);\n }\n }\n\n /**\n * Gets if this Node is xrayed.\n *\n * When {@link Node#isObject} and {@link Node#xrayed} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#xrayedObjects}.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get xrayed() {\n return this._xrayed;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are highlighted.\n *\n * When {@link Node#isObject} and {@link Node#highlighted} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#highlightedObjects}.\n *\n * @type {Boolean}\n */\n set highlighted(highlighted) {\n highlighted = !!highlighted;\n this._highlighted = highlighted;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].highlighted = highlighted;\n }\n if (this._isObject) {\n this.scene._objectHighlightedUpdated(this, highlighted);\n }\n }\n\n /**\n * Gets if this Node is highlighted.\n *\n * When {@link Node#isObject} and {@link Node#highlighted} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#highlightedObjects}.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get highlighted() {\n return this._highlighted;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are selected.\n *\n * When {@link Node#isObject} and {@link Node#selected} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#selectedObjects}.\n *\n * @type {Boolean}\n */\n set selected(selected) {\n selected = !!selected;\n this._selected = selected;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].selected = selected;\n }\n if (this._isObject) {\n this.scene._objectSelectedUpdated(this, selected);\n }\n }\n\n /**\n * Gets if this Node is selected.\n *\n * When {@link Node#isObject} and {@link Node#selected} are both ````true```` the Node will be\n * registered by {@link Node#id} in {@link Scene#selectedObjects}.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get selected() {\n return this._selected;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are edge-enhanced.\n *\n * @type {Boolean}\n */\n set edges(edges) {\n edges = !!edges;\n this._edges = edges;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].edges = edges;\n }\n }\n\n /**\n * Gets if this Node's edges are enhanced.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get edges() {\n return this._edges;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are culled.\n *\n * @type {Boolean}\n */\n set culled(culled) {\n culled = !!culled;\n this._culled = culled;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].culled = culled;\n }\n }\n\n /**\n * Gets if this Node is culled.\n *\n * @type {Boolean}\n */\n get culled() {\n return this._culled;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#clips}.\n *\n * @type {Boolean}\n */\n set clippable(clippable) {\n clippable = clippable !== false;\n this._clippable = clippable;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].clippable = clippable;\n }\n }\n\n /**\n * Gets if this Node is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#clips}.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._clippable;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are included in boundary calculations.\n *\n * @type {Boolean}\n */\n set collidable(collidable) {\n collidable = collidable !== false;\n this._collidable = collidable;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].collidable = collidable;\n }\n }\n\n /**\n * Gets if this Node is included in boundary calculations.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._collidable;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es are pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * @type {Boolean}\n */\n set pickable(pickable) {\n pickable = pickable !== false;\n this._pickable = pickable;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].pickable = pickable;\n }\n }\n\n /**\n * Gets if to this Node is pickable.\n *\n * Picking is done via calls to {@link Scene#pick}.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get pickable() {\n return this._pickable;\n }\n\n /**\n * Sets the RGB colorize color for this Node and all child Nodes and {@link Mesh}es}.\n *\n * Multiplies by rendered fragment colors.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * @type {Number[]}\n */\n set colorize(rgb) {\n let colorize = this._colorize;\n if (!colorize) {\n colorize = this._colorize = new Float32Array(4);\n colorize[3] = 1.0;\n }\n if (rgb) {\n colorize[0] = rgb[0];\n colorize[1] = rgb[1];\n colorize[2] = rgb[2];\n } else {\n colorize[0] = 1;\n colorize[1] = 1;\n colorize[2] = 1;\n }\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].colorize = colorize;\n }\n if (this._isObject) {\n const colorized = (!!rgb);\n this.scene._objectColorizeUpdated(this, colorized);\n }\n }\n\n /**\n * Gets the RGB colorize color for this Node.\n *\n * Each element of the color is in range ````[0..1]````.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Number[]}\n */\n get colorize() {\n return this._colorize.slice(0, 3);\n }\n\n /**\n * Sets the opacity factor for this Node and all child Nodes and {@link Mesh}es.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n let colorize = this._colorize;\n if (!colorize) {\n colorize = this._colorize = new Float32Array(4);\n colorize[0] = 1;\n colorize[1] = 1;\n colorize[2] = 1;\n }\n colorize[3] = opacity !== null && opacity !== undefined ? opacity : 1.0;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].opacity = opacity;\n }\n if (this._isObject) {\n const opacityUpdated = (opacity !== null && opacity !== undefined);\n this.scene._objectOpacityUpdated(this, opacityUpdated);\n }\n }\n\n /**\n * Gets this Node's opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Number}\n */\n get opacity() {\n return this._colorize[3];\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es cast shadows.\n *\n * @type {Boolean}\n */\n set castsShadow(castsShadow) {\n castsShadow = !!castsShadow;\n this._castsShadow = castsShadow;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].castsShadow = castsShadow;\n }\n }\n\n /**\n * Gets if this Node casts shadows.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get castsShadow() {\n return this._castsShadow;\n }\n\n /**\n * Sets if this Node and all child Nodes and {@link Mesh}es can have shadows cast upon them.\n *\n * @type {Boolean}\n */\n set receivesShadow(receivesShadow) {\n receivesShadow = !!receivesShadow;\n this._receivesShadow = receivesShadow;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].receivesShadow = receivesShadow;\n }\n }\n\n /**\n * Whether or not to this Node can have shadows cast upon it.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Boolean}\n */\n get receivesShadow() {\n return this._receivesShadow;\n }\n\n /**\n * Gets if this Node can have Scalable Ambient Obscurance (SAO) applied to it.\n *\n * SAO is configured by {@link SAO}.\n *\n * @type {Boolean}\n * @abstract\n */\n get saoEnabled() {\n return false; // TODO: Support SAO on Nodes\n }\n\n\n /**\n * Sets the 3D World-space offset for this Node and all child Nodes and {@link Mesh}es}.\n *\n * The offset dynamically translates those components in World-space.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * Note that child Nodes and {@link Mesh}es may subsequently be given different values for this property.\n *\n * @type {Number[]}\n */\n set offset(offset) {\n if (offset) {\n this._offset[0] = offset[0];\n this._offset[1] = offset[1];\n this._offset[2] = offset[2];\n } else {\n this._offset[0] = 0;\n this._offset[1] = 0;\n this._offset[2] = 0;\n }\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i].offset = this._offset;\n }\n if (this._isObject) {\n this.scene._objectOffsetUpdated(this, offset);\n }\n }\n\n /**\n * Gets the Node's 3D World-space offset.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * Child Nodes and {@link Mesh}es may have different values for this property.\n *\n * @type {Number[]}\n */\n get offset() {\n return this._offset;\n }\n\n\n //------------------------------------------------------------------------------------------------------------------\n // Node members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n * Returns true to indicate that this Component is a Node.\n * @type {Boolean}\n */\n get isNode() {\n return true;\n }\n\n _setLocalMatrixDirty() {\n this._localMatrixDirty = true;\n this._setWorldMatrixDirty();\n }\n\n _setWorldMatrixDirty() {\n this._worldMatrixDirty = true;\n for (let i = 0, len = this._children.length; i < len; i++) {\n this._children[i]._setWorldMatrixDirty();\n }\n }\n\n _buildWorldMatrix() {\n const localMatrix = this.matrix;\n if (!this._parentNode) {\n for (let i = 0, len = localMatrix.length; i < len; i++) {\n this._worldMatrix[i] = localMatrix[i];\n }\n } else {\n math.mulMat4(this._parentNode.worldMatrix, localMatrix, this._worldMatrix);\n }\n this._worldMatrixDirty = false;\n }\n\n _setSubtreeAABBsDirty(node) {\n node._aabbDirty = true;\n if (node._children) {\n for (let i = 0, len = node._children.length; i < len; i++) {\n this._setSubtreeAABBsDirty(node._children[i]);\n }\n }\n }\n\n _setAABBDirty() {\n this._setSubtreeAABBsDirty(this);\n if (this.collidable) {\n for (let node = this; node; node = node._parentNode) {\n node._aabbDirty = true;\n }\n }\n }\n\n _updateAABB() {\n this.scene._aabbDirty = true;\n if (!this._aabb) {\n this._aabb = math.AABB3();\n }\n if (this._buildAABB) {\n this._buildAABB(this.worldMatrix, this._aabb); // Mesh or PerformanceModel\n } else { // Node | Node | Model\n math.collapseAABB3(this._aabb);\n let node;\n for (let i = 0, len = this._children.length; i < len; i++) {\n node = this._children[i];\n if (!node.collidable) {\n continue;\n }\n math.expandAABB3(this._aabb, node.aabb);\n }\n }\n this._aabbDirty = false;\n }\n\n /**\n * Adds a child Node or {@link Mesh}.\n *\n * The child must be a Node or {@link Mesh} in the same {@link Scene}.\n *\n * If the child already has a parent, will be removed from that parent first.\n *\n * Does nothing if already a child.\n *\n * @param {Node|Mesh|String} child Instance or ID of the child to add.\n * @param [inheritStates=false] Indicates if the child should inherit rendering states from this parent as it is added. Rendering state includes {@link Node#visible}, {@link Node#culled}, {@link Node#pickable}, {@link Node#clippable}, {@link Node#castsShadow}, {@link Node#receivesShadow}, {@link Node#selected}, {@link Node#highlighted}, {@link Node#colorize} and {@link Node#opacity}.\n * @returns {Node|Mesh} The child.\n */\n addChild(child, inheritStates) {\n if (utils.isNumeric(child) || utils.isString(child)) {\n const nodeId = child;\n child = this.scene.component[nodeId];\n if (!child) {\n this.warn(\"Component not found: \" + utils.inQuotes(nodeId));\n return;\n }\n if (!child.isNode && !child.isMesh) {\n this.error(\"Not a Node or Mesh: \" + nodeId);\n return;\n }\n } else {\n if (!child.isNode && !child.isMesh) {\n this.error(\"Not a Node or Mesh: \" + child.id);\n return;\n }\n if (child._parentNode) {\n if (child._parentNode.id === this.id) {\n this.warn(\"Already a child: \" + child.id);\n return;\n }\n child._parentNode.removeChild(child);\n }\n }\n child.id;\n if (child.scene.id !== this.scene.id) {\n this.error(\"Child not in same Scene: \" + child.id);\n return;\n }\n this._children.push(child);\n child._parentNode = this;\n if (!!inheritStates) {\n child.visible = this.visible;\n child.culled = this.culled;\n child.xrayed = this.xrayed;\n child.highlited = this.highlighted;\n child.selected = this.selected;\n child.edges = this.edges;\n child.clippable = this.clippable;\n child.pickable = this.pickable;\n child.collidable = this.collidable;\n child.castsShadow = this.castsShadow;\n child.receivesShadow = this.receivesShadow;\n child.colorize = this.colorize;\n child.opacity = this.opacity;\n child.offset = this.offset;\n }\n child._setWorldMatrixDirty();\n child._setAABBDirty();\n this._numTriangles += child.numTriangles;\n return child;\n }\n\n /**\n * Removes the given child Node or {@link Mesh}.\n *\n * @param {Node|Mesh} child Child to remove.\n */\n removeChild(child) {\n for (let i = 0, len = this._children.length; i < len; i++) {\n if (this._children[i].id === child.id) {\n child._parentNode = null;\n this._children = this._children.splice(i, 1);\n child._setWorldMatrixDirty();\n child._setAABBDirty();\n this._setAABBDirty();\n this._numTriangles -= child.numTriangles;\n return;\n }\n }\n }\n\n /**\n * Removes all child Nodes and {@link Mesh}es.\n */\n removeChildren() {\n let child;\n for (let i = 0, len = this._children.length; i < len; i++) {\n child = this._children[i];\n child._parentNode = null;\n child._setWorldMatrixDirty();\n child._setAABBDirty();\n this._numTriangles -= child.numTriangles;\n }\n this._children = [];\n this._setAABBDirty();\n }\n\n /**\n * Number of child Nodes or {@link Mesh}es.\n *\n * @type {Number}\n */\n get numChildren() {\n return this._children.length;\n }\n\n /**\n * Array of child Nodes or {@link Mesh}es.\n *\n * @type {Array}\n */\n get children() {\n return this._children;\n }\n\n /**\n * The parent Node.\n *\n * The parent Node may also be set by passing the Node to the parent's {@link Node#addChild} method.\n *\n * @type {Node}\n */\n set parent(node) {\n if (utils.isNumeric(node) || utils.isString(node)) {\n const nodeId = node;\n node = this.scene.components[nodeId];\n if (!node) {\n this.warn(\"Node not found: \" + utils.inQuotes(nodeId));\n return;\n }\n if (!node.isNode) {\n this.error(\"Not a Node: \" + node.id);\n return;\n }\n }\n if (node.scene.id !== this.scene.id) {\n this.error(\"Node not in same Scene: \" + node.id);\n return;\n }\n if (this._parentNode && this._parentNode.id === node.id) {\n this.warn(\"Already a child of Node: \" + node.id);\n return;\n }\n node.addChild(this);\n }\n\n /**\n * The parent Node.\n *\n * @type {Node}\n */\n get parent() {\n return this._parentNode;\n }\n\n /**\n * Sets the Node's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set position(value) {\n this._position.set(value || [0, 0, 0]);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Node's local translation.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get position() {\n return this._position;\n }\n\n /**\n * Sets the Node's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n set rotation(value) {\n this._rotation.set(value || [0, 0, 0]);\n math.eulerToQuaternion(this._rotation, \"XYZ\", this._quaternion);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Node's local rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n *\n * Default value is ````[0,0,0]````.\n *\n * @type {Number[]}\n */\n get rotation() {\n return this._rotation;\n }\n\n /**\n * Sets the Node's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n set quaternion(value) {\n this._quaternion.set(value || [0, 0, 0, 1]);\n math.quaternionToEuler(this._quaternion, \"XYZ\", this._rotation);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Node's local rotation quaternion.\n *\n * Default value is ````[0,0,0,1]````.\n *\n * @type {Number[]}\n */\n get quaternion() {\n return this._quaternion;\n }\n\n /**\n * Sets the Node's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n */\n set scale(value) {\n this._scale.set(value || [1, 1, 1]);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Node's local scale.\n *\n * Default value is ````[1,1,1]````.\n *\n * @type {Number[]}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the Node's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n set matrix(value) {\n if (!this._localMatrix) {\n this._localMatrix = math.identityMat4();\n }\n this._localMatrix.set(value || identityMat);\n math.decomposeMat4(this._localMatrix, this._position, this._quaternion, this._scale);\n this._localMatrixDirty = false;\n this._setWorldMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n }\n\n /**\n * Gets the Node's local modeling transform matrix.\n *\n * Default value is ````[1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1]````.\n *\n * @type {Number[]}\n */\n get matrix() {\n if (this._localMatrixDirty) {\n if (!this._localMatrix) {\n this._localMatrix = math.identityMat4();\n }\n math.composeMat4(this._position, this._quaternion, this._scale, this._localMatrix);\n this._localMatrixDirty = false;\n }\n return this._localMatrix;\n }\n\n /**\n * Gets the Node's World matrix.\n *\n * @property worldMatrix\n * @type {Number[]}\n */\n get worldMatrix() {\n if (this._worldMatrixDirty) {\n this._buildWorldMatrix();\n }\n return this._worldMatrix;\n }\n\n /**\n * Rotates the Node about the given local axis by the given increment.\n *\n * @param {Number[]} axis Local axis about which to rotate.\n * @param {Number} angle Angle increment in degrees.\n */\n rotate(axis, angle) {\n angleAxis[0] = axis[0];\n angleAxis[1] = axis[1];\n angleAxis[2] = axis[2];\n angleAxis[3] = angle * math.DEGTORAD;\n math.angleAxisToQuaternion(angleAxis, q1);\n math.mulQuaternions(this.quaternion, q1, q2);\n this.quaternion = q2;\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n return this;\n }\n\n /**\n * Rotates the Node about the given World-space axis by the given increment.\n *\n * @param {Number[]} axis Local axis about which to rotate.\n * @param {Number} angle Angle increment in degrees.\n */\n rotateOnWorldAxis(axis, angle) {\n angleAxis[0] = axis[0];\n angleAxis[1] = axis[1];\n angleAxis[2] = axis[2];\n angleAxis[3] = angle * math.DEGTORAD;\n math.angleAxisToQuaternion(angleAxis, q1);\n math.mulQuaternions(q1, this.quaternion, q1);\n //this.quaternion.premultiply(q1);\n return this;\n }\n\n /**\n * Rotates the Node about the local X-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateX(angle) {\n return this.rotate(xAxis, angle);\n }\n\n /**\n * Rotates the Node about the local Y-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateY(angle) {\n return this.rotate(yAxis, angle);\n }\n\n /**\n * Rotates the Node about the local Z-axis by the given increment.\n *\n * @param {Number} angle Angle increment in degrees.\n */\n rotateZ(angle) {\n return this.rotate(zAxis, angle);\n }\n\n /**\n * Translates the Node along local space vector by the given increment.\n *\n * @param {Number[]} axis Normalized local space 3D vector along which to translate.\n * @param {Number} distance Distance to translate along the vector.\n */\n translate(axis, distance) {\n math.vec3ApplyQuaternion(this.quaternion, axis, veca);\n math.mulVec3Scalar(veca, distance, vecb);\n math.addVec3(this.position, vecb, this.position);\n this._setLocalMatrixDirty();\n this._setAABBDirty();\n this.glRedraw();\n return this;\n }\n\n /**\n * Translates the Node along the local X-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the X-axis.\n */\n translateX(distance) {\n return this.translate(xAxis, distance);\n }\n\n /**\n * Translates the Node along the local Y-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the Y-axis.\n */\n translateY(distance) {\n return this.translate(yAxis, distance);\n }\n\n /**\n * Translates the Node along the local Z-axis by the given increment.\n *\n * @param {Number} distance Distance to translate along the Z-axis.\n */\n translateZ(distance) {\n return this.translate(zAxis, distance);\n }\n\n //------------------------------------------------------------------------------------------------------------------\n // Component members\n //------------------------------------------------------------------------------------------------------------------\n\n /**\n @private\n */\n get type() {\n return \"Node\";\n }\n\n /**\n * Destroys this Node.\n */\n destroy() {\n super.destroy();\n if (this._parentNode) {\n this._parentNode.removeChild(this);\n }\n if (this._isObject) {\n this.scene._deregisterObject(this);\n if (this._visible) {\n this.scene._objectVisibilityUpdated(this, false);\n }\n if (this._xrayed) {\n this.scene._objectXRayedUpdated(this, false);\n }\n if (this._selected) {\n this.scene._objectSelectedUpdated(this, false);\n }\n if (this._highlighted) {\n this.scene._objectHighlightedUpdated(this, false);\n }\n this.scene._objectColorizeUpdated(this, false);\n this.scene._objectOpacityUpdated(this, false);\n this.scene._objectOffsetUpdated(this, false);\n }\n if (this._isModel) {\n this.scene._deregisterModel(this);\n }\n if (this._children.length) {\n // Clone the _children before iterating, so our children don't mess us up when calling removeChild().\n const tempChildList = this._children.splice();\n let child;\n for (let i = 0, len = tempChildList.length; i < len; i++) {\n child = tempChildList[i];\n child.destroy();\n }\n }\n this._children = [];\n this._setAABBDirty();\n this.scene._aabbDirty = true;\n }\n\n}\n\nconst memoryStats = stats.memory;\nconst bigIndicesSupported = WEBGL_INFO$1.SUPPORTED_EXTENSIONS[\"OES_element_index_uint\"];\nconst IndexArrayType = bigIndicesSupported ? Uint32Array : Uint16Array;\nconst tempAABB$1 = math.AABB3();\n\n/**\n * @desc A {@link Geometry} that keeps its geometry data solely in GPU memory, without retaining it in browser memory.\n *\n * VBOGeometry uses less memory than {@link ReadableGeometry}, which keeps its geometry data in both browser and GPU memory.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a VBOGeometry that defines a single triangle, plus a {@link PhongMaterial} with diffuse {@link Texture}:\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_VBOGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, VBOGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * new Mesh(viewer.scene, {\n * geometry: new VBOGeometry(viewer.scene, {\n * primitive: \"triangles\",\n * positions: [0.0, 3, 0.0, -3, -3, 0.0, 3, -3, 0.0],\n * normals: [0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0],\n * uv: [0.0, 0.0, 0.5, 1.0, 1.0, 0.0],\n * indices: [0, 1, 2]\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * backfaces: true\n * })\n * });\n * ````\n */\nclass VBOGeometry extends Geometry {\n\n /**\n @private\n */\n get type() {\n return \"VBOGeometry\";\n }\n\n /**\n * @private\n * @returns {boolean}\n */\n get isVBOGeometry() {\n return true;\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {String} [cfg.primitive=\"triangles\"] The primitive type. Accepted values are 'points', 'lines', 'line-loop', 'line-strip', 'triangles', 'triangle-strip' and 'triangle-fan'.\n * @param {Number[]} [cfg.positions] Positions array.\n * @param {Number[]} [cfg.normals] Vertex normal vectors array.\n * @param {Number[]} [cfg.uv] UVs array.\n * @param {Number[]} [cfg.colors] Vertex colors.\n * @param {Number[]} [cfg.indices] Indices array.\n * @param {Number} [cfg.edgeThreshold=10] When autogenerating edges for supporting {@link Drawable#edges}, this indicates the threshold angle (in degrees) between the face normals of adjacent triangles below which the edge is discarded.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({ // Arrays for emphasis effects are got from xeokit.GeometryLite friend methods\n compressGeometry: true,\n primitive: null, // WebGL enum\n primitiveName: null, // String\n positionsDecodeMatrix: null, // Set when compressGeometry == true\n uvDecodeMatrix: null, // Set when compressGeometry == true\n positionsBuf: null,\n normalsBuf: null,\n colorsbuf: null,\n uvBuf: null,\n indicesBuf: null,\n hash: \"\"\n });\n\n this._numTriangles = 0;\n\n this._edgeThreshold = cfg.edgeThreshold || 10.0;\n this._aabb = null;\n this._obb = math.OBB3();\n\n const state = this._state;\n const gl = this.scene.canvas.gl;\n\n cfg.primitive = cfg.primitive || \"triangles\";\n switch (cfg.primitive) {\n case \"points\":\n state.primitive = gl.POINTS;\n state.primitiveName = cfg.primitive;\n break;\n case \"lines\":\n state.primitive = gl.LINES;\n state.primitiveName = cfg.primitive;\n break;\n case \"line-loop\":\n state.primitive = gl.LINE_LOOP;\n state.primitiveName = cfg.primitive;\n break;\n case \"line-strip\":\n state.primitive = gl.LINE_STRIP;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangles\":\n state.primitive = gl.TRIANGLES;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangle-strip\":\n state.primitive = gl.TRIANGLE_STRIP;\n state.primitiveName = cfg.primitive;\n break;\n case \"triangle-fan\":\n state.primitive = gl.TRIANGLE_FAN;\n state.primitiveName = cfg.primitive;\n break;\n default:\n this.error(\"Unsupported value for 'primitive': '\" + cfg.primitive +\n \"' - supported values are 'points', 'lines', 'line-loop', 'line-strip', 'triangles', \" +\n \"'triangle-strip' and 'triangle-fan'. Defaulting to 'triangles'.\");\n state.primitive = gl.TRIANGLES;\n state.primitiveName = cfg.primitive;\n }\n\n if (!cfg.positions) {\n this.error(\"Config expected: positions\");\n return; // TODO: Recover?\n }\n\n if (!cfg.indices) {\n this.error(\"Config expected: indices\");\n return; // TODO: Recover?\n }\n\n var positions;\n\n {\n const positionsDecodeMatrix = cfg.positionsDecodeMatrix;\n\n if (positionsDecodeMatrix) ; else {\n\n // Uncompressed positions\n\n const bounds = geometryCompressionUtils.getPositionsBounds(cfg.positions);\n const result = geometryCompressionUtils.compressPositions(cfg.positions, bounds.min, bounds.max);\n positions = result.quantized;\n state.positionsDecodeMatrix = result.decodeMatrix;\n state.positionsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, positions, positions.length, 3, gl.STATIC_DRAW);\n memoryStats.positions += state.positionsBuf.numItems;\n math.positions3ToAABB3(cfg.positions, this._aabb);\n math.positions3ToAABB3(positions, tempAABB$1, state.positionsDecodeMatrix);\n math.AABB3ToOBB3(tempAABB$1, this._obb);\n }\n }\n\n if (cfg.colors) {\n const colors = cfg.colors.constructor === Float32Array ? cfg.colors : new Float32Array(cfg.colors);\n state.colorsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, colors, colors.length, 4, gl.STATIC_DRAW);\n memoryStats.colors += state.colorsBuf.numItems;\n }\n\n if (cfg.uv) {\n const bounds = geometryCompressionUtils.getUVBounds(cfg.uv);\n const result = geometryCompressionUtils.compressUVs(cfg.uv, bounds.min, bounds.max);\n const uv = result.quantized;\n state.uvDecodeMatrix = result.decodeMatrix;\n state.uvBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, uv, uv.length, 2, gl.STATIC_DRAW);\n memoryStats.uvs += state.uvBuf.numItems;\n }\n\n if (cfg.normals) {\n const normals = geometryCompressionUtils.compressNormals(cfg.normals);\n let normalized = state.compressGeometry;\n state.normalsBuf = new ArrayBuf(gl, gl.ARRAY_BUFFER, normals, normals.length, 3, gl.STATIC_DRAW, normalized);\n memoryStats.normals += state.normalsBuf.numItems;\n }\n\n if (!bigIndicesSupported && cfg.indices.constructor === Uint32Array) {\n this.error(\"This WebGL implementation does not support Uint32Array\");\n return; // TODO: Recover?\n }\n\n {\n const indices = (cfg.indices.constructor === Uint32Array || cfg.indices.constructor === Uint16Array) ? cfg.indices : new IndexArrayType(cfg.indices);\n state.indicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, indices, indices.length, 1, gl.STATIC_DRAW);\n memoryStats.indices += state.indicesBuf.numItems;\n const edgeIndices = buildEdgeIndices(positions, indices, state.positionsDecodeMatrix, this._edgeThreshold);\n this._edgeIndicesBuf = new ArrayBuf(gl, gl.ELEMENT_ARRAY_BUFFER, edgeIndices, edgeIndices.length, 1, gl.STATIC_DRAW);\n\n if (this._state.primitiveName === \"triangles\") {\n this._numTriangles = (cfg.indices.length / 3);\n }\n }\n\n this._buildHash();\n\n memoryStats.meshes++;\n }\n\n _buildHash() {\n const state = this._state;\n const hash = [\"/g\"];\n hash.push(\"/\" + state.primitive + \";\");\n if (state.positionsBuf) {\n hash.push(\"p\");\n }\n if (state.colorsBuf) {\n hash.push(\"c\");\n }\n if (state.normalsBuf || state.autoVertexNormals) {\n hash.push(\"n\");\n }\n if (state.uvBuf) {\n hash.push(\"u\");\n }\n hash.push(\"cp\"); // Always compressed\n hash.push(\";\");\n state.hash = hash.join(\"\");\n }\n\n _getEdgeIndices() {\n return this._edgeIndicesBuf;\n }\n\n /**\n * Gets the primitive type.\n *\n * Possible types are: 'points', 'lines', 'line-loop', 'line-strip', 'triangles', 'triangle-strip' and 'triangle-fan'.\n *\n * @type {String}\n */\n get primitive() {\n return this._state.primitiveName;\n }\n\n /**\n * Gets the local-space axis-aligned 3D boundary (AABB).\n *\n * The AABB is represented by a six-element Float64Array containing the min/max extents of the axis-aligned volume, ie. ````[xmin, ymin,zmin,xmax,ymax, zmax]````.\n *\n * @type {Number[]}\n */\n get aabb() {\n return this._aabb;\n }\n\n /**\n * Gets the local-space oriented 3D boundary (OBB).\n *\n * The OBB is represented by a 32-element Float64Array containing the eight vertices of the box, where each vertex is a homogeneous coordinate having [x,y,z,w] elements.\n *\n * @type {Number[]}\n */\n get obb() {\n return this._obb;\n }\n\n /**\n * Approximate number of triangles in this VBOGeometry.\n *\n * Will be zero if {@link VBOGeometry#primitive} is not 'triangles', 'triangle-strip' or 'triangle-fan'.\n *\n * @type {Number}\n */\n get numTriangles() {\n return this._numTriangles;\n }\n\n /** @private */\n _getState() {\n return this._state;\n }\n\n /**\n * Destroys this component.\n */\n destroy() {\n super.destroy();\n const state = this._state;\n if (state.indicesBuf) {\n state.indicesBuf.destroy();\n }\n if (state.positionsBuf) {\n state.positionsBuf.destroy();\n }\n if (state.normalsBuf) {\n state.normalsBuf.destroy();\n }\n if (state.uvBuf) {\n state.uvBuf.destroy();\n }\n if (state.colorsBuf) {\n state.colorsBuf.destroy();\n }\n if (this._edgeIndicesBuf) {\n this._edgeIndicesBuf.destroy();\n }\n state.destroy();\n memoryStats.meshes--;\n }\n}\n\nconst modes = {\"opaque\": 0, \"mask\": 1, \"blend\": 2};\nconst modeNames = [\"opaque\", \"mask\", \"blend\"];\n\n/**\n * @desc Configures the normal rendered appearance of {@link Mesh}es using the physically-accurate *metallic-roughness* shading model.\n *\n * * Useful for conductive materials, such as metal, but also appropriate for insulators.\n * * {@link SpecularMaterial} is best for insulators, such as wood, ceramics and plastic.\n * * {@link PhongMaterial} is appropriate for non-realistic objects.\n * * {@link LambertMaterial} is appropriate for high-detail models that need to render as efficiently as possible.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with {@link MetallicMaterial} and {@link ReadableGeometry} loaded from OBJ.\n *\n * Note that in this example we're providing separate {@link Texture} for the {@link MetallicMaterial#metallic} and {@link MetallicMaterial#roughness}\n * channels, which allows us a little creative flexibility. Then, in the next example further down, we'll combine those channels\n * within the same {@link Texture} for efficiency.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_MetallicMaterial)]\n *\n * ````javascript\n * import {Viewer, Mesh, loadOBJGeometry, ReadableGeometry, MetallicMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0.57, 1.37, 1.14];\n * viewer.scene.camera.look = [0.04, 0.58, 0.00];\n * viewer.scene.camera.up = [-0.22, 0.84, -0.48];\n *\n * loadOBJGeometry(viewer.scene, {\n * src: \"models/obj/fireHydrant/FireHydrantMesh.obj\"\n * })\n * .then(function (geometry) {\n *\n * // Success\n *\n * new Mesh(viewer.scene, {\n *\n * geometry: new ReadableGeometry(viewer.scene, geometry),\n *\n * material: new MetallicMaterial(viewer.scene, {\n *\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0,\n *\n * baseColorMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Base_Color.png\",\n * encoding: \"sRGB\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Normal_OpenGL.png\"\n * }),\n * roughnessMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Roughness.png\"\n * }),\n * metallicMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Metallic.png\"\n * }),\n * occlusionMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Mixed_AO.png\"\n * }),\n *\n * specularF0: 0.7\n * })\n * });\n * }, function () {\n * // Error\n * });\n * ````\n *\n * ## Background Theory\n *\n * For an introduction to physically-based rendering (PBR) concepts, try these articles:\n *\n * * Joe Wilson's [Basic Theory of Physically-Based Rendering](https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/)\n * * Jeff Russel's [Physically-based Rendering, and you can too!](https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/)\n * * Sebastien Legarde's [Adapting a physically-based shading model](http://seblagarde.wordpress.com/tag/physically-based-rendering/)\n *\n * ## MetallicMaterial Properties\n *\n * The following table summarizes MetallicMaterial properties:\n *\n * | Property | Type | Range | Default Value | Space | Description |\n * |:--------:|:----:|:-----:|:-------------:|:-----:|:-----------:|\n * | {@link MetallicMaterial#baseColor} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the base color of the material. |\n * | {@link MetallicMaterial#metallic} | Number | [0, 1] | 1 | linear | The metallic-ness the material (1 for metals, 0 for non-metals). |\n * | {@link MetallicMaterial#roughness} | Number | [0, 1] | 1 | linear | The roughness of the material surface. |\n * | {@link MetallicMaterial#specularF0} | Number | [0, 1] | 1 | linear | The specular Fresnel of the material surface. |\n * | {@link MetallicMaterial#emissive} | Array | [0, 1] for all components | [0,0,0] | linear | The RGB components of the emissive color of the material. |\n * | {@link MetallicMaterial#alpha} | Number | [0, 1] | 1 | linear | The transparency of the material surface (0 fully transparent, 1 fully opaque). |\n * | {@link MetallicMaterial#baseColorMap} | {@link Texture} | | null | sRGB | Texture RGB components multiplying by {@link MetallicMaterial#baseColor}. If the fourth component (A) is present, it multiplies by {@link MetallicMaterial#alpha}. |\n * | {@link MetallicMaterial#metallicMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link MetallicMaterial#metallic}. |\n * | {@link MetallicMaterial#roughnessMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link MetallicMaterial#roughness}. |\n * | {@link MetallicMaterial#metallicRoughnessMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link MetallicMaterial#metallic} and second component multiplying by {@link MetallicMaterial#roughness}. |\n * | {@link MetallicMaterial#emissiveMap} | {@link Texture} | | null | linear | Texture with RGB components multiplying by {@link MetallicMaterial#emissive}. |\n * | {@link MetallicMaterial#alphaMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link MetallicMaterial#alpha}. |\n * | {@link MetallicMaterial#occlusionMap} | {@link Texture} | | null | linear | Ambient occlusion texture multiplying by surface's reflected diffuse and specular light. |\n * | {@link MetallicMaterial#normalMap} | {@link Texture} | | null | linear | Tangent-space normal map. |\n * | {@link MetallicMaterial#alphaMode} | String | \"opaque\", \"blend\", \"mask\" | \"blend\" | | Alpha blend mode. |\n * | {@link MetallicMaterial#alphaCutoff} | Number | [0..1] | 0.5 | | Alpha cutoff value. |\n * | {@link MetallicMaterial#backfaces} | Boolean | | false | | Whether to render {@link ReadableGeometry} backfaces. |\n * | {@link MetallicMaterial#frontface} | String | \"ccw\", \"cw\" | \"ccw\" | | The winding order for {@link ReadableGeometry} frontfaces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise. |\n *\n *\n * ## Combining Channels Within the Same Textures\n *\n * In the previous example we provided separate {@link Texture} for the {@link MetallicMaterial#metallic} and\n * {@link MetallicMaterial#roughness} channels, but we can combine those channels into the same {@link Texture} to\n * reduce download time, memory footprint and rendering time (and also for glTF compatibility).\n *\n * Here's the {@link Mesh} again, with our MetallicMaterial with those channels combined in the {@link MetallicMaterial#metallicRoughnessMap}\n * {@link Texture}, where the *R* component multiplies by {@link MetallicMaterial#metallic} and *G* multiplies\n * by {@link MetallicMaterial#roughness}.\n *\n * ````javascript\n * new Mesh(viewer.scene, {\n *\n * geometry: geometry,\n *\n * material: new MetallicMaterial(viewer.scene, {\n *\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0,\n *\n * baseColorMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Base_Color.png\",\n * encoding: \"sRGB\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Normal_OpenGL.png\"\n * }),\n * metallicRoughnessMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_MetallicRoughness.png\"\n * }),\n * metallicRoughnessMap : new Texture(viewer.scene, { // <<----------- Added\n * src: \"models/obj/fireHydrant/fire_hydrant_MetallicRoughness.png\" // R component multiplies by metallic\n * }), // G component multiplies by roughness\n * occlusionMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Mixed_AO.png\"\n * }),\n *\n * specularF0: 0.7\n * })\n * ````\n *\n * Although not shown in this example, we can also texture {@link MetallicMaterial#alpha} with the *A* component of\n * {@link MetallicMaterial#baseColorMap}'s {@link Texture}, if required.\n *\n * ## Alpha Blending\n *\n * Let's make our {@link Mesh} transparent.\n *\n * We'll update the {@link MetallicMaterial#alpha} and {@link MetallicMaterial#alphaMode}, causing it to blend 50%\n * with the background:\n *\n * ````javascript\n * hydrant.material.alpha = 0.5;\n * hydrant.material.alphaMode = \"blend\";\n * ````\n *\n * ## Alpha Masking\n *\n * Let's apply an alpha mask to our {@link Mesh}.\n *\n * We'll configure an {@link MetallicMaterial#alphaMap} to multiply by {@link MetallicMaterial#alpha},\n * with {@link MetallicMaterial#alphaMode} and {@link MetallicMaterial#alphaCutoff} to treat it as an alpha mask:\n *\n * ````javascript\n * new Mesh(viewer.scene, {\n *\n * geometry: geometry,\n *\n * material: new MetallicMaterial(viewer.scene, {\n *\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0,\n * alpha: 1.0,\n * alphaMode : \"mask\", // <<---------------- Added\n * alphaCutoff : 0.2, // <<---------------- Added\n *\n * alphaMap : new Texture(viewer.scene{ // <<---------------- Added\n * src: \"textures/alphaMap.jpg\"\n * }),\n * baseColorMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Base_Color.png\",\n * encoding: \"sRGB\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Normal_OpenGL.png\"\n * }),\n * metallicRoughnessMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_MetallicRoughness.png\"\n * }),\n * metallicRoughnessMap : new Texture(viewer.scene, { // <<----------- Added\n * src: \"models/obj/fireHydrant/fire_hydrant_MetallicRoughness.png\" // R component multiplies by metallic\n * }), // G component multiplies by roughness\n * occlusionMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Mixed_AO.png\"\n * }),\n *\n * specularF0: 0.7\n * })\n * ````\n */\nclass MetallicMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"MetallicMaterial\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this MetallicMaterial as well.\n * @param {*} [cfg] The MetallicMaterial configuration.\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.baseColor=[1,1,1]] RGB diffuse color of this MetallicMaterial. Multiplies by the RGB components of {@link MetallicMaterial#baseColorMap}.\n * @param {Number} [cfg.metallic=1.0] Factor in the range ````[0..1]```` indicating how metallic this MetallicMaterial is. ````1```` is metal, ````0```` is non-metal. Multiplies by the *R* component of {@link MetallicMaterial#metallicMap} and the *A* component of {@link MetallicMaterial#metallicRoughnessMap}.\n * @param {Number} [cfg.roughness=1.0] Factor in the range ````[0..1]```` indicating the roughness of this MetallicMaterial. ````0```` is fully smooth, ````1```` is fully rough. Multiplies by the *R* component of {@link MetallicMaterial#roughnessMap}.\n * @param {Number} [cfg.specularF0=0.0] Factor in the range ````[0..1]```` indicating specular Fresnel.\n * @param {Number[]} [cfg.emissive=[0,0,0]] RGB emissive color of this MetallicMaterial. Multiplies by the RGB components of {@link MetallicMaterial#emissiveMap}.\n * @param {Number} [cfg.alpha=1.0] Factor in the range ````[0..1]```` indicating the alpha of this MetallicMaterial. Multiplies by the *R* component of {@link MetallicMaterial#alphaMap} and the *A* component, if present, of {@link MetallicMaterial#baseColorMap}. The value of {@link MetallicMaterial#alphaMode} indicates how alpha is interpreted when rendering.\n * @param {Texture} [cfg.baseColorMap=undefined] RGBA {@link Texture} containing the diffuse color of this MetallicMaterial, with optional *A* component for alpha. The RGB components multiply by the {@link MetallicMaterial#baseColor} property, while the *A* component, if present, multiplies by the {@link MetallicMaterial#alpha} property.\n * @param {Texture} [cfg.alphaMap=undefined] RGB {@link Texture} containing this MetallicMaterial's alpha in its *R* component. The *R* component multiplies by the {@link MetallicMaterial#alpha} property. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.metallicMap=undefined] RGB {@link Texture} containing this MetallicMaterial's metallic factor in its *R* component. The *R* component multiplies by the {@link MetallicMaterial#metallic} property. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.roughnessMap=undefined] RGB {@link Texture} containing this MetallicMaterial's roughness factor in its *R* component. The *R* component multiplies by the {@link MetallicMaterial#roughness} property. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.metallicRoughnessMap=undefined] RGB {@link Texture} containing this MetallicMaterial's metalness in its *R* component and roughness in its *G* component. Its *R* component multiplies by the {@link MetallicMaterial#metallic} property, while its *G* component multiplies by the {@link MetallicMaterial#roughness} property. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.emissiveMap=undefined] RGB {@link Texture} containing the emissive color of this MetallicMaterial. Multiplies by the {@link MetallicMaterial#emissive} property. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.occlusionMap=undefined] RGB ambient occlusion {@link Texture}. Within shaders, multiplies by the specular and diffuse light reflected by surfaces. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {Texture} [cfg.normalMap=undefined] RGB tangent-space normal {@link Texture}. Must be within the same {@link Scene} as this MetallicMaterial.\n * @param {String} [cfg.alphaMode=\"opaque\"] The alpha blend mode, which specifies how alpha is to be interpreted. Accepted values are \"opaque\", \"blend\" and \"mask\". See the {@link MetallicMaterial#alphaMode} property for more info.\n * @param {Number} [cfg.alphaCutoff=0.5] The alpha cutoff value. See the {@link MetallicMaterial#alphaCutoff} property for more info.\n * @param {Boolean} [cfg.backfaces=false] Whether to render {@link ReadableGeometry} backfaces.\n * @param {Boolean} [cfg.frontface=\"ccw\"] The winding order for {@link ReadableGeometry} front faces - ````\"cw\"```` for clockwise, or ````\"ccw\"```` for counter-clockwise.\n * @param {Number} [cfg.lineWidth=1] Scalar that controls the width of lines for {@link ReadableGeometry} with {@link ReadableGeometry#primitive} set to \"lines\".\n * @param {Number} [cfg.pointSize=1] Scalar that controls the size of points for {@link ReadableGeometry} with {@link ReadableGeometry#primitive} set to \"points\".\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"MetallicMaterial\",\n baseColor: math.vec4([1.0, 1.0, 1.0]),\n emissive: math.vec4([0.0, 0.0, 0.0]),\n metallic: null,\n roughness: null,\n specularF0: null,\n alpha: null,\n alphaMode: null, // \"opaque\"\n alphaCutoff: null,\n lineWidth: null,\n pointSize: null,\n backfaces: null,\n frontface: null, // Boolean for speed; true == \"ccw\", false == \"cw\"\n hash: null\n });\n\n this.baseColor = cfg.baseColor;\n this.metallic = cfg.metallic;\n this.roughness = cfg.roughness;\n this.specularF0 = cfg.specularF0;\n this.emissive = cfg.emissive;\n this.alpha = cfg.alpha;\n\n if (cfg.baseColorMap) {\n this._baseColorMap = this._checkComponent(\"Texture\", cfg.baseColorMap);\n }\n if (cfg.metallicMap) {\n this._metallicMap = this._checkComponent(\"Texture\", cfg.metallicMap);\n\n }\n if (cfg.roughnessMap) {\n this._roughnessMap = this._checkComponent(\"Texture\", cfg.roughnessMap);\n }\n if (cfg.metallicRoughnessMap) {\n this._metallicRoughnessMap = this._checkComponent(\"Texture\", cfg.metallicRoughnessMap);\n }\n if (cfg.emissiveMap) {\n this._emissiveMap = this._checkComponent(\"Texture\", cfg.emissiveMap);\n }\n if (cfg.occlusionMap) {\n this._occlusionMap = this._checkComponent(\"Texture\", cfg.occlusionMap);\n }\n if (cfg.alphaMap) {\n this._alphaMap = this._checkComponent(\"Texture\", cfg.alphaMap);\n }\n if (cfg.normalMap) {\n this._normalMap = this._checkComponent(\"Texture\", cfg.normalMap);\n }\n\n this.alphaMode = cfg.alphaMode;\n this.alphaCutoff = cfg.alphaCutoff;\n this.backfaces = cfg.backfaces;\n this.frontface = cfg.frontface;\n this.lineWidth = cfg.lineWidth;\n this.pointSize = cfg.pointSize;\n\n this._makeHash();\n }\n\n _makeHash() {\n const state = this._state;\n const hash = [\"/met\"];\n if (this._baseColorMap) {\n hash.push(\"/bm\");\n if (this._baseColorMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n hash.push(\"/\" + this._baseColorMap._state.encoding);\n }\n if (this._metallicMap) {\n hash.push(\"/mm\");\n if (this._metallicMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._roughnessMap) {\n hash.push(\"/rm\");\n if (this._roughnessMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._metallicRoughnessMap) {\n hash.push(\"/mrm\");\n if (this._metallicRoughnessMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._emissiveMap) {\n hash.push(\"/em\");\n if (this._emissiveMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._occlusionMap) {\n hash.push(\"/ocm\");\n if (this._occlusionMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._alphaMap) {\n hash.push(\"/am\");\n if (this._alphaMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._normalMap) {\n hash.push(\"/nm\");\n if (this._normalMap._state.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n hash.push(\";\");\n state.hash = hash.join(\"\");\n }\n\n\n /**\n * Sets the RGB diffuse color.\n *\n * Multiplies by the RGB components of {@link MetallicMaterial#baseColorMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n * @type {Number[]}\n */\n set baseColor(value) {\n let baseColor = this._state.baseColor;\n if (!baseColor) {\n baseColor = this._state.baseColor = new Float32Array(3);\n } else if (value && baseColor[0] === value[0] && baseColor[1] === value[1] && baseColor[2] === value[2]) {\n return;\n }\n if (value) {\n baseColor[0] = value[0];\n baseColor[1] = value[1];\n baseColor[2] = value[2];\n } else {\n baseColor[0] = 1;\n baseColor[1] = 1;\n baseColor[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB diffuse color.\n *\n * Multiplies by the RGB components of {@link MetallicMaterial#baseColorMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n * @type {Number[]}\n */\n get baseColor() {\n return this._state.baseColor;\n }\n\n\n /**\n * Gets the RGB {@link Texture} containing the diffuse color of this MetallicMaterial, with optional *A* component for alpha.\n *\n * The RGB components multiply by {@link MetallicMaterial#baseColor}, while the *A* component, if present, multiplies by {@link MetallicMaterial#alpha}.\n *\n * @type {Texture}\n */\n get baseColorMap() {\n return this._baseColorMap;\n }\n\n /**\n * Sets the metallic factor.\n *\n * This is in the range ````[0..1]```` and indicates how metallic this MetallicMaterial is.\n *\n * ````1```` is metal, ````0```` is non-metal.\n *\n * Multiplies by the *R* component of {@link MetallicMaterial#metallicMap} and the *A* component of {@link MetallicMaterial#metallicRoughnessMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set metallic(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.metallic === value) {\n return;\n }\n this._state.metallic = value;\n this.glRedraw();\n }\n\n /**\n * Gets the metallic factor.\n *\n * @type {Number}\n */\n get metallic() {\n return this._state.metallic;\n }\n\n /**\n * Gets the RGB {@link Texture} containing this MetallicMaterial's metallic factor in its *R* component.\n *\n * The *R* component multiplies by {@link MetallicMaterial#metallic}.\n *\n * @type {Texture}\n */\n get metallicMap() {\n return this._attached.metallicMap;\n }\n\n /**\n * Sets the roughness factor.\n *\n * This factor is in the range ````[0..1]````, where ````0```` is fully smooth,````1```` is fully rough.\n *\n * Multiplies by the *R* component of {@link MetallicMaterial#roughnessMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set roughness(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.roughness === value) {\n return;\n }\n this._state.roughness = value;\n this.glRedraw();\n }\n\n /**\n * Gets the roughness factor.\n *\n * @type {Number}\n */\n get roughness() {\n return this._state.roughness;\n }\n\n /**\n * Gets the RGB {@link Texture} containing this MetallicMaterial's roughness factor in its *R* component.\n *\n * The *R* component multiplies by {@link MetallicMaterial#roughness}.\n *\n * @type {Texture}\n */\n get roughnessMap() {\n return this._attached.roughnessMap;\n }\n\n /**\n * Gets the RGB {@link Texture} containing this MetallicMaterial's metalness in its *R* component and roughness in its *G* component.\n *\n * Its *B* component multiplies by the {@link MetallicMaterial#metallic} property, while its *G* component multiplies by the {@link MetallicMaterial#roughness} property.\n *\n * @type {Texture}\n */\n get metallicRoughnessMap() {\n return this._attached.metallicRoughnessMap;\n }\n\n /**\n * Sets the factor in the range [0..1] indicating specular Fresnel value.\n *\n * Default value is ````0.0````.\n *\n * @type {Number}\n */\n set specularF0(value) {\n value = (value !== undefined && value !== null) ? value : 0.0;\n if (this._state.specularF0 === value) {\n return;\n }\n this._state.specularF0 = value;\n this.glRedraw();\n }\n\n /**\n * Gets the factor in the range [0..1] indicating specular Fresnel value.\n *\n * @type {Number}\n */\n get specularF0() {\n return this._state.specularF0;\n }\n\n /**\n * Sets the RGB emissive color.\n *\n * Multiplies by {@link MetallicMaterial#emissiveMap}.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n set emissive(value) {\n let emissive = this._state.emissive;\n if (!emissive) {\n emissive = this._state.emissive = new Float32Array(3);\n } else if (value && emissive[0] === value[0] && emissive[1] === value[1] && emissive[2] === value[2]) {\n return;\n }\n if (value) {\n emissive[0] = value[0];\n emissive[1] = value[1];\n emissive[2] = value[2];\n } else {\n emissive[0] = 0;\n emissive[1] = 0;\n emissive[2] = 0;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB emissive color.\n *\n * @type {Number[]}\n */\n get emissive() {\n return this._state.emissive;\n }\n\n /**\n * Gets the RGB emissive map.\n *\n * Multiplies by {@link MetallicMaterial#emissive}.\n *\n * @type {Texture}\n */\n get emissiveMap() {\n return this._attached.emissiveMap;\n }\n\n /**\n * Gets the RGB ambient occlusion map.\n *\n * Multiplies by the specular and diffuse light reflected by surfaces.\n *\n * @type {Texture}\n */\n get occlusionMap() {\n return this._attached.occlusionMap;\n }\n\n /**\n * Sets factor in the range ````[0..1]```` that indicates the alpha value.\n *\n * Multiplies by the *R* component of {@link MetallicMaterial#alphaMap} and the *A* component, if present, of {@link MetallicMaterial#baseColorMap}.\n *\n * The value of {@link MetallicMaterial#alphaMode} indicates how alpha is interpreted when rendering.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set alpha(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.alpha === value) {\n return;\n }\n this._state.alpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets factor in the range ````[0..1]```` that indicates the alpha value.\n *\n * @type {Number}\n */\n get alpha() {\n return this._state.alpha;\n }\n\n /**\n * Gets the RGB {@link Texture} containing this MetallicMaterial's alpha in its *R* component.\n *\n * The *R* component multiplies by the {@link MetallicMaterial#alpha} property.\n *\n * @type {Texture}\n */\n get alphaMap() {\n return this._attached.alphaMap;\n }\n\n /**\n * Gets the RGB tangent-space normal map {@link Texture}.\n *\n * @type {Texture}\n */\n get normalMap() {\n return this._attached.normalMap;\n }\n\n /**\n * Sets the alpha rendering mode.\n *\n * This specifies how alpha is interpreted. Alpha is the combined result of the {@link MetallicMaterial#alpha} and {@link MetallicMaterial#alphaMap} properties.\n *\n * Accepted values are:\n *\n * * \"opaque\" - The alpha value is ignored and the rendered output is fully opaque (default).\n * * \"mask\" - The rendered output is either fully opaque or fully transparent depending on the alpha and {@link MetallicMaterial#alphaCutoff}.\n * * \"blend\" - The alpha value is used to composite the source and destination areas. The rendered output is combined with the background using the normal painting operation (i.e. the Porter and Duff over operator).\n *\n * @type {String}\n */\n set alphaMode(alphaMode) {\n alphaMode = alphaMode || \"opaque\";\n let value = modes[alphaMode];\n if (value === undefined) {\n this.error(\"Unsupported value for 'alphaMode': \" + alphaMode + \" defaulting to 'opaque'\");\n value = \"opaque\";\n }\n if (this._state.alphaMode === value) {\n return;\n }\n this._state.alphaMode = value;\n this.glRedraw();\n }\n\n /**\n * Gets the alpha rendering mode.\n *\n * @type {String}\n */\n get alphaMode() {\n return modeNames[this._state.alphaMode];\n }\n\n /**\n * Sets the alpha cutoff value.\n *\n * Specifies the cutoff threshold when {@link MetallicMaterial#alphaMode} equals \"mask\". If the alpha is greater than or equal to this value then it is rendered as fully opaque, otherwise, it is rendered as fully transparent. A value greater than 1.0 will render the entire\n * material as fully transparent. This value is ignored for other modes.\n *\n * Alpha is the combined result of the {@link MetallicMaterial#alpha} and {@link MetallicMaterial#alphaMap} properties.\n *\n * Default value is ````0.5````.\n *\n * @type {Number}\n */\n set alphaCutoff(alphaCutoff) {\n if (alphaCutoff === null || alphaCutoff === undefined) {\n alphaCutoff = 0.5;\n }\n if (this._state.alphaCutoff === alphaCutoff) {\n return;\n }\n this._state.alphaCutoff = alphaCutoff;\n }\n\n /**\n * Gets the alpha cutoff value.\n *\n * @type {Number}\n */\n get alphaCutoff() {\n return this._state.alphaCutoff;\n }\n\n /**\n * Sets whether backfaces are visible on attached {@link Mesh}es.\n *\n * The backfaces will belong to {@link ReadableGeometry} compoents that are also attached to the {@link Mesh}es.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n set backfaces(value) {\n value = !!value;\n if (this._state.backfaces === value) {\n return;\n }\n this._state.backfaces = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether backfaces are visible on attached {@link Mesh}es.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._state.backfaces;\n }\n\n /**\n * Sets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n *\n * Default value is ````\"ccw\"````.\n *\n * @type {String}\n */\n set frontface(value) {\n value = value !== \"cw\";\n if (this._state.frontface === value) {\n return;\n }\n this._state.frontface = value;\n this.glRedraw();\n }\n\n /**\n * Gets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n*\n * @type {String}\n */\n get frontface() {\n return this._state.frontface ? \"ccw\" : \"cw\";\n }\n\n /**\n * Sets the MetallicMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set lineWidth(value) {\n this._state.lineWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the MetallicMaterial's line width.\n *\n * @type {Number}\n */\n get lineWidth() {\n return this._state.lineWidth;\n }\n\n /**\n * Sets the MetallicMaterial's point size.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set pointSize(value) {\n this._state.pointSize = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the MetallicMaterial's point size.\n *\n * @type {Number}\n */\n get pointSize() {\n return this._state.pointSize;\n }\n\n /**\n * Destroys this MetallicMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\nconst alphaModes = {\"opaque\": 0, \"mask\": 1, \"blend\": 2};\nconst alphaModeNames = [\"opaque\", \"mask\", \"blend\"];\n\n/**\n * @desc Configures the normal rendered appearance of {@link Mesh}es using the physically-accurate *specular-glossiness* shading model.\n *\n * * Useful for insulators, such as wood, ceramics and plastic.\n * * {@link MetallicMaterial} is best for conductive materials, such as metal.\n * * {@link PhongMaterial} is appropriate for non-realistic objects.\n * * {@link LambertMaterial} is appropriate for high-detail models that need to render as efficiently as possible.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with a {@link buildTorusGeometry} and a SpecularMaterial.\n *\n * Note that in this example we're providing separate {@link Texture} for the {@link SpecularMaterial#specular} and {@link SpecularMaterial#glossiness}\n * channels, which allows us a little creative flexibility. Then, in the next example further down, we'll combine those channels\n * within the same {@link Texture} for efficiency.\n *\n * ````javascript\n * import {Viewer, Mesh, buildTorusGeometry, SpecularMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({ canvasId: \"myCanvas\" });\n *\n * const myMesh = new Mesh(viewer.scene,{\n *\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry()),\n *\n * material: new SpecularMaterial(viewer.scene,{\n *\n * // Channels with default values, just to show them\n *\n * diffuse: [1.0, 1.0, 1.0],\n * specular: [1.0, 1.0, 1.0],\n * glossiness: 1.0,\n * emissive: [0.0, 0.0, 0.0]\n * alpha: 1.0,\n *\n * // Textures to multiply some of the channels\n *\n * diffuseMap: new Texture(viewer.scene, { // RGB components multiply by diffuse\n * src: \"textures/diffuse.jpg\"\n * }),\n * specularMap: new Texture(viewer.scene, { // RGB component multiplies by specular\n * src: \"textures/specular.jpg\"\n * }),\n * glossinessMap: new Texture(viewer.scene, { // R component multiplies by glossiness\n * src: \"textures/glossiness.jpg\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"textures/normalMap.jpg\"\n * })\n * })\n * });\n * ````\n *\n * ## Combining Channels Within the Same Textures\n *\n * In the previous example we provided separate {@link Texture} for the {@link SpecularMaterial#specular} and\n * {@link SpecularMaterial#glossiness} channels, but we can combine those channels into the same {@link Texture} to reduce\n * download time, memory footprint and rendering time (and also for glTF compatibility).\n *\n * Here's our SpecularMaterial again with those channels combined in the {@link SpecularMaterial#specularGlossinessMap}\n * {@link Texture}, where the *RGB* component multiplies by {@link SpecularMaterial#specular} and *A* multiplies by {@link SpecularMaterial#glossiness}.\n *\n * ````javascript\n * const myMesh = new Mesh(viewer.scene,{\n *\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry()),\n *\n * material: new SpecularMaterial(viewer.scene,{\n *\n * // Channels with default values, just to show them\n *\n * diffuse: [1.0, 1.0, 1.0],\n * specular: [1.0, 1.0, 1.0],\n * glossiness: 1.0,\n * emissive: [0.0, 0.0, 0.0]\n * alpha: 1.0,\n *\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse.jpg\"\n * }),\n * specularGlossinessMap: new Texture(viewer.scene, { // RGB multiplies by specular, A by glossiness\n * src: \"textures/specularGlossiness.jpg\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"textures/normalMap.jpg\"\n * })\n * })\n * });\n * ````\n *\n * Although not shown in this example, we can also texture {@link SpecularMaterial#alpha} with\n * the *A* component of {@link SpecularMaterial#diffuseMap}'s {@link Texture}, if required.\n *\n * ## Alpha Blending\n *\n * Let's make our {@link Mesh} transparent. We'll redefine {@link SpecularMaterial#alpha}\n * and {@link SpecularMaterial#alphaMode}, causing it to blend 50% with the background:\n *\n * ````javascript\n * const myMesh = new Mesh(viewer.scene,{\n *\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry()),\n *\n * material: new SpecularMaterial(viewer.scene,{\n *\n * // Channels with default values, just to show them\n *\n * diffuse: [1.0, 1.0, 1.0],\n * specular: [1.0, 1.0, 1.0],\n * glossiness: 1.0,\n * emissive: [0.0, 0.0, 0.0]\n * alpha: 0.5, // <<----------- Changed\n * alphaMode: \"blend\", // <<----------- Added\n *\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse.jpg\"\n * }),\n * specularGlossinessMap: new Texture(viewer.scene, { // RGB multiplies by specular, A by glossiness\n * src: \"textures/specularGlossiness.jpg\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"textures/normalMap.jpg\"\n * })\n * })\n * });\n * ````\n *\n * ## Alpha Masking\n *\n * Now let's make holes in our {@link Mesh}. We'll give its SpecularMaterial an {@link SpecularMaterial#alphaMap}\n * and configure {@link SpecularMaterial#alpha}, {@link SpecularMaterial#alphaMode},\n * and {@link SpecularMaterial#alphaCutoff} to treat it as an alpha mask:\n *\n * ````javascript\n * const myMesh = new Mesh(viewer.scene,{\n *\n * geometry: buildTorusGeometry(viewer.scene, ReadableGeometry, {}),\n *\n * material: new SpecularMaterial(viewer.scene, {\n *\n * // Channels with default values, just to show them\n *\n * diffuse: [1.0, 1.0, 1.0],\n * specular: [1.0, 1.0, 1.0],\n * glossiness: 1.0,\n * emissive: [0.0, 0.0, 0.0]\n * alpha: 1.0, // <<----------- Changed\n * alphaMode: \"mask\", // <<----------- Changed\n * alphaCutoff: 0.2, // <<----------- Added\n *\n * alphaMap: new Texture(viewer.scene, { // <<---------- Added\n * src: \"textures/diffuse/crossGridColorMap.jpg\"\n * }),\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse.jpg\"\n * }),\n * specularGlossinessMap: new Texture(viewer.scene, { // RGB multiplies by specular, A by glossiness\n * src: \"textures/specularGlossiness.jpg\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"textures/normalMap.jpg\"\n * })\n * })\n * });\n * ````\n *\n * ## Background Theory\n *\n * For an introduction to physically-based rendering (PBR) concepts, try these articles:\n *\n * * Joe Wilson's [Basic Theory of Physically-Based Rendering](https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/)\n * * Jeff Russel's [Physically-based Rendering, and you can too!](https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/)\n * * Sebastien Legarde's [Adapting a physically-based shading model](http://seblagarde.wordpress.com/tag/physically-based-rendering/)\n *\n * ## SpecularMaterial Properties\n *\n * The following table summarizes SpecularMaterial properties:\n *\n * | Property | Type | Range | Default Value | Space | Description |\n * |:--------:|:----:|:-----:|:-------------:|:-----:|:-----------:|\n * | {@link SpecularMaterial#diffuse} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the diffuse color of the material. |\n * | {@link SpecularMaterial#specular} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the specular color of the material. |\n * | {@link SpecularMaterial#glossiness} | Number | [0, 1] | 1 | linear | The glossiness the material. |\n * | {@link SpecularMaterial#specularF0} | Number | [0, 1] | 1 | linear | The specularF0 of the material surface. |\n * | {@link SpecularMaterial#emissive} | Array | [0, 1] for all components | [0,0,0] | linear | The RGB components of the emissive color of the material. |\n * | {@link SpecularMaterial#alpha} | Number | [0, 1] | 1 | linear | The transparency of the material surface (0 fully transparent, 1 fully opaque). |\n * | {@link SpecularMaterial#diffuseMap} | {@link Texture} | | null | sRGB | Texture RGB components multiplying by {@link SpecularMaterial#diffuse}. If the fourth component (A) is present, it multiplies by {@link SpecularMaterial#alpha}. |\n * | {@link SpecularMaterial#specularMap} | {@link Texture} | | null | sRGB | Texture RGB components multiplying by {@link SpecularMaterial#specular}. If the fourth component (A) is present, it multiplies by {@link SpecularMaterial#alpha}. |\n * | {@link SpecularMaterial#glossinessMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link SpecularMaterial#glossiness}. |\n * | {@link SpecularMaterial#specularGlossinessMap} | {@link Texture} | | null | linear | Texture with first three components multiplying by {@link SpecularMaterial#specular} and fourth component multiplying by {@link SpecularMaterial#glossiness}. |\n * | {@link SpecularMaterial#emissiveMap} | {@link Texture} | | null | linear | Texture with RGB components multiplying by {@link SpecularMaterial#emissive}. |\n * | {@link SpecularMaterial#alphaMap} | {@link Texture} | | null | linear | Texture with first component multiplying by {@link SpecularMaterial#alpha}. |\n * | {@link SpecularMaterial#occlusionMap} | {@link Texture} | | null | linear | Ambient occlusion texture multiplying by surface's reflected diffuse and specular light. |\n * | {@link SpecularMaterial#normalMap} | {@link Texture} | | null | linear | Tangent-space normal map. |\n * | {@link SpecularMaterial#alphaMode} | String | \"opaque\", \"blend\", \"mask\" | \"blend\" | | Alpha blend mode. |\n * | {@link SpecularMaterial#alphaCutoff} | Number | [0..1] | 0.5 | | Alpha cutoff value. |\n * | {@link SpecularMaterial#backfaces} | Boolean | | false | | Whether to render {@link Geometry} backfaces. |\n * | {@link SpecularMaterial#frontface} | String | \"ccw\", \"cw\" | \"ccw\" | | The winding order for {@link Geometry} frontfaces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise. |\n *\n */\nclass SpecularMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"SpecularMaterial\";\n }\n\n /**\n *\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The SpecularMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.diffuse=[1,1,1]] RGB diffuse color of this SpecularMaterial. Multiplies by the RGB components of {@link SpecularMaterial#diffuseMap}.\n * @param {Texture} [cfg.diffuseMap=undefined] RGBA {@link Texture} containing the diffuse color of this SpecularMaterial, with optional *A* component for alpha. The RGB components multiply by {@link SpecularMaterial#diffuse}, while the *A* component, if present, multiplies by {@link SpecularMaterial#alpha}.\n * @param {Number} [cfg.specular=[1,1,1]] RGB specular color of this SpecularMaterial. Multiplies by the {@link SpecularMaterial#specularMap} and the *RGB* components of {@link SpecularMaterial#specularGlossinessMap}.\n * @param {Texture} [cfg.specularMap=undefined] RGB texture containing the specular color of this SpecularMaterial. Multiplies by the {@link SpecularMaterial#specular} property. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {Number} [cfg.glossiness=1.0] Factor in the range [0..1] indicating how glossy this SpecularMaterial is. 0 is no glossiness, 1 is full glossiness. Multiplies by the *R* component of {@link SpecularMaterial#glossinessMap} and the *A* component of {@link SpecularMaterial#specularGlossinessMap}.\n * @param {Texture} [cfg.specularGlossinessMap=undefined] RGBA {@link Texture} containing this SpecularMaterial's specular color in its *RGB* component and glossiness in its *A* component. Its *RGB* components multiply by {@link SpecularMaterial#specular}, while its *A* component multiplies by {@link SpecularMaterial#glossiness}. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {Number} [cfg.specularF0=0.0] Factor in the range 0..1 indicating how reflective this SpecularMaterial is.\n * @param {Number[]} [cfg.emissive=[0,0,0]] RGB emissive color of this SpecularMaterial. Multiplies by the RGB components of {@link SpecularMaterial#emissiveMap}.\n * @param {Texture} [cfg.emissiveMap=undefined] RGB {@link Texture} containing the emissive color of this SpecularMaterial. Multiplies by the {@link SpecularMaterial#emissive} property. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {Texture} [cfg.occlusionMap=undefined] RGB ambient occlusion {@link Texture}. Within shaders, multiplies by the specular and diffuse light reflected by surfaces. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {Texture} [cfg.normalMap=undefined] {Texture} RGB tangent-space normal {@link Texture}. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {Number} [cfg.alpha=1.0] Factor in the range 0..1 indicating how transparent this SpecularMaterial is. A value of 0.0 indicates fully transparent, 1.0 is fully opaque. Multiplies by the *R* component of {@link SpecularMaterial#alphaMap} and the *A* component, if present, of {@link SpecularMaterial#diffuseMap}.\n * @param {Texture} [cfg.alphaMap=undefined] RGB {@link Texture} containing this SpecularMaterial's alpha in its *R* component. The *R* component multiplies by the {@link SpecularMaterial#alpha} property. Must be within the same {@link Scene} as this SpecularMaterial.\n * @param {String} [cfg.alphaMode=\"opaque\"] The alpha blend mode - accepted values are \"opaque\", \"blend\" and \"mask\". See the {@link SpecularMaterial#alphaMode} property for more info.\n * @param {Number} [cfg.alphaCutoff=0.5] The alpha cutoff value. See the {@link SpecularMaterial#alphaCutoff} property for more info.\n * @param {Boolean} [cfg.backfaces=false] Whether to render {@link Geometry} backfaces.\n * @param {Boolean} [cfg.frontface=\"ccw\"] The winding order for {@link Geometry} front faces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise.\n * @param {Number} [cfg.lineWidth=1] Scalar that controls the width of {@link Geometry lines.\n * @param {Number} [cfg.pointSize=1] Scalar that controls the size of {@link Geometry} points.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"SpecularMaterial\",\n diffuse: math.vec3([1.0, 1.0, 1.0]),\n emissive: math.vec3([0.0, 0.0, 0.0]),\n specular: math.vec3([1.0, 1.0, 1.0]),\n glossiness: null,\n specularF0: null,\n alpha: null,\n alphaMode: null,\n alphaCutoff: null,\n lineWidth: null,\n pointSize: null,\n backfaces: null,\n frontface: null, // Boolean for speed; true == \"ccw\", false == \"cw\"\n hash: null\n });\n\n this.diffuse = cfg.diffuse;\n this.specular = cfg.specular;\n this.glossiness = cfg.glossiness;\n this.specularF0 = cfg.specularF0;\n this.emissive = cfg.emissive;\n this.alpha = cfg.alpha;\n\n if (cfg.diffuseMap) {\n this._diffuseMap = this._checkComponent(\"Texture\", cfg.diffuseMap);\n }\n if (cfg.emissiveMap) {\n this._emissiveMap = this._checkComponent(\"Texture\", cfg.emissiveMap);\n }\n if (cfg.specularMap) {\n this._specularMap = this._checkComponent(\"Texture\", cfg.specularMap);\n }\n if (cfg.glossinessMap) {\n this._glossinessMap = this._checkComponent(\"Texture\", cfg.glossinessMap);\n }\n if (cfg.specularGlossinessMap) {\n this._specularGlossinessMap = this._checkComponent(\"Texture\", cfg.specularGlossinessMap);\n }\n if (cfg.occlusionMap) {\n this._occlusionMap = this._checkComponent(\"Texture\", cfg.occlusionMap);\n }\n if (cfg.alphaMap) {\n this._alphaMap = this._checkComponent(\"Texture\", cfg.alphaMap);\n }\n if (cfg.normalMap) {\n this._normalMap = this._checkComponent(\"Texture\", cfg.normalMap);\n }\n\n this.alphaMode = cfg.alphaMode;\n this.alphaCutoff = cfg.alphaCutoff;\n this.backfaces = cfg.backfaces;\n this.frontface = cfg.frontface;\n\n this.lineWidth = cfg.lineWidth;\n this.pointSize = cfg.pointSize;\n\n this._makeHash();\n }\n\n _makeHash() {\n const state = this._state;\n const hash = [\"/spe\"];\n if (this._diffuseMap) {\n hash.push(\"/dm\");\n if (this._diffuseMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n hash.push(\"/\" + this._diffuseMap.encoding);\n }\n if (this._emissiveMap) {\n hash.push(\"/em\");\n if (this._emissiveMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._glossinessMap) {\n hash.push(\"/gm\");\n if (this._glossinessMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._specularMap) {\n hash.push(\"/sm\");\n if (this._specularMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._specularGlossinessMap) {\n hash.push(\"/sgm\");\n if (this._specularGlossinessMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._occlusionMap) {\n hash.push(\"/ocm\");\n if (this._occlusionMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._normalMap) {\n hash.push(\"/nm\");\n if (this._normalMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n if (this._alphaMap) {\n hash.push(\"/opm\");\n if (this._alphaMap.hasMatrix) {\n hash.push(\"/mat\");\n }\n }\n hash.push(\";\");\n state.hash = hash.join(\"\");\n }\n\n /**\n * Sets the RGB diffuse color of this SpecularMaterial.\n *\n * Multiplies by the *RGB* components of {@link SpecularMaterial#diffuseMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n * @type {Number[]}\n */\n set diffuse(value) {\n let diffuse = this._state.diffuse;\n if (!diffuse) {\n diffuse = this._state.diffuse = new Float32Array(3);\n } else if (value && diffuse[0] === value[0] && diffuse[1] === value[1] && diffuse[2] === value[2]) {\n return;\n }\n if (value) {\n diffuse[0] = value[0];\n diffuse[1] = value[1];\n diffuse[2] = value[2];\n } else {\n diffuse[0] = 1;\n diffuse[1] = 1;\n diffuse[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB diffuse color of this SpecularMaterial.\n *\n * @type {Number[]}\n */\n get diffuse() {\n return this._state.diffuse;\n }\n\n /**\n * Gets the RGB {@link Texture} containing the diffuse color of this SpecularMaterial, with optional *A* component for alpha.\n *\n * The *RGB* components multipliues by the {@link SpecularMaterial#diffuse} property, while the *A* component, if present, multiplies by the {@link SpecularMaterial#alpha} property.\n *\n * @type {Texture}\n */\n get diffuseMap() {\n return this._diffuseMap;\n }\n\n /**\n * Sets the RGB specular color of this SpecularMaterial.\n *\n * Multiplies by {@link SpecularMaterial#specularMap} and the *A* component of {@link SpecularMaterial#specularGlossinessMap}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n set specular(value) {\n let specular = this._state.specular;\n if (!specular) {\n specular = this._state.specular = new Float32Array(3);\n } else if (value && specular[0] === value[0] && specular[1] === value[1] && specular[2] === value[2]) {\n return;\n }\n if (value) {\n specular[0] = value[0];\n specular[1] = value[1];\n specular[2] = value[2];\n } else {\n specular[0] = 1;\n specular[1] = 1;\n specular[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB specular color of this SpecularMaterial.\n *\n * @type {Number[]}\n */\n get specular() {\n return this._state.specular;\n }\n\n /**\n * Gets the RGB texture containing the specular color of this SpecularMaterial.\n *\n * Multiplies by {@link SpecularMaterial#specular}.\n *\n * @type {Texture}\n */\n get specularMap() {\n return this._specularMap;\n }\n\n /**\n * Gets the RGBA texture containing this SpecularMaterial's specular color in its *RGB* components and glossiness in its *A* component.\n *\n * The *RGB* components multiplies {@link SpecularMaterial#specular}, while the *A* component multiplies by {@link SpecularMaterial#glossiness}.\n *\n * @type {Texture}\n */\n get specularGlossinessMap() {\n return this._specularGlossinessMap;\n }\n\n /**\n * Sets the Factor in the range [0..1] indicating how glossy this SpecularMaterial is.\n *\n * ````0```` is no glossiness, ````1```` is full glossiness.\n *\n * Multiplies by the *R* component of {@link SpecularMaterial#glossinessMap} and the *A* component of {@link SpecularMaterial#specularGlossinessMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set glossiness(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.glossiness === value) {\n return;\n }\n this._state.glossiness = value;\n this.glRedraw();\n }\n\n /**\n * Gets the Factor in the range ````[0..1]```` indicating how glossy this SpecularMaterial is.\n\n * @type {Number}\n */\n get glossiness() {\n return this._state.glossiness;\n }\n\n /**\n * Gets the RGB texture containing this SpecularMaterial's glossiness in its *R* component.\n *\n * The *R* component multiplies by {@link SpecularMaterial#glossiness}.\n ** @type {Texture}\n */\n get glossinessMap() {\n return this._glossinessMap;\n }\n\n /**\n * Sets the factor in the range ````[0..1]```` indicating amount of specular Fresnel.\n *\n * Default value is ````0.0````.\n *\n * @type {Number}\n */\n set specularF0(value) {\n value = (value !== undefined && value !== null) ? value : 0.0;\n if (this._state.specularF0 === value) {\n return;\n }\n this._state.specularF0 = value;\n this.glRedraw();\n }\n\n /**\n * Gets the factor in the range ````[0..1]```` indicating amount of specular Fresnel.\n *\n * @type {Number}\n */\n get specularF0() {\n return this._state.specularF0;\n }\n\n /**\n * Sets the RGB emissive color of this SpecularMaterial.\n *\n * Multiplies by {@link SpecularMaterial#emissiveMap}.\n\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n set emissive(value) {\n let emissive = this._state.emissive;\n if (!emissive) {\n emissive = this._state.emissive = new Float32Array(3);\n } else if (value && emissive[0] === value[0] && emissive[1] === value[1] && emissive[2] === value[2]) {\n return;\n }\n if (value) {\n emissive[0] = value[0];\n emissive[1] = value[1];\n emissive[2] = value[2];\n } else {\n emissive[0] = 0;\n emissive[1] = 0;\n emissive[2] = 0;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the RGB emissive color of this SpecularMaterial.\n *\n * @type {Number[]}\n */\n get emissive() {\n return this._state.emissive;\n }\n\n /**\n * Gets the RGB texture containing the emissive color of this SpecularMaterial.\n *\n * Multiplies by {@link SpecularMaterial#emissive}.\n *\n * @type {Texture}\n */\n get emissiveMap() {\n return this._emissiveMap;\n }\n\n /**\n * Sets the factor in the range [0..1] indicating how transparent this SpecularMaterial is.\n *\n * A value of ````0.0```` is fully transparent, while ````1.0```` is fully opaque.\n *\n * Multiplies by the *R* component of {@link SpecularMaterial#alphaMap} and the *A* component, if present, of {@link SpecularMaterial#diffuseMap}.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set alpha(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.alpha === value) {\n return;\n }\n this._state.alpha = value;\n this.glRedraw();\n }\n\n /**\n * Gets the factor in the range [0..1] indicating how transparent this SpecularMaterial is.\n *\n * @type {Number}\n */\n get alpha() {\n return this._state.alpha;\n }\n\n /**\n * Gets the RGB {@link Texture} with alpha in its *R* component.\n *\n * The *R* component multiplies by the {@link SpecularMaterial#alpha} property.\n *\n * @type {Texture}\n */\n get alphaMap() {\n return this._alphaMap;\n }\n\n /**\n * Gets the RGB tangent-space normal {@link Texture} attached to this SpecularMaterial.\n *\n * @type {Texture}\n */\n get normalMap() {\n return this._normalMap;\n }\n\n /**\n * Gets the RGB ambient occlusion {@link Texture} attached to this SpecularMaterial.\n *\n * Multiplies by the specular and diffuse light reflected by surfaces.\n *\n * @type {Texture}\n */\n get occlusionMap() {\n return this._occlusionMap;\n }\n\n /**\n * Sets the alpha rendering mode.\n *\n * This governs how alpha is treated. Alpha is the combined result of the {@link SpecularMaterial#alpha} and {@link SpecularMaterial#alphaMap} properties.\n *\n * Accepted values are:\n *\n * * \"opaque\" - The alpha value is ignored and the rendered output is fully opaque (default).\n * * \"mask\" - The rendered output is either fully opaque or fully transparent depending on the alpha value and the specified alpha cutoff value.\n * * \"blend\" - The alpha value is used to composite the source and destination areas. The rendered output is combined with the background using the normal painting operation (i.e. the Porter and Duff over operator)\n *\n * @type {String}\n */\n set alphaMode(alphaMode) {\n alphaMode = alphaMode || \"opaque\";\n let value = alphaModes[alphaMode];\n if (value === undefined) {\n this.error(\"Unsupported value for 'alphaMode': \" + alphaMode + \" defaulting to 'opaque'\");\n value = \"opaque\";\n }\n if (this._state.alphaMode === value) {\n return;\n }\n this._state.alphaMode = value;\n this.glRedraw();\n }\n\n get alphaMode() {\n return alphaModeNames[this._state.alphaMode];\n }\n\n /**\n * Sets the alpha cutoff value.\n *\n * Specifies the cutoff threshold when {@link SpecularMaterial#alphaMode} equals \"mask\". If the alpha is greater than or equal to this value then it is rendered as fully opaque, otherwise, it is rendered as fully transparent. A value greater than 1.0 will render the entire material as fully transparent. This value is ignored for other modes.\n *\n * Alpha is the combined result of the {@link SpecularMaterial#alpha} and {@link SpecularMaterial#alphaMap} properties.\n *\n * Default value is ````0.5````.\n *\n * @type {Number}\n */\n set alphaCutoff(alphaCutoff) {\n if (alphaCutoff === null || alphaCutoff === undefined) {\n alphaCutoff = 0.5;\n }\n if (this._state.alphaCutoff === alphaCutoff) {\n return;\n }\n this._state.alphaCutoff = alphaCutoff;\n }\n\n /**\n * Gets the alpha cutoff value.\n\n * @type {Number}\n */\n get alphaCutoff() {\n return this._state.alphaCutoff;\n }\n\n /**\n * Sets whether backfaces are visible on attached {@link Mesh}es.\n *\n * The backfaces will belong to {@link ReadableGeometry} compoents that are also attached to the {@link Mesh}es.\n *\n * Default is ````false````.\n *\n * @type {Boolean}\n */\n set backfaces(value) {\n value = !!value;\n if (this._state.backfaces === value) {\n return;\n }\n this._state.backfaces = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether backfaces are visible on attached {@link Mesh}es.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._state.backfaces;\n }\n\n /**\n * Sets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n *\n * Default value is ````\"ccw\"````.\n *\n * @type {String}\n */\n set frontface(value) {\n value = value !== \"cw\";\n if (this._state.frontface === value) {\n return;\n }\n this._state.frontface = value;\n this.glRedraw();\n }\n\n /**\n * Gets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n *\n * @type {String}\n */\n get frontface() {\n return this._state.frontface ? \"ccw\" : \"cw\";\n }\n\n /**\n * Sets the SpecularMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set lineWidth(value) {\n this._state.lineWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the SpecularMaterial's line width.\n *\n * @type {Number}\n */\n get lineWidth() {\n return this._state.lineWidth;\n }\n\n /**\n * Sets the SpecularMaterial's point size.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set pointSize(value) {\n this._state.pointSize = value || 1;\n this.glRedraw();\n }\n\n /**\n * Sets the SpecularMaterial's point size.\n *\n * @type {Number}\n */\n get pointSize() {\n return this._state.pointSize;\n }\n\n /**\n * Destroys this SpecularMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\n/**\n * @author xeolabs / https://github.com/xeolabs\n */\n\n/**\n * @desc Human-readable WebGL enumeration mappings.\n * @private\n */\nconst webglEnums = {\n funcAdd: \"FUNC_ADD\",\n funcSubtract: \"FUNC_SUBTRACT\",\n funcReverseSubtract: \"FUNC_REVERSE_SUBTRACT\",\n zero: \"ZERO\",\n one: \"ONE\",\n srcColor: \"SRC_COLOR\",\n oneMinusSrcColor: \"ONE_MINUS_SRC_COLOR\",\n dstColor: \"DST_COLOR\",\n oneMinusDstColor: \"ONE_MINUS_DST_COLOR\",\n srcAlpha: \"SRC_ALPHA\",\n oneMinusSrcAlpha: \"ONE_MINUS_SRC_ALPHA\",\n dstAlpha: \"DST_ALPHA\",\n oneMinusDstAlpha: \"ONE_MINUS_DST_ALPHA\",\n contantColor: \"CONSTANT_COLOR\",\n oneMinusConstantColor: \"ONE_MINUS_CONSTANT_COLOR\",\n constantAlpha: \"CONSTANT_ALPHA\",\n oneMinusConstantAlpha: \"ONE_MINUS_CONSTANT_ALPHA\",\n srcAlphaSaturate: \"SRC_ALPHA_SATURATE\",\n front: \"FRONT\",\n back: \"BACK\",\n frontAndBack: \"FRONT_AND_BACK\",\n never: \"NEVER\",\n less: \"LESS\",\n equal: \"EQUAL\",\n lequal: \"LEQUAL\",\n greater: \"GREATER\",\n notequal: \"NOTEQUAL\",\n gequal: \"GEQUAL\",\n always: \"ALWAYS\",\n cw: \"CW\",\n ccw: \"CCW\",\n linear: \"LINEAR\",\n nearest: \"NEAREST\",\n linearMipmapNearest: \"LINEAR_MIPMAP_NEAREST\",\n nearestMipmapNearest: \"NEAREST_MIPMAP_NEAREST\",\n nearestMipmapLinear: \"NEAREST_MIPMAP_LINEAR\",\n linearMipmapLinear: \"LINEAR_MIPMAP_LINEAR\",\n repeat: \"REPEAT\",\n clampToEdge: \"CLAMP_TO_EDGE\",\n mirroredRepeat: \"MIRRORED_REPEAT\",\n alpha: \"ALPHA\",\n rgb: \"RGB\",\n rgba: \"RGBA\",\n luminance: \"LUMINANCE\",\n luminanceAlpha: \"LUMINANCE_ALPHA\",\n textureBinding2D: \"TEXTURE_BINDING_2D\",\n textureBindingCubeMap: \"TEXTURE_BINDING_CUBE_MAP\",\n compareRToTexture: \"COMPARE_R_TO_TEXTURE\", // Hardware Shadowing Z-depth,\n unsignedByte: \"UNSIGNED_BYTE\"\n};\n\nfunction getGLEnum(gl, name, defaultVal) {\n if (name === undefined) {\n return defaultVal;\n }\n const glName = webglEnums[name];\n if (glName === undefined) {\n return defaultVal;\n }\n return gl[glName];\n}\n\nconst color$2 = new Uint8Array([0, 0, 0, 1]);\n\n/**\n * @desc A low-level component that represents a 2D WebGL texture.\n *\n * @private\n */\nclass Texture2D {\n\n constructor(gl, target) {\n this.gl = gl;\n this.target = target || gl.TEXTURE_2D;\n this.texture = gl.createTexture();\n this.setPreloadColor([0, 0, 0, 0]); // Prevents \"there is no texture bound to the unit 0\" error\n this.allocated = true;\n }\n\n setPreloadColor(value) {\n\n if (!value) {\n color$2[0] = 0;\n color$2[1] = 0;\n color$2[2] = 0;\n color$2[3] = 255;\n } else {\n color$2[0] = Math.floor(value[0] * 255);\n color$2[1] = Math.floor(value[1] * 255);\n color$2[2] = Math.floor(value[2] * 255);\n color$2[3] = Math.floor((value[3] !== undefined ? value[3] : 1) * 255);\n }\n\n const gl = this.gl;\n\n gl.bindTexture(this.target, this.texture);\n gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n\n if (this.target === gl.TEXTURE_CUBE_MAP) {\n\n const faces = [\n gl.TEXTURE_CUBE_MAP_POSITIVE_X,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_X,\n gl.TEXTURE_CUBE_MAP_POSITIVE_Y,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n gl.TEXTURE_CUBE_MAP_POSITIVE_Z,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Z\n ];\n\n for (let i = 0, len = faces.length; i < len; i++) {\n gl.texImage2D(faces[i], 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, color$2);\n }\n\n } else {\n gl.texImage2D(this.target, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, color$2);\n }\n\n gl.bindTexture(this.target, null);\n }\n\n setTarget(target) {\n this.target = target || this.gl.TEXTURE_2D;\n }\n\n setImage(image, props) {\n const gl = this.gl;\n gl.bindTexture(this.target, this.texture);\n gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, props.flipY);\n if (this.target === gl.TEXTURE_CUBE_MAP) {\n if (utils.isArray(image)) {\n const images = image;\n const faces = [\n gl.TEXTURE_CUBE_MAP_POSITIVE_X,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_X,\n gl.TEXTURE_CUBE_MAP_POSITIVE_Y,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Y,\n gl.TEXTURE_CUBE_MAP_POSITIVE_Z,\n gl.TEXTURE_CUBE_MAP_NEGATIVE_Z\n ];\n for (let i = 0, len = faces.length; i < len; i++) {\n gl.texImage2D(faces[i], 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, images[i]);\n }\n }\n } else {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n }\n gl.bindTexture(this.target, null);\n }\n\n setProps(props) {\n const gl = this.gl;\n gl.bindTexture(this.target, this.texture);\n if (props.minFilter) {\n const minFilter = getGLEnum(gl, props.minFilter);\n if (minFilter) {\n gl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, minFilter);\n if (minFilter === gl.NEAREST_MIPMAP_NEAREST ||\n minFilter === gl.LINEAR_MIPMAP_NEAREST ||\n minFilter === gl.NEAREST_MIPMAP_LINEAR ||\n minFilter === gl.LINEAR_MIPMAP_LINEAR) {\n\n gl.generateMipmap(this.target);\n }\n }\n }\n if (props.magFilter) {\n const magFilter = getGLEnum(gl, props.magFilter);\n if (magFilter) {\n gl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, magFilter);\n }\n }\n if (props.wrapS) {\n const wrapS = getGLEnum(gl, props.wrapS);\n if (wrapS) {\n gl.texParameteri(this.target, gl.TEXTURE_WRAP_S, wrapS);\n }\n }\n if (props.wrapT) {\n const wrapT = getGLEnum(gl, props.wrapT);\n if (wrapT) {\n gl.texParameteri(this.target, gl.TEXTURE_WRAP_T, wrapT);\n }\n }\n gl.bindTexture(this.target, null);\n }\n\n bind(unit) {\n if (!this.allocated) {\n return;\n }\n if (this.texture) {\n const gl = this.gl;\n gl.activeTexture(gl[\"TEXTURE\" + unit]);\n gl.bindTexture(this.target, this.texture);\n return true;\n }\n return false;\n }\n\n unbind(unit) {\n if (!this.allocated) {\n return;\n }\n if (this.texture) {\n const gl = this.gl;\n gl.activeTexture(gl[\"TEXTURE\" + unit]);\n gl.bindTexture(this.target, null);\n }\n }\n\n destroy() {\n if (!this.allocated) {\n return;\n }\n if (this.texture) {\n this.gl.deleteTexture(this.texture);\n this.texture = null;\n }\n }\n}\n\nfunction ensureImageSizePowerOfTwo$1(image) {\n if (!isPowerOfTwo$1(image.width) || !isPowerOfTwo$1(image.height)) {\n const canvas = document.createElement(\"canvas\");\n canvas.width = nextHighestPowerOfTwo$1(image.width);\n canvas.height = nextHighestPowerOfTwo$1(image.height);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(image,\n 0, 0, image.width, image.height,\n 0, 0, canvas.width, canvas.height);\n image = canvas;\n }\n return image;\n}\n\nfunction isPowerOfTwo$1(x) {\n return (x & (x - 1)) === 0;\n}\n\nfunction nextHighestPowerOfTwo$1(x) {\n --x;\n for (let i = 1; i < 32; i <<= 1) {\n x = x | x >> i;\n }\n return x + 1;\n}\n\n/**\n * @desc A 2D texture map.\n *\n * * Textures are attached to {@link Material}s, which are attached to {@link Mesh}es.\n * * To create a Texture from an image file, set {@link Texture#src} to the image file path.\n * * To create a Texture from an HTMLImageElement, set the Texture's {@link Texture#image} to the HTMLImageElement.\n *\n * ## Usage\n *\n * In this example we have a Mesh with a {@link PhongMaterial} which applies diffuse {@link Texture}, and a {@link buildTorusGeometry} which builds a {@link ReadableGeometry}.\n *\n * Note that xeokit will ignore {@link PhongMaterial#diffuse} and {@link PhongMaterial#specular}, since we override those\n * with {@link PhongMaterial#diffuseMap} and {@link PhongMaterial#specularMap}. The {@link Texture} pixel colors directly\n * provide the diffuse and specular components for each fragment across the {@link ReadableGeometry} surface.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_Texture)]\n *\n * ```` javascript\n * import {Viewer, Mesh, buildTorusGeometry,\n * ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * ambient: [0.9, 0.3, 0.9],\n * shininess: 30,\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n *````\n */\nclass Texture extends Component {\n\n /**\n @private\n */\n get type() {\n return \"Texture\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this Texture as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for this Texture, unique among all components in the parent scene, generated automatically when omitted.\n * @param {String} [cfg.src=null] Path to image file to load into this Texture. See the {@link Texture#src} property for more info.\n * @param {HTMLImageElement} [cfg.image=null] HTML Image object to load into this Texture. See the {@link Texture#image} property for more info.\n * @param {String} [cfg.minFilter=\"linearMipmapLinear\"] How the texture is sampled when a texel covers less than one pixel. See the {@link Texture#minFilter} property for more info.\n * @param {String} [cfg.magFilter=\"linear\"] How the texture is sampled when a texel covers more than one pixel. See the {@link Texture#magFilter} property for more info.\n * @param {String} [cfg.wrapS=\"repeat\"] Wrap parameter for texture coordinate *S*. See the {@link Texture#wrapS} property for more info.\n * @param {String} [cfg.wrapT=\"repeat\"] Wrap parameter for texture coordinate *S*. See the {@link Texture#wrapT} property for more info.\n * @param {Boolean} [cfg.flipY=false] Flips this Texture's source data along its vertical axis when true.\n * @param {Number[]} [cfg.translate=[0,0]] 2D translation vector that will be added to texture's *S* and *T* coordinates.\n * @param {Number[]} [cfg.scale=[1,1]] 2D scaling vector that will be applied to texture's *S* and *T* coordinates.\n * @param {Number} [cfg.rotate=0] Rotation, in degrees, that will be applied to texture's *S* and *T* coordinates.\n * @param {String} [cfg.encoding=\"linear\"] Encoding format. See the {@link Texture#encoding} property for more info.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n texture: new Texture2D(this.scene.canvas.gl),\n matrix: math.identityMat4(),\n hasMatrix: (cfg.translate && (cfg.translate[0] !== 0 || cfg.translate[1] !== 0)) || (!!cfg.rotate) || (cfg.scale && (cfg.scale[0] !== 0 || cfg.scale[1] !== 0)),\n minFilter: this._checkMinFilter(cfg.minFilter),\n magFilter: this._checkMagFilter(cfg.magFilter),\n wrapS: this._checkWrapS(cfg.wrapS),\n wrapT: this._checkWrapT(cfg.wrapT),\n flipY: this._checkFlipY(cfg.flipY),\n encoding: this._checkEncoding(cfg.encoding)\n });\n\n // Data source\n\n this._src = null;\n this._image = null;\n\n // Transformation\n\n this._translate = math.vec2([0, 0]);\n this._scale = math.vec2([1, 1]);\n this._rotate = math.vec2([0, 0]);\n\n this._matrixDirty = false;\n\n // Transform\n\n this.translate = cfg.translate;\n this.scale = cfg.scale;\n this.rotate = cfg.rotate;\n\n // Data source\n\n if (cfg.src) {\n this.src = cfg.src; // Image file\n } else if (cfg.image) {\n this.image = cfg.image; // Image object\n }\n\n stats.memory.textures++;\n }\n\n _checkMinFilter(value) {\n value = value || \"linearMipmapLinear\";\n if (value !== \"linear\" &&\n value !== \"linearMipmapNearest\" &&\n value !== \"linearMipmapLinear\" &&\n value !== \"nearestMipmapLinear\" &&\n value !== \"nearestMipmapNearest\") {\n this.error(\"Unsupported value for 'minFilter': '\" + value +\n \"' - supported values are 'linear', 'linearMipmapNearest', 'nearestMipmapNearest', \" +\n \"'nearestMipmapLinear' and 'linearMipmapLinear'. Defaulting to 'linearMipmapLinear'.\");\n value = \"linearMipmapLinear\";\n }\n return value;\n }\n\n _checkMagFilter(value) {\n value = value || \"linear\";\n if (value !== \"linear\" && value !== \"nearest\") {\n this.error(\"Unsupported value for 'magFilter': '\" + value +\n \"' - supported values are 'linear' and 'nearest'. Defaulting to 'linear'.\");\n value = \"linear\";\n }\n return value;\n }\n\n _checkFilter(value) {\n value = value || \"linear\";\n if (value !== \"linear\" && value !== \"nearest\") {\n this.error(\"Unsupported value for 'magFilter': '\" + value +\n \"' - supported values are 'linear' and 'nearest'. Defaulting to 'linear'.\");\n value = \"linear\";\n }\n return value;\n }\n\n _checkWrapS(value) {\n value = value || \"repeat\";\n if (value !== \"clampToEdge\" && value !== \"mirroredRepeat\" && value !== \"repeat\") {\n this.error(\"Unsupported value for 'wrapS': '\" + value +\n \"' - supported values are 'clampToEdge', 'mirroredRepeat' and 'repeat'. Defaulting to 'repeat'.\");\n value = \"repeat\";\n }\n return value;\n }\n\n _checkWrapT(value) {\n value = value || \"repeat\";\n if (value !== \"clampToEdge\" && value !== \"mirroredRepeat\" && value !== \"repeat\") {\n this.error(\"Unsupported value for 'wrapT': '\" + value +\n \"' - supported values are 'clampToEdge', 'mirroredRepeat' and 'repeat'. Defaulting to 'repeat'.\");\n value = \"repeat\";\n }\n return value;\n }\n\n _checkFlipY(value) {\n return !!value;\n }\n\n _checkEncoding(value) {\n value = value || \"linear\";\n if (value !== \"linear\" && value !== \"sRGB\" && value !== \"gamma\") {\n this.error(\"Unsupported value for 'encoding': '\" + value + \"' - supported values are 'linear', 'sRGB', 'gamma'. Defaulting to 'linear'.\");\n value = \"linear\";\n }\n return value;\n }\n\n _webglContextRestored() {\n this._state.texture = new Texture2D(this.scene.canvas.gl);\n if (this._image) {\n this.image = this._image;\n } else if (this._src) {\n this.src = this._src;\n }\n }\n\n _update() {\n const state = this._state;\n if (this._matrixDirty) {\n let matrix;\n let t;\n if (this._translate[0] !== 0 || this._translate[1] !== 0) {\n matrix = math.translationMat4v([this._translate[0], this._translate[1], 0], this._state.matrix);\n }\n if (this._scale[0] !== 1 || this._scale[1] !== 1) {\n t = math.scalingMat4v([this._scale[0], this._scale[1], 1]);\n matrix = matrix ? math.mulMat4(matrix, t) : t;\n }\n if (this._rotate !== 0) {\n t = math.rotationMat4v(this._rotate * 0.0174532925, [0, 0, 1]);\n matrix = matrix ? math.mulMat4(matrix, t) : t;\n }\n if (matrix) {\n state.matrix = matrix;\n }\n this._matrixDirty = false;\n }\n this.glRedraw();\n }\n\n\n /**\n * Sets an HTML DOM Image object to source this Texture from.\n *\n * Sets {@link Texture#src} null.\n *\n * @type {HTMLImageElement}\n */\n set image(value) {\n this._image = ensureImageSizePowerOfTwo$1(value);\n this._image.crossOrigin = \"Anonymous\";\n this._state.texture.setImage(this._image, this._state);\n this._state.texture.setProps(this._state); // Generate mipmaps\n this._src = null;\n this.glRedraw();\n }\n\n /**\n * Gets HTML DOM Image object this Texture is sourced from, if any.\n *\n * Returns null if not set.\n *\n * @type {HTMLImageElement}\n */\n get image() {\n return this._image;\n }\n\n /**\n * Sets path to an image file to source this Texture from.\n *\n * Sets {@link Texture#image} null.\n *\n * @type {String}\n */\n set src(src) {\n this.scene.loading++;\n this.scene.canvas.spinner.processes++;\n const self = this;\n let image = new Image();\n image.onload = function () {\n image = ensureImageSizePowerOfTwo$1(image);\n //self._image = image; // For faster WebGL context restore - memory inefficient?\n self._state.texture.setImage(image, self._state);\n self._state.texture.setProps(self._state); // Generate mipmaps\n self.scene.loading--;\n self.glRedraw();\n self.scene.canvas.spinner.processes--;\n };\n image.src = src;\n this._src = src;\n this._image = null;\n }\n\n /**\n * Gets path to the image file this Texture from, if any.\n *\n * Returns null if not set.\n *\n * @type {String}\n */\n get src() {\n return this._src;\n }\n\n /**\n * Sets the 2D translation vector added to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````[0, 0]````.\n *\n * @type {Number[]}\n */\n set translate(value) {\n this._translate.set(value || [0, 0]);\n this._matrixDirty = true;\n this._needUpdate();\n }\n\n /**\n * Gets the 2D translation vector added to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````[0, 0]````.\n *\n * @type {Number[]}\n */\n get translate() {\n return this._translate;\n }\n\n /**\n * Sets the 2D scaling vector that will be applied to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````[1, 1]````.\n *\n * @type {Number[]}\n */\n set scale(value) {\n this._scale.set(value || [1, 1]);\n this._matrixDirty = true;\n this._needUpdate();\n }\n\n /**\n * Gets the 2D scaling vector that will be applied to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````[1, 1]````.\n *\n * @type {Number[]}\n */\n get scale() {\n return this._scale;\n }\n\n /**\n * Sets the rotation angles, in degrees, that will be applied to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n set rotate(value) {\n value = value || 0;\n if (this._rotate === value) {\n return;\n }\n this._rotate = value;\n this._matrixDirty = true;\n this._needUpdate();\n }\n\n /**\n * Gets the rotation angles, in degrees, that will be applied to this Texture's *S* and *T* UV coordinates.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n get rotate() {\n return this._rotate;\n }\n\n /**\n * Gets how this Texture is sampled when a texel covers less than one pixel.\n *\n * Options are:\n *\n * * \"nearest\" - Uses the value of the texture element that is nearest\n * (in Manhattan distance) to the center of the pixel being textured.\n *\n * * \"linear\" - Uses the weighted average of the four texture elements that are\n * closest to the center of the pixel being textured.\n *\n * * \"nearestMipmapNearest\" - Chooses the mipmap that most closely matches the\n * size of the pixel being textured and uses the \"nearest\" criterion (the texture\n * element nearest to the center of the pixel) to produce a texture value.\n *\n * * \"linearMipmapNearest\" - Chooses the mipmap that most closely matches the size of\n * the pixel being textured and uses the \"linear\" criterion (a weighted average of the\n * four texture elements that are closest to the center of the pixel) to produce a\n * texture value.\n *\n * * \"nearestMipmapLinear\" - Chooses the two mipmaps that most closely\n * match the size of the pixel being textured and uses the \"nearest\" criterion\n * (the texture element nearest to the center of the pixel) to produce a texture\n * value from each mipmap. The final texture value is a weighted average of those two\n * values.\n *\n * * \"linearMipmapLinear\" - (default) - Chooses the two mipmaps that most closely match the size\n * of the pixel being textured and uses the \"linear\" criterion (a weighted average\n * of the four texture elements that are closest to the center of the pixel) to\n * produce a texture value from each mipmap. The final texture value is a weighted\n * average of those two values.\n *\n * Default value is \"linearMipmapLinear\".\n *\n * @type {String}\n */\n get minFilter() {\n return this._state.minFilter;\n }\n\n /**\n * Gets how this Texture is sampled when a texel covers more than one pixel.\n *\n * * \"nearest\" - Uses the value of the texture element that is nearest\n * (in Manhattan distance) to the center of the pixel being textured.\n * * \"linear\" - (default) - Uses the weighted average of the four texture elements that are\n * closest to the center of the pixel being textured.\n *\n * Default value is \"linearMipmapLinear\".\n *\n * @type {String}\n */\n get magFilter() {\n return this._state.magFilter;\n }\n\n /**\n * Gets the wrap parameter for this Texture's *S* coordinate.\n *\n * Values can be:\n *\n * * \"clampToEdge\" - causes *S* coordinates to be clamped to the size of the texture.\n * * \"mirroredRepeat\" - causes the *S* coordinate to be set to the fractional part of the texture coordinate\n * if the integer part of *S* is even; if the integer part of *S* is odd, then the *S* texture coordinate is\n * set to *1 - frac ⁡ S* , where *frac ⁡ S* represents the fractional part of *S*.\n * * \"repeat\" - (default) - causes the integer part of the *S* coordinate to be ignored; xeokit uses only the\n * fractional part, thereby creating a repeating pattern.\n *\n * Default value is \"repeat\".\n *\n * @type {String}\n */\n get wrapS() {\n return this._state.wrapS;\n }\n\n /**\n * Gets the wrap parameter for this Texture's *T* coordinate.\n *\n * Values can be:\n *\n * * \"clampToEdge\" - causes *S* coordinates to be clamped to the size of the texture.\n * * \"mirroredRepeat\" - causes the *S* coordinate to be set to the fractional part of the texture coordinate\n * if the integer part of *S* is even; if the integer part of *S* is odd, then the *S* texture coordinate is\n * set to *1 - frac ⁡ S* , where *frac ⁡ S* represents the fractional part of *S*.\n * * \"repeat\" - (default) - causes the integer part of the *S* coordinate to be ignored; xeokit uses only the\n * fractional part, thereby creating a repeating pattern.\n *\n * Default value is \"repeat\".\n *\n * @type {String}\n */\n get wrapT() {\n return this._state.wrapT;\n }\n\n /**\n * Gets if this Texture's source data is flipped along its vertical axis.\n *\n * @type {Boolean}\n */\n get flipY() {\n return this._state.flipY;\n }\n\n /**\n * Gets the Texture's encoding format.\n *\n * @type {String}\n */\n get encoding() {\n return this._state.encoding;\n }\n\n /**\n * Destroys this Texture\n */\n destroy() {\n super.destroy();\n if (this._state.texture) {\n this._state.texture.destroy();\n }\n this._state.destroy();\n stats.memory.textures--;\n }\n}\n\n/**\n * @private\n */\nclass GLTFSceneGraphLoader {\n\n constructor(cfg) { // TODO: Loading options fallbacks on loader, eg. handleGLTFNode etc\n }\n\n load(plugin, modelNode, src, options, ok, error) {\n options = options || {};\n var spinner = modelNode.scene.canvas.spinner;\n spinner.processes++;\n loadGLTF$1(plugin, modelNode, src, options, function () {\n spinner.processes--;\n core.scheduleTask(function () {\n modelNode.scene.fire(\"modelLoaded\", modelNode.id); // FIXME: Assumes listeners know order of these two events\n modelNode.fire(\"loaded\", true, false);\n });\n if (ok) {\n ok();\n }\n },\n function (msg) {\n spinner.processes--;\n modelNode.error(msg);\n if (error) {\n error(msg);\n }\n modelNode.fire(\"error\", msg);\n });\n }\n\n parse(plugin, modelNode, gltf, options, ok, error) {\n options = options || {};\n var spinner = modelNode.scene.canvas.spinner;\n spinner.processes++;\n parseGLTF$1(plugin, gltf, \"\", options, modelNode, function () {\n spinner.processes--;\n modelNode.scene.fire(\"modelLoaded\", modelNode.id); // FIXME: Assumes listeners know order of these two events\n modelNode.fire(\"loaded\", true, false);\n if (ok) {\n ok();\n }\n },\n function (msg) {\n spinner.processes--;\n modelNode.error(msg);\n modelNode.fire(\"error\", msg);\n if (error) {\n error(msg);\n }\n });\n }\n}\n\n\nvar loadGLTF$1 = (function () {\n return function (plugin, modelNode, src, options, ok, error) {\n plugin.dataSource.getGLTF(src, function (json) { // OK\n options.basePath = getBasePath(src);\n parseGLTF$1(plugin, json, src, options, modelNode, ok, error);\n },\n error);\n };\n\n function getBasePath(src) {\n var i = src.lastIndexOf(\"/\");\n return (i !== 0) ? src.substring(0, i + 1) : \"\";\n }\n})();\n\nvar parseGLTF$1 = (function () {\n\n const WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n };\n\n const WEBGL_TYPE_SIZES = {\n 'SCALAR': 1,\n 'VEC2': 2,\n 'VEC3': 3,\n 'VEC4': 4,\n 'MAT2': 4,\n 'MAT3': 9,\n 'MAT4': 16\n };\n\n return function (plugin, json, src, options, modelNode, ok) {\n modelNode.clear();\n var ctx = {\n src: src,\n loadBuffer: options.loadBuffer,\n basePath: options.basePath,\n prioritizeGLTFNode: options.prioritizeGLTFNode,\n handleGLTFNode: options.handleGLTFNode,\n ignoreMaterials: !!options.ignoreMaterials,\n edgeThreshold: options.edgeThreshold,\n readableGeometry: !!options.readableGeometry,\n json: json,\n scene: modelNode.scene,\n plugin: plugin,\n modelNode: modelNode,\n modelNodeProps: {\n visible: modelNode.visible,\n culled: modelNode.culled,\n xrayed: modelNode.xrayed,\n highlighted: modelNode.highlighted,\n selected: modelNode.selected,\n outlined: modelNode.outlined,\n clippable: modelNode.clippable,\n pickable: modelNode.pickable,\n collidable: modelNode.collidable,\n castsShadow: modelNode.castsShadow,\n receivesShadow: modelNode.receivesShadow,\n colorize: modelNode.colorize,\n opacity: modelNode.opacity,\n edges: modelNode.edges\n }\n };\n\n modelNode.scene.loading++; // Disables (re)compilation\n\n loadBuffers(ctx, function () {\n\n loadBufferViews(ctx);\n loadAccessors(ctx);\n loadTextures(ctx);\n loadMaterials(ctx);\n loadMeshes(ctx);\n loadDefaultScene(ctx);\n\n modelNode.scene.loading--; // Re-enables (re)compilation\n\n ok();\n });\n };\n\n function loadBuffers(ctx, ok) {\n var buffers = ctx.json.buffers;\n if (buffers) {\n var numToLoad = buffers.length;\n for (var i = 0, len = buffers.length; i < len; i++) {\n loadBuffer(ctx, buffers[i], function () {\n if (--numToLoad === 0) {\n ok();\n }\n }, function (msg) {\n ctx.plugin.error(msg);\n if (--numToLoad === 0) {\n ok();\n }\n });\n }\n } else {\n ok();\n }\n }\n\n function loadBuffer(ctx, bufferInfo, ok, err) {\n var uri = bufferInfo.uri;\n if (uri) {\n ctx.plugin.dataSource.getArrayBuffer(ctx.src, uri, function (data) {\n bufferInfo._buffer = data;\n ok();\n },\n err);\n } else {\n err('gltf/handleBuffer missing uri in ' + JSON.stringify(bufferInfo));\n }\n }\n\n function loadBufferViews(ctx) {\n var bufferViewsInfo = ctx.json.bufferViews;\n if (bufferViewsInfo) {\n for (var i = 0, len = bufferViewsInfo.length; i < len; i++) {\n loadBufferView(ctx, bufferViewsInfo[i]);\n }\n }\n }\n\n function loadBufferView(ctx, bufferViewInfo) {\n\n var buffer = ctx.json.buffers[bufferViewInfo.buffer];\n\n bufferViewInfo._typedArray = null;\n\n var byteLength = bufferViewInfo.byteLength || 0;\n var byteOffset = bufferViewInfo.byteOffset || 0;\n\n bufferViewInfo._buffer = buffer._buffer.slice(byteOffset, byteOffset + byteLength);\n }\n\n function loadAccessors(ctx) {\n var accessorsInfo = ctx.json.accessors;\n if (accessorsInfo) {\n for (var i = 0, len = accessorsInfo.length; i < len; i++) {\n loadAccessor(ctx, accessorsInfo[i]);\n }\n }\n }\n\n function loadAccessor(ctx, accessorInfo) {\n var bufferViewInfo = ctx.json.bufferViews[accessorInfo.bufferView];\n var itemSize = WEBGL_TYPE_SIZES[accessorInfo.type];\n var TypedArray = WEBGL_COMPONENT_TYPES[accessorInfo.componentType];\n\n // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n var elementBytes = TypedArray.BYTES_PER_ELEMENT;\n var itemBytes = elementBytes * itemSize;\n\n // The buffer is not interleaved if the stride is the item size in bytes.\n if (accessorInfo.byteStride && accessorInfo.byteStride !== itemBytes) ; else {\n accessorInfo._typedArray = new TypedArray(bufferViewInfo._buffer, accessorInfo.byteOffset || 0, accessorInfo.count * itemSize);\n accessorInfo._itemSize = itemSize;\n }\n }\n\n\n function loadTextures(ctx) {\n var texturesInfo = ctx.json.textures;\n if (texturesInfo) {\n for (var i = 0, len = texturesInfo.length; i < len; i++) {\n loadTexture(ctx, texturesInfo[i]);\n }\n }\n }\n\n function loadTexture(ctx, textureInfo) {\n textureInfo._texture = new Texture(ctx.modelNode, {\n src: ctx.json.images[textureInfo.source].uri ? ctx.basePath + ctx.json.images[textureInfo.source].uri : undefined,\n flipY: !!textureInfo.flipY,\n encoding: \"sRGB\"\n });\n }\n\n function loadMaterials(ctx) {\n var materialsInfo = ctx.json.materials;\n if (materialsInfo) {\n var materialInfo;\n var material;\n for (var i = 0, len = materialsInfo.length; i < len; i++) {\n materialInfo = materialsInfo[i];\n material = loadMaterial(ctx, materialInfo);\n materialInfo._material = material;\n }\n }\n }\n\n function loadMaterial(ctx, materialInfo) {\n\n var json = ctx.json;\n var cfg = {};\n var textureInfo;\n\n // Common attributes\n\n var normalTexture = materialInfo.normalTexture;\n if (normalTexture) {\n textureInfo = json.textures[normalTexture.index];\n if (textureInfo) {\n cfg.normalMap = textureInfo._texture;\n //cfg.normalMap.encoding = \"linear\";\n }\n }\n\n var occlusionTexture = materialInfo.occlusionTexture;\n if (occlusionTexture) {\n textureInfo = json.textures[occlusionTexture.index];\n if (textureInfo) {\n cfg.occlusionMap = textureInfo._texture;\n }\n }\n\n var emissiveTexture = materialInfo.emissiveTexture;\n if (emissiveTexture) {\n textureInfo = json.textures[emissiveTexture.index];\n if (textureInfo) {\n cfg.emissiveMap = textureInfo._texture;\n //cfg.emissiveMap.encoding = \"sRGB\";\n }\n }\n\n var emissiveFactor = materialInfo.emissiveFactor;\n if (emissiveFactor) {\n cfg.emissive = emissiveFactor;\n }\n\n cfg.backfaces = !!materialInfo.doubleSided;\n\n var alphaMode = materialInfo.alphaMode;\n switch (alphaMode) {\n case \"NORMAL_OPAQUE\":\n cfg.alphaMode = \"opaque\";\n break;\n case \"MASK\":\n cfg.alphaMode = \"mask\";\n break;\n case \"BLEND\":\n cfg.alphaMode = \"blend\";\n break;\n }\n\n var alphaCutoff = materialInfo.alphaCutoff;\n if (alphaCutoff !== undefined) {\n cfg.alphaCutoff = alphaCutoff;\n }\n\n var extensions = materialInfo.extensions;\n if (extensions) {\n\n // Specular PBR material\n\n var specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n\n var diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n cfg.diffuse = diffuseFactor.slice(0, 3);\n cfg.alpha = diffuseFactor[3];\n }\n\n var diffuseTexture = specularPBR.diffuseTexture;\n if (diffuseTexture) {\n textureInfo = json.textures[diffuseTexture.index];\n if (textureInfo) {\n cfg.diffuseMap = textureInfo._texture;\n //cfg.diffuseMap.encoding = \"sRGB\";\n }\n }\n\n var specularFactor = specularPBR.specularFactor;\n if (specularFactor !== null && specularFactor !== undefined) {\n cfg.specular = specularFactor.slice(0, 3);\n }\n\n var glossinessFactor = specularPBR.glossinessFactor;\n if (glossinessFactor !== null && glossinessFactor !== undefined) {\n cfg.glossiness = glossinessFactor;\n }\n\n var specularGlossinessTexture = specularPBR.specularGlossinessTexture;\n if (specularGlossinessTexture) {\n textureInfo = json.textures[specularGlossinessTexture.index];\n if (textureInfo) {\n cfg.specularGlossinessMap = textureInfo._texture;\n //cfg.specularGlossinessMap.encoding = \"linear\";\n }\n }\n\n return new SpecularMaterial(ctx.modelNode, cfg);\n }\n\n // Common Phong, Blinn, Lambert or Constant materials\n\n var common = extensions[\"KHR_materials_common\"];\n if (common) {\n\n var technique = common.technique;\n var values = common.values || {};\n\n var blinn = technique === \"BLINN\";\n var phong = technique === \"PHONG\";\n var lambert = technique === \"LAMBERT\";\n\n var shininess = values.shininess;\n if ((blinn || phong) && shininess !== null && shininess !== undefined) {\n cfg.shininess = shininess;\n } else {\n cfg.shininess = 0;\n }\n var texture;\n var diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (utils.isString(diffuse)) {\n texture = ctx.textures[diffuse];\n if (texture) {\n cfg.diffuseMap = texture;\n // cfg.diffuseMap.encoding = \"sRGB\";\n }\n } else {\n cfg.diffuse = diffuse.slice(0, 3);\n }\n } else {\n cfg.diffuse = [0, 0, 0];\n }\n\n var specular = values.specular;\n if (specular && (blinn || phong)) {\n if (utils.isString(specular)) {\n texture = ctx.textures[specular];\n if (texture) {\n cfg.specularMap = texture;\n }\n } else {\n cfg.specular = specular.slice(0, 3);\n }\n } else {\n cfg.specular = [0, 0, 0];\n }\n\n var emission = values.emission;\n if (emission) {\n if (utils.isString(emission)) {\n texture = ctx.textures[emission];\n if (texture) {\n cfg.emissiveMap = texture;\n }\n } else {\n cfg.emissive = emission.slice(0, 3);\n }\n } else {\n cfg.emissive = [0, 0, 0];\n }\n\n var transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n cfg.alpha = transparency;\n } else {\n cfg.alpha = 1.0;\n }\n\n values.transparent;\n\n return new PhongMaterial(ctx.scene, cfg);\n }\n }\n\n // Metallic PBR naterial\n\n var metallicPBR = materialInfo.pbrMetallicRoughness;\n if (metallicPBR) {\n\n var baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n cfg.baseColor = baseColorFactor.slice(0, 3);\n cfg.alpha = baseColorFactor[3];\n }\n\n var baseColorTexture = metallicPBR.baseColorTexture;\n if (baseColorTexture) {\n textureInfo = json.textures[baseColorTexture.index];\n if (textureInfo) {\n cfg.baseColorMap = textureInfo._texture;\n //cfg.baseColorMap.encoding = \"sRGB\";\n }\n }\n\n var metallicFactor = metallicPBR.metallicFactor;\n if (metallicFactor !== null && metallicFactor !== undefined) {\n cfg.metallic = metallicFactor;\n }\n\n var roughnessFactor = metallicPBR.roughnessFactor;\n if (roughnessFactor !== null && roughnessFactor !== undefined) {\n cfg.roughness = roughnessFactor;\n }\n\n var metallicRoughnessTexture = metallicPBR.metallicRoughnessTexture;\n if (metallicRoughnessTexture) {\n textureInfo = json.textures[metallicRoughnessTexture.index];\n if (textureInfo) {\n cfg.metallicRoughnessMap = textureInfo._texture;\n // cfg.metallicRoughnessMap.encoding = \"linear\";\n }\n }\n\n return new MetallicMaterial(ctx.scene, cfg);\n }\n\n // Default material\n\n return new PhongMaterial(ctx.scene, cfg);\n }\n\n function loadMeshes(ctx) {\n var meshes = ctx.json.meshes;\n if (meshes) {\n for (var i = 0, len = meshes.length; i < len; i++) {\n loadMesh(ctx, meshes[i]);\n }\n }\n }\n\n function loadMesh(ctx, meshInfo) {\n var json = ctx.json;\n var mesh = [];\n var primitivesInfo = meshInfo.primitives;\n var materialIndex;\n var materialInfo;\n var accessorInfo;\n var attributes;\n\n if (primitivesInfo) {\n\n var primitiveInfo;\n var indicesIndex;\n var positionsIndex;\n var normalsIndex;\n var uv0Index;\n var geometryCfg;\n var meshCfg;\n var geometry;\n\n for (var i = 0, len = primitivesInfo.length; i < len; i++) {\n primitiveInfo = primitivesInfo[i];\n if (primitiveInfo.mode < 4 ) {\n continue;\n }\n geometryCfg = {\n primitive: \"triangles\",\n compressGeometry: true,\n edgeThreshold: ctx.edgeThreshold\n };\n\n indicesIndex = primitiveInfo.indices;\n\n if (indicesIndex !== null && indicesIndex !== undefined) {\n accessorInfo = json.accessors[indicesIndex];\n geometryCfg.indices = accessorInfo._typedArray;\n }\n\n attributes = primitiveInfo.attributes;\n if (!attributes) {\n continue;\n }\n\n positionsIndex = attributes.POSITION;\n\n if (positionsIndex !== null && positionsIndex !== undefined) {\n accessorInfo = json.accessors[positionsIndex];\n geometryCfg.positions = accessorInfo._typedArray;\n }\n\n normalsIndex = attributes.NORMAL;\n\n if (normalsIndex !== null && normalsIndex !== undefined) {\n accessorInfo = json.accessors[normalsIndex];\n geometryCfg.normals = accessorInfo._typedArray;\n }\n\n uv0Index = attributes.TEXCOORD_0;\n\n if (uv0Index !== null && uv0Index !== undefined) {\n accessorInfo = json.accessors[uv0Index];\n geometryCfg.uv = accessorInfo._typedArray;\n }\n\n meshCfg = {};\n\n if (ctx.readableGeometry) {\n geometry = new ReadableGeometry(ctx.modelNode, geometryCfg);\n } else {\n geometry = new VBOGeometry(ctx.modelNode, geometryCfg);\n }\n\n meshCfg.geometry = geometry;\n\n materialIndex = primitiveInfo.material;\n if (materialIndex !== null && materialIndex !== undefined) {\n materialInfo = json.materials[materialIndex];\n if (materialInfo) {\n meshCfg.material = materialInfo._material;\n }\n }\n\n mesh.push(meshCfg);\n }\n }\n meshInfo._mesh = mesh;\n }\n\n function loadDefaultScene(ctx) {\n var json = ctx.json;\n var scene = json.scene || 0;\n var defaultSceneInfo = json.scenes[scene];\n if (!defaultSceneInfo) {\n error(ctx, \"glTF has no default scene\");\n return;\n }\n loadScene(ctx, defaultSceneInfo);\n }\n\n function loadScene(ctx, sceneInfo) {\n var nodes = sceneInfo.nodes;\n if (!nodes) {\n return;\n }\n var json = ctx.json;\n var glTFNode;\n for (var i = 0, len = nodes.length; i < len; i++) {\n glTFNode = json.nodes[nodes[i]];\n if (!glTFNode) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n loadNode(ctx, glTFNode, null, null);\n }\n }\n\n function loadNode(ctx, glTFNode, matrix, parent) {\n\n parent = parent || ctx.modelNode;\n\n var createEntity;\n\n if (ctx.prioritizeGLTFNode) {\n const priority = ctx.prioritizeGLTFNode(ctx.modelNode.id, glTFNode);\n if (priority === undefined || priority === null) {\n return;\n }\n }\n\n if (ctx.handleGLTFNode) {\n var actions = {};\n if (!ctx.handleGLTFNode(ctx.modelNode.id, glTFNode, actions)) {\n return;\n }\n if (actions.createEntity) {\n createEntity = actions.createEntity;\n }\n }\n\n const json = ctx.json;\n const modelNode = ctx.modelNode;\n const hasChildNodes = glTFNode.children && glTFNode.children.length > 0;\n\n var localMatrix;\n\n if (glTFNode.matrix) {\n localMatrix = glTFNode.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.translation) {\n localMatrix = math.translationMat4v(glTFNode.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.rotation) {\n localMatrix = math.quaternionToMat4(glTFNode.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.scale) {\n localMatrix = math.scalingMat4v(glTFNode.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, localMatrix);\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.mesh !== undefined) {\n\n var meshInfo = json.meshes[glTFNode.mesh];\n\n if (meshInfo) {\n\n var meshesInfo = meshInfo._mesh;\n var meshesInfoMesh;\n var mesh;\n var numMeshes = meshesInfo.length;\n\n if (!createEntity && numMeshes > 0 && !hasChildNodes) {\n\n // Case 1: Not creating object, node has meshes, node has no child nodes\n\n for (var i = 0, len = numMeshes; i < len; i++) {\n meshesInfoMesh = meshesInfo[i];\n let meshCfg = {\n geometry: meshesInfoMesh.geometry,\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, meshCfg);\n meshCfg.material = meshesInfoMesh.material;\n mesh = new Mesh(modelNode, meshCfg);\n parent.addChild(mesh, false); // Don't automatically inherit properties\n }\n return;\n }\n\n if (createEntity && numMeshes === 1 && !hasChildNodes) {\n\n // Case 2: Creating object, node has one mesh, node has no child nodes\n\n meshesInfoMesh = meshesInfo[0];\n let meshCfg = {\n geometry: meshesInfoMesh.geometry,\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, meshCfg);\n meshCfg.material = meshesInfoMesh.material;\n utils.apply(createEntity, meshCfg);\n mesh = new Mesh(modelNode, meshCfg);\n parent.addChild(mesh, false); // Don't automatically inherit properties\n return;\n }\n\n if (createEntity && numMeshes > 0 && !hasChildNodes) {\n\n // Case 3: Creating object, node has meshes, node has no child nodes\n\n let nodeCfg = {\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, nodeCfg);\n utils.apply(createEntity, nodeCfg);\n let childNode = new Node(modelNode, nodeCfg);\n parent.addChild(childNode, false);\n for (let i = 0, len = numMeshes; i < len; i++) {\n meshesInfoMesh = meshesInfo[i];\n let meshCfg = {\n geometry: meshesInfoMesh.geometry\n };\n utils.apply(ctx.modelNodeProps, meshCfg);\n meshCfg.material = meshesInfoMesh.material;\n utils.apply(createEntity, meshCfg);\n meshCfg.id = null; // Avoid ID clash with parent Node\n mesh = new Mesh(modelNode, meshCfg);\n childNode.addChild(mesh, false);\n }\n return;\n }\n\n if (!createEntity && numMeshes > 0 && hasChildNodes) {\n\n // Case 4: Not creating object, node has meshes, node has child nodes\n\n let nodeCfg = {\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, nodeCfg);\n let childNode = new Node(modelNode, nodeCfg);\n parent.addChild(childNode, false);\n for (let i = 0, len = numMeshes; i < len; i++) {\n meshesInfoMesh = meshesInfo[i];\n let meshCfg = {\n geometry: meshesInfoMesh.geometry\n };\n utils.apply(nodeCfg, meshCfg);\n meshCfg.id = null; // Avoid ID clash with parent Node\n meshCfg.matrix = null; // Node has matrix\n meshCfg.material = meshesInfoMesh.material;\n mesh = new Mesh(modelNode, meshCfg);\n childNode.addChild(mesh, false);\n }\n matrix = null;\n parent = childNode;\n }\n\n if (createEntity && numMeshes === 0 && hasChildNodes) {\n\n // Case 5: Creating explicit object, node has meshes OR node has child nodes\n\n let nodeCfg = {\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, nodeCfg);\n utils.apply(createEntity, nodeCfg);\n createEntity.matrix = matrix;\n let childNode = new Node(modelNode, nodeCfg);\n parent.addChild(childNode, false); // Don't automatically inherit properties\n matrix = null;\n parent = childNode;\n }\n\n if (createEntity && numMeshes > 0 || hasChildNodes) {\n\n // Case 6: Creating explicit object, node has meshes OR node has child nodes\n\n let nodeCfg = {\n matrix: matrix\n };\n utils.apply(ctx.modelNodeProps, nodeCfg);\n if (createEntity) {\n utils.apply(createEntity, nodeCfg);\n }\n let childNode = new Node(modelNode, nodeCfg);\n parent.addChild(childNode, false); // Don't automatically inherit properties\n for (let i = 0, len = numMeshes; i < len; i++) {\n meshesInfoMesh = meshesInfo[i];\n let meshCfg = {\n geometry: meshesInfoMesh.geometry\n };\n utils.apply(ctx.modelProps, meshCfg);\n meshCfg.material = meshesInfoMesh.material;\n if (createEntity) {\n utils.apply(createEntity, meshCfg);\n }\n meshCfg.id = null; // Avoid ID clash with parent Node\n mesh = new Mesh(modelNode, meshCfg);\n childNode.addChild(mesh, false); // Don't automatically inherit properties\n }\n matrix = null;\n parent = childNode;\n }\n }\n }\n\n if (glTFNode.children) {\n var children = glTFNode.children;\n var childNodeInfo;\n var childNodeIdx;\n for (let i = 0, len = children.length; i < len; i++) {\n childNodeIdx = children[i];\n childNodeInfo = json.nodes[childNodeIdx];\n if (!childNodeInfo) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n loadNode(ctx, childNodeInfo, matrix, parent);\n }\n }\n }\n\n function error(ctx, msg) {\n ctx.plugin.error(msg);\n }\n})();\n\n/**\n * @private\n */\nclass GLTFPerformanceModelLoader {\n\n constructor(cfg) { // TODO: Loading options fallbacks on loader, eg. handleGLTFNode etc\n }\n\n load(plugin, performanceModel, src, options, ok, error) {\n options = options || {};\n loadGLTF(plugin, performanceModel, src, options, function () {\n core.scheduleTask(function () {\n performanceModel.scene.fire(\"modelLoaded\", performanceModel.id); // FIXME: Assumes listeners know order of these two events\n performanceModel.fire(\"loaded\", true, false);\n });\n if (ok) {\n ok();\n }\n },\n function (msg) {\n plugin.error(msg);\n if (error) {\n error(msg);\n }\n performanceModel.fire(\"error\", msg);\n });\n }\n\n parse(plugin, performanceModel, gltf, options, ok, error) {\n options = options || {};\n parseGLTF(plugin, gltf, \"\", options, performanceModel, function () {\n performanceModel.scene.fire(\"modelLoaded\", performanceModel.id); // FIXME: Assumes listeners know order of these two events\n performanceModel.fire(\"loaded\", true, false);\n if (ok) {\n ok();\n }\n },\n function (msg) {\n performanceModel.error(msg);\n performanceModel.fire(\"error\", msg);\n if (error) {\n error(msg);\n }\n });\n }\n}\n\nconst INSTANCE_THRESHOLD = 1;\n\nconst loadGLTF = (function () {\n\n return function (plugin, performanceModel, src, options, ok, error) {\n const spinner = plugin.viewer.scene.canvas.spinner;\n spinner.processes++;\n plugin.dataSource.getGLTF(src, function (json) { // OK\n spinner.processes--;\n parseGLTF(plugin, json, src, options, performanceModel, ok, error);\n },\n error);\n };\n})();\n\nconst parseGLTF = (function () {\n\n const WEBGL_COMPONENT_TYPES = {\n 5120: Int8Array,\n 5121: Uint8Array,\n 5122: Int16Array,\n 5123: Uint16Array,\n 5125: Uint32Array,\n 5126: Float32Array\n };\n\n const WEBGL_TYPE_SIZES = {\n 'SCALAR': 1,\n 'VEC2': 2,\n 'VEC3': 3,\n 'VEC4': 4,\n 'MAT2': 4,\n 'MAT3': 9,\n 'MAT4': 16\n };\n\n return function (plugin, json, src, options, performanceModel, ok) {\n const ctx = {\n src: src,\n loadBuffer: options.loadBuffer,\n handleGLTFNode: options.handleGLTFNode,\n json: json,\n scene: performanceModel.scene,\n plugin: plugin,\n performanceModel: performanceModel,\n geometryCreated: {},\n numObjects: 0,\n nodes: []\n };\n const spinner = plugin.viewer.scene.canvas.spinner;\n spinner.processes++;\n loadBuffers(ctx, function () {\n loadBufferViews(ctx);\n freeBuffers(ctx); // Don't need buffers once we've created views of them\n loadMaterials(ctx);\n spinner.processes--;\n loadDefaultScene(ctx);\n performanceModel.finalize();\n ok();\n });\n };\n\n function loadBuffers(ctx, ok) {\n const buffers = ctx.json.buffers;\n if (buffers) {\n let numToLoad = buffers.length;\n for (let i = 0, len = buffers.length; i < len; i++) {\n loadBuffer(ctx, buffers[i], function () {\n if (--numToLoad === 0) {\n ok();\n }\n }, function (msg) {\n ctx.plugin.error(msg);\n if (--numToLoad === 0) {\n ok();\n }\n });\n }\n } else {\n ok();\n }\n }\n\n function loadBuffer(ctx, bufferInfo, ok, err) {\n const uri = bufferInfo.uri;\n if (uri) {\n ctx.plugin.dataSource.getArrayBuffer(ctx.src, uri, function (data) {\n bufferInfo._buffer = data;\n ok();\n },\n err);\n } else {\n err('gltf/handleBuffer missing uri in ' + JSON.stringify(bufferInfo));\n }\n }\n\n function loadBufferViews(ctx) {\n const bufferViewsInfo = ctx.json.bufferViews;\n if (bufferViewsInfo) {\n for (let i = 0, len = bufferViewsInfo.length; i < len; i++) {\n loadBufferView(ctx, bufferViewsInfo[i]);\n }\n }\n }\n\n function loadBufferView(ctx, bufferViewInfo) {\n const buffer = ctx.json.buffers[bufferViewInfo.buffer];\n bufferViewInfo._typedArray = null;\n const byteLength = bufferViewInfo.byteLength || 0;\n const byteOffset = bufferViewInfo.byteOffset || 0;\n bufferViewInfo._buffer = buffer._buffer.slice(byteOffset, byteOffset + byteLength);\n }\n\n function freeBuffers(ctx) {\n const buffers = ctx.json.buffers;\n if (buffers) {\n for (let i = 0, len = buffers.length; i < len; i++) {\n buffers[i]._buffer = null;\n }\n }\n }\n\n function loadMaterials(ctx) {\n const materialsInfo = ctx.json.materials;\n if (materialsInfo) {\n for (let i = 0, len = materialsInfo.length; i < len; i++) {\n const materialInfo = materialsInfo[i];\n const material = loadMaterialColorize(ctx, materialInfo);\n materialInfo._rgbaColor = material;\n }\n }\n }\n\n function loadMaterialColorize(ctx, materialInfo) { // Substitute RGBA for material, to use fast flat shading instead\n const colorize = new Float32Array([1, 1, 1, 1]);\n const extensions = materialInfo.extensions;\n if (extensions) {\n const specularPBR = extensions[\"KHR_materials_pbrSpecularGlossiness\"];\n if (specularPBR) {\n const diffuseFactor = specularPBR.diffuseFactor;\n if (diffuseFactor !== null && diffuseFactor !== undefined) {\n colorize.set(diffuseFactor);\n }\n }\n const common = extensions[\"KHR_materials_common\"];\n if (common) {\n const technique = common.technique;\n const values = common.values || {};\n const blinn = technique === \"BLINN\";\n const phong = technique === \"PHONG\";\n const lambert = technique === \"LAMBERT\";\n const diffuse = values.diffuse;\n if (diffuse && (blinn || phong || lambert)) {\n if (!utils.isString(diffuse)) {\n colorize.set(diffuse);\n }\n }\n const transparency = values.transparency;\n if (transparency !== null && transparency !== undefined) {\n colorize[3] = transparency;\n }\n const transparent = values.transparent;\n if (transparent !== null && transparent !== undefined) {\n colorize[3] = transparent;\n }\n }\n }\n const metallicPBR = materialInfo.pbrMetallicRoughness;\n if (metallicPBR) {\n const baseColorFactor = metallicPBR.baseColorFactor;\n if (baseColorFactor) {\n colorize.set(baseColorFactor);\n }\n }\n return colorize;\n }\n\n function loadDefaultScene(ctx) {\n const json = ctx.json;\n const scene = json.scene || 0;\n const defaultSceneInfo = json.scenes[scene];\n if (!defaultSceneInfo) {\n error(ctx, \"glTF has no default scene\");\n return;\n }\n preprocessScene(ctx, defaultSceneInfo);\n loadScene(ctx, defaultSceneInfo);\n }\n\n function preprocessScene(ctx, sceneInfo) {\n const nodes = sceneInfo.nodes;\n if (!nodes) {\n return;\n }\n const json = ctx.json;\n for (let i = 0, len = nodes.length; i < len; i++) {\n const glTFNode = json.nodes[nodes[i]];\n if (!glTFNode) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, i);\n }\n }\n\n function loadScene(ctx, sceneInfo) {\n const nodes = sceneInfo.nodes;\n if (!nodes) {\n return;\n }\n const json = ctx.json;\n for (let i = 0, len = nodes.length; i < len; i++) {\n const glTFNode = json.nodes[nodes[i]];\n if (!glTFNode) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, glTFNode);\n }\n ctx.plugin.viewer.scene.canvas.spinner.processes++;\n for (let i = 0, len = nodes.length; i < len; i++) {\n const glTFNode = json.nodes[nodes[i]];\n loadNode(ctx, glTFNode, null);\n }\n ctx.plugin.viewer.scene.canvas.spinner.processes--;\n }\n\n function countMeshUsage(ctx, glTFNode) {\n const json = ctx.json;\n const mesh = glTFNode.mesh;\n if (mesh !== undefined) {\n const meshInfo = json.meshes[glTFNode.mesh];\n if (meshInfo) {\n meshInfo.instances = meshInfo.instances ? meshInfo.instances + 1 : 1;\n }\n }\n if (glTFNode.children) {\n const children = glTFNode.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNodeIdx = children[i];\n const childNodeInfo = json.nodes[childNodeIdx];\n if (!childNodeInfo) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n countMeshUsage(ctx, childNodeInfo);\n }\n }\n }\n\n function loadNode(ctx, glTFNode, matrix) {\n\n const json = ctx.json;\n let localMatrix;\n\n if (glTFNode.matrix) {\n localMatrix = glTFNode.matrix;\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.translation) {\n localMatrix = math.translationMat4v(glTFNode.translation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.rotation) {\n localMatrix = math.quaternionToMat4(glTFNode.rotation);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.scale) {\n localMatrix = math.scalingMat4v(glTFNode.scale);\n if (matrix) {\n matrix = math.mulMat4(matrix, localMatrix, math.mat4());\n } else {\n matrix = localMatrix;\n }\n }\n\n if (glTFNode.mesh !== undefined) {\n\n const meshInfo = json.meshes[glTFNode.mesh];\n\n if (meshInfo) {\n\n let createEntity;\n\n if (ctx.handleGLTFNode) {\n const actions = {};\n if (!ctx.handleGLTFNode(ctx.performanceModel.id, glTFNode, actions)) {\n return;\n }\n if (actions.createEntity) {\n createEntity = actions.createEntity;\n }\n }\n\n const performanceModel = ctx.performanceModel;\n const worldMatrix = matrix ? matrix.slice() : math.identityMat4();\n const numPrimitives = meshInfo.primitives.length;\n\n if (numPrimitives > 0) {\n\n const meshIds = [];\n\n for (let i = 0; i < numPrimitives; i++) {\n const primitiveInfo = meshInfo.primitives[i];\n if (primitiveInfo.mode < 4 ) {\n continue;\n }\n const meshCfg = {\n id: performanceModel.id + \".\" + ctx.numObjects++,\n matrix: worldMatrix\n };\n\n const materialIndex = primitiveInfo.material;\n let materialInfo;\n if (materialIndex !== null && materialIndex !== undefined) {\n materialInfo = json.materials[materialIndex];\n }\n if (materialInfo) {\n meshCfg.color = materialInfo._rgbaColor;\n meshCfg.opacity = materialInfo._rgbaColor[3];\n\n } else {\n meshCfg.color = new Float32Array([1.0, 1.0, 1.0]);\n meshCfg.opacity = 1.0;\n }\n\n if (createEntity) {\n if (createEntity.colorize) {\n meshCfg.color = createEntity.colorize;\n }\n if (createEntity.opacity !== undefined && createEntity.opacity !== null) {\n meshCfg.opacity = createEntity.opacity;\n }\n }\n\n if (meshInfo.instances > INSTANCE_THRESHOLD) {\n\n // Instancing\n\n const geometryId = performanceModel.id + \".\" + glTFNode.mesh + \".\" + i;\n if (!ctx.geometryCreated[geometryId]) {\n const geometryCfg = {\n id: geometryId\n };\n loadPrimitiveGeometry(ctx, primitiveInfo, geometryCfg);\n performanceModel.createGeometry(geometryCfg);\n ctx.geometryCreated[geometryId] = true;\n }\n\n meshCfg.geometryId = geometryId;\n\n performanceModel.createMesh(meshCfg);\n meshIds.push(meshCfg.id);\n\n } else {\n\n // Batching\n\n loadPrimitiveGeometry(ctx, primitiveInfo, meshCfg);\n\n performanceModel.createMesh(meshCfg);\n meshIds.push(meshCfg.id);\n }\n }\n\n if (createEntity) {\n performanceModel.createEntity(utils.apply(createEntity, {\n meshIds: meshIds\n }));\n } else {\n performanceModel.createEntity({\n meshIds: meshIds\n });\n }\n }\n }\n }\n\n if (glTFNode.children) {\n const children = glTFNode.children;\n for (let i = 0, len = children.length; i < len; i++) {\n const childNodeIdx = children[i];\n const childNodeInfo = json.nodes[childNodeIdx];\n if (!childNodeInfo) {\n error(ctx, \"Node not found: \" + i);\n continue;\n }\n loadNode(ctx, childNodeInfo, matrix);\n }\n }\n }\n\n function loadPrimitiveGeometry(ctx, primitiveInfo, geometryCfg) {\n const attributes = primitiveInfo.attributes;\n if (!attributes) {\n return;\n }\n geometryCfg.primitive = \"triangles\";\n const indicesIndex = primitiveInfo.indices;\n if (indicesIndex !== null && indicesIndex !== undefined) {\n const accessorInfo = ctx.json.accessors[indicesIndex];\n geometryCfg.indices = loadAccessorTypedArray(ctx, accessorInfo);\n }\n const positionsIndex = attributes.POSITION;\n if (positionsIndex !== null && positionsIndex !== undefined) {\n const accessorInfo = ctx.json.accessors[positionsIndex];\n geometryCfg.positions = loadAccessorTypedArray(ctx, accessorInfo);\n // scalePositionsArray(geometryCfg.positions);\n }\n const normalsIndex = attributes.NORMAL;\n if (normalsIndex !== null && normalsIndex !== undefined) {\n const accessorInfo = ctx.json.accessors[normalsIndex];\n geometryCfg.normals = loadAccessorTypedArray(ctx, accessorInfo);\n }\n if (geometryCfg.indices) {\n geometryCfg.edgeIndices = buildEdgeIndices(geometryCfg.positions, geometryCfg.indices, null, 10); // Save PerformanceModel from building edges\n }\n }\n\n function loadAccessorTypedArray(ctx, accessorInfo) {\n const bufferViewInfo = ctx.json.bufferViews[accessorInfo.bufferView];\n const itemSize = WEBGL_TYPE_SIZES[accessorInfo.type];\n const TypedArray = WEBGL_COMPONENT_TYPES[accessorInfo.componentType];\n const elementBytes = TypedArray.BYTES_PER_ELEMENT; // For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\n const itemBytes = elementBytes * itemSize;\n if (accessorInfo.byteStride && accessorInfo.byteStride !== itemBytes) { // The buffer is not interleaved if the stride is the item size in bytes.\n error(\"interleaved buffer!\"); // TODO\n } else {\n return new TypedArray(bufferViewInfo._buffer, accessorInfo.byteOffset || 0, accessorInfo.count * itemSize);\n }\n }\n\n function error(ctx, msg) {\n ctx.plugin.error(msg);\n }\n})();\n\n/**\n * @desc Default initial properties for {@link Entity}s loaded from models accompanied by metadata.\n *\n * When loading a model, plugins such as {@link XKTLoaderPlugin} create\n * a tree of {@link Entity}s that represent the model. These loaders can optionally load metadata, to create\n * a {@link MetaModel} corresponding to the root {@link Entity}, with a {@link MetaObject} corresponding to each\n * object {@link Entity} within the tree.\n *\n * @type {{String:Object}}\n */\nconst IFCObjectDefaults = {\n\n IfcOpeningElement: {\n pickable: false,\n visible: false\n },\n\n IfcSpace: {\n colorize: [0.137255, 0.403922, 0.870588],\n pickable: false,\n visible: false,\n opacity: 0.4\n },\n\n IfcWindow: {\n colorize: [0.137255, 0.403922, 0.870588],\n opacity: 0.3\n },\n\n IfcPlate: {\n colorize: [0.8470588235, 0.427450980392, 0, 0.5],\n opacity: 0.3\n },\n\n DEFAULT: {\n }\n};\n\n/**\n * {@link Viewer} plugin that loads models from [glTF](https://www.khronos.org/gltf/).\n *\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which is indicated by each glTF ````node```` that has a ````name```` attribute. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n *\n * ## Metadata\n *\n * GLTFLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, GLTFLoaderPlugin\n * uses its own map of default colors and visibilities for IFC element types.\n *\n * ## Quality Setting\n *\n * By default, GLTFLoaderPlugin will load a high-performance scene representation that's optimized for low memory usage and\n * optimal rendering. The high-performance representation renders large numbers of objects efficiently, using geometry\n * batching and instancing, with simple Lambertian shading that ignores any textures and realistic materials in the glTF.\n *\n * Specifying ````performance:false```` to {@link GLTFLoaderPlugin#load} will internally load a heavier scene\n * representation comprised of {@link Node}, {@link Mesh}, {@link Geometry}, {@link Material} and {@link Texture} components,\n * that will exactly preserve the materials specified in the glTF. Use this when you want to load a model for a realistic preview,\n * maybe using PBR etc.\n *\n * We tend to use the default ````performance:true```` setting for CAD and BIM models, where structure is more important that\n * surface appearance.\n *\n * Publically, GLTFLoaderPlugin creates the same {@link Entity}s for both levels of performance. Privately, however, it implements\n * {@link Entity}s using two different sets of concrete subtypes, for its two different internally-managed scene representations.\n *\n * ## Usage\n *\n * In the example below we'll load the Schependomlaan model from a [glTF file](http://xeokit.github.io/xeokit-sdk/examples/models/gltf/schependomlaan/), along\n * with an accompanying JSON [IFC metadata file](http://xeokit.github.io/xeokit-sdk/examples/metaModels/schependomlaan/).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the GLTFLoaderPlugin will set the initial colors of object {@link Entity}s according\n * to the standard IFC element colors in the GLTFModel's current map. Override that with your own map via property {@link GLTFLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * We're leaving ````performance: true```` since our model has many objects and we're not interested in realistic rendering.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_OTCConferenceCenter)]\n *\n * ````javascript\n * import {Viewer, GLTFLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera,\n * // 3. Tweak the selection material (tone it down a bit)\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.orbitPitch(20);\n * viewer.camera.orbitYaw(-45);\n *\n * // 3\n * viewer.scene.selectedMaterial.fillAlpha = 0.1;\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a glTF loader plugin,\n * // 2. Load a glTF building model and JSON IFC metadata\n * // 3. Emphasis the edges to make it look nice\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // 2\n * var model = gltfLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\", // Creates a MetaModel (see below)\n * edges: true,\n * performance: true // Load high-performance scene representation (default is false)\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.glTF````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_glTF_Duplex_transform)]\n *\n * ````javascript\n * const model = gltfLoader.load({\n * src: \"./models/gltf/Duplex/scene.gltf\",\n * metaModelSrc: \"./models/gltf/Duplex/Duplex.json\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types. In the example below, we'll load only the\n * objects that represent walls.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_glTF_includeTypes_PlanView)]\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types. In the example below, we'll load only the\n * objects that do not represent empty space.\n *\n * ````javascript\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/OTCConferenceCenter/scene.gltf\",\n * metaModelSrc: \"./models/gltf/OTCConferenceCenter/metaModel.json\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n * @class GLTFLoaderPlugin\n */\nclass GLTFLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"GLTFLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {Object} [cfg.dataSource] A custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments. Defaults to an instance of {@link GLTFDefaultDataSource}, which loads over HTTP.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"GLTFLoader\", viewer, cfg);\n\n /**\n * @private\n */\n this._sceneGraphLoader = new GLTFSceneGraphLoader(this, cfg);\n\n /**\n * @private\n */\n this._performanceModelLoader = new GLTFPerformanceModelLoader(this, cfg);\n\n this.dataSource = cfg.dataSource;\n this.objectDefaults = cfg.objectDefaults;\n }\n\n /**\n * Sets a custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n set dataSource(value) {\n this._dataSource = value || new GLTFDefaultDataSource();\n }\n\n /**\n * Gets the custom data source through which the GLTFLoaderPlugin can load metadata, glTF and binary attachments.\n *\n * Default value is {@link GLTFDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n get dataSource() {\n return this._dataSource;\n }\n\n /**\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n set objectDefaults(value) {\n this._objectDefaults = value || IFCObjectDefaults;\n }\n\n /**\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n get objectDefaults() {\n return this._objectDefaults;\n }\n\n /**\n * Loads a glTF model from a file into this GLTFLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a glTF file, as an alternative to the ````gltf```` parameter.\n * @param {*} [params.gltf] glTF JSON, as an alternative to the ````src```` parameter.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file, as an alternative to the ````metaModelData```` parameter.\n * @param {*} [params.metaModelData] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @params {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @params {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.position=[0,0,0]] The model World-space 3D position.\n * @param {Number[]} [params.scale=[1,1,1]] The model's World-space scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's World-space rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [params.backfaces=false] When true, allows visible backfaces, wherever specified in the glTF. When false, ignores backfaces.\n * @param {Number} [params.edgeThreshold=10] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @params {Boolean} [params.performance=true] Set ````false```` to load all the materials and textures provided by the glTF file, otherwise leave ````true```` to load the default high-performance representation optimized for low memory usage and efficient rendering.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n */\n load(params = {}) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const performance = params.performance !== false;\n\n const model = performance\n\n // PerformanceModel provides performance-oriented scene representation\n // converting glTF materials to simple flat-shading without textures\n\n ? new PerformanceModel(this.viewer.scene, utils.apply(params, {\n isModel: true\n }))\n\n // Scene Node graph supports original glTF materials\n\n : new Node(this.viewer.scene, utils.apply(params, {\n isModel: true\n }));\n\n const modelId = model.id; // In case ID was auto-generated\n\n if (!params.src && !params.gltf) {\n this.error(\"load() param expected: src or gltf\");\n return model; // Return new empty model\n }\n\n const loader = performance ? this._performanceModelLoader : this._sceneGraphLoader;\n\n if (params.metaModelSrc || params.metaModelData) {\n\n const objectDefaults = params.objectDefaults || this._objectDefaults || IFCObjectDefaults;\n\n const processMetaModelData = (metaModelData) => {\n\n this.viewer.metaScene.createMetaModel(modelId, metaModelData, {\n includeTypes: params.includeTypes,\n excludeTypes: params.excludeTypes\n });\n\n this.viewer.scene.canvas.spinner.processes--;\n\n var includeTypes;\n if (params.includeTypes) {\n includeTypes = {};\n for (let i = 0, len = params.includeTypes.length; i < len; i++) {\n includeTypes[params.includeTypes[i]] = true;\n }\n }\n if (params.excludeTypes) {\n if (!includeTypes) {\n includeTypes = {};\n }\n for (let i = 0, len = params.excludeTypes.length; i < len; i++) {\n includeTypes[params.excludeTypes[i]] = true;\n }\n }\n\n params.readableGeometry = false;\n\n params.handleGLTFNode = (modelId, glTFNode, actions) => {\n\n const name = glTFNode.name;\n\n if (!name) {\n return true; // Continue descending this node subtree\n }\n\n const nodeId = name;\n const metaObject = this.viewer.metaScene.metaObjects[nodeId];\n const type = (metaObject ? metaObject.type : \"DEFAULT\") || \"DEFAULT\";\n\n actions.createEntity = {\n id: nodeId,\n isObject: true // Registers the Entity in Scene#objects\n };\n\n const props = objectDefaults[type];\n\n if (props) { // Set Entity's initial rendering state for recognized type\n\n if (props.visible === false) {\n actions.createEntity.visible = false;\n }\n\n if (props.colorize) {\n actions.createEntity.colorize = props.colorize;\n }\n\n if (props.pickable === false) {\n actions.createEntity.pickable = false;\n }\n\n if (props.opacity !== undefined && props.opacity !== null) {\n actions.createEntity.opacity = props.opacity;\n }\n }\n\n return true; // Continue descending this glTF node subtree\n };\n\n if (params.src) {\n loader.load(this, model, params.src, params);\n } else {\n loader.parse(this, model, params.gltf, params);\n }\n };\n\n if (params.metaModelSrc) {\n\n const metaModelSrc = params.metaModelSrc;\n\n this.viewer.scene.canvas.spinner.processes++;\n\n this._dataSource.getMetaModel(metaModelSrc, (metaModelData) => {\n\n this.viewer.scene.canvas.spinner.processes--;\n\n processMetaModelData(metaModelData);\n\n }, (errMsg) => {\n this.error(`load(): Failed to load model metadata for model '${modelId} from '${metaModelSrc}' - ${errMsg}`);\n this.viewer.scene.canvas.spinner.processes--;\n });\n\n } else if (params.metaModelData) {\n\n processMetaModelData(params.metaModelData);\n }\n\n } else {\n\n params.handleGLTFNode = (modelId, glTFNode, actions) => {\n\n const name = glTFNode.name;\n\n if (!name) {\n return true; // Continue descending this node subtree\n }\n\n const id = name;\n\n actions.createEntity = { // Create an Entity for this glTF scene node\n id: id,\n isObject: true // Registers the Entity in Scene#objects\n };\n\n return true; // Continue descending this glTF node subtree\n };\n\n if (params.src) {\n loader.load(this, model, params.src, params);\n } else {\n loader.parse(this, model, params.gltf, params);\n }\n }\n\n model.once(\"destroyed\", () => {\n this.viewer.metaScene.destroyMetaModel(modelId);\n });\n\n return model;\n }\n\n /**\n * Destroys this GLTFLoaderPlugin.\n */\n destroy() {\n super.destroy();\n }\n}\n\n/**\n * @private\n */\nfunction CubeTextureCanvas(viewer, cfg = {}) {\n\n const cubeColor = \"lightgrey\";\n const cubeHighlightColor = cfg.hoverColor || \"rgba(0,0,0,0.4)\";\n\n const height = 500;\n const width = height + (height / 3);\n const scale = width / 24;\n\n const facesZUp = [\n {boundary: [6, 6, 6, 6], color: cfg.frontColor || cfg.color || \"#55FF55\"},\n {boundary: [18, 6, 6, 6], color: cfg.backColor || cfg.color || \"#55FF55\"},\n {boundary: [12, 6, 6, 6], color: cfg.leftColor || cfg.color || \"#FF5555\"},\n {boundary: [0, 6, 6, 6], color: cfg.rightColor || cfg.color || \"#FF5555\"},\n {boundary: [6, 0, 6, 6], color: cfg.topColor || cfg.color || \"#7777FF\"},\n {boundary: [6, 12, 6, 6], color: cfg.bottomColor || cfg.color || \"#7777FF\"}\n ];\n\n const areasZUp = [\n {label: \"NavCube.front\", boundaries: [[7, 7, 4, 4]], dir: [0, 1, 0], up: [0, 0, 1]},\n {label: \"NavCube.back\", boundaries: [[19, 7, 4, 4]], dir: [0, -1, 0], up: [0, 0, 1]},\n {label: \"NavCube.right\", boundaries: [[13, 7, 4, 4]], dir: [-1, 0, 0], up: [0, 0, 1]},\n {label: \"NavCube.left\", boundaries: [[1, 7, 4, 4]], dir: [1, 0, 0], up: [0, 0, 1]},\n {label: \"NavCube.top\", boundaries: [[7, 1, 4, 4]], dir: [0, 0, -1], up: [0, 1, 0]},\n {label: \"NavCube.bottom\", boundaries: [[7, 13, 4, 4]], dir: [0, 0, 1], up: [0, -1, 0]},\n {boundaries: [[7, 5, 4, 2]], dir: [0, 1, -1], up: [0, 1, 1]},\n {boundaries: [[1, 6, 4, 1], [6, 1, 1, 4]], dir: [1, 0, -1], up: [1, 0, 1]},\n {boundaries: [[7, 0, 4, 1], [19, 6, 4, 1]], dir: [0, -1, -1], up: [0, -1, 1]},\n {boundaries: [[13, 6, 4, 1], [11, 1, 1, 4]], dir: [-1, 0, -1], up: [-1, 0, 1]},\n {boundaries: [[7, 11, 4, 2]], dir: [0, 1, 1], up: [0, -1, 1]},\n {boundaries: [[1, 11, 4, 1], [6, 13, 1, 4]], dir: [1, 0, 1], up: [-1, 0, 1]},\n {boundaries: [[7, 17, 4, 1], [19, 11, 4, 1]], dir: [0, -1, 1], up: [0, 1, 1]},\n {boundaries: [[13, 11, 4, 1], [11, 13, 1, 4]], dir: [-1, 0, 1], up: [1, 0, 1]},\n {boundaries: [[5, 7, 2, 4]], dir: [1, 1, 0], up: [0, 0, 1]},\n {boundaries: [[11, 7, 2, 4]], dir: [-1, 1, 0], up: [0, 0, 1]},\n {boundaries: [[17, 7, 2, 4]], dir: [-1, -1, 0], up: [0, 0, 1]},\n {boundaries: [[0, 7, 1, 4], [23, 7, 1, 4]], dir: [1, -1, 0], up: [0, 0, 1]},\n {boundaries: [[5, 11, 2, 2]], dir: [1, 1, 1], up: [-1, -1, 1]},\n {boundaries: [[23, 11, 1, 1], [6, 17, 1, 1], [0, 11, 1, 1]], dir: [1, -1, 1], up: [-1, 1, 1]},\n {boundaries: [[5, 5, 2, 2]], dir: [1, 1, -1], up: [1, 1, 1]},\n {boundaries: [[11, 17, 1, 1], [17, 11, 2, 1]], dir: [-1, -1, 1], up: [1, 1, 1]},\n {boundaries: [[17, 6, 2, 1], [11, 0, 1, 1]], dir: [-1, -1, -1], up: [-1, -1, 1]},\n {boundaries: [[11, 11, 2, 2]], dir: [-1, 1, 1], up: [1, -1, 1]},\n {boundaries: [[0, 6, 1, 1], [6, 0, 1, 1], [23, 6, 1, 1]], dir: [1, -1, -1], up: [1, -1, 1]},\n {boundaries: [[11, 5, 2, 2]], dir: [-1, 1, -1], up: [-1, 1, 1]}\n ];\n\n [\n {boundary: [6, 6, 6, 6], color: cfg.frontColor || cfg.color || \"#55FF55\"},\n {boundary: [18, 6, 6, 6], color: cfg.backColor || cfg.color || \"#55FF55\"},\n {boundary: [12, 6, 6, 6], color: cfg.leftColor || cfg.color || \"#FF5555\"},\n {boundary: [0, 6, 6, 6], color: cfg.rightColor || cfg.color || \"#FF5555\"},\n {boundary: [6, 0, 6, 6], color: cfg.topColor || cfg.color || \"#7777FF\"},\n {boundary: [6, 12, 6, 6], color: cfg.bottomColor || cfg.color || \"#7777FF\"}\n ];\n\n const areasYUp = [\n\n // Faces\n\n {yUp: \"\", label: \"NavCube.front\", boundaries: [[7, 7, 4, 4]], dir: [0, 0, -1], up: [0, 1, 0]},\n {label: \"NavCube.back\", boundaries: [[19, 7, 4, 4]], dir: [0, 0, 1], up: [0, 1, 0]},\n {label: \"NavCube.right\", boundaries: [[13, 7, 4, 4]], dir: [-1, 0, 0], up: [0, 1, 0]},\n {label: \"NavCube.left\", boundaries: [[1, 7, 4, 4]], dir: [1, 0, 0], up: [0, 1, 0]},\n {label: \"NavCube.top\", boundaries: [[7, 1, 4, 4]], dir: [0, -1, 0], up: [0, 0, -1]},\n {label: \"NavCube.bottom\", boundaries: [[7, 13, 4, 4]], dir: [0, 1, 0], up: [0, 0, 1]},\n {boundaries: [[7, 5, 4, 2]], dir: [0, -0.7071, -0.7071], up: [0, 0.7071, -0.7071]}, // Top-front edge\n {boundaries: [[1, 6, 4, 1], [6, 1, 1, 4]], dir: [1, -1, 0], up: [1, 1, 0]}, // Top-left edge\n {boundaries: [[7, 0, 4, 1], [19, 6, 4, 1]], dir: [0, -0.7071, 0.7071], up: [0, 0.7071, 0.7071]}, // Top-back edge\n {boundaries: [[13, 6, 4, 1], [11, 1, 1, 4]], dir: [-1, -1, 0], up: [-1, 1, 0]}, // Top-right edge\n {boundaries: [[7, 11, 4, 2]], dir: [0, 1, -1], up: [0, 1, 1]}, // Bottom-front edge\n {boundaries: [[1, 11, 4, 1], [6, 13, 1, 4]], dir: [1, 1, 0], up: [-1, 1, 0]}, // Bottom-left edge\n {boundaries: [[7, 17, 4, 1], [19, 11, 4, 1]], dir: [0, 1, 1], up: [0, 1, -1]}, // Bottom-back edge\n {boundaries: [[13, 11, 4, 1], [11, 13, 1, 4]], dir: [-1, 1, 0], up: [1, 1, 0]}, // Bottom-right edge\n {boundaries: [[5, 7, 2, 4]], dir: [1, 0, -1], up: [0, 1, 0]},// Front-left edge\n {boundaries: [[11, 7, 2, 4]], dir: [-1, 0, -1], up: [0, 1, 0]}, // Front-right edge\n {boundaries: [[17, 7, 2, 4]], dir: [-1, 0, 1], up: [0, 1, 0]},// Back-right edge\n {boundaries: [[0, 7, 1, 4], [23, 7, 1, 4]], dir: [1, 0, 1], up: [0, 1, 0]},// Back-left edge\n {boundaries: [[5, 11, 2, 2]], \"dir\": [0.5, 0.7071, -0.5], \"up\": [-0.5, 0.7071, 0.5]}, // Bottom-left-front corner\n {boundaries: [[23, 11, 1, 1], [6, 17, 1, 1], [0, 11, 1, 1]],\"dir\": [0.5, 0.7071, 0.5],\"up\": [-0.5, 0.7071, -0.5]},// Bottom-back-left corner\n {boundaries: [[5, 5, 2, 2]], \"dir\": [0.5, -0.7071, -0.5], \"up\": [0.5, 0.7071, -0.5]}, // Left-front-top corner\n {boundaries: [[11, 17, 1, 1], [17, 11, 2, 1]], \"dir\": [-0.5, 0.7071, 0.5], \"up\": [0.5, 0.7071, -0.5]}, // Bottom-back-right corner\n {boundaries: [[17, 6, 2, 1], [11, 0, 1, 1]], \"dir\": [-0.5, -0.7071, 0.5], \"up\": [-0.5, 0.7071, 0.5]}, // Top-back-right corner\n {boundaries: [[11, 11, 2, 2]], \"dir\": [-0.5, 0.7071, -0.5], \"up\": [0.5, 0.7071, 0.5]}, // Bottom-front-right corner\n {boundaries: [[0, 6, 1, 1], [6, 0, 1, 1], [23, 6, 1, 1]], \"dir\": [0.5, -0.7071, 0.5], \"up\": [0.5, 0.7071, 0.5]},// Top-back-left corner\n {boundaries: [[11, 5, 2, 2]], \"dir\": [-0.5, -0.7071, -0.5], \"up\": [-0.5, 0.7071, -0.5]}// Top-front-right corner\n ];\n\n for (let i = 0, len = areasZUp.length; i < len; i++) {\n math.normalizeVec3(areasZUp[i].dir, areasZUp[i].dir);\n math.normalizeVec3(areasZUp[i].up, areasZUp[i].up);\n }\n\n for (let i = 0, len = areasYUp.length; i < len; i++) {\n math.normalizeVec3(areasYUp[i].dir, areasYUp[i].dir);\n math.normalizeVec3(areasYUp[i].up, areasYUp[i].up);\n }\n var areas = areasYUp;\n\n this._textureCanvas = document.createElement('canvas');\n this._textureCanvas.width = width;\n this._textureCanvas.height = height;\n this._textureCanvas.style.width = width + \"px\";\n this._textureCanvas.style.height = height + \"px\";\n this._textureCanvas.style.padding = \"0\";\n this._textureCanvas.style.margin = \"0\";\n this._textureCanvas.style.top = \"0\";\n this._textureCanvas.style.background = cubeColor;\n this._textureCanvas.style.position = \"absolute\";\n this._textureCanvas.style.opacity = \"1.0\";\n this._textureCanvas.style.visibility = \"hidden\";\n this._textureCanvas.style[\"z-index\"] = 2000000;\n\n const body = document.getElementsByTagName(\"body\")[0];\n body.appendChild(this._textureCanvas);\n\n const context = this._textureCanvas.getContext(\"2d\");\n\n let zUp = false;\n\n function paint() {\n\n for (let i = 0, len = facesZUp.length; i < len; i++) {\n const face = facesZUp[i];\n const boundary = face.boundary;\n const xmin = Math.round(boundary[0] * scale);\n const ymin = Math.round(boundary[1] * scale);\n const width = Math.round(boundary[2] * scale);\n const height = Math.round(boundary[3] * scale);\n context.fillStyle = face.color;\n context.fillRect(xmin, ymin, width, height);\n }\n\n for (let i = 0, len = areas.length; i < len; i++) {\n let xmin;\n let ymin;\n let width;\n let height;\n const area = areas[i];\n\n const boundaries = area.boundaries;\n for (var j = 0, lenj = boundaries.length; j < lenj; j++) {\n const boundary = boundaries[j];\n xmin = Math.round(boundary[0] * scale);\n ymin = Math.round(boundary[1] * scale);\n width = Math.round(boundary[2] * scale);\n height = Math.round(boundary[3] * scale);\n if (area.highlighted) {\n context.fillStyle = area.highlighted ? cubeHighlightColor : (area.color || cubeColor);\n context.fillRect(xmin, ymin, width, height);\n }\n }\n if (area.label) {\n context.fillStyle = \"black\";\n context.font = '60px sans-serif';\n context.textAlign = \"center\";\n var xcenter = xmin + (width * 0.5);\n var ycenter = ymin + (height * 0.7);\n context.fillText(translateLabel(area.label), xcenter, ycenter, 80);\n }\n }\n\n viewer.scene.glRedraw();\n }\n\n const translateLabel = (function () {\n\n const swizzleYUp = {\n \"NavCube.front\": \"NavCube.front\",\n \"NavCube.back\": \"NavCube.back\",\n \"NavCube.right\": \"NavCube.right\",\n \"NavCube.left\": \"NavCube.left\",\n \"NavCube.top\": \"NavCube.top\",\n \"NavCube.bottom\": \"NavCube.bottom\"\n };\n\n const swizzleZUp = {\n \"NavCube.front\": \"NavCube.front\",\n \"NavCube.back\": \"NavCube.back\",\n \"NavCube.right\": \"NavCube.right\",\n \"NavCube.left\": \"NavCube.left\",\n \"NavCube.top\": \"NavCube.top\",\n \"NavCube.bottom\": \"NavCube.bottom\"\n };\n\n const defaultLabels = {\n \"NavCube.front\": \"FRONT\",\n \"NavCube.back\": \"BACK\",\n \"NavCube.right\": \"RIGHT\",\n \"NavCube.left\": \"LEFT\",\n \"NavCube.top\": \"TOP\",\n \"NavCube.bottom\": \"BOTTOM\"\n };\n\n return function (key) {\n const swizzle = zUp ? swizzleZUp : swizzleYUp;\n const swizzledKey = swizzle ? swizzle[key] : null;\n if (swizzledKey) {\n return viewer.localeService.translate(swizzledKey) || defaultLabels[swizzledKey] || swizzledKey;\n }\n return key;\n };\n })();\n\n this.setZUp = function () {\n zUp = true;\n areas = areasZUp;\n this.clear();\n };\n\n this.setYUp = function () {\n zUp = false;\n areas = areasYUp;\n this.clear();\n };\n\n this.clear = function () {\n context.fillStyle = cubeColor;\n context.fillRect(0, 0, width, height);\n for (var i = 0, len = areas.length; i < len; i++) {\n const area = areas[i];\n area.highlighted = false;\n }\n paint();\n };\n\n this.getArea = function (uv) {\n const s = uv[0] * width;\n const t = height - (uv[1] * height); // Correct for our texture Y-flipping\n for (var i = 0, len = areas.length; i < len; i++) {\n const area = areas[i];\n const boundaries = area.boundaries;\n for (var j = 0, lenj = boundaries.length; j < lenj; j++) {\n const boundary = boundaries[j];\n if (s >= (boundary[0] * scale) && s <= ((boundary[0] + boundary[2]) * scale) && t >= (boundary[1] * scale) && t <= ((boundary[1] + boundary[3]) * scale)) {\n return i;\n }\n }\n }\n return -1;\n };\n\n this.setAreaHighlighted = function (areaId, highlighted) {\n var area = areas[areaId];\n if (!area) {\n throw \"Area not found: \" + areaId;\n }\n area.highlighted = !!highlighted;\n paint();\n };\n\n this.getAreaDir = function (areaId) {\n var area = areas[areaId];\n if (!area) {\n throw \"Unknown area: \" + areaId;\n }\n return area.dir;\n };\n\n this.getAreaUp = function (areaId) {\n var area = areas[areaId];\n if (!area) {\n throw \"Unknown area: \" + areaId;\n }\n return area.up;\n };\n\n this.getImage = function () {\n return this._textureCanvas;\n };\n\n this.destroy = function () {\n if (this._textureCanvas) {\n this._textureCanvas.parentNode.removeChild(this._textureCanvas);\n this._textureCanvas = null;\n }\n };\n}\n\n/**\n * {@link Viewer} plugin that lets us look at the entire {@link Scene} from along a chosen axis or diagonal.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/#gizmos_NavCubePlugin)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#gizmos_NavCubePlugin)]\n *\n * ## Overview\n *\n * * Rotating the NavCube causes the Viewer's {@link Camera} to orbit its current\n * point-of-interest. Conversely, orbiting the Camera causes the NavCube to rotate accordingly.\n * * The faces of the NavCube are aligned with the Viewer's {@link Scene}'s World-space coordinate axis. Clicking on a face moves\n * the Camera to look at the entire Scene along the corresponding axis. Clicking on an edge or a corner looks at\n * the entire Scene along a diagonal.\n * * The NavCube can be configured to either jump or fly the Camera to each new position. We can configure how tightly the\n * NavCube fits the Scene to view, and when flying, we can configure how fast it flies. We can also configure whether the\n * NavCube fits all objects to view, or just the currently visible objects. See below for a usage example.\n * * Clicking the NavCube also sets {@link CameraControl#pivotPos} to the center of the fitted objects.\n *\n * ## Usage\n *\n * In the example below, we'll create a Viewer and add a NavCubePlugin, which will create a NavCube gizmo in the canvas\n * with the given ID. Then we'll use the {@link XKTLoaderPlugin} to load a model into the Viewer's Scene. We can then\n * use the NavCube to look at the model along each axis or diagonal.\n *\n * ````JavaScript\n * import {Viewer, XKTLoaderPlugin, NavCubePlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [-3.93, 2.85, 27.01];\n * viewer.camera.look = [4.40, 3.72, 8.89];\n * viewer.camera.up = [-0.01, 0.99, 0.03];\n *\n * const navCube = new NavCubePlugin(viewer, {\n *\n * canvasID: \"myNavCubeCanvas\",\n *\n * visible: true, // Initially visible (default)\n *\n * cameraFly: true, // Fly camera to each selected axis/diagonal\n * cameraFitFOV: 45, // How much field-of-view the scene takes once camera has fitted it to view\n * cameraFlyDuration: 0.5,// How long (in seconds) camera takes to fly to each new axis/diagonal\n *\n * fitVisible: false, // Fit whole scene, including invisible objects (default)\n *\n * synchProjection: false // Keep NavCube in perspective projection, even when camera switches to ortho (default)\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Duplex.ifc.xkt\",\n * edges: true\n * });\n * ````\n */\nclass NavCubePlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg NavCubePlugin configuration.\n * @param {String} [cfg.id=\"NavCube\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {String} [cfg.canvasId] ID of an existing HTML canvas to display the NavCube - either this or canvasElement is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLCanvasElement} [cfg.canvasElement] Reference of an existing HTML canvas to display the NavCube - either this or canvasId is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {Boolean} [cfg.visible=true] Initial visibility.\n * @param {Boolean} [cfg.shadowVisible=true] Whether the shadow of the cube is visible.\n * @param {String} [cfg.cameraFly=true] Whether the {@link Camera} flies or jumps to each selected axis or diagonal.\n * @param {String} [cfg.cameraFitFOV=45] How much of the field-of-view, in degrees, that the 3D scene should fill the {@link Canvas} when the {@link Camera} moves to an axis or diagonal.\n * @param {String} [cfg.cameraFlyDuration=0.5] When flying the {@link Camera} to each new axis or diagonal, how long, in seconds, that the Camera takes to get there.\n * @param {String} [cfg.color=\"lightgrey] Custom uniform color for the faces of the NavCube.\n * @param {String} [cfg.frontColor=\"#55FF55\"] Custom color for the front face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.backColor=\"#55FF55\"] Custom color for the back face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.leftColor=\"#FF5555\"] Custom color for the left face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.rightColor=\"#FF5555\"] Custom color for the right face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.topColor=\"#5555FF\"] Custom color for the top face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.bottomColor=\"#5555FF\"] Custom color for the bottom face of the NavCube. Overrides ````color````.\n * @param {String} [cfg.hoverColor=\"rgba(0,0,0,0.4)\"] Custom color for highlighting regions on the NavCube as we hover the pointer over them.\n * @param {Boolean} [cfg.fitVisible=false] Sets whether the axis, corner and edge-aligned views will fit the\n * view to the entire {@link Scene} or just to visible object-{@link Entity}s. Entitys are visible objects when {@link Entity#isObject} and {@link Entity#visible} are both ````true````.\n * @param {Boolean} [cfg.synchProjection=false] Sets whether the NavCube switches between perspective and orthographic projections in synchrony with the {@link Camera}. When ````false````, the NavCube will always be rendered with perspective projection.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"NavCube\", viewer, cfg);\n\n viewer.navCube = this;\n\n var visible = true;\n\n try {\n this._navCubeScene = new Scene(viewer, {\n canvasId: cfg.canvasId,\n canvasElement: cfg.canvasElement,\n transparent: true\n });\n\n this._navCubeCanvas = this._navCubeScene.canvas.canvas;\n\n this._navCubeScene.input.keyboardEnabled = false; // Don't want keyboard input in the NavCube\n\n } catch (error) {\n this.error(error);\n return;\n }\n\n const navCubeScene = this._navCubeScene;\n\n navCubeScene.clearLights();\n\n new DirLight(navCubeScene, {dir: [0.4, -0.4, 0.8], color: [0.8, 1.0, 1.0], intensity: 1.0, space: \"view\"});\n new DirLight(navCubeScene, {dir: [-0.8, -0.3, -0.4], color: [0.8, 0.8, 0.8], intensity: 1.0, space: \"view\"});\n new DirLight(navCubeScene, {dir: [0.8, -0.6, -0.8], color: [1.0, 1.0, 1.0], intensity: 1.0, space: \"view\"});\n\n this._navCubeCamera = navCubeScene.camera;\n this._navCubeCamera.ortho.scale = 7.0;\n this._navCubeCamera.ortho.near = 0.1;\n this._navCubeCamera.ortho.far = 2000;\n\n navCubeScene.edgeMaterial.edgeColor = [0.2, 0.2, 0.2];\n navCubeScene.edgeMaterial.edgeAlpha = 0.6;\n\n this._zUp = Boolean(viewer.camera.zUp);\n\n var self = this;\n\n this._synchCamera = (function () {\n var matrix = math.rotationMat4c(-90 * math.DEGTORAD, 1, 0, 0);\n var eyeLookVec = math.vec3();\n var eyeLookVecCube = math.vec3();\n var upCube = math.vec3();\n return function () {\n var eye = viewer.camera.eye;\n var look = viewer.camera.look;\n var up = viewer.camera.up;\n eyeLookVec = math.mulVec3Scalar(math.normalizeVec3(math.subVec3(eye, look, eyeLookVec)), 5);\n if (self._zUp) { // +Z up\n math.transformVec3(matrix, eyeLookVec, eyeLookVecCube);\n math.transformVec3(matrix, up, upCube);\n self._navCubeCamera.look = [0, 0, 0];\n self._navCubeCamera.eye = math.transformVec3(matrix, eyeLookVec, eyeLookVecCube);\n self._navCubeCamera.up = math.transformPoint3(matrix, up, upCube);\n } else { // +Y up\n self._navCubeCamera.look = [0, 0, 0];\n self._navCubeCamera.eye = eyeLookVec;\n self._navCubeCamera.up = up;\n }\n };\n }());\n\n this._cubeTextureCanvas = new CubeTextureCanvas(viewer, cfg);\n\n this._cubeSampler = new Texture(navCubeScene, {\n image: this._cubeTextureCanvas.getImage(),\n flipY: true,\n wrapS: \"clampToEdge\",\n wrapT: \"clampToEdge\"\n });\n\n this._cubeMesh = new Mesh(navCubeScene, {\n geometry: new ReadableGeometry(navCubeScene, {\n primitive: \"triangles\",\n normals: [\n 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0,\n 0, 1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, -1,\n 0, 0, -1, 0, 0, -1, 0, 0, -1\n ],\n positions: [\n 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, 1, 1, 1, 1, -1, -1,\n 1, -1, -1, 1, 1, -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1,\n 1, 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1\n ],\n uv: [\n 0.5, 0.6666, 0.25, 0.6666, 0.25, 0.3333, 0.5, 0.3333, 0.5, 0.6666, 0.5, 0.3333, 0.75, 0.3333, 0.75, 0.6666,\n 0.5, 0.6666, 0.5, 1, 0.25, 1, 0.25, 0.6666, 0.25, 0.6666, 0.0, 0.6666, 0.0, 0.3333, 0.25, 0.3333,\n 0.25, 0, 0.50, 0, 0.50, 0.3333, 0.25, 0.3333, 0.75, 0.3333, 1.0, 0.3333, 1.0, 0.6666, 0.75, 0.6666\n ],\n indices: [\n 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11, 12, 13, 14, 12, 14, 15, 16, 17, 18, 16,\n 18, 19, 20, 21, 22, 20, 22, 23\n ]\n }),\n material: new PhongMaterial(navCubeScene, {\n diffuse: [0.4, 0.4, 0.4],\n specular: [0.4, 0.4, 0.4],\n emissive: [.6, .6, .6],\n diffuseMap: this._cubeSampler,\n emissiveMap: this._cubeSampler\n }),\n visible: !!visible,\n edges: true\n });\n\n this._shadow = cfg.shadowVisible === false ? null : new Mesh(navCubeScene, {\n geometry: new ReadableGeometry(navCubeScene, buildCylinderGeometry({\n center: [0, 0, 0],\n radiusTop: 0.001,\n radiusBottom: 1.4,\n height: 0.01,\n radialSegments: 20,\n heightSegments: 1,\n openEnded: true\n })),\n material: new PhongMaterial(navCubeScene, {\n diffuse: [0.0, 0.0, 0.0], specular: [0, 0, 0], emissive: [0.0, 0.0, 0.0], alpha: 0.5\n }),\n position: [0, -1.5, 0],\n visible: !!visible,\n pickable: false,\n backfaces: false\n });\n\n this._onCameraMatrix = viewer.camera.on(\"matrix\", this._synchCamera);\n this._onCameraWorldAxis = viewer.camera.on(\"worldAxis\", () => {\n if (viewer.camera.zUp) {\n this._zUp = true;\n this._cubeTextureCanvas.setZUp();\n this._repaint();\n this._synchCamera();\n } else if (viewer.camera.yUp) {\n this._zUp = false;\n this._cubeTextureCanvas.setYUp();\n this._repaint();\n this._synchCamera();\n }\n });\n this._onCameraFOV = viewer.camera.perspective.on(\"fov\", (fov) => {\n if (this._synchProjection) {\n this._navCubeCamera.perspective.fov = fov;\n }\n });\n this._onCameraProjection = viewer.camera.on(\"projection\", (projection) => {\n if (this._synchProjection) {\n this._navCubeCamera.projection = (projection === \"ortho\" || projection === \"perspective\") ? projection : \"perspective\";\n }\n });\n\n var lastAreaId = -1;\n\n function actionMove(posX, posY) {\n var yawInc = (posX - lastX) * -sensitivity;\n var pitchInc = (posY - lastY) * -sensitivity;\n viewer.camera.orbitYaw(yawInc);\n viewer.camera.orbitPitch(-pitchInc);\n lastX = posX;\n lastY = posY;\n }\n\n function getCoordsWithinElement(event) {\n var coords = [0, 0];\n if (!event) {\n event = window.event;\n coords[0] = event.x;\n coords[1] = event.y;\n } else {\n var element = event.target;\n var totalOffsetLeft = 0;\n var totalOffsetTop = 0;\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n coords[0] = event.pageX - totalOffsetLeft;\n coords[1] = event.pageY - totalOffsetTop;\n }\n return coords;\n }\n\n {\n var downX = null;\n var downY = null;\n var down = false;\n var over = false;\n var sensitivity = 0.5;\n\n var lastX;\n var lastY;\n\n\n self._navCubeCanvas.addEventListener(\"mouseenter\", self._onMouseEnter = function (e) {\n over = true;\n });\n\n\n self._navCubeCanvas.addEventListener(\"mouseleave\", self._onMouseLeave = function (e) {\n over = false;\n });\n\n self._navCubeCanvas.addEventListener(\"mousedown\", self._onMouseDown = function (e) {\n if (e.which !== 1) {\n return;\n }\n downX = e.x;\n downY = e.y;\n lastX = e.clientX;\n lastY = e.clientY;\n var canvasPos = getCoordsWithinElement(e);\n var hit = navCubeScene.pick({\n canvasPos: canvasPos\n });\n if (hit) {\n down = true;\n\n } else {\n down = false;\n }\n });\n\n document.addEventListener(\"mouseup\", self._onMouseUp = function (e) {\n if (e.which !== 1) {// Left button\n return;\n }\n down = false;\n if (downX === null) {\n return;\n }\n var canvasPos = getCoordsWithinElement(e);\n var hit = navCubeScene.pick({\n canvasPos: canvasPos,\n pickSurface: true\n });\n if (hit) {\n if (hit.uv) {\n var areaId = self._cubeTextureCanvas.getArea(hit.uv);\n if (areaId >= 0) {\n document.body.style.cursor = \"pointer\";\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n self._repaint();\n lastAreaId = -1;\n }\n if (areaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(areaId, true);\n lastAreaId = areaId;\n self._repaint();\n if (e.x < (downX - 3) || e.x > (downX + 3) || e.y < (downY - 3) || e.y > (downY + 3)) {\n return;\n }\n var dir = self._cubeTextureCanvas.getAreaDir(areaId);\n if (dir) {\n var up = self._cubeTextureCanvas.getAreaUp(areaId);\n flyTo(dir, up, function () {\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n self._repaint();\n lastAreaId = -1;\n }\n document.body.style.cursor = \"pointer\";\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n self._repaint();\n lastAreaId = -1;\n }\n if (areaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(areaId, false);\n lastAreaId = -1;\n self._repaint();\n }\n });\n }\n }\n }\n }\n }\n });\n\n document.addEventListener(\"mousemove\", self._onMouseMove = function (e) {\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n self._repaint();\n lastAreaId = -1;\n }\n if (e.buttons === 1 && !down) {\n return;\n }\n if (down) {\n var posX = e.clientX;\n var posY = e.clientY;\n document.body.style.cursor = \"move\";\n actionMove(posX, posY);\n return;\n }\n if (!over) {\n return;\n }\n var canvasPos = getCoordsWithinElement(e);\n var hit = navCubeScene.pick({\n canvasPos: canvasPos,\n pickSurface: true\n });\n if (hit) {\n if (hit.uv) {\n document.body.style.cursor = \"pointer\";\n var areaId = self._cubeTextureCanvas.getArea(hit.uv);\n if (areaId === lastAreaId) {\n return;\n }\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n }\n if (areaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(areaId, true);\n self._repaint();\n lastAreaId = areaId;\n }\n }\n } else {\n document.body.style.cursor = \"default\";\n if (lastAreaId >= 0) {\n self._cubeTextureCanvas.setAreaHighlighted(lastAreaId, false);\n self._repaint();\n lastAreaId = -1;\n }\n }\n });\n\n var flyTo = (function () {\n var center = math.vec3();\n return function (dir, up, ok) {\n var aabb = self._fitVisible ? viewer.scene.getAABB(viewer.scene.visibleObjectIds) : viewer.scene.aabb;\n var diag = math.getAABB3Diag(aabb);\n math.getAABB3Center(aabb, center);\n var dist = Math.abs(diag / Math.tan(self._cameraFitFOV * math.DEGTORAD));\n viewer.cameraControl.pivotPos = center;\n if (self._cameraFly) {\n viewer.cameraFlight.flyTo({\n look: center,\n eye: [center[0] - (dist * dir[0]), center[1] - (dist * dir[1]), center[2] - (dist * dir[2])],\n up: up || [0, 1, 0],\n orthoScale: diag * 1.1,\n fitFOV: self._cameraFitFOV,\n duration: self._cameraFlyDuration\n }, ok);\n } else {\n viewer.cameraFlight.jumpTo({\n look: center,\n eye: [center[0] - (dist * dir[0]), center[1] - (dist * dir[1]), center[2] - (dist * dir[2])],\n up: up || [0, 1, 0],\n orthoScale: diag * 1.1,\n fitFOV: self._cameraFitFOV\n }, ok);\n }\n };\n })();\n }\n\n this._onUpdated = viewer.localeService.on(\"updated\", () => {\n this._cubeTextureCanvas.clear();\n this._repaint();\n });\n\n this.setVisible(cfg.visible);\n this.setCameraFitFOV(cfg.cameraFitFOV);\n this.setCameraFly(cfg.cameraFly);\n this.setCameraFlyDuration(cfg.cameraFlyDuration);\n this.setFitVisible(cfg.fitVisible);\n this.setSynchProjection(cfg.synchProjection);\n }\n\n send(name, value) {\n switch (name) {\n case \"language\":\n this._cubeTextureCanvas.clear();\n this._repaint(); // CubeTextureCanvas gets language from Viewer\n break;\n }\n }\n\n _repaint() {\n const image = this._cubeTextureCanvas.getImage();\n this._cubeMesh.material.diffuseMap.image = image;\n this._cubeMesh.material.emissiveMap.image = image;\n }\n\n /**\n * Sets if the NavCube is visible.\n *\n * @param {Boolean} visible Whether or not the NavCube is visible.\n */\n setVisible(visible = true) {\n if (!this._navCubeCanvas) {\n return;\n }\n this._cubeMesh.visible = visible;\n if (this._shadow) {\n this._shadow.visible = visible;\n }\n this._navCubeCanvas.style.visibility = visible ? \"visible\" : \"hidden\";\n }\n\n /**\n * Gets if the NavCube is visible.\n *\n * @return {Boolean} True when the NavCube is visible.\n */\n getVisible() {\n if (!this._navCubeCanvas) {\n return false;\n }\n return this._cubeMesh.visible;\n }\n\n\n /**\n * Sets whether the axis, corner and edge-aligned views will fit the\n * view to the entire {@link Scene} or just to visible object-{@link Entity}s.\n *\n * Entitys are visible objects when {@link Entity#isObject} and {@link Entity#visible} are both ````true````.\n *\n * @param {Boolean} fitVisible Set ````true```` to fit only visible object-Entitys.\n */\n setFitVisible(fitVisible = false) {\n this._fitVisible = fitVisible;\n }\n\n /**\n * Gets whether the axis, corner and edge-aligned views will fit the\n * view to the entire {@link Scene} or just to visible object-{@link Entity}s.\n *\n * Entitys are visible objects when {@link Entity#isObject} and {@link Entity#visible} are both ````true````.\n *\n * @return {Boolean} True when fitting only visible object-Entitys.\n */\n getFitVisible() {\n return this._fitVisible;\n }\n\n /**\n * Sets whether the {@link Camera} flies or jumps to each selected axis or diagonal.\n *\n * Default is ````true````, to fly.\n *\n * @param {Boolean} cameraFly Set ````true```` to fly, else ````false```` to jump.\n */\n setCameraFly(cameraFly = true) {\n this._cameraFly = cameraFly;\n }\n\n /**\n * Gets whether the {@link Camera} flies or jumps to each selected axis or diagonal.\n *\n * Default is ````true````, to fly.\n *\n * @returns {Boolean} Returns ````true```` to fly, else ````false```` to jump.\n */\n getCameraFly() {\n return this._cameraFly;\n }\n\n /**\n * Sets how much of the field-of-view, in degrees, that the {@link Scene} should\n * fill the canvas when flying or jumping the {@link Camera} to each selected axis or diagonal.\n *\n * Default value is ````45````.\n *\n * @param {Number} cameraFitFOV New FOV value.\n */\n setCameraFitFOV(cameraFitFOV = 45) {\n this._cameraFitFOV = cameraFitFOV;\n }\n\n /**\n * Gets how much of the field-of-view, in degrees, that the {@link Scene} should\n * fill the canvas when flying or jumping the {@link Camera} to each selected axis or diagonal.\n *\n * Default value is ````45````.\n *\n * @returns {Number} Current FOV value.\n */\n getCameraFitFOV() {\n return this._cameraFitFOV;\n }\n\n /**\n * When flying the {@link Camera} to each new axis or diagonal, sets how long, in seconds, that the Camera takes to get there.\n *\n * Default is ````0.5````.\n *\n * @param {Boolean} cameraFlyDuration Camera flight duration in seconds.\n */\n setCameraFlyDuration(cameraFlyDuration = 0.5) {\n this._cameraFlyDuration = cameraFlyDuration;\n }\n\n /**\n * When flying the {@link Camera} to each new axis or diagonal, gets how long, in seconds, that the Camera takes to get there.\n *\n * Default is ````0.5````.\n *\n * @returns {Boolean} Camera flight duration in seconds.\n */\n getCameraFlyDuration() {\n return this._cameraFlyDuration;\n }\n\n /**\n * Sets whether the NavCube switches between perspective and orthographic projections in synchrony with\n * the {@link Camera}. When ````false````, the NavCube will always be rendered with perspective projection.\n *\n * @param {Boolean} synchProjection Set ````true```` to keep NavCube projection synchronized with {@link Camera#projection}.\n */\n setSynchProjection(synchProjection = false) {\n this._synchProjection = synchProjection;\n }\n\n /**\n * Gets whether the NavCube switches between perspective and orthographic projections in synchrony with\n * the {@link Camera}. When ````false````, the NavCube will always be rendered with perspective projection.\n *\n * @return {Boolean} True when NavCube projection is synchronized with {@link Camera#projection}.\n */\n getSynchProjection() {\n return this._synchProjection;\n }\n\n /**\n * Destroys this NavCubePlugin.\n *\n * Does not destroy the canvas the NavCubePlugin was configured with.\n */\n destroy() {\n\n if (this._navCubeCanvas) {\n\n this.viewer.localeService.off(this._onUpdated);\n this.viewer.camera.off(this._onCameraMatrix);\n this.viewer.camera.off(this._onCameraWorldAxis);\n this.viewer.camera.perspective.off(this._onCameraFOV);\n this.viewer.camera.off(this._onCameraProjection);\n\n this._navCubeCanvas.removeEventListener(\"mouseenter\", this._onMouseEnter);\n this._navCubeCanvas.removeEventListener(\"mouseleave\", this._onMouseLeave);\n this._navCubeCanvas.removeEventListener(\"mousedown\", this._onMouseDown);\n\n document.removeEventListener(\"mousemove\", this._onMouseMove);\n document.removeEventListener(\"mouseup\", this._onMouseUp);\n\n this._navCubeCanvas = null;\n this._cubeTextureCanvas.destroy();\n this._cubeTextureCanvas = null;\n\n this._onMouseEnter = null;\n this._onMouseLeave = null;\n this._onMouseDown = null;\n this._onMouseMove = null;\n this._onMouseUp = null;\n }\n\n this._navCubeScene.destroy();\n this._navCubeScene = null;\n this._cubeMesh = null;\n this._shadow = null;\n\n super.destroy();\n }\n}\n\nconst tempVec3a$7 = math.vec3();\n\n/**\n * @private\n */\nclass OBJSceneGraphLoader {\n\n /**\n * Loads OBJ and MTL from file(s) into a {@link Node}.\n *\n * @static\n * @param {Node} modelNode Node to load into.\n * @param {String} src Path to OBJ file.\n * @param {Object} params Loading options.\n */\n load(modelNode, src, params = {}) {\n\n var spinner = modelNode.scene.canvas.spinner;\n spinner.processes++;\n\n loadOBJ(modelNode, src, function (state) {\n loadMTLs(modelNode, state, function () {\n\n createMeshes(modelNode, state);\n\n spinner.processes--;\n\n core.scheduleTask(function () {\n modelNode.fire(\"loaded\", true, false);\n });\n });\n });\n }\n\n /**\n * Parses OBJ and MTL text strings into a {@link Node}.\n *\n * @static\n * @param {Node} modelNode Node to load into.\n * @param {String} objText OBJ text string.\n * @param {String} [mtlText] MTL text string.\n * @param {String} [basePath] Base path for external resources.\n */\n parse(modelNode, objText, mtlText, basePath) {\n if (!objText) {\n this.warn(\"load() param expected: objText\");\n return;\n }\n var state = parseOBJ(modelNode, objText, null);\n if (mtlText) {\n parseMTL(modelNode, mtlText, basePath);\n }\n createMeshes(modelNode, state);\n modelNode.src = null;\n modelNode.fire(\"loaded\", true, false);\n }\n}\n\n//--------------------------------------------------------------------------------------------\n// Loads OBJ\n//\n// Parses OBJ into an intermediate state object. The object will contain geometry data\n// and material IDs from which meshes can be created later. The object will also\n// contain a list of filenames of the MTL files referenced by the OBJ, is any.\n//\n// Originally based on the THREE.js OBJ and MTL loaders:\n//\n// https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/OBJLoader.js\n// https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/MTLLoader.js\n//--------------------------------------------------------------------------------------------\n\nvar loadOBJ = function (modelNode, url, ok) {\n loadFile(url, function (text) {\n var state = parseOBJ(modelNode, text, url);\n ok(state);\n },\n function (error) {\n modelNode.error(error);\n });\n};\n\nvar parseOBJ = (function () {\n\n const regexp = {\n // v float float float\n vertex_pattern: /^v\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)/,\n // vn float float float\n normal_pattern: /^vn\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)/,\n // vt float float\n uv_pattern: /^vt\\s+([\\d|\\.|\\+|\\-|e|E]+)\\s+([\\d|\\.|\\+|\\-|e|E]+)/,\n // f vertex vertex vertex\n face_vertex: /^f\\s+(-?\\d+)\\s+(-?\\d+)\\s+(-?\\d+)(?:\\s+(-?\\d+))?/,\n // f vertex/uv vertex/uv vertex/uv\n face_vertex_uv: /^f\\s+(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)(?:\\s+(-?\\d+)\\/(-?\\d+))?/,\n // f vertex/uv/normal vertex/uv/normal vertex/uv/normal\n face_vertex_uv_normal: /^f\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+)\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+)(?:\\s+(-?\\d+)\\/(-?\\d+)\\/(-?\\d+))?/,\n // f vertex//normal vertex//normal vertex//normal\n face_vertex_normal: /^f\\s+(-?\\d+)\\/\\/(-?\\d+)\\s+(-?\\d+)\\/\\/(-?\\d+)\\s+(-?\\d+)\\/\\/(-?\\d+)(?:\\s+(-?\\d+)\\/\\/(-?\\d+))?/,\n // o object_name | g group_name\n object_pattern: /^[og]\\s*(.+)?/,\n // s boolean\n smoothing_pattern: /^s\\s+(\\d+|on|off)/,\n // mtllib file_reference\n material_library_pattern: /^mtllib /,\n // usemtl material_name\n material_use_pattern: /^usemtl /\n };\n\n return function (modelNode, text, url) {\n\n url = url || \"\";\n\n var state = {\n src: url,\n basePath: getBasePath(url),\n objects: [],\n object: {},\n positions: [],\n normals: [],\n uv: [],\n materialLibraries: {}\n };\n\n startObject(state, \"\", false);\n\n // Parts of this parser logic are derived from the THREE.js OBJ loader:\n // https://github.com/mrdoob/three.js/blob/dev/examples/js/loaders/OBJLoader.js\n\n if (text.indexOf('\\r\\n') !== -1) {\n // This is faster than String.split with regex that splits on both\n text = text.replace('\\r\\n', '\\n');\n }\n\n var lines = text.split('\\n');\n var line = '', lineFirstChar = '', lineSecondChar = '';\n var lineLength = 0;\n var result = [];\n\n // Faster to just trim left side of the line. Use if available.\n var trimLeft = (typeof ''.trimLeft === 'function');\n\n for (var i = 0, l = lines.length; i < l; i++) {\n\n line = lines[i];\n\n line = trimLeft ? line.trimLeft() : line.trim();\n\n lineLength = line.length;\n\n if (lineLength === 0) {\n continue;\n }\n\n lineFirstChar = line.charAt(0);\n\n if (lineFirstChar === '#') {\n continue;\n }\n\n if (lineFirstChar === 'v') {\n\n lineSecondChar = line.charAt(1);\n\n if (lineSecondChar === ' ' && (result = regexp.vertex_pattern.exec(line)) !== null) {\n\n // 0 1 2 3\n // ['v 1.0 2.0 3.0', '1.0', '2.0', '3.0']\n\n state.positions.push(\n parseFloat(result[1]),\n parseFloat(result[2]),\n parseFloat(result[3])\n );\n\n } else if (lineSecondChar === 'n' && (result = regexp.normal_pattern.exec(line)) !== null) {\n\n // 0 1 2 3\n // ['vn 1.0 2.0 3.0', '1.0', '2.0', '3.0']\n\n state.normals.push(\n parseFloat(result[1]),\n parseFloat(result[2]),\n parseFloat(result[3])\n );\n\n } else if (lineSecondChar === 't' && (result = regexp.uv_pattern.exec(line)) !== null) {\n\n // 0 1 2\n // ['vt 0.1 0.2', '0.1', '0.2']\n\n state.uv.push(\n parseFloat(result[1]),\n parseFloat(result[2])\n );\n\n } else {\n\n modelNode.error('Unexpected vertex/normal/uv line: \\'' + line + '\\'');\n return;\n }\n\n } else if (lineFirstChar === 'f') {\n\n if ((result = regexp.face_vertex_uv_normal.exec(line)) !== null) {\n\n // f vertex/uv/normal vertex/uv/normal vertex/uv/normal\n // 0 1 2 3 4 5 6 7 8 9 10 11 12\n // ['f 1/1/1 2/2/2 3/3/3', '1', '1', '1', '2', '2', '2', '3', '3', '3', undefined, undefined, undefined]\n\n addFace(state,\n result[1], result[4], result[7], result[10],\n result[2], result[5], result[8], result[11],\n result[3], result[6], result[9], result[12]\n );\n\n } else if ((result = regexp.face_vertex_uv.exec(line)) !== null) {\n\n // f vertex/uv vertex/uv vertex/uv\n // 0 1 2 3 4 5 6 7 8\n // ['f 1/1 2/2 3/3', '1', '1', '2', '2', '3', '3', undefined, undefined]\n\n addFace(state,\n result[1], result[3], result[5], result[7],\n result[2], result[4], result[6], result[8]\n );\n\n } else if ((result = regexp.face_vertex_normal.exec(line)) !== null) {\n\n // f vertex//normal vertex//normal vertex//normal\n // 0 1 2 3 4 5 6 7 8\n // ['f 1//1 2//2 3//3', '1', '1', '2', '2', '3', '3', undefined, undefined]\n\n addFace(state,\n result[1], result[3], result[5], result[7],\n undefined, undefined, undefined, undefined,\n result[2], result[4], result[6], result[8]\n );\n\n } else if ((result = regexp.face_vertex.exec(line)) !== null) {\n\n // f vertex vertex vertex\n // 0 1 2 3 4\n // ['f 1 2 3', '1', '2', '3', undefined]\n\n addFace(state, result[1], result[2], result[3], result[4]);\n } else {\n modelNode.error('Unexpected face line: \\'' + line + '\\'');\n return;\n }\n\n } else if (lineFirstChar === 'l') {\n\n var lineParts = line.substring(1).trim().split(' ');\n var lineVertices = [], lineUVs = [];\n\n if (line.indexOf('/') === -1) {\n\n lineVertices = lineParts;\n\n } else {\n for (var li = 0, llen = lineParts.length; li < llen; li++) {\n var parts = lineParts[li].split('/');\n if (parts[0] !== '') {\n lineVertices.push(parts[0]);\n }\n if (parts[1] !== '') {\n lineUVs.push(parts[1]);\n }\n }\n }\n addLineGeometry(state, lineVertices, lineUVs);\n\n } else if ((result = regexp.object_pattern.exec(line)) !== null) {\n\n // o object_name\n // or\n // g group_name\n\n var id = result[0].substr(1).trim();\n startObject(state, id, true);\n\n } else if (regexp.material_use_pattern.test(line)) {\n\n // material\n\n var id = line.substring(7).trim();\n state.object.material.id = id;\n\n } else if (regexp.material_library_pattern.test(line)) {\n\n // mtl file\n\n state.materialLibraries[line.substring(7).trim()] = true;\n\n } else if ((result = regexp.smoothing_pattern.exec(line)) !== null) {\n\n // smooth shading\n\n var value = result[1].trim().toLowerCase();\n state.object.material.smooth = (value === '1' || value === 'on');\n\n } else {\n\n // Handle null terminated files without exception\n if (line === '\\0') {\n continue;\n }\n\n modelNode.error('Unexpected line: \\'' + line + '\\'');\n return;\n }\n }\n\n return state;\n };\n\n function getBasePath(src) {\n var n = src.lastIndexOf('/');\n return (n === -1) ? src : src.substring(0, n + 1);\n }\n\n function startObject(state, id, fromDeclaration) {\n if (state.object && state.object.fromDeclaration === false) {\n state.object.id = id;\n state.object.fromDeclaration = (fromDeclaration !== false);\n return;\n }\n state.object = {\n id: id || '',\n geometry: {\n positions: [],\n normals: [],\n uv: []\n },\n material: {\n id: '',\n smooth: true\n },\n fromDeclaration: (fromDeclaration !== false)\n };\n state.objects.push(state.object);\n }\n\n function parseVertexIndex(value, len) {\n var index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 3) * 3;\n }\n\n function parseNormalIndex(value, len) {\n var index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 3) * 3;\n }\n\n function parseUVIndex(value, len) {\n var index = parseInt(value, 10);\n return (index >= 0 ? index - 1 : index + len / 2) * 2;\n }\n\n function addVertex(state, a, b, c) {\n var src = state.positions;\n var dst = state.object.geometry.positions;\n dst.push(src[a + 0]);\n dst.push(src[a + 1]);\n dst.push(src[a + 2]);\n dst.push(src[b + 0]);\n dst.push(src[b + 1]);\n dst.push(src[b + 2]);\n dst.push(src[c + 0]);\n dst.push(src[c + 1]);\n dst.push(src[c + 2]);\n }\n\n function addVertexLine(state, a) {\n var src = state.positions;\n var dst = state.object.geometry.positions;\n dst.push(src[a + 0]);\n dst.push(src[a + 1]);\n dst.push(src[a + 2]);\n }\n\n function addNormal(state, a, b, c) {\n var src = state.normals;\n var dst = state.object.geometry.normals;\n dst.push(src[a + 0]);\n dst.push(src[a + 1]);\n dst.push(src[a + 2]);\n dst.push(src[b + 0]);\n dst.push(src[b + 1]);\n dst.push(src[b + 2]);\n dst.push(src[c + 0]);\n dst.push(src[c + 1]);\n dst.push(src[c + 2]);\n }\n\n function addUV(state, a, b, c) {\n var src = state.uv;\n var dst = state.object.geometry.uv;\n dst.push(src[a + 0]);\n dst.push(src[a + 1]);\n dst.push(src[b + 0]);\n dst.push(src[b + 1]);\n dst.push(src[c + 0]);\n dst.push(src[c + 1]);\n }\n\n function addUVLine(state, a) {\n var src = state.uv;\n var dst = state.object.geometry.uv;\n dst.push(src[a + 0]);\n dst.push(src[a + 1]);\n }\n\n function addFace(state, a, b, c, d, ua, ub, uc, ud, na, nb, nc, nd) {\n var vLen = state.positions.length;\n var ia = parseVertexIndex(a, vLen);\n var ib = parseVertexIndex(b, vLen);\n var ic = parseVertexIndex(c, vLen);\n var id;\n if (d === undefined) {\n addVertex(state, ia, ib, ic);\n\n } else {\n id = parseVertexIndex(d, vLen);\n addVertex(state, ia, ib, id);\n addVertex(state, ib, ic, id);\n }\n\n if (ua !== undefined) {\n\n var uvLen = state.uv.length;\n\n ia = parseUVIndex(ua, uvLen);\n ib = parseUVIndex(ub, uvLen);\n ic = parseUVIndex(uc, uvLen);\n\n if (d === undefined) {\n addUV(state, ia, ib, ic);\n\n } else {\n id = parseUVIndex(ud, uvLen);\n addUV(state, ia, ib, id);\n addUV(state, ib, ic, id);\n }\n }\n\n if (na !== undefined) {\n\n // Normals are many times the same. If so, skip function call and parseInt.\n\n var nLen = state.normals.length;\n\n ia = parseNormalIndex(na, nLen);\n ib = na === nb ? ia : parseNormalIndex(nb, nLen);\n ic = na === nc ? ia : parseNormalIndex(nc, nLen);\n\n if (d === undefined) {\n addNormal(state, ia, ib, ic);\n\n } else {\n\n id = parseNormalIndex(nd, nLen);\n addNormal(state, ia, ib, id);\n addNormal(state, ib, ic, id);\n }\n }\n }\n\n function addLineGeometry(state, positions, uv) {\n\n state.object.geometry.type = 'Line';\n\n var vLen = state.positions.length;\n var uvLen = state.uv.length;\n\n for (var vi = 0, l = positions.length; vi < l; vi++) {\n addVertexLine(state, parseVertexIndex(positions[vi], vLen));\n }\n\n for (var uvi = 0, uvl = uv.length; uvi < uvl; uvi++) {\n addUVLine(state, parseUVIndex(uv[uvi], uvLen));\n }\n }\n})();\n\n//--------------------------------------------------------------------------------------------\n// Loads MTL files listed in parsed state\n//--------------------------------------------------------------------------------------------\n\nfunction loadMTLs(modelNode, state, ok) {\n var basePath = state.basePath;\n var srcList = Object.keys(state.materialLibraries);\n var numToLoad = srcList.length;\n for (var i = 0, len = numToLoad; i < len; i++) {\n loadMTL(modelNode, basePath, basePath + srcList[i], function () {\n if (--numToLoad === 0) {\n ok();\n }\n });\n }\n}\n\n//--------------------------------------------------------------------------------------------\n// Loads an MTL file\n//--------------------------------------------------------------------------------------------\n\nvar loadMTL = function (modelNode, basePath, src, ok) {\n loadFile(src, function (text) {\n parseMTL(modelNode, text, basePath);\n ok();\n },\n function (error) {\n modelNode.error(error);\n ok();\n });\n};\n\nvar parseMTL = (function () {\n\n var delimiter_pattern = /\\s+/;\n\n return function (modelNode, mtlText, basePath) {\n\n var lines = mtlText.split('\\n');\n var materialCfg = {\n id: \"Default\"\n };\n var needCreate = false;\n var line;\n var pos;\n var key;\n var value;\n var alpha;\n\n basePath = basePath || \"\";\n\n for (var i = 0; i < lines.length; i++) {\n\n line = lines[i].trim();\n\n if (line.length === 0 || line.charAt(0) === '#') { // Blank line or comment ignore\n continue;\n }\n\n pos = line.indexOf(' ');\n\n key = (pos >= 0) ? line.substring(0, pos) : line;\n key = key.toLowerCase();\n\n value = (pos >= 0) ? line.substring(pos + 1) : '';\n value = value.trim();\n\n switch (key.toLowerCase()) {\n\n case \"newmtl\": // New material\n //if (needCreate) {\n createMaterial(modelNode, materialCfg);\n //}\n materialCfg = {\n id: value\n };\n needCreate = true;\n break;\n\n case 'ka':\n materialCfg.ambient = parseRGB(value);\n break;\n\n case 'kd':\n materialCfg.diffuse = parseRGB(value);\n break;\n\n case 'ks':\n materialCfg.specular = parseRGB(value);\n break;\n\n case 'map_kd':\n if (!materialCfg.diffuseMap) {\n materialCfg.diffuseMap = createTexture(modelNode, basePath, value, \"sRGB\");\n }\n break;\n\n case 'map_ks':\n if (!materialCfg.specularMap) {\n materialCfg.specularMap = createTexture(modelNode, basePath, value, \"linear\");\n }\n break;\n\n case 'map_bump':\n case 'bump':\n if (!materialCfg.normalMap) {\n materialCfg.normalMap = createTexture(modelNode, basePath, value);\n }\n break;\n\n case 'ns':\n materialCfg.shininess = parseFloat(value);\n break;\n\n case 'd':\n alpha = parseFloat(value);\n if (alpha < 1) {\n materialCfg.alpha = alpha;\n materialCfg.alphaMode = \"blend\";\n }\n break;\n\n case 'tr':\n alpha = parseFloat(value);\n if (alpha > 0) {\n materialCfg.alpha = 1 - alpha;\n materialCfg.alphaMode = \"blend\";\n }\n break;\n // modelNode.error(\"Unrecognized token: \" + key);\n }\n }\n\n if (needCreate) {\n createMaterial(modelNode, materialCfg);\n }\n };\n\n function createTexture(modelNode, basePath, value, encoding) {\n var textureCfg = {};\n var items = value.split(/\\s+/);\n var pos = items.indexOf('-bm');\n if (pos >= 0) {\n //matParams.bumpScale = parseFloat(items[pos + 1]);\n items.splice(pos, 2);\n }\n pos = items.indexOf('-s');\n if (pos >= 0) {\n textureCfg.scale = [parseFloat(items[pos + 1]), parseFloat(items[pos + 2])];\n items.splice(pos, 4); // we expect 3 parameters here!\n }\n pos = items.indexOf('-o');\n if (pos >= 0) {\n textureCfg.translate = [parseFloat(items[pos + 1]), parseFloat(items[pos + 2])];\n items.splice(pos, 4); // we expect 3 parameters here!\n }\n textureCfg.src = basePath + items.join(' ').trim();\n textureCfg.flipY = true;\n textureCfg.encoding = encoding || \"linear\";\n //textureCfg.wrapS = self.wrap;\n //textureCfg.wrapT = self.wrap;\n var texture = new Texture(modelNode, textureCfg);\n return texture.id;\n }\n\n function createMaterial(modelNode, materialCfg) {\n new PhongMaterial(modelNode, materialCfg);\n }\n\n function parseRGB(value) {\n var ss = value.split(delimiter_pattern, 3);\n return [parseFloat(ss[0]), parseFloat(ss[1]), parseFloat(ss[2])];\n }\n\n})();\n//--------------------------------------------------------------------------------------------\n// Creates meshes from parsed state\n//--------------------------------------------------------------------------------------------\n\n\nfunction createMeshes(modelNode, state) {\n\n for (var j = 0, k = state.objects.length; j < k; j++) {\n\n var object = state.objects[j];\n var geometry = object.geometry;\n (geometry.type === 'Line');\n\n if (geometry.positions.length === 0) {\n // Skip o/g line declarations that did not follow with any faces\n continue;\n }\n\n var geometryCfg = {\n primitive: \"triangles\",\n compressGeometry: false\n };\n\n geometryCfg.positions = geometry.positions;\n\n if (geometry.normals.length > 0) {\n geometryCfg.normals = geometry.normals;\n }\n\n if (geometry.uv.length > 0) {\n geometryCfg.uv = geometry.uv;\n }\n\n var indices = new Array(geometryCfg.positions.length / 3); // Triangle soup\n for (var idx = 0; idx < indices.length; idx++) {\n indices[idx] = idx;\n }\n geometryCfg.indices = indices;\n\n const rtcCenter = tempVec3a$7;\n\n worldToRTCPositions(geometry.positions, geometry.positions, rtcCenter);\n\n var readableGeometry = new ReadableGeometry(modelNode, geometryCfg);\n\n var materialId = object.material.id;\n var material;\n if (materialId && materialId !== \"\") {\n material = modelNode.scene.components[materialId];\n if (!material) {\n modelNode.error(\"Material not found: \" + materialId);\n }\n } else {\n material = new PhongMaterial(modelNode, {\n //emissive: [0.6, 0.6, 0.0],\n diffuse: [0.6, 0.6, 0.6],\n backfaces: true\n });\n\n }\n\n // material.emissive = [Math.random(), Math.random(), Math.random()];\n\n var mesh = new Mesh(modelNode, {\n id: modelNode.id + \"#\" + object.id,\n rtcCenter: (rtcCenter[0] !== 0 || rtcCenter[1] !== 0 || rtcCenter[2] !== 0) ? rtcCenter : null,\n isObject: true,\n geometry: readableGeometry,\n material: material,\n pickable: true\n });\n\n modelNode.addChild(mesh);\n }\n}\n\nfunction loadFile(url, ok, err) {\n var request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.addEventListener('load', function (event) {\n var response = event.target.response;\n if (this.status === 200) {\n if (ok) {\n ok(response);\n }\n } else if (this.status === 0) {\n // Some browsers return HTTP Status 0 when using non-http protocol\n // e.g. 'file://' or 'data://'. Handle as success.\n console.warn('loadFile: HTTP Status 0 received.');\n if (ok) {\n ok(response);\n }\n } else {\n if (err) {\n err(event);\n }\n }\n }, false);\n\n request.addEventListener('error', function (event) {\n if (err) {\n err(event);\n }\n }, false);\n request.send(null);\n}\n\n/**\n * {@link Viewer} plugin that loads models from [OBJ](https://en.wikipedia.org/wiki/Wavefront_.obj_file) files.\n *\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n *\n * ## Metadata\n *\n * OBJLoaderPlugin can also load an accompanying JSON metadata file with each model, which creates a {@link MetaModel} corresponding\n * to the model {@link Entity} and a {@link MetaObject} corresponding to each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding {@link Entity}. When loading\n * metadata, we can also provide GLTFModelLoaderPlugin with a custom lookup table of initial values to set on the properties of each type of {@link Entity}. By default, OBJLoaderPlugin\n * uses its own map of standard default colors, visibilities and opacities for IFC element types.\n\n *\n * ## Usage\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#loading_OBJ_SportsCar)]\n *\n * ````javascript\n * import {Viewer, OBJLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * // Create a xeokit Viewer and arrange the camera\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.orbitPitch(20);\n *\n * // Add an OBJLoaderPlugin to the Viewer\n * const objLoader = new OBJLoaderPlugin(viewer);\n *\n * // Load an OBJ model\n * var model = objLoader.load({ // Model is an Entity\n * id: \"myModel\",\n * src: \"./models/obj/sportsCar/sportsCar.obj\",\n * edges: true\n * });\n *\n * // When the model has loaded, fit it to view\n * model.on(\"loaded\", () => {\n * viewer.cameraFlight.flyTo(model);\n * })\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Update properties of the model Entity\n * model.highlight = [1,0,0];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n * @class OBJLoaderPlugin\n */\nclass OBJLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"OBJLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n */\n constructor(viewer, cfg) {\n\n super(\"OBJLoader\", viewer, cfg);\n\n /**\n * @private\n */\n this._sceneGraphLoader = new OBJSceneGraphLoader();\n }\n\n /**\n * Loads an OBJ model from a file into this OBJLoader's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} params.id ID to assign to the model's root {@link Entity}, unique among all components in the Viewer's {@link Scene}.\n * @param {String} params.src Path to an OBJ file.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file.\n * @param {Number[]} [params.position=[0,0,0]] The model World-space 3D position.\n * @param {Number[]} [params.scale=[1,1,1]] The model's World-space scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's World-space rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Number} [params.edgeThreshold=20] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n */\n load(params = {}) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n var modelNode = new Node(this.viewer.scene, utils.apply(params, {\n isModel: true\n }));\n\n const modelId = modelNode.id; // In case ID was auto-generated\n const src = params.src;\n\n if (!src) {\n this.error(\"load() param expected: src\");\n return modelNode;\n }\n\n if (params.metaModelSrc) {\n const metaModelSrc = params.metaModelSrc;\n utils.loadJSON(metaModelSrc,\n (modelMetadata) => {\n this.viewer.metaScene.createMetaModel(modelId, modelMetadata);\n this._sceneGraphLoader.load(modelNode, src, params);\n },\n (errMsg) => {\n this.error(`load(): Failed to load model modelMetadata for model '${modelId} from '${metaModelSrc}' - ${errMsg}`);\n });\n } else {\n this._sceneGraphLoader.load(modelNode, src, params);\n }\n\n modelNode.once(\"destroyed\", () => {\n this.viewer.metaScene.destroyMetaModel(modelId);\n });\n\n return modelNode;\n }\n\n /**\n * Destroys this OBJLoaderPlugin.\n */\n destroy() {\n super.destroy();\n }\n}\n\n/**\n * @desc Creates a torus-shaped {@link Geometry}.\n *\n * ## Usage\n * Creating a {@link Mesh} with a torus-shaped {@link ReadableGeometry} :\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildTorusGeometry)]\n * \n * ````javascript\n * import {Viewer, Mesh, buildTorusGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0,0,0],\n * radius: 1.0,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildTorusGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for the {@link Geometry}, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.radius=1] The overall radius.\n * @param {Number} [cfg.tube=0.3] The tube radius.\n * @param {Number} [cfg.radialSegments=32] The number of radial segments.\n * @param {Number} [cfg.tubeSegments=24] The number of tubular segments.\n * @param {Number} [cfg.arc=Math.PI*0.5] The length of the arc in radians, where Math.PI*2 is a closed torus.\n * @returns {Object} Configuration for a {@link Geometry} subtype.\n */\nfunction buildTorusGeometry(cfg = {}) {\n\n let radius = cfg.radius || 1;\n if (radius < 0) {\n console.error(\"negative radius not allowed - will invert\");\n radius *= -1;\n }\n radius *= 0.5;\n\n let tube = cfg.tube || 0.3;\n if (tube < 0) {\n console.error(\"negative tube not allowed - will invert\");\n tube *= -1;\n }\n\n let radialSegments = cfg.radialSegments || 32;\n if (radialSegments < 0) {\n console.error(\"negative radialSegments not allowed - will invert\");\n radialSegments *= -1;\n }\n if (radialSegments < 4) {\n radialSegments = 4;\n }\n\n let tubeSegments = cfg.tubeSegments || 24;\n if (tubeSegments < 0) {\n console.error(\"negative tubeSegments not allowed - will invert\");\n tubeSegments *= -1;\n }\n if (tubeSegments < 4) {\n tubeSegments = 4;\n }\n\n let arc = cfg.arc || Math.PI * 2;\n if (arc < 0) {\n console.warn(\"negative arc not allowed - will invert\");\n arc *= -1;\n }\n if (arc > 360) {\n arc = 360;\n }\n\n const center = cfg.center;\n let centerX = center ? center[0] : 0;\n let centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const positions = [];\n const normals = [];\n const uvs = [];\n const indices = [];\n\n let u;\n let v;\n let x;\n let y;\n let z;\n let vec;\n\n let i;\n let j;\n\n for (j = 0; j <= tubeSegments; j++) {\n for (i = 0; i <= radialSegments; i++) {\n\n u = i / radialSegments * arc;\n v = 0.785398 + (j / tubeSegments * Math.PI * 2);\n\n centerX = radius * Math.cos(u);\n centerY = radius * Math.sin(u);\n\n x = (radius + tube * Math.cos(v)) * Math.cos(u);\n y = (radius + tube * Math.cos(v)) * Math.sin(u);\n z = tube * Math.sin(v);\n\n positions.push(x + centerX);\n positions.push(y + centerY);\n positions.push(z + centerZ);\n\n uvs.push(1 - (i / radialSegments));\n uvs.push((j / tubeSegments));\n\n vec = math.normalizeVec3(math.subVec3([x, y, z], [centerX, centerY, centerZ], []), []);\n\n normals.push(vec[0]);\n normals.push(vec[1]);\n normals.push(vec[2]);\n }\n }\n\n let a;\n let b;\n let c;\n let d;\n\n for (j = 1; j <= tubeSegments; j++) {\n for (i = 1; i <= radialSegments; i++) {\n\n a = (radialSegments + 1) * j + i - 1;\n b = (radialSegments + 1) * (j - 1) + i - 1;\n c = (radialSegments + 1) * (j - 1) + i;\n d = (radialSegments + 1) * j + i;\n\n indices.push(a);\n indices.push(b);\n indices.push(c);\n\n indices.push(c);\n indices.push(d);\n indices.push(a);\n }\n }\n\n return utils.apply(cfg, {\n positions: positions,\n normals: normals,\n uv: uvs,\n indices: indices\n });\n}\n\nconst zeroVec$1 = new Float64Array([0, 0, 1]);\nconst quat = new Float64Array(4);\n\n/**\n * Controls a {@link SectionPlane} with mouse and touch input.\n *\n * @private\n */\nclass Control {\n\n /** @private */\n constructor(plugin) {\n\n /**\n * ID of this Control.\n *\n * SectionPlaneControls are mapped by this ID in {@link SectionPlanesPlugin#sectionPlaneControls}.\n *\n * @property id\n * @type {String|Number}\n */\n this.id = null;\n\n this._viewer = plugin.viewer;\n\n this._visible = false;\n this._pos = math.vec3(); // Full-precision position of the center of the Control\n this._rtcCenter = math.vec3();\n this._rtcPos = math.vec3();\n\n this._baseDir = math.vec3(); // Saves direction of clip plane when we start dragging an arrow or ring.\n this._rootNode = null; // Root of Node graph that represents this control in the 3D scene\n this._displayMeshes = null; // Meshes that are always visible\n this._affordanceMeshes = null; // Meshes displayed momentarily for affordance\n\n this._ignoreNextSectionPlaneDirUpdate = false;\n\n this._createNodes();\n this._bindEvents();\n }\n\n /**\n * Called by SectionPlanesPlugin to assign this Control to a SectionPlane.\n * SectionPlanesPlugin keeps SectionPlaneControls in a reuse pool.\n * Call with a null or undefined value to disconnect the Control ffrom whatever SectionPlane it was assigned to.\n * @private\n */\n _setSectionPlane(sectionPlane) {\n if (this._sectionPlane) {\n this._sectionPlane.off(this._onSectionPlanePos);\n this._sectionPlane.off(this._onSectionPlaneDir);\n this._onSectionPlanePos = null;\n this._onSectionPlaneDir = null;\n this._sectionPlane = null;\n }\n if (sectionPlane) {\n this.id = sectionPlane.id;\n this._setPos(sectionPlane.pos);\n this._setDir(sectionPlane.dir);\n this._sectionPlane = sectionPlane;\n this._onSectionPlanePos = sectionPlane.on(\"pos\", () => {\n this._setPos(this._sectionPlane.pos);\n });\n this._onSectionPlaneDir = sectionPlane.on(\"dir\", () => {\n if (!this._ignoreNextSectionPlaneDirUpdate) {\n this._setDir(this._sectionPlane.dir);\n } else {\n this._ignoreNextSectionPlaneDirUpdate = false;\n }\n });\n }\n }\n\n /**\n * Gets the {@link SectionPlane} controlled by this Control.\n * @returns {SectionPlane} The SectionPlane.\n */\n get sectionPlane() {\n return this._sectionPlane;\n }\n\n /** @private */\n _setPos(xyz) {\n\n this._pos.set(xyz);\n\n worldToRTCPos(this._pos, this._rtcCenter, this._rtcPos);\n\n this._rootNode.rtcCenter = this._rtcCenter;\n this._rootNode.position = this._rtcPos;\n }\n\n /** @private */\n _setDir(xyz) {\n this._baseDir.set(xyz);\n this._rootNode.quaternion = math.vec3PairToQuaternion(zeroVec$1, xyz, quat);\n }\n\n _setSectionPlaneDir(dir) {\n if (this._sectionPlane) {\n this._ignoreNextSectionPlaneDirUpdate = true;\n this._sectionPlane.dir = dir;\n }\n }\n\n /**\n * Sets if this Control is visible.\n *\n * @type {Boolean}\n */\n setVisible(visible = true) {\n if (this._visible === visible) {\n return;\n }\n this._visible = visible;\n var id;\n for (id in this._displayMeshes) {\n if (this._displayMeshes.hasOwnProperty(id)) {\n this._displayMeshes[id].visible = visible;\n }\n }\n if (!visible) {\n for (id in this._affordanceMeshes) {\n if (this._affordanceMeshes.hasOwnProperty(id)) {\n this._affordanceMeshes[id].visible = visible;\n }\n }\n }\n }\n\n /**\n * Gets if this Control is visible.\n *\n * @type {Boolean}\n */\n getVisible() {\n return this._visible;\n }\n\n /**\n * Sets if this Control is culled. This is called by SectionPlanesPlugin to\n * temporarily hide the Control while a snapshot is being taken by Viewer#getSnapshot().\n * @param culled\n */\n setCulled(culled) {\n var id;\n for (id in this._displayMeshes) {\n if (this._displayMeshes.hasOwnProperty(id)) {\n this._displayMeshes[id].culled = culled;\n }\n }\n if (!culled) {\n for (id in this._affordanceMeshes) {\n if (this._affordanceMeshes.hasOwnProperty(id)) {\n this._affordanceMeshes[id].culled = culled;\n }\n }\n }\n }\n\n /**\n * Builds the Entities that represent this Control.\n * @private\n */\n _createNodes() {\n\n const NO_STATE_INHERIT = false;\n const scene = this._viewer.scene;\n const radius = 1.0;\n const handleTubeRadius = 0.06;\n const hoopRadius = radius - 0.2;\n const tubeRadius = 0.01;\n const arrowRadius = 0.07;\n\n this._rootNode = new Node(scene, {\n position: [0, 0, 0],\n scale: [5, 5, 5]\n });\n\n const rootNode = this._rootNode;\n\n const shapes = {// Reusable geometries\n\n arrowHead: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: 0.001,\n radiusBottom: arrowRadius,\n radialSegments: 32,\n heightSegments: 1,\n height: 0.2,\n openEnded: false\n })),\n\n arrowHeadBig: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: 0.001,\n radiusBottom: 0.09,\n radialSegments: 32,\n heightSegments: 1,\n height: 0.25,\n openEnded: false\n })),\n\n arrowHeadHandle: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: 0.09,\n radiusBottom: 0.09,\n radialSegments: 8,\n heightSegments: 1,\n height: 0.37,\n openEnded: false\n })),\n\n curve: new ReadableGeometry(rootNode, buildTorusGeometry({\n radius: hoopRadius,\n tube: tubeRadius,\n radialSegments: 64,\n tubeSegments: 14,\n arc: (Math.PI * 2.0) / 4.0\n })),\n\n curveHandle: new ReadableGeometry(rootNode, buildTorusGeometry({\n radius: hoopRadius,\n tube: handleTubeRadius,\n radialSegments: 64,\n tubeSegments: 14,\n arc: (Math.PI * 2.0) / 4.0\n })),\n\n hoop: new ReadableGeometry(rootNode, buildTorusGeometry({\n radius: hoopRadius,\n tube: tubeRadius,\n radialSegments: 64,\n tubeSegments: 8,\n arc: (Math.PI * 2.0)\n })),\n\n axis: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: tubeRadius,\n radiusBottom: tubeRadius,\n radialSegments: 20,\n heightSegments: 1,\n height: radius,\n openEnded: false\n })),\n\n axisHandle: new ReadableGeometry(rootNode, buildCylinderGeometry({\n radiusTop: 0.08,\n radiusBottom: 0.08,\n radialSegments: 20,\n heightSegments: 1,\n height: radius,\n openEnded: false\n }))\n };\n\n const materials = { // Reusable materials\n\n pickable: new PhongMaterial(rootNode, { // Invisible material for pickable handles, which define a pickable 3D area\n diffuse: [1, 1, 0],\n alpha: 0, // Invisible\n alphaMode: \"blend\"\n }),\n\n red: new PhongMaterial(rootNode, {\n diffuse: [1, 0.0, 0.0],\n emissive: [1, 0.0, 0.0],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n }),\n\n highlightRed: new EmphasisMaterial(rootNode, { // Emphasis for red rotation affordance hoop\n edges: false,\n fill: true,\n fillColor: [1, 0, 0],\n fillAlpha: 0.6\n }),\n\n green: new PhongMaterial(rootNode, {\n diffuse: [0.0, 1, 0.0],\n emissive: [0.0, 1, 0.0],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n }),\n\n highlightGreen: new EmphasisMaterial(rootNode, { // Emphasis for green rotation affordance hoop\n edges: false,\n fill: true,\n fillColor: [0, 1, 0],\n fillAlpha: 0.6\n }),\n\n blue: new PhongMaterial(rootNode, {\n diffuse: [0.0, 0.0, 1],\n emissive: [0.0, 0.0, 1],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80,\n lineWidth: 2\n }),\n\n highlightBlue: new EmphasisMaterial(rootNode, { // Emphasis for blue rotation affordance hoop\n edges: false,\n fill: true,\n fillColor: [0, 0, 1],\n fillAlpha: 0.2\n }),\n\n center: new PhongMaterial(rootNode, {\n diffuse: [0.0, 0.0, 0.0],\n emissive: [0, 0, 0],\n ambient: [0.0, 0.0, 0.0],\n specular: [.6, .6, .3],\n shininess: 80\n }),\n\n highlightBall: new EmphasisMaterial(rootNode, {\n edges: false,\n fill: true,\n fillColor: [0.5, 0.5, 0.5],\n fillAlpha: 0.5,\n vertices: false\n }),\n\n highlightPlane: new EmphasisMaterial(rootNode, {\n edges: true,\n edgeWidth: 3,\n fill: false,\n fillColor: [0.5, 0.5, .5],\n fillAlpha: 0.5,\n vertices: false\n })\n };\n\n this._displayMeshes = {\n\n plane: rootNode.addChild(new Mesh(rootNode, {\n geometry: new ReadableGeometry(rootNode, {\n primitive: \"triangles\",\n positions: [\n 0.5, 0.5, 0.0, 0.5, -0.5, 0.0, // 0\n -0.5, -0.5, 0.0, -0.5, 0.5, 0.0, // 1\n 0.5, 0.5, -0.0, 0.5, -0.5, -0.0, // 2\n -0.5, -0.5, -0.0, -0.5, 0.5, -0.0 // 3\n ],\n indices: [0, 1, 2, 2, 3, 0]\n }),\n material: new PhongMaterial(rootNode, {\n emissive: [0, 0.0, 0],\n diffuse: [0, 0, 0],\n backfaces: true\n }),\n opacity: 0.6,\n ghosted: true,\n ghostMaterial: new EmphasisMaterial(rootNode, {\n edges: false,\n filled: true,\n fillColor: [1, 1, 0],\n edgeColor: [0, 0, 0],\n fillAlpha: 0.1,\n backfaces: true\n }),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false,\n scale: [2.4, 2.4, 1]\n }), NO_STATE_INHERIT),\n\n planeFrame: rootNode.addChild(new Mesh(rootNode, { // Visible frame\n geometry: new ReadableGeometry(rootNode, buildTorusGeometry({\n center: [0, 0, 0],\n radius: 1.7,\n tube: tubeRadius * 2,\n radialSegments: 4,\n tubeSegments: 4,\n arc: Math.PI * 2.0\n })),\n material: new PhongMaterial(rootNode, {\n emissive: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n shininess: 0\n }),\n //highlighted: true,\n highlightMaterial: new EmphasisMaterial(rootNode, {\n edges: false,\n edgeColor: [0.0, 0.0, 0.0],\n filled: true,\n fillColor: [0.8, 0.8, 0.8],\n fillAlpha: 1.0\n }),\n pickable: false,\n collidable: false,\n clippable: false,\n visible: false,\n scale: [1, 1, .1],\n rotation: [0, 0, 45]\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n xCurve: rootNode.addChild(new Mesh(rootNode, { // Red hoop about Y-axis\n geometry: shapes.curve,\n material: materials.red,\n matrix: (function () {\n const rotate2 = math.rotationMat4v(90 * math.DEGTORAD, [0, 1, 0], math.identityMat4());\n const rotate1 = math.rotationMat4v(270 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate1, rotate2, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n backfaces: true,\n visible: false\n }), NO_STATE_INHERIT),\n\n xCurveHandle: rootNode.addChild(new Mesh(rootNode, { // Red hoop about Y-axis\n geometry: shapes.curveHandle,\n material: materials.pickable,\n matrix: (function () {\n const rotate2 = math.rotationMat4v(90 * math.DEGTORAD, [0, 1, 0], math.identityMat4());\n const rotate1 = math.rotationMat4v(270 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate1, rotate2, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n backfaces: true,\n visible: false\n }), NO_STATE_INHERIT),\n\n xCurveArrow1: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.red,\n matrix: (function () {\n const translate = math.translateMat4c(0., -0.07, -0.8, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n const rotate = math.rotationMat4v(0 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n xCurveArrow2: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.red,\n matrix: (function () {\n const translate = math.translateMat4c(0.0, -0.8, -0.07, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n const rotate = math.rotationMat4v(90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n yCurve: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.curve,\n material: materials.green,\n rotation: [-90, 0, 0],\n pickable: false,\n collidable: true,\n clippable: false,\n backfaces: true,\n visible: false\n }), NO_STATE_INHERIT),\n\n yCurveHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.curveHandle,\n material: materials.pickable,\n rotation: [-90, 0, 0],\n pickable: true,\n collidable: true,\n clippable: false,\n backfaces: true,\n visible: false\n }), NO_STATE_INHERIT),\n\n yCurveArrow1: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.green,\n matrix: (function () {\n const translate = math.translateMat4c(0.07, 0, -0.8, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n const rotate = math.rotationMat4v(90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n yCurveArrow2: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.green,\n matrix: (function () {\n const translate = math.translateMat4c(0.8, 0.0, -0.07, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n const rotate = math.rotationMat4v(90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n zCurve: rootNode.addChild(new Mesh(rootNode, { // Blue hoop about Z-axis\n geometry: shapes.curve,\n material: materials.blue,\n matrix: math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4()),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n zCurveHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.curveHandle,\n material: materials.pickable,\n matrix: math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4()),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n zCurveCurveArrow1: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(.8, -0.07, 0, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n return math.mulMat4(translate, scale, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n zCurveArrow2: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(.05, -0.8, 0, math.identityMat4());\n const scale = math.scaleMat4v([0.6, 0.6, 0.6], math.identityMat4());\n const rotate = math.rotationMat4v(90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(math.mulMat4(translate, scale, math.identityMat4()), rotate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n center: rootNode.addChild(new Mesh(rootNode, {\n geometry: new ReadableGeometry(rootNode, buildSphereGeometry({\n radius: 0.05\n })),\n material: materials.center,\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n xAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.red,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n xAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadHandle,\n material: materials.pickable,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n xAxis: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axis,\n material: materials.red,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n xAxisHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axisHandle,\n material: materials.pickable,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n yAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.green,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n yAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadHandle,\n material: materials.pickable,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false,\n opacity: 0.2\n }), NO_STATE_INHERIT),\n\n yShaft: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axis,\n material: materials.green,\n position: [0, -radius / 2, 0],\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n yShaftHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axisHandle,\n material: materials.pickable,\n position: [0, -radius / 2, 0],\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n //----------------------------------------------------------------------------------------------------------\n //\n //----------------------------------------------------------------------------------------------------------\n\n zAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHead,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0.8, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n zAxisArrowHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadHandle,\n material: materials.pickable,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0.8, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: true,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n\n zShaft: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axis,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n clippable: false,\n pickable: false,\n collidable: true,\n visible: false\n }), NO_STATE_INHERIT),\n\n zAxisHandle: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.axisHandle,\n material: materials.pickable,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius / 2, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n clippable: false,\n pickable: true,\n collidable: true,\n visible: false\n }), NO_STATE_INHERIT)\n };\n\n this._affordanceMeshes = {\n\n planeFrame: rootNode.addChild(new Mesh(rootNode, {\n geometry: new ReadableGeometry(rootNode, buildTorusGeometry({\n center: [0, 0, 0],\n radius: 2,\n tube: tubeRadius,\n radialSegments: 4,\n tubeSegments: 4,\n arc: Math.PI * 2.0\n })),\n material: new PhongMaterial(rootNode, {\n ambient: [1, 1, 1],\n diffuse: [0, 0, 0],\n emissive: [1, 1, 0]\n }),\n highlighted: true,\n highlightMaterial: new EmphasisMaterial(rootNode, {\n edges: false,\n filled: true,\n fillColor: [1, 1, 0],\n fillAlpha: 1.0\n }),\n pickable: false,\n collidable: false,\n clippable: false,\n visible: false,\n scale: [1, 1, 1],\n rotation: [0, 0, 45]\n }), NO_STATE_INHERIT),\n\n xHoop: rootNode.addChild(new Mesh(rootNode, { // Full\n geometry: shapes.hoop,\n material: materials.red,\n highlighted: true,\n highlightMaterial: materials.highlightRed,\n matrix: (function () {\n const rotate2 = math.rotationMat4v(90 * math.DEGTORAD, [0, 1, 0], math.identityMat4());\n const rotate1 = math.rotationMat4v(270 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate1, rotate2, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n yHoop: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.hoop,\n material: materials.green,\n highlighted: true,\n highlightMaterial: materials.highlightGreen,\n rotation: [-90, 0, 0],\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n zHoop: rootNode.addChild(new Mesh(rootNode, { // Blue hoop about Z-axis\n geometry: shapes.hoop,\n material: materials.blue,\n highlighted: true,\n highlightMaterial: materials.highlightBlue,\n matrix: math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4()),\n pickable: false,\n collidable: true,\n clippable: false,\n backfaces: true,\n visible: false\n }), NO_STATE_INHERIT),\n\n xAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadBig,\n material: materials.red,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0, 0, 1], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n yAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadBig,\n material: materials.green,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(180 * math.DEGTORAD, [1, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT),\n\n zAxisArrow: rootNode.addChild(new Mesh(rootNode, {\n geometry: shapes.arrowHeadBig,\n material: materials.blue,\n matrix: (function () {\n const translate = math.translateMat4c(0, radius + .1, 0, math.identityMat4());\n const rotate = math.rotationMat4v(-90 * math.DEGTORAD, [0.8, 0, 0], math.identityMat4());\n return math.mulMat4(rotate, translate, math.identityMat4());\n })(),\n pickable: false,\n collidable: true,\n clippable: false,\n visible: false\n }), NO_STATE_INHERIT)\n };\n }\n\n _bindEvents() {\n\n const self = this;\n\n var grabbed = false;\n\n const DRAG_ACTIONS = {\n none: -1,\n xTranslate: 0,\n yTranslate: 1,\n zTranslate: 2,\n xRotate: 3,\n yRotate: 4,\n zRotate: 5\n };\n\n const rootNode = this._rootNode;\n\n var nextDragAction = null; // As we hover grabbed an arrow or hoop, self is the action we would do if we then dragged it.\n var dragAction = null; // Action we're doing while we drag an arrow or hoop.\n const lastCanvasPos = math.vec2();\n\n const xBaseAxis = math.vec3([1, 0, 0]);\n const yBaseAxis = math.vec3([0, 1, 0]);\n const zBaseAxis = math.vec3([0, 0, 1]);\n\n const canvas = this._viewer.scene.canvas.canvas;\n const camera = this._viewer.camera;\n const scene = this._viewer.scene;\n\n { // Keep gizmo screen size constant\n\n const tempVec3a = math.vec3([0, 0, 0]);\n let lastDist = -1;\n\n this._onCameraViewMatrix = scene.camera.on(\"viewMatrix\", () => {\n });\n\n this._onCameraProjMatrix = scene.camera.on(\"projMatrix\", () => {\n });\n\n this._onSceneTick = scene.on(\"tick\", () => {\n\n const dist = Math.abs(math.lenVec3(math.subVec3(scene.camera.eye, this._pos, tempVec3a)));\n\n if (dist !== lastDist) {\n if (camera.projection === \"perspective\") {\n const worldSize = (Math.tan(camera.perspective.fov * math.DEGTORAD)) * dist;\n const size = 0.07 * worldSize;\n rootNode.scale = [size, size, size];\n lastDist = dist;\n }\n }\n\n if (camera.projection === \"ortho\") {\n const worldSize = camera.ortho.scale / 10;\n const size = worldSize;\n rootNode.scale = [size, size, size];\n lastDist = dist;\n }\n });\n }\n\n const getClickCoordsWithinElement = (function () {\n const canvasPos = new Float64Array(2);\n return function (event) {\n if (!event) {\n event = window.event;\n canvasPos[0] = event.x;\n canvasPos[1] = event.y;\n } else {\n var element = event.target;\n var totalOffsetLeft = 0;\n var totalOffsetTop = 0;\n\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n canvasPos[0] = event.pageX - totalOffsetLeft;\n canvasPos[1] = event.pageY - totalOffsetTop;\n }\n return canvasPos;\n };\n })();\n\n const localToWorldVec = (function () {\n const mat = math.mat4();\n return function (localVec, worldVec) {\n math.quaternionToMat4(self._rootNode.quaternion, mat);\n math.transformVec3(mat, localVec, worldVec);\n math.normalizeVec3(worldVec);\n return worldVec;\n };\n })();\n\n var getTranslationPlane = (function () {\n const planeNormal = math.vec3();\n return function (worldAxis) {\n const absX = Math.abs(worldAxis[0]);\n if (absX > Math.abs(worldAxis[1]) && absX > Math.abs(worldAxis[2])) {\n math.cross3Vec3(worldAxis, [0, 1, 0], planeNormal);\n } else {\n math.cross3Vec3(worldAxis, [1, 0, 0], planeNormal);\n }\n math.cross3Vec3(planeNormal, worldAxis, planeNormal);\n math.normalizeVec3(planeNormal);\n return planeNormal;\n }\n })();\n\n const dragTranslateSectionPlane = (function () {\n const p1 = math.vec3();\n const p2 = math.vec3();\n const worldAxis = math.vec4();\n return function (baseAxis, fromMouse, toMouse) {\n localToWorldVec(baseAxis, worldAxis);\n const planeNormal = getTranslationPlane(worldAxis, fromMouse, toMouse);\n getPointerPlaneIntersect(fromMouse, planeNormal, p1);\n getPointerPlaneIntersect(toMouse, planeNormal, p2);\n math.subVec3(p2, p1);\n const dot = math.dotVec3(p2, worldAxis);\n self._pos[0] += worldAxis[0] * dot;\n self._pos[1] += worldAxis[1] * dot;\n self._pos[2] += worldAxis[2] * dot;\n self._rootNode.position = self._pos;\n if (self._sectionPlane) {\n self._sectionPlane.pos = self._pos;\n }\n }\n })();\n\n var dragRotateSectionPlane = (function () {\n const p1 = math.vec4();\n const p2 = math.vec4();\n const c = math.vec4();\n const worldAxis = math.vec4();\n return function (baseAxis, fromMouse, toMouse) {\n localToWorldVec(baseAxis, worldAxis);\n const hasData = getPointerPlaneIntersect(fromMouse, worldAxis, p1) && getPointerPlaneIntersect(toMouse, worldAxis, p2);\n if (!hasData) { // Find intersections with view plane and project down to origin\n const planeNormal = getTranslationPlane(worldAxis, fromMouse, toMouse);\n getPointerPlaneIntersect(fromMouse, planeNormal, p1, 1); // Ensure plane moves closer to camera so angles become workable\n getPointerPlaneIntersect(toMouse, planeNormal, p2, 1);\n var dot = math.dotVec3(p1, worldAxis);\n p1[0] -= dot * worldAxis[0];\n p1[1] -= dot * worldAxis[1];\n p1[2] -= dot * worldAxis[2];\n dot = math.dotVec3(p2, worldAxis);\n p2[0] -= dot * worldAxis[0];\n p2[1] -= dot * worldAxis[1];\n p2[2] -= dot * worldAxis[2];\n }\n math.normalizeVec3(p1);\n math.normalizeVec3(p2);\n dot = math.dotVec3(p1, p2);\n dot = math.clamp(dot, -1.0, 1.0); // Rounding errors cause dot to exceed allowed range\n var incDegrees = Math.acos(dot) * math.RADTODEG;\n math.cross3Vec3(p1, p2, c);\n if (math.dotVec3(c, worldAxis) < 0.0) {\n incDegrees = -incDegrees;\n }\n self._rootNode.rotate(baseAxis, incDegrees);\n rotateSectionPlane();\n }\n })();\n\n var getPointerPlaneIntersect = (function () {\n const dir = math.vec4([0, 0, 0, 1]);\n const matrix = math.mat4();\n return function (mouse, axis, dest, offset) {\n offset = offset || 0;\n dir[0] = mouse[0] / canvas.width * 2.0 - 1.0;\n dir[1] = -(mouse[1] / canvas.height * 2.0 - 1.0);\n dir[2] = 0.0;\n dir[3] = 1.0;\n math.mulMat4(camera.projMatrix, camera.viewMatrix, matrix); // Unproject norm device coords to view coords\n math.inverseMat4(matrix);\n math.transformVec4(matrix, dir, dir);\n math.mulVec4Scalar(dir, 1.0 / dir[3]); // This is now point A on the ray in world space\n var rayO = camera.eye; // The direction\n math.subVec4(dir, rayO, dir);\n const origin = self._sectionPlane.pos; // Plane origin:\n var d = -math.dotVec3(origin, axis) - offset;\n var dot = math.dotVec3(axis, dir);\n if (Math.abs(dot) > 0.005) {\n var t = -(math.dotVec3(axis, rayO) + d) / dot;\n math.mulVec3Scalar(dir, t, dest);\n math.addVec3(dest, rayO);\n math.subVec3(dest, origin, dest);\n return true;\n }\n return false;\n }\n })();\n\n const rotateSectionPlane = (function () {\n const dir = math.vec3();\n const mat = math.mat4();\n return function () {\n if (self.sectionPlane) {\n math.quaternionToMat4(rootNode.quaternion, mat); // << ---\n math.transformVec3(mat, [0, 0, 1], dir);\n self._setSectionPlaneDir(dir);\n }\n };\n })();\n\n {\n var down = false;\n var lastAffordanceMesh;\n\n this._onCameraControlHover = this._viewer.cameraControl.on(\"hoverEnter\", (hit) => {\n if (!this._visible) {\n return;\n }\n if (down) {\n return;\n }\n grabbed = false;\n if (lastAffordanceMesh) {\n lastAffordanceMesh.visible = false;\n }\n var affordanceMesh;\n const meshId = hit.entity.id;\n switch (meshId) {\n\n case this._displayMeshes.xAxisArrowHandle.id:\n affordanceMesh = this._affordanceMeshes.xAxisArrow;\n nextDragAction = DRAG_ACTIONS.xTranslate;\n break;\n\n case this._displayMeshes.xAxisHandle.id:\n affordanceMesh = this._affordanceMeshes.xAxisArrow;\n nextDragAction = DRAG_ACTIONS.xTranslate;\n break;\n\n case this._displayMeshes.yAxisArrowHandle.id:\n affordanceMesh = this._affordanceMeshes.yAxisArrow;\n nextDragAction = DRAG_ACTIONS.yTranslate;\n break;\n\n case this._displayMeshes.yShaftHandle.id:\n affordanceMesh = this._affordanceMeshes.yAxisArrow;\n nextDragAction = DRAG_ACTIONS.yTranslate;\n break;\n\n case this._displayMeshes.zAxisArrowHandle.id:\n affordanceMesh = this._affordanceMeshes.zAxisArrow;\n nextDragAction = DRAG_ACTIONS.zTranslate;\n break;\n\n case this._displayMeshes.zAxisHandle.id:\n affordanceMesh = this._affordanceMeshes.zAxisArrow;\n nextDragAction = DRAG_ACTIONS.zTranslate;\n break;\n\n case this._displayMeshes.xCurveHandle.id:\n affordanceMesh = this._affordanceMeshes.xHoop;\n nextDragAction = DRAG_ACTIONS.xRotate;\n break;\n\n case this._displayMeshes.yCurveHandle.id:\n affordanceMesh = this._affordanceMeshes.yHoop;\n nextDragAction = DRAG_ACTIONS.yRotate;\n break;\n\n case this._displayMeshes.zCurveHandle.id:\n affordanceMesh = this._affordanceMeshes.zHoop;\n nextDragAction = DRAG_ACTIONS.zRotate;\n break;\n\n default:\n nextDragAction = DRAG_ACTIONS.none;\n return; // Not clicked an arrow or hoop\n }\n if (affordanceMesh) {\n affordanceMesh.visible = true;\n }\n lastAffordanceMesh = affordanceMesh;\n grabbed = true;\n });\n\n this._onCameraControlHoverLeave = this._viewer.cameraControl.on(\"hoverOut\", (hit) => {\n if (!this._visible) {\n return;\n }\n if (lastAffordanceMesh) {\n lastAffordanceMesh.visible = false;\n }\n lastAffordanceMesh = null;\n nextDragAction = DRAG_ACTIONS.none;\n });\n\n canvas.addEventListener(\"mousedown\", this._canvasMouseDownListener = (e) => {\n e.preventDefault();\n if (!this._visible) {\n return;\n }\n if (!grabbed) {\n return;\n }\n this._viewer.cameraControl.pointerEnabled = false;\n switch (e.which) {\n case 1: // Left button\n down = true;\n var canvasPos = getClickCoordsWithinElement(e);\n dragAction = nextDragAction;\n lastCanvasPos[0] = canvasPos[0];\n lastCanvasPos[1] = canvasPos[1];\n break;\n }\n });\n\n canvas.addEventListener(\"mousemove\", this._canvasMouseMoveListener = (e) => {\n if (!this._visible) {\n return;\n }\n if (!down) {\n return;\n }\n var canvasPos = getClickCoordsWithinElement(e);\n const x = canvasPos[0];\n const y = canvasPos[1];\n\n switch (dragAction) {\n case DRAG_ACTIONS.xTranslate:\n dragTranslateSectionPlane(xBaseAxis, lastCanvasPos, canvasPos);\n break;\n case DRAG_ACTIONS.yTranslate:\n dragTranslateSectionPlane(yBaseAxis, lastCanvasPos, canvasPos);\n break;\n case DRAG_ACTIONS.zTranslate:\n dragTranslateSectionPlane(zBaseAxis, lastCanvasPos, canvasPos);\n break;\n case DRAG_ACTIONS.xRotate:\n dragRotateSectionPlane(xBaseAxis, lastCanvasPos, canvasPos);\n break;\n case DRAG_ACTIONS.yRotate:\n dragRotateSectionPlane(yBaseAxis, lastCanvasPos, canvasPos);\n break;\n case DRAG_ACTIONS.zRotate:\n dragRotateSectionPlane(zBaseAxis, lastCanvasPos, canvasPos);\n break;\n }\n\n lastCanvasPos[0] = x;\n lastCanvasPos[1] = y;\n });\n\n canvas.addEventListener(\"mouseup\", this._canvasMouseUpListener = (e) => {\n if (!this._visible) {\n return;\n }\n this._viewer.cameraControl.pointerEnabled = true;\n if (!down) {\n return;\n }\n switch (e.which) {\n }\n down = false;\n grabbed = false;\n });\n\n canvas.addEventListener(\"wheel\", this._canvasWheelListener = (e) => {\n if (!this._visible) {\n return;\n }\n var delta = Math.max(-1, Math.min(1, -e.deltaY * 40));\n if (delta === 0) {\n return;\n }\n });\n }\n }\n\n _destroy() {\n this._unbindEvents();\n this._destroyNodes();\n }\n\n _unbindEvents() {\n\n const viewer = this._viewer;\n const scene = viewer.scene;\n const canvas = scene.canvas.canvas;\n const camera = viewer.camera;\n const cameraControl = viewer.cameraControl;\n\n scene.off(this._onSceneTick);\n\n canvas.removeEventListener(\"mousedown\", this._canvasMouseDownListener);\n canvas.removeEventListener(\"mousemove\", this._canvasMouseMoveListener);\n canvas.removeEventListener(\"mouseup\", this._canvasMouseUpListener);\n canvas.removeEventListener(\"wheel\", this._canvasWheelListener);\n\n camera.off(this._onCameraViewMatrix);\n camera.off(this._onCameraProjMatrix);\n\n cameraControl.off(this._onCameraControlHover);\n cameraControl.off(this._onCameraControlHoverLeave);\n }\n\n _destroyNodes() {\n this._setSectionPlane(null);\n this._rootNode.destroy();\n this._displayMeshes = {};\n this._affordanceMeshes = {};\n }\n}\n\n/**\n * Renders a 3D plane within an {@link Overview} to indicate its {@link SectionPlane}'s current position and orientation.\n *\n * @private\n */\nclass Plane {\n\n /** @private */\n constructor(overview, overviewScene, sectionPlane) {\n\n /**\n * The ID of this SectionPlanesOverviewPlane.\n *\n * @type {String}\n */\n this.id = sectionPlane.id;\n\n /**\n * The {@link SectionPlane} represented by this SectionPlanesOverviewPlane.\n *\n * @type {SectionPlane}\n */\n this._sectionPlane = sectionPlane;\n\n this._mesh = new Mesh(overviewScene, {\n id: sectionPlane.id,\n geometry: new ReadableGeometry(overviewScene, buildBoxGeometry({\n xSize: .5,\n ySize: .5,\n zSize: .001\n })),\n material: new PhongMaterial(overviewScene, {\n emissive: [1, 1, 1],\n diffuse: [0, 0, 0],\n backfaces: false\n }),\n edgeMaterial: new EdgeMaterial(overviewScene, {\n edgeColor: [0.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n }),\n highlightMaterial: new EmphasisMaterial(overviewScene, {\n fill: true,\n fillColor: [0.5, 1, 0.5],\n fillAlpha: 0.7,\n edges: true,\n edgeColor: [0.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n }),\n selectedMaterial: new EmphasisMaterial(overviewScene, {\n fill: true,\n fillColor: [0, 0, 1],\n fillAlpha: 0.7,\n edges: true,\n edgeColor: [1.0, 0.0, 0.0],\n edgeAlpha: 1.0,\n edgeWidth: 1\n }),\n highlighted: true,\n scale: [3, 3, 3],\n position: [0, 0, 0],\n rotation: [0, 0, 0],\n opacity: 0.3,\n edges: true\n });\n\n\n {\n const vec = math.vec3([0, 0, 0]);\n const pos2 = math.vec3();\n const zeroVec = math.vec3([0, 0, 1]);\n const quat = math.vec4(4);\n const pos3 = math.vec3();\n\n const update = () => {\n\n const origin = this._sectionPlane.scene.center;\n\n const negDir = [-this._sectionPlane.dir[0], -this._sectionPlane.dir[1], -this._sectionPlane.dir[2]];\n math.subVec3(origin, this._sectionPlane.pos, vec);\n const dist = -math.dotVec3(negDir, vec);\n\n math.normalizeVec3(negDir);\n math.mulVec3Scalar(negDir, dist, pos2);\n const quaternion = math.vec3PairToQuaternion(zeroVec, this._sectionPlane.dir, quat);\n\n pos3[0] = pos2[0] * 0.1;\n pos3[1] = pos2[1] * 0.1;\n pos3[2] = pos2[2] * 0.1;\n\n this._mesh.quaternion = quaternion;\n this._mesh.position = pos3;\n };\n\n this._onSectionPlanePos = this._sectionPlane.on(\"pos\", update);\n this._onSectionPlaneDir = this._sectionPlane.on(\"dir\", update);\n\n // update();\n }\n\n this._highlighted = false;\n this._selected = false;\n }\n\n /**\n * Sets if this SectionPlanesOverviewPlane is highlighted.\n *\n * @type {Boolean}\n * @private\n */\n setHighlighted(highlighted) {\n this._highlighted = !!highlighted;\n this._mesh.highlighted = this._highlighted;\n this._mesh.highlightMaterial.fillColor = highlighted ? [0, 0.7, 0] : [0, 0, 0];\n // this._selectedMesh.highlighted = true;\n }\n\n /**\n * Gets if this SectionPlanesOverviewPlane is highlighted.\n *\n * @type {Boolean}\n * @private\n */\n getHighlighted() {\n return this._highlighted;\n }\n\n /**\n * Sets if this SectionPlanesOverviewPlane is selected.\n *\n * @type {Boolean}\n * @private\n */\n setSelected(selected) {\n this._selected = !!selected;\n this._mesh.edgeMaterial.edgeWidth = selected ? 3 : 1;\n this._mesh.highlightMaterial.edgeWidth = selected ? 3 : 1;\n\n }\n\n /**\n * Gets if this SectionPlanesOverviewPlane is selected.\n *\n * @type {Boolean}\n * @private\n */\n getSelected() {\n return this._selected;\n }\n\n /** @private */\n destroy() {\n this._sectionPlane.off(this._onSectionPlanePos);\n this._sectionPlane.off(this._onSectionPlaneDir);\n this._mesh.destroy();\n }\n}\n\n/**\n * @desc An interactive 3D overview for navigating the {@link SectionPlane}s created by its {@link SectionPlanesPlugin}.\n *\n * * Located at {@link SectionPlanesPlugin#overview}.\n * * Renders the overview on a separate canvas at a corner of the {@link Viewer}'s {@link Scene} {@link Canvas}.\n * * The overview shows a 3D plane object for each {@link SectionPlane} in the {@link Scene}.\n * * Click a plane object in the overview to toggle the visibility of a 3D gizmo to edit the position and orientation of its {@link SectionPlane}.\n *\n * @private\n */\nclass Overview {\n\n /**\n * @private\n */\n constructor(plugin, cfg) {\n\n if (!cfg.onHoverEnterPlane || !cfg.onHoverLeavePlane || !cfg.onClickedNothing || !cfg.onClickedPlane) {\n throw \"Missing config(s): onHoverEnterPlane, onHoverLeavePlane, onClickedNothing || onClickedPlane\";\n }\n\n /**\n * The {@link SectionPlanesPlugin} that owns this SectionPlanesOverview.\n *\n * @type {SectionPlanesPlugin}\n */\n this.plugin = plugin;\n\n this._viewer = plugin.viewer;\n\n this._onHoverEnterPlane = cfg.onHoverEnterPlane;\n this._onHoverLeavePlane = cfg.onHoverLeavePlane;\n this._onClickedNothing = cfg.onClickedNothing;\n this._onClickedPlane = cfg.onClickedPlane;\n this._visible = true;\n\n this._planes = {};\n\n //--------------------------------------------------------------------------------------------------------------\n // Init canvas\n //--------------------------------------------------------------------------------------------------------------\n\n this._canvas = cfg.overviewCanvas;\n\n //--------------------------------------------------------------------------------------------------------------\n // Init scene\n //--------------------------------------------------------------------------------------------------------------\n\n this._scene = new Scene(this._viewer, {\n canvasId: this._canvas.id,\n transparent: true\n });\n this._scene.clearLights();\n new DirLight(this._scene, {\n dir: [0.4, -0.4, 0.8],\n color: [0.8, 1.0, 1.0],\n intensity: 1.0,\n space: \"view\"\n });\n new DirLight(this._scene, {\n dir: [-0.8, -0.3, -0.4],\n color: [0.8, 0.8, 0.8],\n intensity: 1.0,\n space: \"view\"\n });\n new DirLight(this._scene, {\n dir: [0.8, -0.6, -0.8],\n color: [1.0, 1.0, 1.0],\n intensity: 1.0,\n space: \"view\"\n });\n\n this._scene.camera;\n this._scene.camera.perspective.fov = 70;\n\n this._zUp = false;\n\n //--------------------------------------------------------------------------------------------------------------\n // Synchronize overview scene camera with viewer camera\n //--------------------------------------------------------------------------------------------------------------\n\n {\n const camera = this._scene.camera;\n const matrix = math.rotationMat4c(-90 * math.DEGTORAD, 1, 0, 0);\n const eyeLookVec = math.vec3();\n const eyeLookVecOverview = math.vec3();\n const upOverview = math.vec3();\n\n this._synchCamera = () => {\n const eye = this._viewer.camera.eye;\n const look = this._viewer.camera.look;\n const up = this._viewer.camera.up;\n math.mulVec3Scalar(math.normalizeVec3(math.subVec3(eye, look, eyeLookVec)), 7);\n if (this._zUp) { // +Z up\n math.transformVec3(matrix, eyeLookVec, eyeLookVecOverview);\n math.transformVec3(matrix, up, upOverview);\n camera.look = [0, 0, 0];\n camera.eye = math.transformVec3(matrix, eyeLookVec, eyeLookVecOverview);\n camera.up = math.transformPoint3(matrix, up, upOverview);\n } else { // +Y up\n camera.look = [0, 0, 0];\n camera.eye = eyeLookVec;\n camera.up = up;\n }\n };\n }\n\n this._onViewerCameraMatrix = this._viewer.camera.on(\"matrix\", this._synchCamera);\n\n this._onViewerCameraWorldAxis = this._viewer.camera.on(\"worldAxis\", this._synchCamera);\n\n this._onViewerCameraFOV = this._viewer.camera.perspective.on(\"fov\", (fov) => {\n this._scene.camera.perspective.fov = fov;\n });\n\n //--------------------------------------------------------------------------------------------------------------\n // Bind overview canvas events\n //--------------------------------------------------------------------------------------------------------------\n\n {\n var hoveredEntity = null;\n\n this._onInputMouseMove = this._scene.input.on(\"mousemove\", (coords) => {\n const hit = this._scene.pick({\n canvasPos: coords\n });\n if (hit) {\n if (!hoveredEntity || hit.entity.id !== hoveredEntity.id) {\n if (hoveredEntity) {\n const plane = this._planes[hoveredEntity.id];\n if (plane) {\n this._onHoverLeavePlane(hoveredEntity.id);\n }\n }\n hoveredEntity = hit.entity;\n const plane = this._planes[hoveredEntity.id];\n if (plane) {\n this._onHoverEnterPlane(hoveredEntity.id);\n }\n }\n } else {\n if (hoveredEntity) {\n this._onHoverLeavePlane(hoveredEntity.id);\n hoveredEntity = null;\n }\n }\n });\n\n this._scene.canvas.canvas.addEventListener(\"mouseup\", this._onCanvasMouseUp = () => {\n if (hoveredEntity) {\n const plane = this._planes[hoveredEntity.id];\n if (plane) {\n this._onClickedPlane(hoveredEntity.id);\n }\n } else {\n this._onClickedNothing();\n }\n });\n\n this._scene.canvas.canvas.addEventListener(\"mouseout\", this._onCanvasMouseOut = () => {\n if (hoveredEntity) {\n this._onHoverLeavePlane(hoveredEntity.id);\n hoveredEntity = null;\n }\n });\n }\n\n //--------------------------------------------------------------------------------------------------------------\n // Configure overview\n //--------------------------------------------------------------------------------------------------------------\n\n this.setVisible(cfg.overviewVisible);\n }\n\n /** Called by SectionPlanesPlugin#createSectionPlane()\n * @private\n */\n addSectionPlane(sectionPlane) {\n this._planes[sectionPlane.id] = new Plane(this, this._scene, sectionPlane);\n }\n\n /** @private\n */\n setPlaneHighlighted(id, highlighted) {\n const plane = this._planes[id];\n if (plane) {\n plane.setHighlighted(highlighted);\n }\n }\n\n /** @private\n */\n setPlaneSelected(id, selected) {\n const plane = this._planes[id];\n if (plane) {\n plane.setSelected(selected);\n }\n }\n\n /** @private\n */\n removeSectionPlane(sectionPlane) {\n const plane = this._planes[sectionPlane.id];\n if (plane) {\n plane.destroy();\n delete this._planes[sectionPlane.id];\n }\n }\n\n /**\n * Sets if this SectionPlanesOverview is visible.\n *\n * @param {Boolean} visible Whether or not this SectionPlanesOverview is visible.\n */\n setVisible(visible = true) {\n this._visible = visible;\n this._canvas.style.visibility = visible ? \"visible\" : \"hidden\";\n }\n\n /**\n * Gets if this SectionPlanesOverview is visible.\n *\n * @return {Boolean} True when this SectionPlanesOverview is visible.\n */\n getVisible() {\n return this._visible;\n }\n\n /** @private\n */\n destroy() {\n this._viewer.camera.off(this._onViewerCameraMatrix);\n this._viewer.camera.off(this._onViewerCameraWorldAxis);\n this._viewer.camera.perspective.off(this._onViewerCameraFOV);\n\n this._scene.input.off(this._onInputMouseMove);\n this._scene.canvas.canvas.removeEventListener(\"mouseup\", this._onCanvasMouseUp);\n this._scene.canvas.canvas.removeEventListener(\"mouseout\", this._onCanvasMouseOut);\n this._scene.destroy();\n }\n}\n\nconst tempAABB = math.AABB3();\nconst tempVec3$3 = math.vec3();\n\n/**\n * SectionPlanesPlugin is a {@link Viewer} plugin that manages {@link SectionPlane}s.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/#gizmos_SectionPlanesPlugin)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#gizmos_SectionPlanesPlugin)]\n *\n * ## Overview\n *\n * * Use the SectionPlanesPlugin to\n * create and edit {@link SectionPlane}s to slice portions off your models and reveal internal structures.\n * * As shown in the screen capture above, SectionPlanesPlugin shows an overview of all your SectionPlanes (on the right, in\n * this example).\n * * Click a plane in the overview to activate a 3D control with which you can interactively\n * reposition its SectionPlane in the main canvas.\n *\n * ## Usage\n *\n * In the example below, we'll use a {@link GLTFLoaderPlugin} to load a model, and a SectionPlanesPlugin\n * to slice it open with two {@link SectionPlane}s. We'll show the overview in the bottom right of the Viewer\n * canvas. Finally, we'll programmatically activate the 3D editing control, so that we can use it to interactively\n * reposition our second SectionPlane.\n *\n * ````JavaScript\n * import {Viewer, GLTFLoaderPlugin, SectionPlanesPlugin} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange its Camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [-5.02, 2.22, 15.09];\n * viewer.camera.look = [4.97, 2.79, 9.89];\n * viewer.camera.up = [-0.05, 0.99, 0.02];\n *\n *\n * // Add a GLTFLoaderPlugin\n *\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * // Add a SectionPlanesPlugin, with overview visible\n *\n * const sectionPlanes = new SectionPlanesPlugin(viewer, {\n * overviewCanvasID: \"myOverviewCanvas\",\n * overviewVisible: true\n * });\n *\n * // Load a model\n *\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/schependomlaan/scene.gltf\"\n * });\n *\n * // Create a couple of section planes\n * // These will be shown in the overview\n *\n * sectionPlanes.createSectionPlane({\n * id: \"mySectionPlane\",\n * pos: [1.04, 1.95, 9.74],\n * dir: [1.0, 0.0, 0.0]\n * });\n *\n * sectionPlanes.createSectionPlane({\n * id: \"mySectionPlane2\",\n * pos: [2.30, 4.46, 14.93],\n * dir: [0.0, -0.09, -0.79]\n * });\n *\n * // Show the SectionPlanePlugin's 3D editing gizmo,\n * // to interactively reposition one of our SectionPlanes\n *\n * sectionPlanes.showControl(\"mySectionPlane2\");\n *\n * const mySectionPlane2 = sectionPlanes.sectionPlanes[\"mySectionPlane2\"];\n *\n * // Programmatically reposition one of our SectionPlanes\n * // This also updates its position as shown in the overview gizmo\n *\n * mySectionPlane2.pos = [11.0, 6.-, -12];\n * mySectionPlane2.dir = [0.4, 0.0, 0.5];\n * ````\n */\nclass SectionPlanesPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"SectionPlanes\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {String} [cfg.overviewCanvasId] ID of a canvas element to display the overview.\n * @param {String} [cfg.overviewVisible=true] Initial visibility of the overview canvas.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"SectionPlanes\", viewer);\n\n this._freeControls = [];\n this._sectionPlanes = viewer.scene.sectionPlanes;\n this._controls = {};\n this._shownControlId = null;\n\n if (cfg.overviewCanvasId !== null && cfg.overviewCanvasId !== undefined) {\n\n const overviewCanvas = document.getElementById(cfg.overviewCanvasId);\n\n if (!overviewCanvas) {\n this.warn(\"Can't find overview canvas: '\" + cfg.overviewCanvasId + \"' - will create plugin without overview\");\n\n } else {\n\n this._overview = new Overview(this, {\n overviewCanvas: overviewCanvas,\n visible: cfg.overviewVisible,\n\n onHoverEnterPlane: ((id) => {\n this._overview.setPlaneHighlighted(id, true);\n }),\n\n onHoverLeavePlane: ((id) => {\n this._overview.setPlaneHighlighted(id, false);\n }),\n\n onClickedPlane: ((id) => {\n if (this.getShownControl() === id) {\n this.hideControl();\n return;\n }\n this.showControl(id);\n const sectionPlane = this.sectionPlanes[id];\n const sectionPlanePos = sectionPlane.pos;\n tempAABB.set(this.viewer.scene.aabb);\n math.getAABB3Center(tempAABB, tempVec3$3);\n tempAABB[0] += sectionPlanePos[0] - tempVec3$3[0];\n tempAABB[1] += sectionPlanePos[1] - tempVec3$3[1];\n tempAABB[2] += sectionPlanePos[2] - tempVec3$3[2];\n tempAABB[3] += sectionPlanePos[0] - tempVec3$3[0];\n tempAABB[4] += sectionPlanePos[1] - tempVec3$3[1];\n tempAABB[5] += sectionPlanePos[2] - tempVec3$3[2];\n this.viewer.cameraFlight.flyTo({\n aabb: tempAABB,\n fitFOV: 65\n });\n }),\n\n onClickedNothing: (() => {\n this.hideControl();\n })\n });\n }\n }\n\n this._onSceneSectionPlaneCreated = viewer.scene.on(\"sectionPlaneCreated\", (sectionPlane) => {\n\n // SectionPlane created, either via SectionPlanesPlugin#createSectionPlane(), or by directly\n // instantiating a SectionPlane independently of SectionPlanesPlugin, which can be done\n // by BCFViewpointsPlugin#loadViewpoint().\n\n this._sectionPlaneCreated(sectionPlane);\n });\n }\n\n /**\n * Sets if the overview canvas is visible.\n *\n * @param {Boolean} visible Whether or not the overview canvas is visible.\n */\n setOverviewVisible(visible) {\n if (this._overview) {\n this._overview.setVisible(visible);\n }\n }\n\n /**\n * Gets if the overview canvas is visible.\n *\n * @return {Boolean} True when the overview canvas is visible.\n */\n getOverviewVisible() {\n if (this._overview) {\n return this._overview.getVisible();\n }\n }\n\n /**\n * Returns a map of the {@link SectionPlane}s created by this SectionPlanesPlugin.\n *\n * @returns {{String:SectionPlane}} A map containing the {@link SectionPlane}s, each mapped to its {@link SectionPlane#id}.\n */\n get sectionPlanes() {\n return this._sectionPlanes;\n }\n\n /**\n * Creates a {@link SectionPlane}.\n *\n * The {@link SectionPlane} will be registered by {@link SectionPlane#id} in {@link SectionPlanesPlugin#sectionPlanes}.\n *\n * @param {Object} params {@link SectionPlane} configuration.\n * @param {String} [params.id] Unique ID to assign to the {@link SectionPlane}. Must be unique among all components in the {@link Viewer}'s {@link Scene}. Auto-generated when omitted.\n * @param {Number[]} [params.pos=[0,0,0]] World-space position of the {@link SectionPlane}.\n * @param {Number[]} [params.dir=[0,0,-1]] World-space vector indicating the orientation of the {@link SectionPlane}.\n * @param {Boolean} [params.active=true] Whether the {@link SectionPlane} is initially active. Only clips while this is true.\n * @returns {SectionPlane} The new {@link SectionPlane}.\n */\n createSectionPlane(params = {}) {\n\n if (params.id !== undefined && params.id !== null && this.viewer.scene.components[params.id]) {\n this.error(\"Viewer component with this ID already exists: \" + params.id);\n delete params.id;\n }\n\n // Note that SectionPlane constructor fires \"sectionPlaneCreated\" on the Scene,\n // which SectionPlanesPlugin handles and calls #_sectionPlaneCreated to create gizmo and add to overview canvas.\n\n const sectionPlane = new SectionPlane(this.viewer.scene, {\n id: params.id,\n pos: params.pos,\n dir: params.dir,\n active: true \n });\n return sectionPlane;\n }\n\n _sectionPlaneCreated(sectionPlane) {\n const control = (this._freeControls.length > 0) ? this._freeControls.pop() : new Control(this);\n control._setSectionPlane(sectionPlane);\n control.setVisible(false);\n this._controls[sectionPlane.id] = control;\n if (this._overview) {\n this._overview.addSectionPlane(sectionPlane);\n }\n sectionPlane.once(\"destroyed\", () => {\n this._sectionPlaneDestroyed(sectionPlane);\n });\n }\n\n /**\n * Inverts the direction of {@link SectionPlane#dir} on every existing SectionPlane.\n *\n * Inverts all SectionPlanes, including those that were not created with SectionPlanesPlugin.\n */\n flipSectionPlanes() {\n const sectionPlanes = this.viewer.scene.sectionPlanes;\n for (let id in sectionPlanes) {\n const sectionPlane = sectionPlanes[id];\n sectionPlane.flipDir();\n }\n }\n\n /**\n * Shows the 3D editing gizmo for a {@link SectionPlane}.\n *\n * @param {String} id ID of the {@link SectionPlane}.\n */\n showControl(id) {\n const control = this._controls[id];\n if (!control) {\n this.error(\"Control not found: \" + id);\n return;\n }\n this.hideControl();\n control.setVisible(true);\n if (this._overview) {\n this._overview.setPlaneSelected(id, true);\n }\n this._shownControlId = id;\n }\n\n /**\n * Gets the ID of the {@link SectionPlane} that the 3D editing gizmo is shown for.\n *\n * Returns ````null```` when the editing gizmo is not shown.\n *\n * @returns {String} ID of the the {@link SectionPlane} that the 3D editing gizmo is shown for, if shown, else ````null````.\n */\n getShownControl() {\n return this._shownControlId;\n }\n\n /**\n * Hides the 3D {@link SectionPlane} editing gizmo if shown.\n */\n hideControl() {\n for (var id in this._controls) {\n if (this._controls.hasOwnProperty(id)) {\n this._controls[id].setVisible(false);\n if (this._overview) {\n this._overview.setPlaneSelected(id, false);\n }\n }\n }\n this._shownControlId = null;\n }\n\n /**\n * Destroys a {@link SectionPlane} created by this SectionPlanesPlugin.\n *\n * @param {String} id ID of the {@link SectionPlane}.\n */\n destroySectionPlane(id) {\n var sectionPlane = this.viewer.scene.sectionPlanes[id];\n if (!sectionPlane) {\n this.error(\"SectionPlane not found: \" + id);\n return;\n }\n this._sectionPlaneDestroyed(sectionPlane);\n sectionPlane.destroy();\n\n if (id === this._shownControlId) {\n this._shownControlId = null;\n }\n }\n\n _sectionPlaneDestroyed(sectionPlane) {\n if (this._overview) {\n this._overview.removeSectionPlane(sectionPlane);\n }\n const control = this._controls[sectionPlane.id];\n if (!control) {\n return;\n }\n control.setVisible(false);\n control._setSectionPlane(null);\n delete this._controls[sectionPlane.id];\n this._freeControls.push(control);\n }\n\n /**\n * Destroys all {@link SectionPlane}s created by this SectionPlanesPlugin.\n */\n clear() {\n const ids = Object.keys(this._sectionPlanes);\n for (var i = 0, len = ids.length; i < len; i++) {\n this.destroySectionPlane(ids[i]);\n }\n }\n\n /**\n * @private\n */\n send(name, value) {\n switch (name) {\n\n case \"snapshotStarting\": // Viewer#getSnapshot() about to take snapshot - hide controls\n for (let id in this._controls) {\n if (this._controls.hasOwnProperty(id)) {\n this._controls[id].setCulled(true);\n }\n }\n break;\n\n case \"snapshotFinished\": // Viewer#getSnapshot() finished taking snapshot - show controls again\n for (let id in this._controls) {\n if (this._controls.hasOwnProperty(id)) {\n this._controls[id].setCulled(false);\n }\n }\n break;\n\n case \"clearSectionPlanes\":\n this.clear();\n break;\n }\n }\n\n /**\n * Destroys this SectionPlanesPlugin.\n *\n * Also destroys each {@link SectionPlane} created by this SectionPlanesPlugin.\n *\n * Does not destroy the canvas the SectionPlanesPlugin was configured with.\n */\n destroy() {\n this.clear();\n if (this._overview) {\n this._overview.destroy();\n }\n this._destroyFreeControls();\n super.destroy();\n }\n\n _destroyFreeControls() {\n var control = this._freeControls.pop();\n while (control) {\n control._destroy();\n control = this._freeControls.pop();\n }\n this.viewer.scene.off(this._onSceneSectionPlaneCreated);\n }\n}\n\n/**\n * @desc A Skybox.\n */\nclass Skybox extends Component {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this PointLight as well.\n * @param {*} [cfg] Skybox configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {Scene}, generated automatically when omitted.\n * @param {String} [cfg.src=null] Path to skybox texture\n * @param {String} [cfg.encoding=\"linear\"] Texture encoding format. See the {@link Texture#encoding} property for more info.\n * @param {Number} [cfg.size=1000] Size of this Skybox, given as the distance from the center at ````[0,0,0]```` to each face.\n * @param {Boolean} [cfg.active=true] True when this Skybox is visible.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._skyboxMesh = new Mesh(this, {\n\n geometry: new ReadableGeometry(this, { // Box-shaped geometry\n primitive: \"triangles\",\n positions: [\n 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, 1, // v0-v1-v2-v3 front\n 1, 1, 1, 1, -1, 1, 1, -1, -1, 1, 1, -1, // v0-v3-v4-v5 right\n 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, // v0-v5-v6-v1 top\n -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, // v1-v6-v7-v2 left\n -1, -1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, // v7-v4-v3-v2 bottom\n 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, -1 // v4-v7-v6-v5 back\n ],\n uv: [\n 0.5, 0.6666, 0.25, 0.6666, 0.25, 0.3333, 0.5, 0.3333, 0.5, 0.6666, 0.5, 0.3333, 0.75, 0.3333, 0.75, 0.6666,\n 0.5, 0.6666, 0.5, 1, 0.25, 1, 0.25, 0.6666, 0.25, 0.6666, 0.0, 0.6666, 0.0, 0.3333, 0.25, 0.3333,\n 0.25, 0, 0.50, 0, 0.50, 0.3333, 0.25, 0.3333, 0.75, 0.3333, 1.0, 0.3333, 1.0, 0.6666, 0.75, 0.6666\n ],\n indices: [\n 0, 1, 2, 0, 2, 3, 4, 5, 6, 4, 6, 7, 8, 9, 10, 8, 10, 11,\n 12, 13, 14, 12, 14, 15, 16, 17, 18, 16, 18, 19, 20, 21, 22, 20, 22, 23\n ]\n }),\n background: true,\n scale: [2000, 2000, 2000], // Overridden when we initialize the 'size' property, below\n rotation: [0, -90, 0],\n material: new PhongMaterial(this, {\n ambient: [0, 0, 0],\n diffuse: [0, 0, 0],\n specular: [0, 0, 0],\n emissive: [1, 1, 1],\n emissiveMap: new Texture(this, {\n src: cfg.src,\n flipY: true,\n wrapS: \"clampToEdge\",\n wrapT: \"clampToEdge\",\n encoding: cfg.encoding || \"sRGB\"\n }),\n backfaces: true // Show interior faces of our skybox geometry\n }),\n // stationary: true,\n visible: false,\n pickable: false,\n collidable: false\n });\n\n this.size = cfg.size; // Sets 'xyz' property on the Mesh's Scale transform\n this.active = cfg.active;\n }\n\n\n /**\n * Sets the size of this Skybox, given as the distance from the center at [0,0,0] to each face.\n *\n * Default value is ````1000````.\n *\n * @param {Number} value The size.\n */\n set size(value) {\n this._size = value || 1000;\n this._skyboxMesh.scale = [this._size, this._size, this._size];\n }\n\n /**\n * Gets the size of this Skybox, given as the distance from the center at [0,0,0] to each face.\n *\n * Default value is ````1000````.\n *\n * @returns {Number} The size.\n */\n get size() {\n return this._size;\n }\n\n /**\n * Sets whether this Skybox is visible or not.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} active Whether to make active or not.\n */\n set active(active) {\n this._skyboxMesh.visible = active;\n }\n\n /**\n * Gets if this Skybox is visible or not.\n *\n * Default active is ````true````.\n *\n * @returns {Boolean} ````true```` if the Skybox is active.\n */\n get active() {\n return this._skyboxMesh.visible;\n }\n}\n\n/**\n * {@link Viewer} plugin that manages skyboxes\n *\n * @example\n *\n * // Create a Viewer\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Add a GLTFModelsPlugin\n * var gltfLoaderPlugin = new GLTFModelsPlugin(viewer, {\n * id: \"GLTFModels\" // Default value\n * });\n *\n * // Add a SkyboxesPlugin\n * var skyboxesPlugin = new SkyboxesPlugin(viewer, {\n * id: \"Skyboxes\" // Default value\n * });\n *\n * // Load a glTF model\n * const model = gltfLoaderPlugin.load({\n * id: \"myModel\",\n * src: \"./models/gltf/mygltfmodel.gltf\"\n * });\n *\n * // Create three directional World-space lights. \"World\" means that they will appear as if part\n * // of the world, instead of \"View\", where they move with the user's head.\n *\n * skyboxesPlugin.createLight({\n * id: \"keyLight\",\n * dir: [0.8, -0.6, -0.8],\n * color: [1.0, 0.3, 0.3],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * skyboxesPlugin.createLight({\n * id: \"fillLight\",\n * dir: [-0.8, -0.4, -0.4],\n * color: [0.3, 1.0, 0.3],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * skyboxesPlugin.createDirLight({\n * id: \"rimLight\",\n * dir: [0.2, -0.8, 0.8],\n * color: [0.6, 0.6, 0.6],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * @class SkyboxesPlugin\n */\nclass SkyboxesPlugin extends Plugin {\n\n constructor(viewer) {\n super(\"skyboxes\", viewer);\n this.skyboxes = {};\n }\n\n /**\n * @private\n */\n send(name, value) {\n switch (name) {\n case \"clear\":\n this.clear();\n break;\n }\n }\n\n /**\n Creates a skybox.\n\n @param {String} id Unique ID to assign to the skybox.\n @param {Object} params Skybox configuration.\n @param {Boolean} [params.active=true] Whether the skybox plane is initially active. Only skyboxes while this is true.\n @returns {Skybox} The new skybox.\n */\n createSkybox(id, params) {\n if (this.viewer.scene.components[id]) {\n this.error(\"Component with this ID already exists: \" + id);\n return this;\n }\n var skybox = new Skybox(this.viewer.scene, {\n id: id,\n pos: params.pos,\n dir: params.dir,\n active: true \n });\n this.skyboxes[id] = skybox;\n return skybox;\n }\n\n /**\n Destroys a skybox.\n @param id\n */\n destroySkybox(id) {\n var skybox = this.skyboxes[id];\n if (!skybox) {\n this.error(\"Skybox not found: \" + id);\n return;\n }\n skybox.destroy();\n }\n\n /**\n Destroys all skyboxes.\n */\n clear() {\n var ids = Object.keys(this.viewer.scene.skyboxes);\n for (var i = 0, len = ids.length; i < len; i++) {\n this.destroySkybox(ids[i]);\n }\n }\n\n /**\n * Destroys this plugin.\n *\n * Clears skyboxes from the Viewer first.\n */\n destroy() {\n this.clear();\n super.clear();\n }\n}\n\n/**\n * Default data access strategy for {@link STLLoaderPlugin}.\n *\n * This implementation simply loads STL files using XMLHttpRequest.\n */\nclass STLDefaultDataSource {\n\n /**\n * Gets STL data.\n *\n * @param {String|Number} src Identifies the STL file.\n * @param {Function} ok Fired on successful loading of the STL file.\n * @param {Function} error Fired on error while loading the STL file.\n */\n getSTL(src, ok, error) {\n const request = new XMLHttpRequest();\n request.overrideMimeType(\"application/json\");\n request.open('GET', src, true);\n request.responseType = 'arraybuffer';\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n ok(request.response);\n } else {\n error(request.statusText);\n }\n }\n };\n request.send(null);\n }\n}\n\nconst tempVec3a$6 = math.vec3();\n\n/**\n * @private\n */\nclass STLSceneGraphLoader {\n\n load(plugin, modelNode, src, options, ok, error) {\n\n options = options || {};\n\n const spinner = plugin.viewer.scene.canvas.spinner;\n spinner.processes++;\n\n plugin.dataSource.getSTL(src, function (data) { // OK\n parse(plugin, modelNode, data, options);\n try {\n const binData = ensureBinary(data);\n if (isBinary(binData)) {\n parseBinary(plugin, binData, modelNode, options);\n } else {\n parseASCII(plugin, ensureString(data), modelNode, options);\n }\n spinner.processes--;\n core.scheduleTask(function () {\n modelNode.fire(\"loaded\", true, false);\n });\n if (ok) {\n ok();\n }\n } catch (e) {\n spinner.processes--;\n plugin.error(e);\n if (error) {\n error(e);\n }\n modelNode.fire(\"error\", e);\n }\n },\n function (msg) {\n spinner.processes--;\n plugin.error(msg);\n if (error) {\n error(msg);\n }\n modelNode.fire(\"error\", msg);\n });\n }\n\n parse(plugin, modelNode, data, options) {\n const spinner = plugin.viewer.scene.canvas.spinner;\n spinner.processes++;\n try {\n const binData = ensureBinary(data);\n if (isBinary(binData)) {\n parseBinary(plugin, binData, modelNode, options);\n } else {\n parseASCII(plugin, ensureString(data), modelNode, options);\n }\n spinner.processes--;\n core.scheduleTask(function () {\n modelNode.fire(\"loaded\", true, false);\n });\n } catch (e) {\n spinner.processes--;\n modelNode.fire(\"error\", e);\n }\n }\n}\n\nfunction parse(plugin, modelNode, data, options) {\n try {\n const binData = ensureBinary(data);\n if (isBinary(binData)) {\n parseBinary(plugin, binData, modelNode, options);\n } else {\n parseASCII(plugin, ensureString(data), modelNode, options);\n }\n } catch (e) {\n modelNode.fire(\"error\", e);\n }\n}\n\nfunction isBinary(data) {\n const reader = new DataView(data);\n const numFaces = reader.getUint32(80, true);\n const faceSize = (32 / 8 * 3) + ((32 / 8 * 3) * 3) + (16 / 8);\n const numExpectedBytes = 80 + (32 / 8) + (numFaces * faceSize);\n if (numExpectedBytes === reader.byteLength) {\n return true;\n }\n const solid = [115, 111, 108, 105, 100];\n for (var i = 0; i < 5; i++) {\n if (solid[i] !== reader.getUint8(i, false)) {\n return true;\n }\n }\n return false;\n}\n\nfunction parseBinary(plugin, data, modelNode, options) {\n const reader = new DataView(data);\n const faces = reader.getUint32(80, true);\n let r;\n let g;\n let b;\n let hasColors = false;\n let colors;\n let defaultR;\n let defaultG;\n let defaultB;\n let lastR = null;\n let lastG = null;\n let lastB = null;\n let newMesh = false;\n for (let index = 0; index < 80 - 10; index++) {\n if ((reader.getUint32(index, false) === 0x434F4C4F /*COLO*/) &&\n (reader.getUint8(index + 4) === 0x52 /*'R'*/) &&\n (reader.getUint8(index + 5) === 0x3D /*'='*/)) {\n hasColors = true;\n colors = [];\n defaultR = reader.getUint8(index + 6) / 255;\n defaultG = reader.getUint8(index + 7) / 255;\n defaultB = reader.getUint8(index + 8) / 255;\n reader.getUint8(index + 9) / 255;\n }\n }\n const material = new MetallicMaterial(modelNode, { // Share material with all meshes\n roughness: 0.5\n });\n // var material = new PhongMaterial(modelNode, { // Share material with all meshes\n // diffuse: [0.4, 0.4, 0.4],\n // reflectivity: 1,\n // specular: [0.5, 0.5, 1.0]\n // });\n let dataOffset = 84;\n let faceLength = 12 * 4 + 2;\n let positions = [];\n let normals = [];\n let splitMeshes = options.splitMeshes;\n for (let face = 0; face < faces; face++) {\n let start = dataOffset + face * faceLength;\n let normalX = reader.getFloat32(start, true);\n let normalY = reader.getFloat32(start + 4, true);\n let normalZ = reader.getFloat32(start + 8, true);\n if (hasColors) {\n let packedColor = reader.getUint16(start + 48, true);\n if ((packedColor & 0x8000) === 0) {\n r = (packedColor & 0x1F) / 31;\n g = ((packedColor >> 5) & 0x1F) / 31;\n b = ((packedColor >> 10) & 0x1F) / 31;\n } else {\n r = defaultR;\n g = defaultG;\n b = defaultB;\n }\n if (splitMeshes && r !== lastR || g !== lastG || b !== lastB) {\n if (lastR !== null) {\n newMesh = true;\n }\n lastR = r;\n lastG = g;\n lastB = b;\n }\n }\n for (let i = 1; i <= 3; i++) {\n let vertexstart = start + i * 12;\n positions.push(reader.getFloat32(vertexstart, true));\n positions.push(reader.getFloat32(vertexstart + 4, true));\n positions.push(reader.getFloat32(vertexstart + 8, true));\n normals.push(normalX, normalY, normalZ);\n if (hasColors) {\n colors.push(r, g, b, 1); // TODO: handle alpha\n }\n }\n if (splitMeshes && newMesh) {\n addMesh(modelNode, positions, normals, colors, material, options);\n positions = [];\n normals = [];\n colors = colors ? [] : null;\n newMesh = false;\n }\n }\n if (positions.length > 0) {\n addMesh(modelNode, positions, normals, colors, material, options);\n }\n}\n\nfunction parseASCII(plugin, data, modelNode, options) {\n const faceRegex = /facet([\\s\\S]*?)endfacet/g;\n let faceCounter = 0;\n const floatRegex = /[\\s]+([+-]?(?:\\d+.\\d+|\\d+.|\\d+|.\\d+)(?:[eE][+-]?\\d+)?)/.source;\n const vertexRegex = new RegExp('vertex' + floatRegex + floatRegex + floatRegex, 'g');\n const normalRegex = new RegExp('normal' + floatRegex + floatRegex + floatRegex, 'g');\n const positions = [];\n const normals = [];\n const colors = null;\n let normalx;\n let normaly;\n let normalz;\n let result;\n let verticesPerFace;\n let normalsPerFace;\n let text;\n while ((result = faceRegex.exec(data)) !== null) {\n verticesPerFace = 0;\n normalsPerFace = 0;\n text = result[0];\n while ((result = normalRegex.exec(text)) !== null) {\n normalx = parseFloat(result[1]);\n normaly = parseFloat(result[2]);\n normalz = parseFloat(result[3]);\n normalsPerFace++;\n }\n while ((result = vertexRegex.exec(text)) !== null) {\n positions.push(parseFloat(result[1]), parseFloat(result[2]), parseFloat(result[3]));\n normals.push(normalx, normaly, normalz);\n verticesPerFace++;\n }\n if (normalsPerFace !== 1) {\n plugin.error(\"Error in normal of face \" + faceCounter);\n }\n if (verticesPerFace !== 3) {\n plugin.error(\"Error in positions of face \" + faceCounter);\n }\n faceCounter++;\n }\n const material = new MetallicMaterial(modelNode, {\n roughness: 0.5\n });\n // var material = new PhongMaterial(modelNode, {\n // diffuse: [0.4, 0.4, 0.4],\n // reflectivity: 1,\n // specular: [0.5, 0.5, 1.0]\n // });\n addMesh(modelNode, positions, normals, colors, material, options);\n}\n\nfunction addMesh(modelNode, positions, normals, colors, material, options) {\n\n const indices = new Int32Array(positions.length / 3);\n for (let ni = 0, len = indices.length; ni < len; ni++) {\n indices[ni] = ni;\n }\n\n normals = normals && normals.length > 0 ? normals : null;\n colors = colors && colors.length > 0 ? colors : null;\n\n if (options.smoothNormals) {\n math.faceToVertexNormals(positions, normals, options);\n }\n\n const rtcCenter = tempVec3a$6;\n\n worldToRTCPositions(positions, positions, rtcCenter);\n\n const geometry = new ReadableGeometry(modelNode, {\n primitive: \"triangles\",\n positions: positions,\n normals: normals,\n colors: colors,\n indices: indices\n });\n\n const mesh = new Mesh(modelNode, {\n rtcCenter: (rtcCenter[0] !== 0 || rtcCenter[1] !== 0 || rtcCenter[2] !== 0) ? rtcCenter : null,\n geometry: geometry,\n material: material,\n edges: options.edges\n });\n\n modelNode.addChild(mesh);\n}\n\nfunction ensureString(buffer) {\n if (typeof buffer !== 'string') {\n return decodeText(new Uint8Array(buffer));\n }\n return buffer;\n}\n\nfunction ensureBinary(buffer) {\n if (typeof buffer === 'string') {\n const arrayBuffer = new Uint8Array(buffer.length);\n for (let i = 0; i < buffer.length; i++) {\n arrayBuffer[i] = buffer.charCodeAt(i) & 0xff; // implicitly assumes little-endian\n }\n return arrayBuffer.buffer || arrayBuffer;\n } else {\n return buffer;\n }\n}\n\nfunction decodeText(array) {\n if (typeof TextDecoder !== 'undefined') {\n return new TextDecoder().decode(array);\n }\n let s = '';\n for (let i = 0, il = array.length; i < il; i++) {\n s += String.fromCharCode(array[i]); // Implicitly assumes little-endian.\n }\n return decodeURIComponent(escape(s));\n}\n\n/**\n * {@link Viewer} plugin that loads models from STL files.\n *\n * ## Overview\n *\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Supports both binary and ASCII formats.\n * * Supports double-precision vertex positions.\n * * Supports custom data source configuration.\n *\n * ## Smoothing STL Normals\n *\n * STL models are normally flat-shaded, however providing a ````smoothNormals```` parameter when loading gives a smooth\n * appearance. Triangles in STL are disjoint, where each triangle has its own separate vertex positions, normals and\n * (optionally) colors. This means that you can have gaps between triangles in an STL model. Normals for each triangle\n * are perpendicular to the triangle's surface, which gives the model a faceted appearance by default.\n *\n * The ```smoothNormals``` parameter causes the plugin to recalculate the STL normals, so that each normal's direction is\n * the average of the orientations of the triangles adjacent to its vertex. When smoothing, each vertex normal is set to\n * the average of the orientations of all other triangles that have a vertex at the same position, excluding those triangles\n * whose direction deviates from the direction of the vertice's triangle by a threshold given in\n * the ````smoothNormalsAngleThreshold```` loading parameter. This makes smoothing robust for hard edges.\n *\n * ## Creating Entities for Objects\n *\n * An STL model is normally a single mesh, however providing a ````splitMeshes```` parameter when loading\n * will create a separate object {@link Entity} for each group of faces that share the same vertex colors. This option\n * only works with binary STL files.\n *\n * See the {@link STLLoaderPlugin#load} method for more info on loading options.\n *\n * ## Usage\n *\n * In the example below, we'll use an STLLoaderPlugin to load an STL model of a spur gear. When the model has loaded,\n * we'll use the {@link CameraFlightAnimation} to fly the {@link Camera} to look at boundary of the model. We'll\n * then get the model's {@link Entity} from the {@link Scene} and highlight the whole model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#loading_STL_SpurGear)]\n *\n * ````javascript\n * // Create a xeokit Viewer\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Add an STLLoaderPlugin to the Viewer\n * var plugin = new STLLoaderPlugin(viewer);\n *\n * // Load the STL model\n * var model = plugin.load({ // Model is an Entity\n * id: \"myModel\",\n * src: \"./models/stl/binary/spurGear.stl\",\n * scale: [0.1, 0.1, 0.1],\n * rotate: [90, 0, 0],\n * translate: [100,0,0],\n * edges: true,\n * smoothNormals: true, // Default\n * smoothNormalsAngleThreshold: 20, // Default\n * splitMeshes: true // Default\n * });\n *\n * // When the model has loaded, fit it to view\n * model.on(\"loaded\", function() { // Model is an Entity\n * viewer.cameraFlight.flyTo(model);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Update properties of the model Entity\n * model.highlight = [1,0,0];\n *\n * // Destroy the model Entity\n * model.destroy();\n * ````\n *\n * ## Loading from a Pre-Loaded STL File\n *\n * If we already have our STL file in memory (perhaps pre-loaded, or even generated in-client), then we can just pass that\n * file data straight into the {@link STLLoaderPlugin#load} method. In the example below, to show how it's done, we'll pre-load\n * our STL file data, then pass it straight into that method.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#loading_STL_dataAsParam)]\n *\n * ````javascript\n * loadSTL(\"./models/stl/binary/spurGear.stl\", (stlData) =>{\n *\n * const model = stlLoader.load({\n * id: \"myModel\",\n * stl: stlData,\n * smoothNormals: true\n * });\n *\n * model.on(\"loaded\", () => {\n * viewer.cameraFlight.jumpTo(model);\n * viewer.scene.on(\"tick\", () => {\n * viewer.camera.orbitYaw(0.4);\n * })\n * });\n * })\n *\n * function loadSTL(src, ok, error) {\n * const request = new XMLHttpRequest();\n * request.overrideMimeType(\"application/json\");\n * request.open('GET', src, true);\n * request.responseType = 'arraybuffer';\n * request.onreadystatechange = function () {\n * if (request.readyState === 4) {\n * if (request.status === 200) {\n * ok(request.response);\n * } else if (error) {\n * error(request.statusText);\n * }\n * }\n * };\n * request.send(null);\n * }\n *````\n *\n * ## Configuring a Custom Data Source\n *\n * In the example below, we'll create the STLLoaderPlugin again, this time configuring it with a\n * custom data source object, through which it can load STL files. For this example, our data source just loads\n * them via HTTP, for simplicity. Once we've created the STLLoaderPlugin, we'll load our STL file as before.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#loading_STL_dataSource)]\n *\n * ````javascript\n * // Our custom STL data access strategy - implementation happens to be the same as STLDefaultDataSource\n *\n * class MyDataSource {\n * getSTL(src, ok, error) {\n * const request = new XMLHttpRequest();\n * request.overrideMimeType(\"application/json\");\n * request.open('GET', src, true);\n * request.responseType = 'arraybuffer';\n * request.onreadystatechange = function () {\n * if (request.readyState === 4) {\n * if (request.status === 200) {\n * ok(request.response);\n * } else {\n * error(request.statusText);\n * }\n * }\n * };\n * request.send(null);\n * }\n * }\n *\n * const stlLoader = new STLLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * // Load the STL model as before\n * var model = plugin.load({\n * id: \"myModel\",\n * src: \"./models/stl/binary/spurGear.stl\",\n * scale: [0.1, 0.1, 0.1],\n * rotate: [90, 0, 0],\n * translate: [100,0,0],\n * edges: true,\n * smoothNormals: true, // Default\n * smoothNormalsAngleThreshold: 20, // Default\n * splitMeshes: true // Default\n * });\n *\n * //...\n *````\n *\n * @class STLLoaderPlugin\n */\nclass STLLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} [cfg] Plugin configuration.\n * @param {String} [cfg.id=\"STLLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.dataSource] A custom data source through which the STLLoaderPlugin can load STL files. Defaults to an instance of {@link STLDefaultDataSource}, which loads over HTTP.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"STLLoader\", viewer, cfg);\n\n /**\n * @private\n */\n this._sceneGraphLoader = new STLSceneGraphLoader();\n\n this.dataSource = cfg.dataSource;\n }\n\n /**\n * Sets a custom data source through which the STLLoaderPlugin can load STL files.\n *\n * Default value is {@link STLDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n set dataSource(value) {\n this._dataSource = value || new STLDefaultDataSource();\n }\n\n /**\n * Gets the custom data source through which the STLLoaderPlugin can load STL files.\n *\n * Default value is {@link STLDefaultDataSource}, which loads via an XMLHttpRequest.\n *\n * @type {Object}\n */\n get dataSource() {\n return this._dataSource;\n }\n\n /**\n * Loads an STL model from a file into this STLLoaderPlugin's {@link Viewer}.\n *\n * @param {*} params Loading parameters.\n * @param {String} params.id ID to assign to the model's root {@link Entity}, unique among all components in the Viewer's {@link Scene}.\n * @param {String} [params.src] Path to an STL file. Overrides the ````stl```` parameter.\n * @param {String} [params.stl] Contents of an STL file, either binary of ASCII. Overridden by the ````src```` parameter.\n * @param {Boolean} [params.edges=false] Whether or not to renders the model with edges emphasized.\n * @param {Number[]} [params.position=[0,0,0]] The model World-space 3D position.\n * @param {Number[]} [params.scale=[1,1,1]] The model's World-space scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's World-space rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [params.backfaces=false] When true, allows visible backfaces, wherever specified in the STL. When false, ignores backfaces.\n * @param {Boolean} [params.smoothNormals=true] When true, automatically converts face-oriented normals to vertex normals for a smooth appearance.\n * @param {Number} [params.smoothNormalsAngleThreshold=20] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Number} [params.edgeThreshold=20] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {Boolean} [params.splitMeshes=true] When true, creates a separate {@link Mesh} for each group of faces that share the same vertex colors. Only works with binary STL.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n */\n load(params) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const modelNode = new Node(this.viewer.scene, utils.apply(params, {\n isModel: true\n }));\n\n const src = params.src;\n const stl = params.stl;\n\n if (!src && !stl) {\n this.error(\"load() param expected: either 'src' or 'stl'\");\n return modelNode;\n }\n\n if (src) {\n this._sceneGraphLoader.load(this, modelNode, src, params);\n } else {\n this._sceneGraphLoader.parse(this, modelNode, stl, params);\n }\n\n return modelNode;\n }\n}\n\n/**\n * @desc Information about an ````IfcBuildingStorey````.\n *\n * These are provided by a {@link StoreyViewsPlugin}.\n */\nclass Storey {\n\n /**\n * @private\n */\n constructor(plugin, aabb, modelId, storeyId, numObjects) {\n\n /**\n * The {@link StoreyViewsPlugin} this Storey belongs to.\n *\n * @property plugin\n * @type {StoreyViewsPlugin}\n */\n this.plugin = plugin;\n\n /**\n * ID of the IfcBuildingStorey.\n *\n * This matches IDs of the IfcBuildingStorey's {@link MetaObject} and {@link Entity}.\n *\n * @property storeyId\n * @type {String}\n */\n this.storeyId = storeyId;\n\n /**\n * ID of the model.\n *\n * This matches the ID of the {@link MetaModel} that contains the IfcBuildingStorey's {@link MetaObject}.\n *\n * @property modelId\n * @type {String|Number}\n */\n this.modelId = modelId;\n\n /**\n * Axis-aligned World-space boundary of the {@link Entity}s that represent the IfcBuildingStorey.\n *\n * The boundary is a six-element Float32Array containing the min/max extents of the\n * axis-aligned boundary, ie. ````[xmin, ymin, zmin, xmax, ymax, zmax]````\n *\n * @property aabb\n * @type {Number[]}\n */\n this.aabb = aabb.slice();\n\n /** Number of {@link Entity}s within the IfcBuildingStorey.\n *\n * @property numObjects\n * @type {Number}\n */\n this.numObjects = numObjects;\n }\n}\n\n/**\n * @desc Property states for {@link Entity}s in {@link Storey}s capture by a {@link StoreyViewsPlugin}.\n *\n * @type {{String:Object}}\n */\nconst IFCStoreyPlanObjectStates = {\n IfcSlab: {\n visible: true,\n edges: false,\n colorize: [1.0, 1.0, 1.0, 1.0]\n },\n IfcWall: {\n visible: true,\n edges: false,\n colorize: [0.1, 0.1, 0.1, 1.0]\n },\n IfcWallStandardCase: {\n visible: true,\n edges: false,\n colorize: [0.1, 0.1, 0.1, 1.0]\n },\n IfcDoor: {\n visible: true,\n edges: false,\n colorize: [0.5, 0.5, 0.5, 1.0]\n },\n IfcWindow: {\n visible: true,\n edges: false,\n colorize: [0.5, 0.5, 0.5, 1.0]\n },\n IfcColumn: {\n visible: true,\n edges: false,\n colorize: [0.5, 0.5, 0.5, 1.0]\n },\n IfcCurtainWall: {\n visible: true,\n edges: false,\n colorize: [0.5, 0.5, 0.5, 1.0]\n },\n IfcStair: {\n visible: true,\n edges: false,\n colorize: [0.7, 0.7, 0.7, 1.0]\n },\n IfcStairFlight: {\n visible: true,\n edges: false,\n colorize: [0.7, 0.7, 0.7, 1.0]\n },\n IfcRamp: {\n visible: true,\n edges: false,\n colorize: [0.7, 0.7, 0.7, 1.0]\n },\n IfcFurniture: {\n visible: true,\n edges: false,\n colorize: [0.7, 0.7, 0.7, 1.0]\n },\n IfcFooting: {\n visible: true,\n edges: false,\n colorize: [0.7, 0.7, 0.7, 1.0]\n },\n IfcFloor: {\n visible: true,\n edges: false,\n colorize: [1.0, 1.0, 1.0, 1.0]\n },\n DEFAULT: {\n visible: false\n }\n};\n\nconst color$1 = math.vec3();\n\n/**\n * @desc Saves and restores a snapshot of the visual state of the {@link Entity}'s that represent objects within a {@link Scene}.\n *\n * * An Entity represents an object when {@link Entity#isObject} is ````true````.\n * * Each object-Entity is registered by {@link Entity#id} in {@link Scene#objects}.\n *\n * ## See Also\n *\n * * {@link CameraMemento} - Saves and restores the state of a {@link Scene}'s {@link Camera}.\n * * {@link ModelMemento} - Saves and restores a snapshot of the visual state of the {@link Entity}'s of a model within a {@link Scene}.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Viewer} and use an {@link XKTLoaderPlugin} to load an ````.xkt```` model. When the model has loaded, we'll hide a couple of {@link Entity}s and save a snapshot of the visual states of all the Entitys in an ObjectsMemento. Then we'll show all the Entitys\n * again, and then we'll restore the visual states of all the Entitys again from the ObjectsMemento, which will hide those two Entitys again.\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, ObjectsMemento} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Load a model\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/schependomlaan/schependomlaan.xkt\"\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * // Model has loaded\n *\n * // Hide a couple of objects\n * viewer.scene.objects[\"0u4wgLe6n0ABVaiXyikbkA\"].visible = false;\n * viewer.scene.objects[\"3u4wgLe3n0AXVaiXyikbYO\"].visible = false;\n *\n * // Save memento of all object states, which includes those two hidden objects\n * const objectsMemento = new ObjectsMemento();\n *\n * objectsMemento.saveObjects(viewer.scene);\n *\n * // Show all objects\n * viewer.scene.setObjectsVisible(viewer.scene.objectIds, true);\n *\n * // Restore the objects states again, which involves hiding those two objects again\n * objectsMemento.restoreObjects(viewer.scene);\n * });\n * `````\n *\n * ## Masking Saved State\n *\n * We can optionally supply a mask to focus what state we save and restore.\n *\n * For example, to save and restore only the {@link Entity#visible} and {@link Entity#clippable} states:\n *\n * ````javascript\n * objectsMemento.saveObjects(viewer.scene, {\n * visible: true,\n * clippable: true\n * });\n *\n * //...\n *\n * // Restore the objects states again\n * objectsMemento.restoreObjects(viewer.scene);\n * ````\n */\nclass ObjectsMemento {\n\n /**\n * Creates an ObjectsMemento.\n */\n constructor() {\n\n /** @private */\n this.objectsVisible = [];\n\n /** @private */\n this.objectsEdges = [];\n\n /** @private */\n this.objectsXrayed = [];\n\n /** @private */\n this.objectsHighlighted = [];\n\n /** @private */\n this.objectsSelected = [];\n\n /** @private */\n this.objectsClippable = [];\n\n /** @private */\n this.objectsPickable = [];\n\n /** @private */\n this.objectsColorize = [];\n\n /** @private */\n this.objectsHasColorize = [];\n\n /** @private */\n this.objectsOpacity = [];\n\n /** @private */\n this.numObjects = 0;\n }\n\n /**\n * Saves a snapshot of the visual state of the {@link Entity}'s that represent objects within a {@link Scene}.\n *\n * @param {Scene} scene The scene.\n * @param {Object} [mask] Masks what state gets saved. Saves all state when not supplied.\n * @param {boolean} [mask.visible] Saves {@link Entity#visible} values when ````true````.\n * @param {boolean} [mask.visible] Saves {@link Entity#visible} values when ````true````.\n * @param {boolean} [mask.edges] Saves {@link Entity#edges} values when ````true````.\n * @param {boolean} [mask.xrayed] Saves {@link Entity#xrayed} values when ````true````.\n * @param {boolean} [mask.highlighted] Saves {@link Entity#highlighted} values when ````true````.\n * @param {boolean} [mask.selected] Saves {@link Entity#selected} values when ````true````.\n * @param {boolean} [mask.clippable] Saves {@link Entity#clippable} values when ````true````.\n * @param {boolean} [mask.pickable] Saves {@link Entity#pickable} values when ````true````.\n * @param {boolean} [mask.colorize] Saves {@link Entity#colorize} values when ````true````.\n * @param {boolean} [mask.opacity] Saves {@link Entity#opacity} values when ````true````.\n */\n saveObjects(scene, mask) {\n\n this.numObjects = 0;\n\n this._mask = mask ? utils.apply(mask, {}) : null;\n\n const objects = scene.objects;\n const visible = (!mask || mask.visible);\n const edges = (!mask || mask.edges);\n const xrayed = (!mask || mask.xrayed);\n const highlighted = (!mask || mask.highlighted);\n const selected = (!mask || mask.selected);\n const clippable = (!mask || mask.clippable);\n const pickable = (!mask || mask.pickable);\n const colorize = (!mask || mask.colorize);\n const opacity = (!mask || mask.opacity);\n\n for (let objectId in objects) {\n if (objects.hasOwnProperty(objectId)) {\n const object = objects[objectId];\n const i = this.numObjects;\n if (visible) {\n this.objectsVisible[i] = object.visible;\n }\n if (edges) {\n this.objectsEdges[i] = object.edges;\n }\n if (xrayed) {\n this.objectsXrayed[i] = object.xrayed;\n }\n if (highlighted) {\n this.objectsHighlighted[i] = object.highlighted;\n }\n if (selected) {\n this.objectsSelected[i] = object.selected;\n }\n if (clippable) {\n this.objectsClippable[i] = object.clippable;\n }\n if (pickable) {\n this.objectsPickable[i] = object.pickable;\n }\n if (colorize) {\n const objectColor = object.colorize;\n if (objectColor) {\n this.objectsColorize[i * 3 + 0] = objectColor[0];\n this.objectsColorize[i * 3 + 1] = objectColor[1];\n this.objectsColorize[i * 3 + 2] = objectColor[2];\n this.objectsHasColorize[i] = true;\n } else {\n this.objectsHasColorize[i] = false;\n }\n }\n if (opacity) {\n this.objectsOpacity[i] = object.opacity;\n }\n this.numObjects++;\n }\n }\n }\n\n /**\n * Restores a {@link Scene}'s {@link Entity}'s to their state previously captured with {@link ObjectsMemento#saveObjects}.\n * @param {Scene} scene The scene.\n */\n restoreObjects(scene) {\n\n const mask = this._mask;\n\n const visible = (!mask || mask.visible);\n const edges = (!mask || mask.edges);\n const xrayed = (!mask || mask.xrayed);\n const highlighted = (!mask || mask.highlighted);\n const selected = (!mask || mask.selected);\n const clippable = (!mask || mask.clippable);\n const pickable = (!mask || mask.pickable);\n const colorize = (!mask || mask.colorize);\n const opacity = (!mask || mask.opacity);\n\n var i = 0;\n\n const objects = scene.objects;\n\n for (let objectId in objects) {\n if (objects.hasOwnProperty(objectId)) {\n const object = objects[objectId];\n if (visible) {\n object.visible = this.objectsVisible[i];\n }\n if (edges) {\n object.edges = this.objectsEdges[i];\n }\n if (xrayed) {\n object.xrayed = this.objectsXrayed[i];\n }\n if (highlighted) {\n object.highlighted = this.objectsHighlighted[i];\n }\n if (selected) {\n object.selected = this.objectsSelected[i];\n }\n if (clippable) {\n object.clippable = this.objectsClippable[i];\n }\n if (pickable) {\n object.pickable = this.objectsPickable[i];\n }\n if (colorize ) {\n if (this.objectsHasColorize[i]) {\n color$1[0] = this.objectsColorize[i * 3 + 0];\n color$1[1] = this.objectsColorize[i * 3 + 1];\n color$1[2] = this.objectsColorize[i * 3 + 2];\n object.colorize = color$1;\n } else {\n object.colorize = null;\n }\n }\n if (opacity) {\n object.opacity = this.objectsOpacity[i];\n }\n i++;\n }\n }\n }\n}\n\n/**\n * @desc Saves and restores the state of a {@link Scene}'s {@link Camera}.\n *\n * ## See Also\n *\n * * {@link ModelMemento} - Saves and restores a snapshot of the visual state of the {@link Entity}'s of a model within a {@link Scene}.\n * * {@link ObjectsMemento} - Saves and restores a snapshot of the visual state of the {@link Entity}'s that represent objects within a {@link Scene}.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Viewer} and use an {@link XKTLoaderPlugin} to load an ````.xkt```` model. When the model has loaded, we'll save a snapshot of the {@link Camera} state in an CameraMemento. Then we'll move the Camera, and then we'll restore its original state again from the CameraMemento.\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, CameraMemento} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Load a model\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/schependomlaan/schependomlaan.xkt\"\n * });\n *\n * // Set camera\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * model.on(\"loaded\", () => {\n *\n * // Model has loaded\n *\n * // Save memento of camera state\n * const cameraMemento = new CameraMemento();\n *\n * cameraMemento.saveCamera(viewer.scene);\n *\n * // Move the camera\n * viewer.camera.eye = [45.3, 2.00, 5.13];\n * viewer.camera.look = [0.0, 5.5, 10.0];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * // Restore the camera state again\n * objectsMemento.restoreCamera(viewer.scene);\n * });\n * ````\n */\nclass CameraMemento {\n\n /**\n * Creates a CameraState.\n *\n * @param {Scene} [scene] When given, immediately saves the state of the given {@link Scene}'s {@link Camera}.\n */\n constructor(scene) {\n\n /** @private */\n this._eye = math.vec3();\n\n /** @private */\n this._look = math.vec3();\n\n /** @private */\n this._up = math.vec3();\n\n /** @private */\n this._projection = {};\n\n if (scene) {\n this.saveCamera(scene);\n }\n }\n\n /**\n * Saves the state of the given {@link Scene}'s {@link Camera}.\n *\n * @param {Scene} scene The scene that contains the {@link Camera}.\n */\n saveCamera(scene) {\n\n const camera = scene.camera;\n const project = camera.project;\n\n this._eye.set(camera.eye);\n this._look.set(camera.look);\n this._up.set(camera.up);\n\n switch (camera.projection) {\n\n case \"perspective\":\n this._projection = {\n projection: \"perspective\",\n fov: project.fov,\n fovAxis: project.fovAxis,\n near: project.near,\n far: project.far\n };\n break;\n\n case \"ortho\":\n this._projection = {\n projection: \"ortho\",\n scale: project.scale,\n near: project.near,\n far: project.far\n };\n break;\n\n case \"frustum\":\n this._projection = {\n projection: \"frustum\",\n left: project.left,\n right: project.right,\n top: project.top,\n bottom: project.bottom,\n near: project.near,\n far: project.far\n };\n break;\n\n case \"custom\":\n this._projection = {\n projection: \"custom\",\n matrix: project.matrix.slice()\n };\n break;\n }\n }\n\n /**\n * Restores a {@link Scene}'s {@link Camera} to the state previously captured with {@link CameraMemento#saveCamera}.\n *\n * @param {Scene} scene The scene.\n * @param {Function} [done] When this callback is given, will fly the {@link Camera} to the saved state then fire the callback. Otherwise will just jump the Camera to the saved state.\n */\n restoreCamera(scene, done) {\n\n const camera = scene.camera;\n const savedProjection = this._projection;\n\n function restoreProjection() {\n\n switch (savedProjection.type) {\n\n case \"perspective\":\n camera.perspective.fov = savedProjection.fov;\n camera.perspective.fovAxis = savedProjection.fovAxis;\n camera.perspective.near = savedProjection.near;\n camera.perspective.far = savedProjection.far;\n break;\n\n case \"ortho\":\n camera.ortho.scale = savedProjection.scale;\n camera.ortho.near = savedProjection.near;\n camera.ortho.far = savedProjection.far;\n break;\n\n case \"frustum\":\n camera.frustum.left = savedProjection.left;\n camera.frustum.right = savedProjection.right;\n camera.frustum.top = savedProjection.top;\n camera.frustum.bottom = savedProjection.bottom;\n camera.frustum.near = savedProjection.near;\n camera.frustum.far = savedProjection.far;\n break;\n\n case \"custom\":\n camera.customProjection.matrix = savedProjection.matrix;\n break;\n }\n }\n\n if (done) {\n scene.viewer.cameraFlight.flyTo({\n eye: this._eye,\n look: this._look,\n up: this._up,\n orthoScale: savedProjection.scale,\n projection: savedProjection.projection\n }, () => {\n restoreProjection();\n done();\n });\n } else {\n camera.eye = this._eye;\n camera.look = this._look;\n camera.up = this._up;\n restoreProjection();\n camera.projection = savedProjection.projection;\n }\n }\n}\n\n/**\n * @desc A 2D plan view image of an ````IfcBuildingStorey````.\n *\n * These are created by a {@link StoreyViewsPlugin}.\n */\nclass StoreyMap {\n\n /**\n * @private\n */\n constructor(storeyId, imageData, format, width, height, padding) {\n\n /**\n * ID of the IfcBuildingStorey.\n *\n * This matches IDs of the IfcBuildingStorey's {@link MetaObject} and {@link Entity}.\n *\n * @property storeyId\n * @type {String}\n */\n this.storeyId = storeyId;\n\n /**\n * Base64-encoded plan view image.\n *\n * @property imageData\n * @type {String}\n */\n this.imageData = imageData;\n\n /**\n * The image format - \"png\" or \"jpeg\".\n *\n * @property format\n * @type {String}\n */\n this.format = format;\n\n /**\n * Width of the image, in pixels.\n *\n * @property width\n * @type {Number}\n */\n this.width = width;\n\n /**\n * Height of the image, in pixels.\n *\n * @property height\n * @type {Number}\n */\n this.height = height;\n }\n}\n\nconst tempVec3a$5 = math.vec3();\nconst tempMat4 = math.mat4();\n\nconst EMPTY_IMAGE = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==\";\n\n\n/**\n * @desc A {@link Viewer} plugin that provides methods for visualizing IfcBuildingStoreys.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#storeyViews_StoreyViewsPlugin_recipe2)]\n *\n * ## Overview\n *\n * StoreyViewsPlugin provides a flexible set of methods for visualizing building storeys in 3D and 2D.\n *\n * Use the first two methods to set up 3D views of storeys:\n *\n * * [showStoreyObjects](#instance-method-showStoreyObjects) - shows the {@link Entity}s within a storey, and\n * * [gotoStoreyCamera](#instance-method-gotoStoreyCamera) - positions the {@link Camera} for a plan view of the Entitys within a storey.\n *

\n *\n * Use the second two methods to create 2D plan view mini-map images:\n *\n * * [createStoreyMap](#instance-method-createStoreyMap) - creates a 2D plan view image of a storey, and\n * * [pickStoreyMap](#instance-method-pickStoreyMap) - picks the {@link Entity} at the given 2D pixel coordinates within a plan view image.\n *\n * ## Usage\n *\n * Let's start by creating a {@link Viewer} with a StoreyViewsPlugin and an {@link XKTLoaderPlugin}.\n *\n * Then we'll load a BIM building model from an ```.xkt``` file.\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, StoreyViewsPlugin} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer, arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * // Add an XKTLoaderPlugin\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * // Add a StoreyViewsPlugin\n *\n * const storeyViewsPlugin = new StoreyViewsPlugin(viewer);\n *\n * // Load a BIM model from .xkt format\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true\n * });\n * ````\n *\n * ## Finding Storeys\n *\n * Getting information on a storey in our model:\n *\n * ````javascript\n * const storey = storeyViewsPlugin.storeys[\"2SWZMQPyD9pfT9q87pgXa1\"]; // ID of the IfcBuildingStorey\n *\n * const modelId = storey.modelId; // \"myModel\"\n * const storeyId = storey.storeyId; // \"2SWZMQPyD9pfT9q87pgXa1\"\n * const aabb = storey.aabb; // Axis-aligned 3D World-space boundary of the IfcBuildingStorey\n * ````\n *\n * We can also get a \"storeys\" event every time the set of storeys changes, ie. every time a storey is created or destroyed:\n *\n * ````javascript\n * storeyViewsPlugin.on(\"storeys\", ()=> {\n * const storey = storeyViewsPlugin.storeys[\"2SWZMQPyD9pfT9q87pgXa1\"];\n * //...\n * });\n * ````\n *\n * ## Showing Entitys within Storeys\n *\n * Showing the {@link Entity}s within a storey:\n *\n * ````javascript\n * storeyViewsPlugin.showStoreyObjects(\"2SWZMQPyD9pfT9q87pgXa1\");\n * ````\n *\n * Showing **only** the Entitys in a storey, hiding all others:\n *\n * ````javascript\n * storeyViewsPlugin.showStoreyObjects(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * hideOthers: true\n * });\n * ````\n * Showing only the storey Entitys, applying custom appearances configured on {@link StoreyViewsPlugin#objectStates}:\n *\n * ````javascript\n * storeyViewsPlugin.showStoreyObjects(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * hideOthers: true,\n * useObjectStates: true\n * });\n * ````\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#storeyViews_StoreyViewsPlugin_showStoreyObjects)]\n *\n * When using this option, at some point later you'll probably want to restore all Entitys to their original visibilities and\n * appearances.\n *\n * To do that, save their visibility and appearance states in an {@link ObjectsMemento} beforehand, from\n * which you can restore them later:\n *\n * ````javascript\n * const objectsMemento = new ObjectsMemento();\n *\n * // Save all Entity visibility and appearance states\n *\n * objectsMemento.saveObjects(viewer.scene);\n *\n * // Show storey view Entitys, with custom appearances as configured for IFC types\n *\n * storeyViewsPlugin.showStoreyObjects(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * useObjectStates: true // <<--------- Apply custom appearances\n * });\n *\n * //...\n *\n * // Later, restore all Entitys to their saved visibility and appearance states\n * objectsMemento.restoreObjects(viewer.scene);\n * ````\n *\n * ## Arranging the Camera for Storey Plan Views\n *\n * The {@link StoreyViewsPlugin#gotoStoreyCamera} method positions the {@link Camera} for a plan view of\n * the {@link Entity}s within the given storey.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#storeyViews_StoreyViewsPlugin_gotoStoreyCamera)]\n *\n * Let's fly the {@link Camera} to a downward-looking orthographic view of the Entitys within our storey.\n *\n * ````javascript\n * storeyViewsPlugin.gotoStoreyCamera(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * projection: \"ortho\", // Orthographic projection\n * duration: 2.5, // 2.5 second transition\n * done: () => {\n * viewer.cameraControl.planView = true; // Disable rotation\n * }\n * });\n * ````\n *\n * Note that we also set {@link CameraControl#planView} ````true````, which prevents the CameraControl from rotating\n * or orbiting. In orthographic mode, this effectively makes the {@link Viewer} behave as if it were a 2D viewer, with\n * picking, panning and zooming still enabled.\n *\n * If you need to be able to restore the Camera to its previous state, you can save it to a {@link CameraMemento}\n * beforehand, from which you can restore it later:\n *\n * ````javascript\n * const cameraMemento = new CameraMemento();\n *\n * // Save camera state\n *\n * cameraMemento.saveCamera(viewer.scene);\n *\n * // Position camera for a downward-looking orthographic view of our storey\n *\n * storeyViewsPlugin.gotoStoreyCamera(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * projection: \"ortho\",\n * duration: 2.5,\n * done: () => {\n * viewer.cameraControl.planView = true; // Disable rotation\n * }\n * });\n *\n * //...\n *\n * // Later, restore the Camera to its saved state\n * cameraMemento.restoreCamera(viewer.scene);\n * ````\n *\n * ## Creating StoreyMaps\n *\n * The {@link StoreyViewsPlugin#createStoreyMap} method creates a 2D orthographic plan image of the given storey.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#storeyViews_StoreyViewsPlugin_createStoreyMap)]\n *\n * This method creates a {@link StoreyMap}, which provides the plan image as a Base64-encoded string.\n *\n * Let's create a 2D plan image of our building storey:\n *\n * ````javascript\n * const storeyMap = storeyViewsPlugin.createStoreyMap(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * width: 300,\n * format: \"png\"\n * });\n *\n * const imageData = storeyMap.imageData; // Base64-encoded image data string\n * const width = storeyMap.width; // 300\n * const height = storeyMap.height; // Automatically derived from width\n * const format = storeyMap.format; // \"png\"\n * ````\n *\n * As with ````showStoreyEntitys````, We also have the option to customize the appearance of the Entitys in our plan\n * images according to their IFC types, using the lookup table configured on {@link StoreyViewsPlugin#objectStates}.\n *\n * For example, we usually want to show only element types like ````IfcWall````, ````IfcDoor```` and\n * ````IfcFloor```` in our plan images.\n *\n * Let's create another StoreyMap, this time applying the custom appearances:\n *\n * ````javascript\n * const storeyMap = storeyViewsPlugin.createStoreyMap(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * width: 300,\n * format: \"png\",\n * useObjectStates: true // <<--------- Apply custom appearances\n * });\n *````\n *\n * We can also specify a ````height```` for the plan image, as an alternative to ````width````:\n *\n * ````javascript\n * const storeyMap = storeyViewsPlugin.createStoreyMap(\"2SWZMQPyD9pfT9q87pgXa1\", {\n * height: 200,\n * format: \"png\",\n * useObjectStates: true\n * });\n * ````\n *\n * ## Picking Entities in StoreyMaps\n *\n * We can use {@link StoreyViewsPlugin#pickStoreyMap} to pick Entities in our building storey, using 2D coordinates from mouse or touch events on our {@link StoreyMap}'s 2D plan image.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#storeyViews_StoreyViewsPlugin_recipe2)]\n *\n * Let's programmatically pick the Entity at the given 2D pixel coordinates within our image:\n *\n * ````javascript\n * const mouseCoords = [65, 120]; // Mouse coords within the image extents\n *\n * const pickResult = storeyViewsPlugin.pickStoreyMap(storeyMap, mouseCoords);\n *\n * if (pickResult && pickResult.entity) {\n * pickResult.entity.highlighted = true;\n * }\n * ````\n */\nclass StoreyViewsPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"StoreyViews\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.objectStates] Map of visual states for the {@link Entity}s as rendered within each {@link Storey}. Default value is {@link IFCStoreyPlanObjectStates}.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"StoreyViews\", viewer);\n\n this._objectsMemento = new ObjectsMemento();\n this._cameraMemento = new CameraMemento();\n\n /**\n * A {@link Storey} for each ````IfcBuildingStorey```.\n *\n * There will be a {@link Storey} for every existing {@link MetaObject} whose {@link MetaObject#type} equals \"IfcBuildingStorey\".\n *\n * These are created and destroyed automatically as models are loaded and destroyed.\n *\n * @type {{String:Storey}}\n */\n this.storeys = {};\n\n /**\n * A set of {@link Storey}s for each {@link MetaModel}.\n *\n * These are created and destroyed automatically as models are loaded and destroyed.\n *\n * @type {{String: {String:Storey}}}\n */\n this.modelStoreys = {};\n\n this.objectStates = cfg.objectStates;\n\n this._onModelLoaded = this.viewer.scene.on(\"modelLoaded\", (modelId) => {\n this._registerModelStoreys(modelId);\n this.fire(\"storeys\", this.storeys);\n });\n }\n\n _registerModelStoreys(modelId) {\n const viewer = this.viewer;\n const scene = viewer.scene;\n const metaScene = viewer.metaScene;\n const metaModel = metaScene.metaModels[modelId];\n const model = scene.models[modelId];\n if (!metaModel || !metaModel.rootMetaObject) {\n return;\n }\n const storeyIds = metaModel.rootMetaObject.getObjectIDsInSubtreeByType([\"IfcBuildingStorey\"]);\n for (let i = 0, len = storeyIds.length; i < len; i++) {\n const storeyId = storeyIds[i];\n const metaObject = metaScene.metaObjects[storeyId];\n const childObjectIds = metaObject.getObjectIDsInSubtree();\n const aabb = scene.getAABB(childObjectIds);\n const numObjects = (Math.random() > 0.5) ? childObjectIds.length : 0;\n const storey = new Storey(this, aabb, modelId, storeyId, numObjects);\n storey._onModelDestroyed = model.once(\"destroyed\", () => {\n this._deregisterModelStoreys(modelId);\n this.fire(\"storeys\", this.storeys);\n });\n this.storeys[storeyId] = storey;\n if (!this.modelStoreys[modelId]) {\n this.modelStoreys[modelId] = {};\n }\n this.modelStoreys[modelId][storeyId] = storey;\n }\n }\n\n _deregisterModelStoreys(modelId) {\n const storeys = this.modelStoreys[modelId];\n if (storeys) {\n const scene = this.viewer.scene;\n for (let storyObjectId in storeys) {\n if (storeys.hasOwnProperty(storyObjectId)) {\n const storey = storeys[storyObjectId];\n const model = scene.models[storey.modelId];\n if (model) {\n model.off(storey._onModelDestroyed);\n }\n delete this.storeys[storyObjectId];\n }\n }\n delete this.modelStoreys[modelId];\n }\n }\n\n /**\n * Sets map of visual states for the {@link Entity}s as rendered within each {@link Storey}.\n *\n * Default value is {@link IFCStoreyPlanObjectStates}.\n *\n * @type {{String: Object}}\n */\n set objectStates(value) {\n this._objectStates = value || IFCStoreyPlanObjectStates;\n }\n\n /**\n * Gets map of visual states for the {@link Entity}s as rendered within each {@link Storey}.\n *\n * Default value is {@link IFCStoreyPlanObjectStates}.\n *\n * @type {{String: Object}}\n */\n get objectStates() {\n return this._objectStates;\n }\n\n /**\n * Arranges the {@link Camera} for a 3D orthographic view of the {@link Entity}s within the given storey.\n *\n * See also: {@link CameraMemento}, which saves and restores the state of the {@link Scene}'s {@link Camera}\n *\n * @param {String} storeyId ID of the ````IfcBuildingStorey```` object.\n * @param {*} [options] Options for arranging the Camera.\n * @param {String} [options.projection] Projection type to transition the Camera to. Accepted values are \"perspective\" and \"ortho\".\n * @param {Function} [options.done] Callback to fire when the Camera has arrived. When provided, causes an animated flight to the saved state. Otherwise jumps to the saved state.\n */\n gotoStoreyCamera(storeyId, options = {}) {\n\n const storey = this.storeys[storeyId];\n\n if (!storey) {\n this.error(\"IfcBuildingStorey not found with this ID: \" + storeyId);\n if (options.done) {\n options.done();\n }\n return;\n }\n\n const viewer = this.viewer;\n const scene = viewer.scene;\n const camera = scene.camera;\n const aabb = storey.aabb;\n\n if (aabb[3] < aabb[0] || aabb[4] < aabb[1] || aabb[5] < aabb[2]) { // Don't fly to an inverted boundary\n if (options.done) {\n options.done();\n }\n return;\n }\n if (aabb[3] === aabb[0] && aabb[4] === aabb[1] && aabb[5] === aabb[2]) { // Don't fly to an empty boundary\n if (options.done) {\n options.done();\n }\n return;\n }\n const look2 = math.getAABB3Center(aabb);\n const diag = math.getAABB3Diag(aabb);\n const fitFOV = 45; // fitFOV;\n const sca = Math.abs(diag / Math.tan(fitFOV * math.DEGTORAD));\n\n const orthoScale2 = diag * 1.3;\n\n const eye2 = tempVec3a$5;\n\n eye2[0] = look2[0] + (camera.worldUp[0] * sca);\n eye2[1] = look2[1] + (camera.worldUp[1] * sca);\n eye2[2] = look2[2] + (camera.worldUp[2] * sca);\n\n const up2 = camera.worldForward;\n\n if (options.done) {\n\n viewer.cameraFlight.flyTo(utils.apply(options, {\n eye: eye2,\n look: look2,\n up: up2,\n orthoScale: orthoScale2\n }), () => {\n options.done();\n });\n\n } else {\n\n viewer.cameraFlight.jumpTo(utils.apply(options, {\n eye: eye2,\n look: look2,\n up: up2,\n orthoScale: orthoScale2\n }));\n\n viewer.camera.ortho.scale = orthoScale2;\n }\n }\n\n /**\n * Shows the {@link Entity}s within the given storey.\n *\n * Optionally hides all other Entitys.\n *\n * Optionally sets the visual appearance of each of the Entitys according to its IFC type. The appearance of\n * IFC types in plan views is configured by {@link StoreyViewsPlugin#objectStates}.\n *\n * See also: {@link ObjectsMemento}, which saves and restores a memento of the visual state\n * of the {@link Entity}'s that represent objects within a {@link Scene}.\n *\n * @param {String} storeyId ID of the ````IfcBuildingStorey```` object.\n * @param {*} [options] Options for showing the Entitys within the storey.\n * @param {Boolean} [options.hideOthers=false] When ````true````, hide all other {@link Entity}s.\n * @param {Boolean} [options.useObjectStates=false] When ````true````, apply the custom visibilities and appearances configured for IFC types in {@link StoreyViewsPlugin#objectStates}.\n */\n showStoreyObjects(storeyId, options = {}) {\n\n const storey = this.storeys[storeyId];\n\n if (!storey) {\n this.error(\"IfcBuildingStorey not found with this ID: \" + storeyId);\n return;\n }\n\n const viewer = this.viewer;\n const scene = viewer.scene;\n const metaScene = viewer.metaScene;\n const storeyMetaObject = metaScene.metaObjects[storeyId];\n\n if (!storeyMetaObject) {\n return;\n }\n\n if (options.hideOthers) {\n scene.setObjectsVisible(viewer.scene.visibleObjectIds, false);\n }\n\n this.withStoreyObjects(storeyId, (entity, metaObject) => {\n if (entity) {\n if (options.useObjectStates) {\n const props = this._objectStates[metaObject.type] || this._objectStates[\"DEFAULT\"];\n if (props) {\n entity.visible = props.visible;\n entity.edges = props.edges;\n // entity.xrayed = props.xrayed; // FIXME: Buggy\n // entity.highlighted = props.highlighted;\n // entity.selected = props.selected;\n if (props.colorize) {\n entity.colorize = props.colorize;\n }\n if (props.opacity !== null && props.opacity !== undefined) {\n entity.opacity = props.opacity;\n }\n }\n } else {\n entity.visible = true;\n }\n }\n });\n }\n\n /**\n * Executes a callback on each of the objects within the given storey.\n *\n * ## Usage\n *\n * In the example below, we'll show all the {@link Entity}s, within the given ````IfcBuildingStorey````,\n * that have {@link MetaObject}s with type ````IfcSpace````. Note that the callback will only be given\n * an {@link Entity} when one exists for the given {@link MetaObject}.\n *\n * ````JavaScript\n * myStoreyViewsPlugin.withStoreyObjects(storeyId, (entity, metaObject) => {\n * if (entity && metaObject && metaObject.type === \"IfcSpace\") {\n * entity.visible = true;\n * }\n * });\n * ````\n *\n * @param {String} storeyId ID of the ````IfcBuildingStorey```` object.\n * @param {Function} callback The callback.\n */\n withStoreyObjects(storeyId, callback) {\n const viewer = this.viewer;\n const scene = viewer.scene;\n const metaScene = viewer.metaScene;\n const rootMetaObject = metaScene.metaObjects[storeyId];\n if (!rootMetaObject) {\n return;\n }\n const storeySubObjects = rootMetaObject.getObjectIDsInSubtree();\n for (var i = 0, len = storeySubObjects.length; i < len; i++) {\n const objectId = storeySubObjects[i];\n const metaObject = metaScene.metaObjects[objectId];\n const entity = scene.objects[objectId];\n if (entity) {\n callback(entity, metaObject);\n }\n }\n }\n\n /**\n * Creates a 2D map of the given storey.\n *\n * @param {String} storeyId ID of the ````IfcBuildingStorey```` object.\n * @param {*} [options] Options for creating the image.\n * @param {Number} [options.width=300] Image width in pixels. Height will be automatically determined from this, if not given.\n * @param {Number} [options.height=300] Image height in pixels, as an alternative to width. Width will be automatically determined from this, if not given.\n * @param {String} [options.format=\"png\"] Image format. Accepted values are \"png\" and \"jpeg\".\n * @returns {StoreyMap} The StoreyMap.\n */\n createStoreyMap(storeyId, options = {}) {\n\n const storey = this.storeys[storeyId];\n if (!storey) {\n this.error(\"IfcBuildingStorey not found with this ID: \" + storeyId);\n return EMPTY_IMAGE;\n }\n\n const viewer = this.viewer;\n const scene = viewer.scene;\n const format = options.format || \"png\";\n const aabb = storey.aabb;\n const aspect = (aabb[5] - aabb[2]) / (aabb[3] - aabb[0]);\n const padding = options.padding || 0;\n\n let width;\n let height;\n\n if (options.width && options.height) {\n width = options.width;\n height = options.height;\n\n } else if (options.height) {\n height = options.height;\n width = height / aspect;\n\n } else if (options.width) {\n width = options.width;\n height = width * aspect;\n\n } else {\n width = 300;\n height = width * aspect;\n }\n\n this._objectsMemento.saveObjects(scene);\n this._cameraMemento.saveCamera(scene);\n\n viewer.beginSnapshot();\n\n this.showStoreyObjects(storeyId, utils.apply(options, {\n useObjectStates: true,\n hideOthers: true\n }));\n\n this._arrangeStoreyMapCamera(storey);\n\n const src = viewer.getSnapshot({\n width: width,\n height: height,\n format: format,\n });\n\n this._objectsMemento.restoreObjects(scene);\n this._cameraMemento.restoreCamera(scene);\n\n viewer.endSnapshot();\n\n return new StoreyMap(storeyId, src, format, width, height, padding);\n }\n\n _arrangeStoreyMapCamera(storey) {\n const viewer = this.viewer;\n const scene = viewer.scene;\n const camera = scene.camera;\n const aabb = storey.aabb;\n const look = math.getAABB3Center(aabb);\n const sca = 0.5;\n const eye = tempVec3a$5;\n eye[0] = look[0] + (camera.worldUp[0] * sca);\n eye[1] = look[1] + (camera.worldUp[1] * sca);\n eye[2] = look[2] + (camera.worldUp[2] * sca);\n const up = camera.worldForward;\n viewer.cameraFlight.jumpTo({eye: eye, look: look, up: up});\n const xHalfSize = (aabb[3] - aabb[0]) / 2;\n const yHalfSize = (aabb[4] - aabb[1]) / 2;\n const zHalfSize = (aabb[5] - aabb[2]) / 2;\n const xmin = -xHalfSize;\n const xmax = +xHalfSize;\n const ymin = -yHalfSize;\n const ymax = +yHalfSize;\n const zmin = -zHalfSize;\n const zmax = +zHalfSize;\n viewer.camera.customProjection.matrix = math.orthoMat4c(xmin, xmax, zmin, zmax, ymin, ymax, tempMat4);\n viewer.camera.projection = \"customProjection\";\n }\n\n /**\n * Attempts to pick an {@link Entity} at the given pixel coordinates within a StoreyMap image.\n *\n * @param {StoreyMap} storeyMap The StoreyMap.\n * @param {Number[]} imagePos 2D pixel coordinates within the bounds of {@link StoreyMap#imageData}.\n * @param {*} [options] Picking options.\n * @param {Boolean} [options.pickSurface=false] Whether to return the picked position on the surface of the Entity.\n * @returns {PickResult} The pick result, if an Entity was successfully picked, else null.\n */\n pickStoreyMap(storeyMap, imagePos, options = {}) {\n\n const storeyId = storeyMap.storeyId;\n const storey = this.storeys[storeyId];\n\n if (!storey) {\n this.error(\"IfcBuildingStorey not found with this ID: \" + storeyId);\n return null\n }\n\n const normX = 1.0 - (imagePos[0] / storeyMap.width);\n const normZ = 1.0 - (imagePos[1] / storeyMap.height);\n\n const aabb = storey.aabb;\n\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n const xmax = aabb[3];\n const ymax = aabb[4];\n const zmax = aabb[5];\n\n const xWorldSize = xmax - xmin;\n const yWorldSize = ymax - ymin;\n const zWorldSize = zmax - zmin;\n\n const origin = math.vec3([xmin + (xWorldSize * normX), ymin + (yWorldSize * 0.5), zmin + (zWorldSize * normZ)]);\n const direction = math.vec3([0, -1, 0]);\n const look = math.addVec3(origin, direction, tempVec3a$5);\n const worldForward = this.viewer.camera.worldForward;\n const matrix = math.lookAtMat4v(origin, look, worldForward, tempMat4);\n\n const pickResult = this.viewer.scene.pick({ // Picking with arbitrarily-positioned ray\n pickSurface: options.pickSurface,\n pickInvisible: true,\n matrix: matrix\n });\n\n if (pickResult) {\n const metaObject = this.viewer.metaScene.metaObjects[pickResult.entity.id];\n const objectState = this.objectStates[metaObject.type];\n if (!objectState || !objectState.visible) {\n return null;\n }\n }\n\n return pickResult;\n }\n\n /**\n * Gets the ID of the storey that contains the given 3D World-space position.\n *.\n * @param {Number[]} worldPos 3D World-space position.\n * @returns {String} ID of the storey containing the position, or null if the position falls outside all the storeys.\n */\n getStoreyContainingWorldPos(worldPos) {\n for (var storeyId in this.storeys) {\n const storey = this.storeys[storeyId];\n if (math.point3AABB3Intersect(storey.aabb, worldPos)) {\n return storeyId;\n }\n }\n return null;\n }\n\n /**\n * Converts a 3D World-space position to a 2D position within a StoreyMap image.\n *\n * Use {@link StoreyViewsPlugin#pickStoreyMap} to convert 2D image positions to 3D world-space.\n *\n * @param {StoreyMap} storeyMap The StoreyMap.\n * @param {Number[]} worldPos 3D World-space position within the storey.\n * @param {Number[]} imagePos 2D pixel position within the {@link StoreyMap#imageData}.\n * @returns {Boolean} True if ````imagePos```` is within the bounds of the {@link StoreyMap#imageData}, else ````false```` if it falls outside.\n */\n worldPosToStoreyMap(storeyMap, worldPos, imagePos) {\n\n const storeyId = storeyMap.storeyId;\n const storey = this.storeys[storeyId];\n\n if (!storey) {\n this.error(\"IfcBuildingStorey not found with this ID: \" + storeyId);\n return false\n }\n\n const aabb = storey.aabb;\n\n const xmin = aabb[0];\n const ymin = aabb[1];\n const zmin = aabb[2];\n\n const xmax = aabb[3];\n const ymax = aabb[4];\n const zmax = aabb[5];\n\n const xWorldSize = xmax - xmin;\n const yWorldSize = ymax - ymin;\n const zWorldSize = zmax - zmin;\n\n const camera = this.viewer.camera;\n const worldUp = camera.worldUp;\n\n const xUp = worldUp[0] > worldUp[1] && worldUp[0] > worldUp[2];\n const yUp = !xUp && worldUp[1] > worldUp[0] && worldUp[1] > worldUp[2];\n !xUp && !yUp && worldUp[2] > worldUp[0] && worldUp[2] > worldUp[1];\n\n const ratioX = (storeyMap.width / xWorldSize);\n const ratioY = yUp ? (storeyMap.height / zWorldSize) : (storeyMap.height / yWorldSize); // Assuming either Y or Z is \"up\", but never X\n\n imagePos[0] = Math.floor(storeyMap.width - ((worldPos[0] - xmin) * ratioX));\n imagePos[1] = Math.floor(storeyMap.height - ((worldPos[2] - zmin) * ratioY));\n\n return (imagePos[0] >= 0 && imagePos[0] < storeyMap.width && imagePos[1] >= 0 && imagePos[1] <= storeyMap.height);\n }\n\n /**\n * Converts a 3D World-space direction vector to a 2D vector within a StoreyMap image.\n *\n * @param {StoreyMap} storeyMap The StoreyMap.\n * @param {Number[]} worldDir 3D World-space direction vector.\n * @param {Number[]} imageDir Normalized 2D direction vector.\n */\n worldDirToStoreyMap(storeyMap, worldDir, imageDir) {\n const camera = this.viewer.camera;\n const eye = camera.eye;\n const look = camera.look;\n const eyeLookDir = math.subVec3(look, eye, tempVec3a$5);\n const worldUp = camera.worldUp;\n const xUp = worldUp[0] > worldUp[1] && worldUp[0] > worldUp[2];\n const yUp = !xUp && worldUp[1] > worldUp[0] && worldUp[1] > worldUp[2];\n !xUp && !yUp && worldUp[2] > worldUp[0] && worldUp[2] > worldUp[1];\n if (xUp) {\n imageDir[0] = eyeLookDir[1];\n imageDir[1] = eyeLookDir[2];\n } else if (yUp) {\n imageDir[0] = eyeLookDir[0];\n imageDir[1] = eyeLookDir[2];\n } else {\n imageDir[0] = eyeLookDir[0];\n imageDir[1] = eyeLookDir[1];\n }\n math.normalizeVec2(imageDir);\n }\n\n /**\n * Destroys this StoreyViewsPlugin.\n */\n destroy() {\n this.viewer.scene.off(this._onModelLoaded);\n super.destroy();\n }\n}\n\n/**\n * Tests if {@link TreeViewPlugin} would be able to create a \"types\" hierarchy for the given {@link MetaModel}.\n *\n * @param {MetaModel} metaModel The MetaModel.\n * @param {String[]} errors Accumulates messages for validation errors.\n * @return {boolean} Returns ````true```` if no errors found, else ````false````.\n */\nfunction validateMetaModelForTreeViewTypesHierarchy(metaModel, errors) {\n const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n errors.push(\"Can't build types hierarchy: model is empty\");\n return false;\n }\n return true;\n}\n\n/**\n * Tests if {@link TreeViewPlugin} would be able to create a \"storeys\" hierarchy for the given {@link MetaModel}.\n *\n * @param {MetaModel} metaModel The MetaModel.\n * @param {String[]} errors Accumulates messages for validation errors.\n * @return {boolean} Returns ````true```` if no errors found, else ````false````.\n */\nfunction validateMetaModelForTreeViewStoreysHierarchy(metaModel, errors) {\n const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n errors.push(\"Can't build storeys hierarchy: model is empty\");\n return false;\n }\n return _validateMetaModelForStoreysHierarchy(rootMetaObject, errors);\n}\n\n/**\n * Tests if {@link TreeViewPlugin} would be able to create a \"containment\" hierarchy for the given {@link MetaModel}.\n *\n * @param {MetaModel} metaModel The MetaModel.\n * @param {String[]} errors Accumulates messages for validation errors.\n * @return {boolean} Returns ````true```` if no errors found, else ````false````.\n */\nfunction validateMetaModelForTreeViewContainmentHierarchy(metaModel, errors) {\n const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n errors.push(\"Can't build containment hierarchy: model is empty\");\n return false;\n }\n return true;\n}\n\n/**\n * @private\n */\nfunction _validateMetaModelForStoreysHierarchy(metaObject, errors, level = 0, ctx, buildingNode) {\n ctx = ctx || {\n foundIFCBuildingStoreys: false\n };\n const metaObjectType = metaObject.type;\n const children = metaObject.children;\n if (metaObjectType === \"IfcBuilding\") {\n buildingNode = true;\n } else if (metaObjectType === \"IfcBuildingStorey\") {\n if (!buildingNode) {\n errors.push(\"Can't build storeys hierarchy: IfcBuildingStorey found without parent IfcBuilding\");\n return false;\n }\n ctx.foundIFCBuildingStoreys = true;\n }\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n if (!_validateMetaModelForStoreysHierarchy(childMetaObject, errors, level + 1, ctx, buildingNode)) {\n return false;\n }\n }\n }\n if (level === 0) {\n if (!ctx.foundIFCBuildingStoreys) ;\n }\n return true;\n}\n\nconst idMap = new Map();\n\n/**\n * @desc Represents a model tree view within a {@link TreeViewPlugin}.\n *\n * * Stored in {@link treeViewPlugin#modelTreeViews}, mapped to the model ID.\n * * Created by each call to {@link TreeViewPlugin#addModel}.\n */\nclass ModelTreeView {\n\n /**\n * @private\n */\n constructor(viewer, treeViewPlugin, model, metaModel, cfg) {\n\n if (!cfg.containerElement) {\n throw \"Config expected: containerElement\";\n }\n\n const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n return;\n }\n\n /**\n * Contains messages for any errors found in the MetaModel for this ModelTreeView.\n * @type {String[]}\n */\n this.errors = [];\n\n /**\n * True if errors were found in the MetaModel for this ModelTreeView.\n * @type {boolean}\n */\n this.valid = true;\n\n /**\n * The MetaModel corresponding to this ModelTreeView.\n * @type {MetaModel}\n */\n this.metaModel = metaModel;\n\n this._id = idMap.addItem();\n this._baseId = \"\" + this._id;\n this._viewer = viewer;\n this._treeViewPlugin = treeViewPlugin;\n this._rootMetaObject = rootMetaObject;\n this._containerElement = cfg.containerElement;\n this._rootElement = null;\n this._muteSceneEvents = false;\n this._muteTreeEvents = false;\n this._rootNodes = [];\n this._objectNodes = {};\n this._rootName = cfg.rootName;\n this._sortNodes = cfg.sortNodes;\n this._pruneEmptyNodes = cfg.pruneEmptyNodes;\n\n this._showListItemElementId = null;\n\n this._containerElement.oncontextmenu = (e) => {\n e.preventDefault();\n };\n\n this._onObjectVisibility = this._viewer.scene.on(\"objectVisibility\", (entity) => {\n if (this._muteSceneEvents) {\n return;\n }\n const objectId = entity.id;\n const node = this._objectNodes[objectId];\n if (!node) {\n return; // Not in this tree\n }\n const visible = entity.visible;\n const updated = (visible !== node.checked);\n if (!updated) {\n return;\n }\n this._muteTreeEvents = true;\n node.checked = visible;\n if (visible) {\n node.numVisibleEntities++;\n } else {\n node.numVisibleEntities--;\n }\n const checkbox = document.getElementById(node.nodeId);\n if (checkbox) {\n checkbox.checked = visible;\n }\n let parent = node.parent;\n while (parent) {\n parent.checked = visible;\n if (visible) {\n parent.numVisibleEntities++;\n } else {\n parent.numVisibleEntities--;\n }\n const parentCheckbox = document.getElementById(parent.nodeId);\n if (parentCheckbox) {\n const newChecked = (parent.numVisibleEntities > 0);\n if (newChecked !== parentCheckbox.checked) {\n parentCheckbox.checked = newChecked;\n }\n }\n parent = parent.parent;\n }\n this._muteTreeEvents = false;\n });\n\n this.switchExpandHandler = (event) => {\n event.preventDefault();\n event.stopPropagation();\n const switchElement = event.target;\n this._expandSwitchElement(switchElement);\n };\n\n this.switchCollapseHandler = (event) => {\n event.preventDefault();\n event.stopPropagation();\n const switchElement = event.target;\n this._collapseSwitchElement(switchElement);\n };\n\n this._checkboxChangeHandler = (event) => {\n if (this._muteTreeEvents) {\n return;\n }\n this._muteSceneEvents = true;\n const checkbox = event.target;\n const visible = checkbox.checked;\n const nodeId = checkbox.id;\n const checkedObjectId = this._nodeToObjectID(nodeId);\n const checkedNode = this._objectNodes[checkedObjectId];\n const objects = this._viewer.scene.objects;\n let numUpdated = 0;\n this._withNodeTree(checkedNode, (node) => {\n const objectId = node.objectId;\n const checkBoxId = node.nodeId;\n const entity = objects[objectId];\n const isLeaf = (node.children.length === 0);\n node.numVisibleEntities = visible ? node.numEntities : 0;\n if (isLeaf && (visible !== node.checked)) {\n numUpdated++;\n }\n node.checked = visible;\n const checkbox2 = document.getElementById(checkBoxId);\n if (checkbox2) {\n checkbox2.checked = visible;\n }\n if (entity) {\n entity.visible = visible;\n }\n });\n let parent = checkedNode.parent;\n while (parent) {\n parent.checked = visible;\n const checkbox2 = document.getElementById(parent.nodeId); // Parent checkboxes are always in DOM\n if (visible) {\n parent.numVisibleEntities += numUpdated;\n } else {\n parent.numVisibleEntities -= numUpdated;\n }\n const newChecked = (parent.numVisibleEntities > 0);\n if (newChecked !== checkbox2.checked) {\n checkbox2.checked = newChecked;\n }\n parent = parent.parent;\n }\n this._muteSceneEvents = false;\n };\n\n this._hierarchy = cfg.hierarchy || \"containment\";\n this._autoExpandDepth = cfg.autoExpandDepth || 0;\n\n this._createNodes();\n }\n\n _nodeToObjectID(nodeId) {\n return nodeId.substring(this._baseId.length);\n }\n\n _objectToNodeID(objectId) {\n return this._baseId + objectId;\n }\n\n /**\n * @private\n * @param depth\n */\n setAutoExpandDepth(depth = 0) {\n this._autoExpandDepth = depth;\n }\n\n /**\n * @private\n * @param hierarchy\n */\n setHierarchy(hierarchy) {\n if (this._hierarchy === hierarchy) {\n return;\n }\n this._hierarchy = hierarchy;\n this._createNodes();\n }\n\n _createNodes() {\n if (this._rootElement) {\n this._rootElement.parentNode.removeChild(this._rootElement);\n this._rootElement = null;\n }\n this._rootNodes = [];\n this._objectNodes = {};\n this._validate();\n if (this.valid || (this._hierarchy !== \"storeys\")) {\n this._createEnabledNodes();\n } else {\n this._createDisabledNodes();\n }\n }\n\n _validate() {\n this.errors = [];\n switch (this._hierarchy) {\n case \"storeys\":\n this.valid = validateMetaModelForTreeViewStoreysHierarchy(this.metaModel, this.errors);\n break;\n case \"types\":\n this.valid = validateMetaModelForTreeViewTypesHierarchy(this.metaModel, this.errors);\n break;\n case \"containment\":\n default:\n this.valid = validateMetaModelForTreeViewContainmentHierarchy(this.metaModel, this.errors);\n break;\n }\n return this.valid;\n }\n\n _createEnabledNodes() {\n if (this._pruneEmptyNodes) {\n this._findEmptyNodes();\n }\n switch (this._hierarchy) {\n case \"storeys\":\n this._createStoreysNodes();\n if (this._rootNodes.length === 0) {\n this._treeViewPlugin.error(\"Failed to build storeys hierarchy for model '\" + this.metaModel.id + \"' - perhaps this model is not an IFC model?\");\n }\n break;\n case \"types\":\n this._createTypesNodes();\n break;\n case \"containment\":\n default:\n this._createContainmentNodes();\n }\n if (this._sortNodes) {\n this._doSortNodes();\n }\n this._synchNodesToEntities();\n this._createTrees();\n this.expandToDepth(this._autoExpandDepth);\n }\n\n _createDisabledNodes() {\n\n const metaObject = this._rootMetaObject;\n const metaObjectType = metaObject.type;\n const metaObjectName = metaObject.name;\n\n const rootName = ((metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType);\n\n const ul = document.createElement('ul');\n const li = document.createElement('li');\n ul.appendChild(li);\n this._containerElement.appendChild(ul);\n this._rootElement = ul;\n\n const switchElement = document.createElement('a');\n switchElement.href = '#';\n switchElement.textContent = '!';\n switchElement.classList.add('warn');\n switchElement.classList.add('warning');\n li.appendChild(switchElement);\n\n const span = document.createElement('span');\n span.textContent = rootName;\n li.appendChild(span);\n }\n\n _findEmptyNodes(metaObject = this._rootMetaObject, countEntities = 0) {\n const viewer = this._treeViewPlugin.viewer;\n const scene = viewer.scene;\n const children = metaObject.children;\n const objectId = metaObject.id;\n const entity = scene.objects[objectId];\n metaObject._countEntities = 0;\n if (entity) {\n metaObject._countEntities++;\n }\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n childMetaObject._countEntities = this._findEmptyNodes(childMetaObject);\n metaObject._countEntities += childMetaObject._countEntities;\n }\n }\n return metaObject._countEntities;\n }\n\n _createStoreysNodes(\n metaObject = this._rootMetaObject,\n buildingNode,\n storeyNode,\n typeNodes) {\n if (this._pruneEmptyNodes && (metaObject._countEntities === 0)) {\n return;\n }\n const metaObjectType = metaObject.type;\n const metaObjectName = metaObject.name;\n const children = metaObject.children;\n const objectId = metaObject.id;\n if (metaObjectType === \"IfcBuilding\") {\n buildingNode = {\n nodeId: this._objectToNodeID(objectId),\n objectId: objectId,\n title: this._rootName || ((metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType),\n type: metaObjectType,\n parent: null,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n this._rootNodes.push(buildingNode);\n this._objectNodes[buildingNode.objectId] = buildingNode;\n } else if (metaObjectType === \"IfcBuildingStorey\") {\n if (!buildingNode) {\n this._treeViewPlugin.error(\"Failed to build storeys hierarchy for model '\" + this.metaModel.id + \"' - model does not have an IfcBuilding object, or is not an IFC model\");\n return;\n }\n storeyNode = {\n nodeId: this._objectToNodeID(objectId),\n objectId: objectId,\n title: (metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType,\n type: metaObjectType,\n parent: buildingNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n buildingNode.children.push(storeyNode);\n this._objectNodes[storeyNode.objectId] = storeyNode;\n typeNodes = {};\n } else {\n if (storeyNode) {\n const objects = this._viewer.scene.objects;\n const object = objects[objectId];\n if (object) {\n typeNodes = typeNodes || {};\n let typeNode = typeNodes[metaObjectType];\n if (!typeNode) {\n const typeNodeObjectId = storeyNode.objectId + \".\" + metaObjectType;\n const typeNodeNodeId = this._objectToNodeID(typeNodeObjectId);\n typeNode = {\n nodeId: typeNodeNodeId,\n objectId: typeNodeObjectId,\n title: metaObjectType,\n type: metaObjectType,\n parent: storeyNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n storeyNode.children.push(typeNode);\n this._objectNodes[typeNodeObjectId] = typeNode;\n typeNodes[metaObjectType] = typeNode;\n }\n const node = {\n nodeId: this._objectToNodeID(objectId),\n objectId: objectId,\n title: (metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType,\n type: metaObjectType,\n parent: typeNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n typeNode.children.push(node);\n this._objectNodes[node.objectId] = node;\n }\n }\n }\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n this._createStoreysNodes(childMetaObject, buildingNode, storeyNode, typeNodes);\n }\n }\n }\n\n _createTypesNodes(metaObject = this._rootMetaObject, rootNode, typeNodes) {\n if (this._pruneEmptyNodes && (metaObject._countEntities === 0)) {\n return;\n }\n const metaObjectType = metaObject.type;\n const metaObjectName = metaObject.name;\n const children = metaObject.children;\n const objectId = metaObject.id;\n if (metaObject.id === this._rootMetaObject.id) {\n rootNode = {\n nodeId: this._objectToNodeID(objectId),\n objectId: objectId,\n title: this._rootName || ((metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType),\n type: metaObjectType,\n parent: null,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n this._rootNodes.push(rootNode);\n this._objectNodes[rootNode.objectId] = rootNode;\n typeNodes = {};\n } else {\n if (rootNode) {\n const objects = this._viewer.scene.objects;\n const object = objects[objectId];\n if (object) {\n let typeNode = typeNodes[metaObjectType];\n if (!typeNode) {\n typeNode = {\n nodeId: this._objectToNodeID(rootNode.objectId + \".\" + metaObjectType),\n objectId: rootNode.objectId + \".\" + metaObjectType,\n title: metaObjectType,\n type: metaObjectType,\n parent: rootNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n rootNode.children.push(typeNode);\n this._objectNodes[typeNode.objectId] = typeNode;\n typeNodes[metaObjectType] = typeNode;\n }\n const node = {\n nodeId: this._objectToNodeID(objectId),\n objectId: objectId,\n title: (metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType,\n type: metaObjectType,\n parent: typeNode,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n typeNode.children.push(node);\n this._objectNodes[node.objectId] = node;\n }\n }\n }\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n this._createTypesNodes(childMetaObject, rootNode, typeNodes);\n }\n }\n }\n\n _createContainmentNodes(metaObject = this._rootMetaObject, parent) {\n if (this._pruneEmptyNodes && (metaObject._countEntities === 0)) {\n return;\n }\n const metaObjectType = metaObject.type;\n const metaObjectName = metaObject.name || metaObjectType;\n const children = metaObject.children;\n const objectId = metaObject.id;\n const node = {\n nodeId: this._objectToNodeID(objectId),\n objectId: objectId,\n title: (!parent) ? (this._rootName || metaObjectName) : (metaObjectName && metaObjectName !== \"\" && metaObjectName !== \"Undefined\" && metaObjectName !== \"Default\") ? metaObjectName : metaObjectType,\n type: metaObjectType,\n parent: parent,\n numEntities: 0,\n numVisibleEntities: 0,\n checked: false,\n children: []\n };\n if (parent) {\n parent.children.push(node);\n } else {\n this._rootNodes.push(node);\n }\n this._objectNodes[node.objectId] = node;\n\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n this._createContainmentNodes(childMetaObject, node);\n }\n }\n }\n\n _doSortNodes() {\n for (let i = 0, len = this._rootNodes.length; i < len; i++) {\n const rootNode = this._rootNodes[i];\n this._sortChildren(rootNode);\n }\n }\n\n _sortChildren(node) {\n const children = node.children;\n if (!children || children.length === 0) {\n return;\n }\n if (this._hierarchy === \"storeys\" && node.type === \"IfcBuilding\") {\n // Assumes that children of an IfcBuilding will always be IfcBuildingStoreys\n children.sort(this._getSpatialSortFunc());\n } else {\n children.sort(this._alphaSortFunc);\n }\n for (let i = 0, len = children.length; i < len; i++) {\n const node = children[i];\n this._sortChildren(node);\n }\n }\n\n _getSpatialSortFunc() { // Creates cached sort func with Viewer in scope\n const viewer = this._treeViewPlugin.viewer;\n const scene = viewer.scene;\n const camera = scene.camera;\n const metaScene = viewer.metaScene;\n return this._spatialSortFunc || (this._spatialSortFunc = (node1, node2) => {\n if (!node1.aabb || !node2.aabb) {\n // Sorting on lowest point of the AABB is likely more more robust when objects could overlap storeys\n if (!node1.aabb) {\n node1.aabb = scene.getAABB(metaScene.getObjectIDsInSubtree(node1.objectId));\n }\n if (!node2.aabb) {\n node2.aabb = scene.getAABB(metaScene.getObjectIDsInSubtree(node2.objectId));\n }\n }\n let idx = 0;\n if (camera.xUp) {\n idx = 0;\n } else if (camera.yUp) {\n idx = 1;\n } else {\n idx = 2;\n }\n if (node1.aabb[idx] > node2.aabb[idx]) {\n return -1;\n }\n if (node1.aabb[idx] < node2.aabb[idx]) {\n return 1;\n }\n return 0;\n });\n }\n\n _alphaSortFunc(node1, node2) {\n const title1 = node1.title.toUpperCase(); // FIXME: Should be case sensitive?\n const title2 = node2.title.toUpperCase();\n if (title1 < title2) {\n return -1;\n }\n if (title1 > title2) {\n return 1;\n }\n return 0;\n }\n\n _synchNodesToEntities() {\n const rootMetaObject = this._rootMetaObject;\n const objectIds = rootMetaObject.getObjectIDsInSubtree();\n const metaObjects = this._viewer.metaScene.metaObjects;\n const objects = this._viewer.scene.objects;\n for (let i = 0, len = objectIds.length; i < len; i++) {\n const objectId = objectIds[i];\n const metaObject = metaObjects[objectId];\n if (metaObject) {\n const node = this._objectNodes[objectId];\n if (node) {\n const entity = objects[objectId];\n if (entity) {\n const visible = entity.visible;\n node.numEntities = 1;\n if (visible) {\n node.numVisibleEntities = 1;\n node.checked = true;\n } else {\n node.numVisibleEntities = 0;\n node.checked = false;\n }\n let parent = node.parent; // Synch parents\n while (parent) {\n parent.numEntities++;\n if (visible) {\n parent.numVisibleEntities++;\n parent.checked = true;\n }\n parent = parent.parent;\n }\n }\n }\n }\n }\n }\n\n _withNodeTree(node, callback) {\n callback(node);\n const children = node.children;\n if (!children) {\n return;\n }\n for (let i = 0, len = children.length; i < len; i++) {\n this._withNodeTree(children[i], callback);\n }\n }\n\n _createTrees() {\n if (this._rootNodes.length === 0) {\n return;\n }\n const rootNodeElements = this._rootNodes.map((rootNode) => {\n return this._createNodeElement(rootNode);\n });\n const ul = document.createElement('ul');\n rootNodeElements.forEach((nodeElement) => {\n ul.appendChild(nodeElement);\n });\n this._containerElement.appendChild(ul);\n this._rootElement = ul;\n }\n\n _createNodeElement(node) {\n const nodeElement = document.createElement('li');\n //const nodeId = this._objectToNodeID(node.objectId);\n const nodeId = node.nodeId;\n nodeElement.id = 'node-' + nodeId;\n if (node.children.length > 0) {\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.createElement('a');\n switchElement.href = '#';\n switchElement.id = switchElementId;\n switchElement.textContent = '+';\n switchElement.classList.add('plus');\n switchElement.addEventListener('click', this.switchExpandHandler);\n nodeElement.appendChild(switchElement);\n }\n const checkbox = document.createElement('input');\n checkbox.id = nodeId;\n checkbox.type = \"checkbox\";\n checkbox.checked = node.checked;\n checkbox.style[\"pointer-events\"] = \"all\";\n checkbox.addEventListener(\"change\", this._checkboxChangeHandler);\n nodeElement.appendChild(checkbox);\n const span = document.createElement('span');\n span.textContent = node.title;\n nodeElement.appendChild(span);\n span.oncontextmenu = (e) => {\n this._treeViewPlugin.fire(\"contextmenu\", {\n event: e,\n viewer: this._viewer,\n treeViewPlugin: this._treeViewPlugin,\n treeViewNode: node\n });\n e.preventDefault();\n };\n span.onclick = (e) => {\n this._treeViewPlugin.fire(\"nodeTitleClicked\", {\n event: e,\n viewer: this._viewer,\n treeViewPlugin: this._treeViewPlugin,\n treeViewNode: node\n });\n e.preventDefault();\n };\n return nodeElement;\n }\n\n /**\n * @private\n * @param depth\n */\n expandToDepth(depth) {\n const expand = (node, countDepth) => {\n if (countDepth === depth) {\n return;\n }\n const nodeId = node.nodeId;\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\n if (switchElement) {\n this._expandSwitchElement(switchElement);\n const childNodes = node.children;\n for (var i = 0, len = childNodes.length; i < len; i++) {\n const childNode = childNodes[i];\n expand(childNode, countDepth + 1);\n }\n }\n };\n for (let i = 0, len = this._rootNodes.length; i < len; i++) {\n const rootNode = this._rootNodes[i];\n expand(rootNode, 0);\n }\n }\n\n /**\n * @private\n */\n collapse() {\n for (let i = 0, len = this._rootNodes.length; i < len; i++) {\n const rootNode = this._rootNodes[i];\n const objectId = rootNode.objectId;\n this._collapseNode(objectId);\n }\n }\n\n /**\n * @private\n * @param objectId\n */\n showNode(objectId) {\n if (this._showListItemElementId) {\n this.unShowNode();\n }\n const node = this._objectNodes[objectId];\n if (!node) {\n return; // Node may not exist for the given object if (this._pruneEmptyNodes == true)\n }\n const nodeId = node.nodeId;\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\n if (switchElement) {\n this._expandSwitchElement(switchElement);\n switchElement.scrollIntoView();\n return;\n }\n const path = [];\n path.unshift(node);\n let parent = node.parent;\n while (parent) {\n path.unshift(parent);\n parent = parent.parent;\n }\n for (let i = 0, len = path.length; i < len; i++) {\n const node = path[i];\n const nodeId = node.nodeId;\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\n if (switchElement) {\n this._expandSwitchElement(switchElement);\n }\n }\n const listItemElementId = 'node-' + nodeId;\n const listItemElement = document.getElementById(listItemElementId);\n listItemElement.scrollIntoView({block: \"center\"});\n listItemElement.classList.add(\"highlighted-node\");\n this._showListItemElementId = listItemElementId;\n }\n\n /**\n * @private\n */\n unShowNode() {\n if (!this._showListItemElementId) {\n return;\n }\n const listItemElement = document.getElementById(this._showListItemElementId);\n if (!listItemElement) {\n this._showListItemElementId = null;\n return;\n }\n listItemElement.classList.remove(\"highlighted-node\");\n this._showListItemElementId = null;\n }\n\n _expandSwitchElement(switchElement) {\n const parentElement = switchElement.parentElement;\n const expanded = parentElement.getElementsByTagName('li')[0];\n if (expanded) {\n return;\n }\n const nodeId = parentElement.id.replace('node-', '');\n const objectId = this._nodeToObjectID(nodeId);\n const switchNode = this._objectNodes[objectId];\n const childNodes = switchNode.children;\n const nodeElements = childNodes.map((node) => {\n return this._createNodeElement(node);\n });\n const ul = document.createElement('ul');\n nodeElements.forEach((nodeElement) => {\n ul.appendChild(nodeElement);\n });\n parentElement.appendChild(ul);\n switchElement.classList.remove('plus');\n switchElement.classList.add('minus');\n switchElement.textContent = '-';\n switchElement.removeEventListener('click', this.switchExpandHandler);\n switchElement.addEventListener('click', this.switchCollapseHandler);\n }\n\n _collapseNode(objectId) {\n const nodeId = this._objectToNodeID(objectId);\n const switchElementId = \"switch-\" + nodeId;\n const switchElement = document.getElementById(switchElementId);\n this._collapseSwitchElement(switchElement);\n }\n\n _collapseSwitchElement(switchElement) {\n if (!switchElement) {\n return;\n }\n const parent = switchElement.parentElement;\n if (!parent) {\n return;\n }\n const ul = parent.querySelector('ul');\n if (!ul) {\n return;\n }\n parent.removeChild(ul);\n switchElement.classList.remove('minus');\n switchElement.classList.add('plus');\n switchElement.textContent = '+';\n switchElement.removeEventListener('click', this.switchCollapseHandler);\n switchElement.addEventListener('click', this.switchExpandHandler);\n }\n\n /**\n * Destroys this ModelTreeView.\n * @private\n */\n destroy() {\n if (this._rootElement && !this._destroyed) {\n this._rootElement.parentNode.removeChild(this._rootElement);\n this._viewer.scene.off(this._onObjectVisibility);\n this._destroyed = true;\n idMap.removeItem(this._id);\n }\n }\n}\n\n/**\n * @desc A {@link Viewer} plugin that provides an HTML tree view to navigate the IFC elements in models.\n *
\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_XKT_WestRiverSideHospital)]\n *\n * ## Overview\n *\n * * A fast HTML tree view, with zero external dependencies, that works with huge numbers of objects.\n * * Each tree node has a checkbox to control the visibility of its object.\n * * Has three hierarchy modes: \"containment\", \"types\" and \"storeys\".\n * * Automatically contains all models (that have metadata) that are currently in the {@link Scene}.\n * * Sorts tree nodes by default - spatially, from top-to-bottom for ````IfcBuildingStorey```` nodes, and alphanumerically for other nodes.\n * * Allows custom CSS styling.\n * * Use {@link ContextMenu} to create a context menu for the tree nodes.\n *\n * ## Credits\n *\n * TreeViewPlugin is based on techniques described in [*Super Fast Tree View in JavaScript*](https://chrissmith.xyz/super-fast-tree-view-in-javascript/) by [Chris Smith](https://twitter.com/chris22smith).\n *\n * ## Usage\n *\n * In the example below, we'll add a TreeViewPlugin which, by default, will automatically show the structural\n * hierarchy of the IFC elements in each model we load.\n *\n * Then we'll use an {@link XKTLoaderPlugin} to load the Schependomlaan model from an\n * [.xkt file](https://github.com/xeokit/xeokit-sdk/tree/master/examples/models/xkt/schependomlaan), along\n * with an accompanying JSON [IFC metadata file](https://github.com/xeokit/xeokit-sdk/tree/master/examples/metaModels/schependomlaan).\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_XKT_Schependomlaan)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, TreeViewPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\")\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true\n * });\n * ````\n *\n * ## Manually Adding Models\n *\n * Instead of adding models automatically, we can control which models appear in our TreeViewPlugin by adding them manually.\n *\n * In the next example, we'll configure the TreeViewPlugin to not add models automatically. Then, once the model\n * has loaded, we'll add it manually using {@link TreeViewPlugin#addModel}.\n *\n * ````javascript\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\"),\n * autoAddModels: false // <<---------------- Don't auto-add models\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n * treeView.addModel(model.id);\n * });\n * ````\n *\n * Adding models manually also allows us to set some options for the model. For example, the ````rootName```` option allows us to provide a custom name for\n * the root node, which is sometimes desirable when the model's \"IfcProject\" element's name is not suitable:\n *\n * ````javascript\n * model.on(\"loaded\", () => {\n * treeView.addModel(model.id, {\n * rootName: \"Schependomlaan Model\"\n * });\n * });\n * ````\n *\n * ## Initially Expanding the Hierarchy\n *\n * We can also configure TreeViewPlugin to initially expand each model's nodes to a given depth.\n *\n * Let's automatically expand the first three nodes from the root, for every model added:\n *\n * ````javascript\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\"),\n * autoExpandDepth: 3\n * });\n * ````\n *\n * ## Showing a Node by ID\n *\n * We can show a given node using its ID. This causes the TreeViewPlugin to collapse, then expand and scroll the node into view, then highlight the node.\n *\n * See the documentation for the {@link TreeViewPlugin#showNode} method for more information, including how to define a custom highlighted appearance for the node using CSS.\n *\n * Let's make the TreeViewPlugin show the node corresponding to whatever object {@link Entity} that we pick:\n *\n * ````javascript\n * viewer.cameraControl.on(\"picked\", function (e) {\n * var objectId = e.entity.id;\n * treeView.showNode(objectId);\n * });\n * ````\n *\n * This will de-highlight any node that was previously shown by this method.\n *\n * Note that this method only works if the picked {@link Entity} is an object that belongs to a model that's represented in the TreeViewPlugin.\n *\n * ## Customizing Appearance\n *\n * We can customize the appearance of our TreeViewPlugin by defining custom CSS for its HTML\n * elements. See our example's [source code](https://github.com/xeokit/xeokit-sdk/blob/master/examples/BIMOffline_XKT_Schependomlaan.html)\n * for an example of custom CSS rules.\n *\n * ## Model Hierarchies\n *\n * TreeViewPlugin has three hierarchies for organizing its nodes:\n *\n * * \"containment\" - organizes the tree nodes to indicate the containment hierarchy of the {@link MetaObject}s.\n * * \"types\" - groups nodes by their IFC types.\n * * \"storeys\" - groups nodes within their ````IfcBuildingStoreys````, and sub-groups them by their IFC types.\n *\n *
\n * The table below shows what the hierarchies look like:\n *
\n *\n * | 1. Containment Hierarchy | 2. Types Hierarchy | 3. Storeys Hierarchy |\n * |---|---|---|\n * | | | |\n *
\n *\n * Let's create a TreeViewPlugin that groups nodes by their building stories and IFC types:\n *\n * ````javascript\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\"),\n * hierarchy: \"stories\"\n * });\n * ````\n *\n * ## Sorting Nodes\n *\n * TreeViewPlugin sorts its tree nodes by default. For a \"storeys\" hierarchy, it orders ````IfcBuildingStorey```` nodes\n * spatially, with the node for the highest story at the top, down to the lowest at the bottom.\n *\n * For all the hierarchy types (\"containment\", \"classes\" and \"storeys\"), TreeViewPlugin sorts the other node types\n * alphanumerically on their titles.\n *\n * If for some reason you need to prevent sorting, create your TreeViewPlugin with the option disabled, like so:\n *\n * ````javascript\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\"),\n * hierarchy: \"stories\",\n * sortNodes: false // <<------ Disable node sorting\n * });\n * ````\n *\n * Note that, for all hierarchy modes, node sorting is only done for each model at the time that it is added to the TreeViewPlugin, and will not\n * update dynamically if we later transform the {@link Entity}s corresponding to the nodes.\n *\n * ## Pruning empty nodes\n *\n * Sometimes a model contains subtrees of objects that don't have any geometry. These are models whose\n * {@link MetaModel} contains trees of {@link MetaObject}s that don't have any {@link Entity}s in the {@link Scene}.\n *\n * For these models, the tree view would contain nodes that don't do anything in the Scene when we interact with them,\n * which is undesirable.\n *\n * By default, TreeViewPlugin will not create nodes for those objects. However, we can override that behaviour if we want\n * to have nodes for those objects (perhaps for debugging the model):\n *\n * ````javascript\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\"),\n * hierarchy: \"stories\",\n * pruneEmptyNodes: false // <<------ Create nodes for object subtrees without geometry\n * });\n * ````\n *\n * ## Context Menu\n *\n * TreeViewPlugin fires a \"contextmenu\" event whenever we right-click on a tree node.\n *\n * The event contains:\n *\n * * ````event```` - the original [contextmenu](https://developer.mozilla.org/en-US/docs/Web/API/Element/contextmenu_event) [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent)\n * * ````viewer```` - the {@link Viewer}\n * * ````treeViewPlugin```` - the TreeViewPlugin\n * * ````treeViewNode```` - the {@link TreeViewNode} representing the tree node\n *

\n *\n * Let's use {@link ContextMenu} to show a simple context menu for the node we clicked.\n *\n * [[Run an example](https://xeokit.github.io/xeokit-sdk/examples/#ContextMenu_Canvas_TreeViewPlugin_Custom)]\n *\n * ````javascript\n * import {ContextMenu} from \"../src/extras/ContextMenu/ContextMenu.js\";\n *\n * const treeViewContextMenu = new ContextMenu({\n * items: [\n * [\n * [\n * {\n * title: \"Hide\",\n * doAction: function (context) {\n * context.treeViewPlugin.withNodeTree(context.treeViewNode, (treeViewNode) => {\n * if (treeViewNode.objectId) {\n * const entity = context.viewer.scene.objects[treeViewNode.objectId];\n * if (entity) {\n * entity.visible = false;\n * }\n * }\n * });\n * }\n * },\n * {\n * title: \"Hide all\",\n * doAction: function (context) {\n * context.viewer.scene.setObjectsVisible(context.viewer.scene.visibleObjectIds, false);\n * }\n * }\n * ],\n * [\n * {\n * title: \"Show\",\n * doAction: function (context) {\n * context.treeViewPlugin.withNodeTree(context.treeViewNode, (treeViewNode) => {\n * if (treeViewNode.objectId) {\n * const entity = context.viewer.scene.objects[treeViewNode.objectId];\n * if (entity) {\n * entity.visible = true;\n * entity.xrayed = false;\n * entity.selected = false;\n * }\n * }\n * });\n * }\n * },\n * {\n * title: \"Show all\",\n * doAction: function (context) {\n * const scene = context.viewer.scene;\n * scene.setObjectsVisible(scene.objectIds, true);\n * scene.setObjectsXRayed(scene.xrayedObjectIds, false);\n * scene.setObjectsSelected(scene.selectedObjectIds, false);\n * }\n * }\n * ]\n * ]\n * ]\n * });\n *\n * treeView.on(\"contextmenu\", (e) => {\n *\n * const event = e.event; // MouseEvent\n * const viewer = e.viewer; // Viewer\n * const treeViewPlugin = e.treeViewPlugin; // TreeViewPlugin\n * const treeViewNode = e.treeViewNode; // TreeViewNode\n *\n * treeViewContextMenu.show(e.event.pageX, e.event.pageY);\n *\n * treeViewContextMenu.context = {\n * viewer: e.viewer,\n * treeViewPlugin: e.treeViewPlugin,\n * treeViewNode: e.treeViewNode\n * };\n * });\n * ````\n *\n * ## Clicking Node Titles\n *\n * TreeViewPlugin fires a \"nodeTitleClicked\" event whenever we left-click on a tree node.\n *\n * Like the \"contextmenu\" event, this event contains:\n *\n * * ````event```` - the original [click](https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event) [MouseEvent](https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent)\n * * ````viewer```` - the {@link Viewer}\n * * ````treeViewPlugin```` - the TreeViewPlugin\n * * ````treeViewNode```` - the {@link TreeViewNode} representing the tree node\n *

\n *\n * Let's register a callback to isolate and fit-to-view the {@link Entity}(s) represented by the node. This callback is\n * going to X-ray all the other Entitys, fly the camera to fit the Entity(s) for the clicked node, then hide the other Entitys.\n *\n * [[Run an example](https://xeokit.github.io/xeokit-sdk/examples/#ContextMenu_Canvas_TreeViewPlugin_Custom)]\n *\n * ````javascript\n * treeView.on(\"nodeTitleClicked\", (e) => {\n * const scene = viewer.scene;\n * const objectIds = [];\n * e.treeViewPlugin.withNodeTree(e.treeViewNode, (treeViewNode) => {\n * if (treeViewNode.objectId) {\n * objectIds.push(treeViewNode.objectId);\n * }\n * });\n * scene.setObjectsXRayed(scene.objectIds, true);\n * scene.setObjectsVisible(scene.objectIds, true);\n * scene.setObjectsXRayed(objectIds, false);\n * viewer.cameraFlight.flyTo({\n * aabb: scene.getAABB(objectIds),\n * duration: 0.5\n * }, () => {\n * setTimeout(function () {\n * scene.setObjectsVisible(scene.xrayedObjectIds, false);\n * scene.setObjectsXRayed(scene.xrayedObjectIds, false);\n * }, 500);\n * });\n * });\n * ````\n *\n * To make the cursor change to a pointer when we hover over the node titles, and also to make the titles change to blue, we'll also define this CSS for the ```````` elements\n * that represent the titles of our TreeViewPlugin nodes:\n *\n * ````css\n * #treeViewContainer ul li span:hover {\n * color: blue;\n * cursor: pointer;\n * }\n * ````\n *\n * @class TreeViewPlugin\n */\nclass TreeViewPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {*} cfg Plugin configuration.\n * @param {HTMLElement} cfg.containerElement DOM element to contain the TreeViewPlugin.\n * @param {Boolean} [cfg.autoAddModels=true] When ````true```` (default), will automatically add each model as it's created. Set this ````false```` if you want to manually add models using {@link TreeViewPlugin#addModel} instead.\n * @param {Number} [cfg.autoExpandDepth] Optional depth to which to initially expand the tree.\n * @param {String} [cfg.hierarchy=\"containment\"] How to organize the tree nodes: \"containment\", \"storeys\" or \"types\". See the class documentation for details.\n * @param {Boolean} [cfg.sortNodes=true] When true, will sort the children of each node. For a \"storeys\" hierarchy, the\n * ````IfcBuildingStorey```` nodes will be ordered spatially, from the highest storey down to the lowest, on the\n * vertical World axis. For all hierarchy types, other node types will be ordered in the ascending alphanumeric order of their titles.\n * @param {Boolean} [cfg.pruneEmptyNodes=true] When true, will not contain nodes that don't have content in the {@link Scene}. These are nodes whose {@link MetaObject}s don't have {@link Entity}s.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"TreeViewPlugin\", viewer);\n\n if (!cfg.containerElement) {\n this.error(\"Config expected: containerElement\");\n return;\n }\n\n this._containerElement = cfg.containerElement;\n this._modelTreeViews = {};\n this._autoAddModels = (cfg.autoAddModels !== false);\n this._autoExpandDepth = (cfg.autoExpandDepth || 0);\n this._sortNodes = (cfg.sortNodes !== false);\n this._pruneEmptyNodes = (cfg.pruneEmptyNodes !== false);\n\n if (this._autoAddModels) {\n const modelIds = Object.keys(this.viewer.metaScene.metaModels);\n for (let i = 0, len = modelIds.length; i < len; i++) {\n const modelId = modelIds[i];\n this.addModel(modelId);\n }\n this.viewer.scene.on(\"modelLoaded\", (modelId) => {\n if (this.viewer.metaScene.metaModels[modelId]) {\n this.addModel(modelId);\n }\n });\n }\n\n this.hierarchy = cfg.hierarchy;\n }\n\n /**\n * Returns the map of {@link ModelTreeView}s.\n *\n * Each ModelTreeView is mapped to the ID of its model.\n *\n * @return {*|{}}\n */\n get modelTreeViews() {\n return this._modelTreeViews;\n }\n\n /**\n * Sets how the nodes are organized within this tree view.\n *\n * Accepted values are:\n *\n * * \"containment\" - organizes the nodes to indicate the containment hierarchy of the IFC objects.\n * * \"types\" - groups the nodes within their IFC types.\n * * \"storeys\" - groups the nodes within ````IfcBuildingStoreys```` and sub-groups them by their IFC types.\n *\n *
\n * This can be updated dynamically.\n *\n * Default value is \"containment\".\n *\n * @type {String}\n */\n set hierarchy(hierarchy) {\n hierarchy = hierarchy || \"containment\";\n if (hierarchy !== \"containment\" && hierarchy !== \"storeys\" && hierarchy !== \"types\") {\n this.error(\"Unsupported value for `hierarchy' - defaulting to 'containment'\");\n hierarchy = \"containment\";\n }\n this._hierarchy = hierarchy;\n for (let modelId in this._modelTreeViews) {\n if (this._modelTreeViews.hasOwnProperty(modelId)) {\n this._modelTreeViews[modelId].setHierarchy(this._hierarchy);\n }\n }\n }\n\n /**\n * Gets how the nodes are organized within this tree view.\n *\n * @type {String}\n */\n get hierarchy() {\n return this._hierarchy;\n }\n\n /**\n * Adds a model to this tree view.\n *\n * The model will be automatically removed when destroyed.\n *\n * To automatically add each model as it's created, instead of manually calling this method each time,\n * provide a ````autoAddModels: true```` to the TreeViewPlugin constructor.\n *\n * @param {String} modelId ID of a model {@link Entity} in {@link Scene#models}.\n * @param {Object} [options] Options for model in the tree view.\n * @param {String} [options.rootName] Optional display name for the root node. Ordinary, for \"containment\"\n * and \"storeys\" hierarchy types, the tree would derive the root node name from the model's \"IfcProject\" element\n * name. This option allows to override that name when it is not suitable as a display name.\n * @returns {ModelTreeView} ModelTreeView for the newly-added model. If this method succeeded in adding the model,\n * then {@link ModelTreeView#valid} will equal ````true````. Otherwise, that property will be ````false````\n * and {@link ModelTreeView#errors} will contain error messages.\n */\n addModel(modelId, options = {}) {\n if (!this._containerElement) {\n return;\n }\n const model = this.viewer.scene.models[modelId];\n if (!model) {\n throw \"Model not found: \" + modelId;\n }\n const metaModel = this.viewer.metaScene.metaModels[modelId];\n if (!metaModel) {\n this.error(\"MetaModel not found: \" + modelId);\n return;\n }\n if (this._modelTreeViews[modelId]) {\n this.warn(\"Model already added: \" + modelId);\n return;\n }\n const modelTreeView = new ModelTreeView(this.viewer, this, model, metaModel, {\n containerElement: this._containerElement,\n autoExpandDepth: this._autoExpandDepth,\n hierarchy: this._hierarchy,\n sortNodes: this._sortNodes,\n pruneEmptyNodes: this._pruneEmptyNodes,\n rootName: options.rootName\n });\n this._modelTreeViews[modelId] = modelTreeView;\n model.on(\"destroyed\", () => {\n this.removeModel(model.id);\n });\n return modelTreeView;\n }\n\n /**\n * Removes a model from this tree view.\n *\n * Does nothing if model not currently in tree view.\n *\n * @param {String} modelId ID of a model {@link Entity} in {@link Scene#models}.\n */\n removeModel(modelId) {\n if (!this._containerElement) {\n return;\n }\n const modelTreeView = this._modelTreeViews[modelId];\n if (!modelTreeView) {\n return;\n }\n modelTreeView.destroy();\n delete this._modelTreeViews[modelId];\n }\n\n /**\n * Collapses all trees within this tree view.\n */\n collapse() {\n for (let modelId in this._modelTreeViews) {\n if (this._modelTreeViews.hasOwnProperty(modelId)) {\n const modelTreeView = this._modelTreeViews[modelId];\n modelTreeView.collapse();\n }\n }\n }\n\n /**\n * Highlights the tree view node that represents the given object {@link Entity}.\n *\n * This causes the tree view to collapse, then expand to reveal the node, then highlight the node.\n *\n * If a node is previously highlighted, de-highlights that node and collapses the tree first.\n *\n * Note that if the TreeViewPlugin was configured with ````pruneEmptyNodes: true```` (default configuration), then the\n * node won't exist in the tree if it has no Entitys in the {@link Scene}. in that case, nothing will happen.\n *\n * Within the DOM, the node is represented by an ````
  • ```` element. This method will add a ````.highlighted-node```` class to\n * the element to make it appear highlighted, removing that class when de-highlighting it again. See the CSS rules\n * in the TreeViewPlugin examples for an example of that class.\n *\n * @param {String} objectId ID of the {@link Entity}.\n */\n showNode(objectId) {\n this.unShowNode();\n const metaObject = this.viewer.metaScene.metaObjects[objectId];\n if (!metaObject) {\n this.error(\"MetaObject not found: \" + objectId);\n return;\n }\n const metaModel = metaObject.metaModel;\n const modelId = metaModel.id;\n const modelTreeView = this._modelTreeViews[modelId];\n if (!modelTreeView) {\n this.error(\"Object not in this TreeView: \" + objectId);\n return;\n }\n modelTreeView.showNode(objectId);\n }\n\n /**\n * De-highlights the node previously shown with {@link TreeViewPlugin#showNode}.\n *\n * Does nothing if no node is currently shown.\n *\n * If the node is currently scrolled into view, keeps the node in view.\n */\n unShowNode() {\n for (let modelId in this._modelTreeViews) {\n if (this._modelTreeViews.hasOwnProperty(modelId)) {\n const modelTreeView = this._modelTreeViews[modelId];\n modelTreeView.unShowNode();\n }\n }\n }\n\n /**\n * Expands the tree to the given depth.\n *\n * Collapses the tree first.\n *\n * @param {Number} depth Depth to expand to.\n */\n expandToDepth(depth) {\n for (let modelId in this._modelTreeViews) {\n if (this._modelTreeViews.hasOwnProperty(modelId)) {\n const modelTreeView = this._modelTreeViews[modelId];\n modelTreeView.collapse();\n modelTreeView.expandToDepth(depth);\n }\n }\n }\n\n /**\n * Iterates over a subtree of the tree view's {@link TreeViewNode}s, calling the given callback for each\n * node in depth-first pre-order.\n *\n * @param {TreeViewNode} node Root of the subtree.\n * @param {Function} callback Callback called at each {@link TreeViewNode}, with the TreeViewNode given as the argument.\n */\n withNodeTree(node, callback) {\n callback(node);\n const children = node.children;\n if (!children) {\n return;\n }\n for (let i = 0, len = children.length; i < len; i++) {\n this.withNodeTree(children[i], callback);\n }\n }\n\n /**\n * Destroys this TreeViewPlugin.\n */\n destroy() {\n if (!this._containerElement) {\n return;\n }\n for (let modelId in this._modelTreeViews) {\n if (this._modelTreeViews.hasOwnProperty(modelId)) {\n this._modelTreeViews[modelId].destroy();\n }\n }\n this._modelTreeViews = {};\n super.destroy();\n }\n}\n\nconst tempVec3a$4 = math.vec3();\nconst tempVec3b$4 = math.vec3();\nconst tempMat4a = math.mat4();\n\n/**\n * @private\n */\nclass FrustumPlane {\n\n constructor() {\n this.normal = math.vec3();\n this.offset = 0;\n this.testVertex = math.vec3();\n }\n\n set(nx, ny, nz, offset) {\n const s = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);\n this.normal[0] = nx * s;\n this.normal[1] = ny * s;\n this.normal[2] = nz * s;\n this.offset = offset * s;\n this.testVertex[0] = (this.normal[0] >= 0.0) ? 1 : 0;\n this.testVertex[1] = (this.normal[1] >= 0.0) ? 1 : 0;\n this.testVertex[2] = (this.normal[2] >= 0.0) ? 1 : 0;\n }\n}\n\n/**\n * @private\n */\nclass Frustum {\n constructor() {\n this.planes = [\n new FrustumPlane(), new FrustumPlane(), new FrustumPlane(),\n new FrustumPlane(), new FrustumPlane(), new FrustumPlane()\n ];\n }\n}\n\nFrustum.INSIDE = 0;\nFrustum.INTERSECT = 1;\nFrustum.OUTSIDE = 2;\n\n/** @private */\nfunction setFrustum(frustum, viewMat, projMat) {\n\n const m = math.mulMat4(projMat, viewMat, tempMat4a);\n\n const m0 = m[0];\n const m1 = m[1];\n const m2 = m[2];\n const m3 = m[3];\n const m4 = m[4];\n const m5 = m[5];\n const m6 = m[6];\n const m7 = m[7];\n const m8 = m[8];\n const m9 = m[9];\n const m10 = m[10];\n const m11 = m[11];\n const m12 = m[12];\n const m13 = m[13];\n const m14 = m[14];\n const m15 = m[15];\n\n frustum.planes[0].set(m3 - m0, m7 - m4, m11 - m8, m15 - m12);\n frustum.planes[1].set(m3 + m0, m7 + m4, m11 + m8, m15 + m12);\n frustum.planes[2].set(m3 - m1, m7 - m5, m11 - m9, m15 - m13);\n frustum.planes[3].set(m3 + m1, m7 + m5, m11 + m9, m15 + m13);\n frustum.planes[4].set(m3 - m2, m7 - m6, m11 - m10, m15 - m14);\n frustum.planes[5].set(m3 + m2, m7 + m6, m11 + m10, m15 + m14);\n}\n\n/** @private */\nfunction frustumIntersectsAABB3(frustum, aabb) {\n\n let ret = Frustum.INSIDE;\n\n const min = tempVec3a$4;\n const max = tempVec3b$4;\n\n min[0] = aabb[0];\n min[1] = aabb[1];\n min[2] = aabb[2];\n max[0] = aabb[3];\n max[1] = aabb[4];\n max[2] = aabb[5];\n\n const bminmax = [min, max];\n\n for (let i = 0; i < 6; ++i) {\n const plane = frustum.planes[i];\n if (((plane.normal[0] * bminmax[plane.testVertex[0]][0]) +\n (plane.normal[1] * bminmax[plane.testVertex[1]][1]) +\n (plane.normal[2] * bminmax[plane.testVertex[2]][2]) +\n (plane.offset)) < 0.0) {\n return Frustum.OUTSIDE;\n }\n\n if (((plane.normal[0] * bminmax[1 - plane.testVertex[0]][0]) +\n (plane.normal[1] * bminmax[1 - plane.testVertex[1]][1]) +\n (plane.normal[2] * bminmax[1 - plane.testVertex[2]][2]) +\n (plane.offset)) < 0.0) {\n ret = Frustum.INTERSECT;\n }\n }\n\n return ret;\n}\n\n/**\n * For each Entity in its Scene, efficiently combines updates from multiple culling systems into a single \"culled\" state.\n *\n * Two culling systems are supported:\n *\n * * View culling - culls Entities when they fall outside the current view frustum, and\n * * Detail culling - momentarily culls less visually-significant Entities while we are moving the camera.\n *\n * @private\n */\nclass ObjectCullStates {\n\n /**\n * @private\n * @param scene\n */\n constructor(scene) {\n\n this._scene = scene;\n\n this._objects = []; // Array of all Entity instances that represent objects\n this._objectsViewCulled = []; // A flag for each object to indicate its view-cull status\n this._objectsDetailCulled = []; // A flag for each object to indicate its detail-cull status\n this._objectsChanged = []; // A flag for each object, set whenever its cull status has changed since last _applyChanges()\n this._objectsChangedList = []; // A list of objects whose cull status has changed, applied and cleared by _applyChanges()\n\n this._modelInfos = {};\n\n this._numObjects = 0;\n this._lenObjectsChangedList = 0;\n\n this._dirty = true;\n\n this._onModelLoaded = scene.on(\"modelLoaded\", (modelId) => {\n const model = scene.models[modelId];\n if (model) {\n this._addModel(model);\n }\n });\n\n this._onTick = scene.on(\"tick\", () => {\n if (this._dirty) {\n this._build();\n }\n this._applyChanges();\n });\n }\n\n _addModel(model) {\n const modelInfo = {\n model: model,\n onDestroyed: model.on(\"destroyed\", () => {\n this._removeModel(model);\n })\n };\n this._modelInfos[model.id] = modelInfo;\n this._dirty = true;\n }\n\n _removeModel(model) {\n const modelInfo = this._modelInfos[model.id];\n if (modelInfo) {\n modelInfo.model.off(modelInfo.onDestroyed);\n delete this._modelInfos[model.id];\n this._dirty = true;\n }\n }\n\n _build() {\n if (!this._dirty) {\n return;\n }\n this._applyChanges();\n const objects = this._scene.objects;\n for (let i = 0; i < this._numObjects; i++) {\n this._objects[i] = null;\n }\n this._numObjects = 0;\n for (let objectId in objects) {\n const entity = objects[objectId];\n this._objects[this._numObjects++] = entity;\n }\n this._lenObjectsChangedList = 0;\n this._dirty = false;\n }\n\n _applyChanges() {\n if (this._lenObjectsChangedList > 0) {\n for (let i = 0; i < this._lenObjectsChangedList; i++) {\n const objectIdx = this._objectsChangedList[i];\n const object = this._objects[objectIdx];\n const viewCulled = this._objectsViewCulled[objectIdx];\n const detailCulled = this._objectsDetailCulled[objectIdx];\n const culled = (viewCulled || detailCulled);\n object.culled = culled;\n this._objectsChanged[objectIdx] = false;\n }\n this._lenObjectsChangedList = 0;\n }\n }\n\n /**\n * Array of {@link Entity} instances that represent objects in the {@link Scene}.\n *\n * ObjectCullStates rebuilds this from {@link Scene#objects} whenever ````Scene```` fires a ````modelLoaded```` event.\n *\n * @returns {Entity[]}\n */\n get objects() {\n if (this._dirty) {\n this._build();\n }\n return this._objects;\n }\n\n /**\n * Number of objects in {@link ObjectCullStates#objects},\n *\n * Updated whenever ````Scene```` fires a ````modelLoaded```` event.\n *\n * @returns {Number}\n */\n get numObjects() {\n if (this._dirty) {\n this._build();\n }\n return this._numObjects;\n }\n\n /**\n * Updates an object's view-cull status.\n *\n * @param {Number} objectIdx Index of the object in {@link ObjectCullStates#objects}\n * @param {boolean} culled Whether to view-cull or not.\n */\n setObjectViewCulled(objectIdx, culled) {\n if (this._dirty) {\n this._build();\n }\n if (this._objectsViewCulled[objectIdx] === culled) {\n return;\n }\n this._objectsViewCulled[objectIdx] = culled;\n if (!this._objectsChanged[objectIdx]) {\n this._objectsChanged[objectIdx] = true;\n this._objectsChangedList[this._lenObjectsChangedList++] = objectIdx;\n }\n }\n\n /**\n * Updates an object's detail-cull status.\n *\n * @param {Number} objectIdx Index of the object in {@link ObjectCullStates#objects}\n * @param {boolean} culled Whether to detail-cull or not.\n */\n setObjectDetailCulled(objectIdx, culled) {\n if (this._dirty) {\n this._build();\n }\n if (this._objectsDetailCulled[objectIdx] === culled) {\n return;\n }\n this._objectsDetailCulled[objectIdx] = culled;\n if (!this._objectsChanged[objectIdx]) {\n this._objectsChanged[objectIdx] = true;\n this._objectsChangedList[this._lenObjectsChangedList++] = objectIdx;\n }\n }\n\n /**\n * Destroys this ObjectCullStAtes.\n */\n _destroy() {\n this._clear();\n this._scene.off(this._onModelLoaded);\n this._scene.off(this._onTick);\n }\n\n _clear() {\n for (let modelId in this._modelInfos) {\n const modelInfo = this._modelInfos[modelId];\n modelInfo.model.off(modelInfo.onDestroyed);\n }\n this._modelInfos = {};\n this._dirty = true;\n }\n}\n\nconst sceneObjectCullStates = {};\n\n/**\n * @private\n */\nfunction getObjectCullStates(scene) {\n const sceneId = scene.id;\n let objectCullStates = sceneObjectCullStates[sceneId];\n if (!objectCullStates) {\n objectCullStates = new ObjectCullStates(scene);\n sceneObjectCullStates[sceneId] = objectCullStates;\n scene.on(\"destroyed\", () => {\n delete sceneObjectCullStates[sceneId];\n objectCullStates._destroy();\n });\n }\n return objectCullStates;\n}\n\nconst MAX_KD_TREE_DEPTH = 8; // Increase if greater precision needed\n\nconst kdTreeDimLength = new Float32Array(3);\n\n/**\n * {@link Viewer} plugin that performs view frustum culling to accelerate rendering performance.\n *\n * For each {@link Entity} that represents an object, ````ViewCullPlugin```` will automatically\n * set {@link Entity#culled}````false```` whenever it falls outside our field of view.\n *\n * When culled, an ````Entity```` is not processed by xeokit's renderer.\n *\n * Internally, ````ViewCullPlugin```` organizes {@link Entity}s in\n * a [bounding volume hierarchy](https://en.wikipedia.org/wiki/Bounding_volume_hierarchy), implemented as\n * a [kd-tree](https://en.wikipedia.org/wiki/K-d_tree).\n *\n * On each {@link Scene} \"tick\" event, ````ViewCullPlugin```` searches the kd-tree using a frustum generated from\n * the {@link Camera}, marking each ````Entity```` **culled** if it falls outside the frustum.\n *\n * Use ````ViewCullPlugin```` by simply adding it to your ````Viewer````:\n *\n * ````javascript\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * const viewCullPlugin = new ViewCullPlugin(viewer, {\n * maxTreeDepth: 20\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/OTCConferenceCenter.xkt\"\n * });\n * ````\n */\nclass ViewCullPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"ViewCull\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Number} [cfg.maxTreeDepth=8] Maximum depth of the kd-tree.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"ViewCull\", viewer);\n\n this._objectCullStates = getObjectCullStates(viewer.scene); // Combines updates from multiple culling systems for its Scene's Entities\n\n this._maxTreeDepth = cfg.maxTreeDepth || MAX_KD_TREE_DEPTH;\n this._modelInfos = {};\n this._frustum = new Frustum();\n this._kdRoot = null;\n\n this._frustumDirty = false;\n this._kdTreeDirty = false;\n\n this._onViewMatrix = viewer.scene.camera.on(\"viewMatrix\", () => {\n this._frustumDirty = true;\n });\n\n this._onProjMatrix = viewer.scene.camera.on(\"projMatMatrix\", () => {\n this._frustumDirty = true;\n });\n\n this._onModelLoaded = viewer.scene.on(\"modelLoaded\", (modelId) => {\n const model = this.viewer.scene.models[modelId];\n if (model) {\n this._addModel(model);\n }\n });\n\n this._onSceneTick = viewer.scene.on(\"tick\", () => {\n this._doCull();\n });\n }\n\n /**\n * Sets whether view culling is enabled.\n *\n * @param {Boolean} enabled Whether to enable view culling.\n */\n set enabled(enabled) {\n this._enabled = enabled;\n }\n\n /**\n * Gets whether view culling is enabled.\n *\n * @retutns {Boolean} Whether view culling is enabled.\n */\n get enabled() {\n return this._enabled;\n }\n\n _addModel(model) {\n const modelInfo = {\n model: model,\n onDestroyed: model.on(\"destroyed\", () => {\n this._removeModel(model);\n })\n };\n this._modelInfos[model.id] = modelInfo;\n this._kdTreeDirty = true;\n }\n\n _removeModel(model) {\n const modelInfo = this._modelInfos[model.id];\n if (modelInfo) {\n modelInfo.model.off(modelInfo.onDestroyed);\n delete this._modelInfos[model.id];\n this._kdTreeDirty = true;\n }\n }\n\n _doCull() {\n const cullDirty = (this._frustumDirty || this._kdTreeDirty);\n if (this._frustumDirty) {\n this._buildFrustum();\n }\n if (this._kdTreeDirty) {\n this._buildKDTree();\n }\n if (cullDirty) {\n const kdNode = this._kdRoot;\n if (kdNode) {\n this._visitKDNode(kdNode);\n }\n }\n }\n\n _buildFrustum() {\n const camera = this.viewer.scene.camera;\n setFrustum(this._frustum, camera.viewMatrix, camera.projMatrix);\n this._frustumDirty = false;\n }\n\n _buildKDTree() {\n const viewer = this.viewer;\n const scene = viewer.scene;\n const depth = 0;\n if (this._kdRoot) ;\n this._kdRoot = {\n aabb: scene.getAABB(),\n intersection: Frustum.INTERSECT\n };\n for (let objectIdx = 0, len = this._objectCullStates.numObjects; objectIdx < len; objectIdx++) {\n const entity = this._objectCullStates.objects[objectIdx];\n this._insertEntityIntoKDTree(this._kdRoot, entity, objectIdx, depth + 1);\n }\n this._kdTreeDirty = false;\n }\n\n _insertEntityIntoKDTree(kdNode, entity, objectIdx, depth) {\n\n const entityAABB = entity.aabb;\n\n if (depth >= this._maxTreeDepth) {\n kdNode.objects = kdNode.objects || [];\n kdNode.objects.push(objectIdx);\n math.expandAABB3(kdNode.aabb, entityAABB);\n return;\n }\n\n if (kdNode.left) {\n if (math.containsAABB3(kdNode.left.aabb, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.left, entity, objectIdx, depth + 1);\n return;\n }\n }\n\n if (kdNode.right) {\n if (math.containsAABB3(kdNode.right.aabb, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.right, entity, objectIdx, depth + 1);\n return;\n }\n }\n\n const nodeAABB = kdNode.aabb;\n\n kdTreeDimLength[0] = nodeAABB[3] - nodeAABB[0];\n kdTreeDimLength[1] = nodeAABB[4] - nodeAABB[1];\n kdTreeDimLength[2] = nodeAABB[5] - nodeAABB[2];\n\n let dim = 0;\n\n if (kdTreeDimLength[1] > kdTreeDimLength[dim]) {\n dim = 1;\n }\n\n if (kdTreeDimLength[2] > kdTreeDimLength[dim]) {\n dim = 2;\n }\n\n if (!kdNode.left) {\n const aabbLeft = nodeAABB.slice();\n aabbLeft[dim + 3] = ((nodeAABB[dim] + nodeAABB[dim + 3]) / 2.0);\n kdNode.left = {\n aabb: aabbLeft,\n intersection: Frustum.INTERSECT\n };\n if (math.containsAABB3(aabbLeft, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.left, entity, objectIdx, depth + 1);\n return;\n }\n }\n\n if (!kdNode.right) {\n const aabbRight = nodeAABB.slice();\n aabbRight[dim] = ((nodeAABB[dim] + nodeAABB[dim + 3]) / 2.0);\n kdNode.right = {\n aabb: aabbRight,\n intersection: Frustum.INTERSECT\n };\n if (math.containsAABB3(aabbRight, entityAABB)) {\n this._insertEntityIntoKDTree(kdNode.right, entity, objectIdx, depth + 1);\n return;\n }\n }\n\n kdNode.objects = kdNode.objects || [];\n kdNode.objects.push(objectIdx);\n\n math.expandAABB3(kdNode.aabb, entityAABB);\n }\n\n _visitKDNode(kdNode, intersects = Frustum.INTERSECT) {\n if (intersects !== Frustum.INTERSECT && kdNode.intersects === intersects) {\n return;\n }\n if (intersects === Frustum.INTERSECT) {\n intersects = frustumIntersectsAABB3(this._frustum, kdNode.aabb);\n kdNode.intersects = intersects;\n }\n const culled = (intersects === Frustum.OUTSIDE);\n const objects = kdNode.objects;\n if (objects && objects.length > 0) {\n for (let i = 0, len = objects.length; i < len; i++) {\n const objectIdx = objects[i];\n this._objectCullStates.setObjectViewCulled(objectIdx, culled);\n }\n }\n if (kdNode.left) {\n this._visitKDNode(kdNode.left, intersects);\n }\n if (kdNode.right) {\n this._visitKDNode(kdNode.right, intersects);\n }\n }\n\n /**\n * @private\n */\n send(name, value) {\n }\n\n /**\n * Destroys this ViewCullPlugin.\n */\n destroy() {\n super.destroy();\n this._clear();\n const scene = this.viewer.scene;\n const camera = scene.camera;\n scene.off(this._onModelLoaded);\n scene.off(this._onSceneTick);\n camera.off(this._onViewMatrix);\n camera.off(this._onProjMatrix);\n }\n\n _clear() {\n for (let modelId in this._modelInfos) {\n const modelInfo = this._modelInfos[modelId];\n modelInfo.model.off(modelInfo.onDestroyed);\n }\n this._modelInfos = {};\n this._kdRoot = null;\n this._kdTreeDirty = true;\n }\n}\n\n/**\n * Default data access strategy for {@link XKTLoaderPlugin}.\n */\nclass XKTDefaultDataSource {\n\n constructor() {\n }\n\n /**\n * Gets metamodel JSON.\n *\n * @param {String|Number} metaModelSrc Identifies the metamodel JSON asset.\n * @param {{Function(*)}} ok Fired on successful loading of the metamodel JSON asset.\n * @param {{Function(*)}} error Fired on error while loading the metamodel JSON asset.\n */\n getMetaModel(metaModelSrc, ok, error) {\n utils.loadJSON(metaModelSrc,\n (json) => {\n ok(json);\n },\n function (errMsg) {\n error(errMsg);\n });\n }\n\n /**\n * Gets the contents of the given ````.xkt```` file in an arraybuffer.\n *\n * @param {String|Number} src Path or ID of an ````.xkt```` file.\n * @param {Function} ok Callback fired on success, argument is the ````.xkt```` file in an arraybuffer.\n * @param {Function} error Callback fired on error.\n */\n getXKT(src, ok, error) {\n var defaultCallback = () => {\n };\n ok = ok || defaultCallback;\n error = error || defaultCallback;\n const dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\n const dataUriRegexResult = src.match(dataUriRegex);\n if (dataUriRegexResult) { // Safari can't handle data URIs through XMLHttpRequest\n const isBase64 = !!dataUriRegexResult[2];\n var data = dataUriRegexResult[3];\n data = window.decodeURIComponent(data);\n if (isBase64) {\n data = window.atob(data);\n }\n try {\n const buffer = new ArrayBuffer(data.length);\n const view = new Uint8Array(buffer);\n for (var i = 0; i < data.length; i++) {\n view[i] = data.charCodeAt(i);\n }\n ok(buffer);\n } catch (errMsg) {\n error(errMsg);\n }\n } else {\n const request = new XMLHttpRequest();\n request.open('GET', src, true);\n request.responseType = 'arraybuffer';\n request.onreadystatechange = function () {\n if (request.readyState === 4) {\n if (request.status === 200) {\n ok(request.response);\n } else {\n error('getXKT error : ' + request.response);\n }\n }\n };\n request.send(null);\n }\n }\n}\n\n/* pako 1.0.10 nodeca/pako */(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f();}else if(typeof define===\"function\"&&define.amd){define([],f);}else {var g;if(typeof window!==\"undefined\"){g=window;}else if(typeof global!==\"undefined\"){g=global;}else if(typeof self!==\"undefined\"){g=self;}else {g=this;}g.pako = f();}})(function(){return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t);}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i Array\n *\n * Chunks of output data, if [[Deflate#onData]] not overridden.\n **/\n\n /**\n * Deflate.result -> Uint8Array|Array\n *\n * Compressed result, generated by default [[Deflate#onData]]\n * and [[Deflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Deflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Deflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n /**\n * Deflate.err -> Number\n *\n * Error code after deflate finished. 0 (Z_OK) on success.\n * You will not need it in real life, because deflate errors\n * are possible only on wrong options or bad `onData` / `onEnd`\n * custom handlers.\n **/\n\n /**\n * Deflate.msg -> String\n *\n * Error message, if [[Deflate.err]] != 0\n **/\n\n\n /**\n * new Deflate(options)\n * - options (Object): zlib deflate options.\n *\n * Creates new deflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `level`\n * - `windowBits`\n * - `memLevel`\n * - `strategy`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw deflate\n * - `gzip` (Boolean) - create gzip wrapper\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n * - `header` (Object) - custom header for gzip\n * - `text` (Boolean) - true if compressed data believed to be text\n * - `time` (Number) - modification time, unix timestamp\n * - `os` (Number) - operation system code\n * - `extra` (Array) - array of bytes with extra data (max 65536)\n * - `name` (String) - file name (binary string)\n * - `comment` (String) - comment (binary string)\n * - `hcrc` (Boolean) - true if header crc should be added\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var deflate = new pako.Deflate({ level: 3});\n *\n * deflate.push(chunk1, false);\n * deflate.push(chunk2, true); // true -> last chunk\n *\n * if (deflate.err) { throw new Error(deflate.err); }\n *\n * console.log(deflate.result);\n * ```\n **/\n function Deflate(options) {\n if (!(this instanceof Deflate)) return new Deflate(options);\n\n this.options = utils.assign({\n level: Z_DEFAULT_COMPRESSION,\n method: Z_DEFLATED,\n chunkSize: 16384,\n windowBits: 15,\n memLevel: 8,\n strategy: Z_DEFAULT_STRATEGY,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n if (opt.raw && (opt.windowBits > 0)) {\n opt.windowBits = -opt.windowBits;\n }\n\n else if (opt.gzip && (opt.windowBits > 0) && (opt.windowBits < 16)) {\n opt.windowBits += 16;\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_deflate.deflateInit2(\n this.strm,\n opt.level,\n opt.method,\n opt.windowBits,\n opt.memLevel,\n opt.strategy\n );\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n if (opt.header) {\n zlib_deflate.deflateSetHeader(this.strm, opt.header);\n }\n\n if (opt.dictionary) {\n var dict;\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n // If we need to compress text, change encoding to utf8.\n dict = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n dict = new Uint8Array(opt.dictionary);\n } else {\n dict = opt.dictionary;\n }\n\n status = zlib_deflate.deflateSetDictionary(this.strm, dict);\n\n if (status !== Z_OK) {\n throw new Error(msg[status]);\n }\n\n this._dict_set = true;\n }\n }\n\n /**\n * Deflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data. Strings will be\n * converted to utf8 byte sequence.\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to deflate pipe, generating [[Deflate#onData]] calls with\n * new compressed chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Deflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the compression context.\n *\n * On fail call [[Deflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * array format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n Deflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var status, _mode;\n\n if (this.ended) { return false; }\n\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? Z_FINISH : Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // If we need to compress text, change encoding to utf8.\n strm.input = strings.string2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n status = zlib_deflate.deflate(strm, _mode); /* no bad return value */\n\n if (status !== Z_STREAM_END && status !== Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n if (strm.avail_out === 0 || (strm.avail_in === 0 && (_mode === Z_FINISH || _mode === Z_SYNC_FLUSH))) {\n if (this.options.to === 'string') {\n this.onData(strings.buf2binstring(utils.shrinkBuf(strm.output, strm.next_out)));\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== Z_STREAM_END);\n\n // Finalize on the last chunk.\n if (_mode === Z_FINISH) {\n status = zlib_deflate.deflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === Z_SYNC_FLUSH) {\n this.onEnd(Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n };\n\n\n /**\n * Deflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n Deflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n };\n\n\n /**\n * Deflate#onEnd(status) -> Void\n * - status (Number): deflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called once after you tell deflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n Deflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === Z_OK) {\n if (this.options.to === 'string') {\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n };\n\n\n /**\n * deflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * Compress `data` with deflate algorithm and `options`.\n *\n * Supported options are:\n *\n * - level\n * - windowBits\n * - memLevel\n * - strategy\n * - dictionary\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be \"binary string\"\n * (each char code [0..255])\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , data = Uint8Array([1,2,3,4,5,6,7,8,9]);\n *\n * console.log(pako.deflate(data));\n * ```\n **/\n function deflate(input, options) {\n var deflator = new Deflate(options);\n\n deflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (deflator.err) { throw deflator.msg || msg[deflator.err]; }\n\n return deflator.result;\n }\n\n\n /**\n * deflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\n function deflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return deflate(input, options);\n }\n\n\n /**\n * gzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to compress.\n * - options (Object): zlib deflate options.\n *\n * The same as [[deflate]], but create gzip wrapper instead of\n * deflate one.\n **/\n function gzip(input, options) {\n options = options || {};\n options.gzip = true;\n return deflate(input, options);\n }\n\n\n exports.Deflate = Deflate;\n exports.deflate = deflate;\n exports.deflateRaw = deflateRaw;\n exports.gzip = gzip;\n\n },{\"./utils/common\":3,\"./utils/strings\":4,\"./zlib/deflate\":8,\"./zlib/messages\":13,\"./zlib/zstream\":15}],2:[function(require,module,exports){\n\n\n var zlib_inflate = require('./zlib/inflate');\n var utils = require('./utils/common');\n var strings = require('./utils/strings');\n var c = require('./zlib/constants');\n var msg = require('./zlib/messages');\n var ZStream = require('./zlib/zstream');\n var GZheader = require('./zlib/gzheader');\n\n var toString = Object.prototype.toString;\n\n /**\n * class Inflate\n *\n * Generic JS-style wrapper for zlib calls. If you don't need\n * streaming behaviour - use more simple functions: [[inflate]]\n * and [[inflateRaw]].\n **/\n\n /* internal\n * inflate.chunks -> Array\n *\n * Chunks of output data, if [[Inflate#onData]] not overridden.\n **/\n\n /**\n * Inflate.result -> Uint8Array|Array|String\n *\n * Uncompressed result, generated by default [[Inflate#onData]]\n * and [[Inflate#onEnd]] handlers. Filled after you push last chunk\n * (call [[Inflate#push]] with `Z_FINISH` / `true` param) or if you\n * push a chunk with explicit flush (call [[Inflate#push]] with\n * `Z_SYNC_FLUSH` param).\n **/\n\n /**\n * Inflate.err -> Number\n *\n * Error code after inflate finished. 0 (Z_OK) on success.\n * Should be checked if broken data possible.\n **/\n\n /**\n * Inflate.msg -> String\n *\n * Error message, if [[Inflate.err]] != 0\n **/\n\n\n /**\n * new Inflate(options)\n * - options (Object): zlib inflate options.\n *\n * Creates new inflator instance with specified params. Throws exception\n * on bad params. Supported options:\n *\n * - `windowBits`\n * - `dictionary`\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information on these.\n *\n * Additional options, for internal needs:\n *\n * - `chunkSize` - size of generated data chunks (16K by default)\n * - `raw` (Boolean) - do raw inflate\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n * By default, when no options set, autodetect deflate/gzip data format via\n * wrapper header.\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , chunk1 = Uint8Array([1,2,3,4,5,6,7,8,9])\n * , chunk2 = Uint8Array([10,11,12,13,14,15,16,17,18,19]);\n *\n * var inflate = new pako.Inflate({ level: 3});\n *\n * inflate.push(chunk1, false);\n * inflate.push(chunk2, true); // true -> last chunk\n *\n * if (inflate.err) { throw new Error(inflate.err); }\n *\n * console.log(inflate.result);\n * ```\n **/\n function Inflate(options) {\n if (!(this instanceof Inflate)) return new Inflate(options);\n\n this.options = utils.assign({\n chunkSize: 16384,\n windowBits: 0,\n to: ''\n }, options || {});\n\n var opt = this.options;\n\n // Force window size for `raw` data, if not set directly,\n // because we have no header for autodetect.\n if (opt.raw && (opt.windowBits >= 0) && (opt.windowBits < 16)) {\n opt.windowBits = -opt.windowBits;\n if (opt.windowBits === 0) { opt.windowBits = -15; }\n }\n\n // If `windowBits` not defined (and mode not raw) - set autodetect flag for gzip/deflate\n if ((opt.windowBits >= 0) && (opt.windowBits < 16) &&\n !(options && options.windowBits)) {\n opt.windowBits += 32;\n }\n\n // Gzip header has no info about windows size, we can do autodetect only\n // for deflate. So, if window size not set, force it to max when gzip possible\n if ((opt.windowBits > 15) && (opt.windowBits < 48)) {\n // bit 3 (16) -> gzipped data\n // bit 4 (32) -> autodetect gzip/deflate\n if ((opt.windowBits & 15) === 0) {\n opt.windowBits |= 15;\n }\n }\n\n this.err = 0; // error code, if happens (0 = Z_OK)\n this.msg = ''; // error message\n this.ended = false; // used to avoid multiple onEnd() calls\n this.chunks = []; // chunks of compressed data\n\n this.strm = new ZStream();\n this.strm.avail_out = 0;\n\n var status = zlib_inflate.inflateInit2(\n this.strm,\n opt.windowBits\n );\n\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n\n this.header = new GZheader();\n\n zlib_inflate.inflateGetHeader(this.strm, this.header);\n\n // Setup dictionary\n if (opt.dictionary) {\n // Convert data if needed\n if (typeof opt.dictionary === 'string') {\n opt.dictionary = strings.string2buf(opt.dictionary);\n } else if (toString.call(opt.dictionary) === '[object ArrayBuffer]') {\n opt.dictionary = new Uint8Array(opt.dictionary);\n }\n if (opt.raw) { //In raw mode we need to set the dictionary early\n status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary);\n if (status !== c.Z_OK) {\n throw new Error(msg[status]);\n }\n }\n }\n }\n\n /**\n * Inflate#push(data[, mode]) -> Boolean\n * - data (Uint8Array|Array|ArrayBuffer|String): input data\n * - mode (Number|Boolean): 0..6 for corresponding Z_NO_FLUSH..Z_TREE modes.\n * See constants. Skipped or `false` means Z_NO_FLUSH, `true` means Z_FINISH.\n *\n * Sends input data to inflate pipe, generating [[Inflate#onData]] calls with\n * new output chunks. Returns `true` on success. The last data block must have\n * mode Z_FINISH (or `true`). That will flush internal pending buffers and call\n * [[Inflate#onEnd]]. For interim explicit flushes (without ending the stream) you\n * can use mode Z_SYNC_FLUSH, keeping the decompression context.\n *\n * On fail call [[Inflate#onEnd]] with error code and return false.\n *\n * We strongly recommend to use `Uint8Array` on input for best speed (output\n * format is detected automatically). Also, don't skip last param and always\n * use the same type in your code (boolean or number). That will improve JS speed.\n *\n * For regular `Array`-s make sure all elements are [0..255].\n *\n * ##### Example\n *\n * ```javascript\n * push(chunk, false); // push one of data chunks\n * ...\n * push(chunk, true); // push last chunk\n * ```\n **/\n Inflate.prototype.push = function (data, mode) {\n var strm = this.strm;\n var chunkSize = this.options.chunkSize;\n var dictionary = this.options.dictionary;\n var status, _mode;\n var next_out_utf8, tail, utf8str;\n\n // Flag to properly process Z_BUF_ERROR on testing inflate call\n // when we check that all output data was flushed.\n var allowBufError = false;\n\n if (this.ended) { return false; }\n _mode = (mode === ~~mode) ? mode : ((mode === true) ? c.Z_FINISH : c.Z_NO_FLUSH);\n\n // Convert data if needed\n if (typeof data === 'string') {\n // Only binary strings can be decompressed on practice\n strm.input = strings.binstring2buf(data);\n } else if (toString.call(data) === '[object ArrayBuffer]') {\n strm.input = new Uint8Array(data);\n } else {\n strm.input = data;\n }\n\n strm.next_in = 0;\n strm.avail_in = strm.input.length;\n\n do {\n if (strm.avail_out === 0) {\n strm.output = new utils.Buf8(chunkSize);\n strm.next_out = 0;\n strm.avail_out = chunkSize;\n }\n\n status = zlib_inflate.inflate(strm, c.Z_NO_FLUSH); /* no bad return value */\n\n if (status === c.Z_NEED_DICT && dictionary) {\n status = zlib_inflate.inflateSetDictionary(this.strm, dictionary);\n }\n\n if (status === c.Z_BUF_ERROR && allowBufError === true) {\n status = c.Z_OK;\n allowBufError = false;\n }\n\n if (status !== c.Z_STREAM_END && status !== c.Z_OK) {\n this.onEnd(status);\n this.ended = true;\n return false;\n }\n\n if (strm.next_out) {\n if (strm.avail_out === 0 || status === c.Z_STREAM_END || (strm.avail_in === 0 && (_mode === c.Z_FINISH || _mode === c.Z_SYNC_FLUSH))) {\n\n if (this.options.to === 'string') {\n\n next_out_utf8 = strings.utf8border(strm.output, strm.next_out);\n\n tail = strm.next_out - next_out_utf8;\n utf8str = strings.buf2string(strm.output, next_out_utf8);\n\n // move tail\n strm.next_out = tail;\n strm.avail_out = chunkSize - tail;\n if (tail) { utils.arraySet(strm.output, strm.output, next_out_utf8, tail, 0); }\n\n this.onData(utf8str);\n\n } else {\n this.onData(utils.shrinkBuf(strm.output, strm.next_out));\n }\n }\n }\n\n // When no more input data, we should check that internal inflate buffers\n // are flushed. The only way to do it when avail_out = 0 - run one more\n // inflate pass. But if output data not exists, inflate return Z_BUF_ERROR.\n // Here we set flag to process this error properly.\n //\n // NOTE. Deflate does not return error in this case and does not needs such\n // logic.\n if (strm.avail_in === 0 && strm.avail_out === 0) {\n allowBufError = true;\n }\n\n } while ((strm.avail_in > 0 || strm.avail_out === 0) && status !== c.Z_STREAM_END);\n\n if (status === c.Z_STREAM_END) {\n _mode = c.Z_FINISH;\n }\n\n // Finalize on the last chunk.\n if (_mode === c.Z_FINISH) {\n status = zlib_inflate.inflateEnd(this.strm);\n this.onEnd(status);\n this.ended = true;\n return status === c.Z_OK;\n }\n\n // callback interim results if Z_SYNC_FLUSH.\n if (_mode === c.Z_SYNC_FLUSH) {\n this.onEnd(c.Z_OK);\n strm.avail_out = 0;\n return true;\n }\n\n return true;\n };\n\n\n /**\n * Inflate#onData(chunk) -> Void\n * - chunk (Uint8Array|Array|String): output data. Type of array depends\n * on js engine support. When string output requested, each chunk\n * will be string.\n *\n * By default, stores data blocks in `chunks[]` property and glue\n * those in `onEnd`. Override this handler, if you need another behaviour.\n **/\n Inflate.prototype.onData = function (chunk) {\n this.chunks.push(chunk);\n };\n\n\n /**\n * Inflate#onEnd(status) -> Void\n * - status (Number): inflate status. 0 (Z_OK) on success,\n * other if not.\n *\n * Called either after you tell inflate that the input stream is\n * complete (Z_FINISH) or should be flushed (Z_SYNC_FLUSH)\n * or if an error happened. By default - join collected chunks,\n * free memory and fill `results` / `err` properties.\n **/\n Inflate.prototype.onEnd = function (status) {\n // On success - join\n if (status === c.Z_OK) {\n if (this.options.to === 'string') {\n // Glue & convert here, until we teach pako to send\n // utf8 aligned strings to onData\n this.result = this.chunks.join('');\n } else {\n this.result = utils.flattenChunks(this.chunks);\n }\n }\n this.chunks = [];\n this.err = status;\n this.msg = this.strm.msg;\n };\n\n\n /**\n * inflate(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Decompress `data` with inflate/ungzip and `options`. Autodetect\n * format via wrapper header by default. That's why we don't provide\n * separate `ungzip` method.\n *\n * Supported options are:\n *\n * - windowBits\n *\n * [http://zlib.net/manual.html#Advanced](http://zlib.net/manual.html#Advanced)\n * for more information.\n *\n * Sugar (options):\n *\n * - `raw` (Boolean) - say that we work with raw stream, if you don't wish to specify\n * negative windowBits implicitly.\n * - `to` (String) - if equal to 'string', then result will be converted\n * from utf8 to utf16 (javascript) string. When string output requested,\n * chunk length can differ from `chunkSize`, depending on content.\n *\n *\n * ##### Example:\n *\n * ```javascript\n * var pako = require('pako')\n * , input = pako.deflate([1,2,3,4,5,6,7,8,9])\n * , output;\n *\n * try {\n * output = pako.inflate(input);\n * } catch (err)\n * console.log(err);\n * }\n * ```\n **/\n function inflate(input, options) {\n var inflator = new Inflate(options);\n\n inflator.push(input, true);\n\n // That will never happens, if you don't cheat with options :)\n if (inflator.err) { throw inflator.msg || msg[inflator.err]; }\n\n return inflator.result;\n }\n\n\n /**\n * inflateRaw(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * The same as [[inflate]], but creates raw data, without wrapper\n * (header and adler32 crc).\n **/\n function inflateRaw(input, options) {\n options = options || {};\n options.raw = true;\n return inflate(input, options);\n }\n\n\n /**\n * ungzip(data[, options]) -> Uint8Array|Array|String\n * - data (Uint8Array|Array|String): input data to decompress.\n * - options (Object): zlib inflate options.\n *\n * Just shortcut to [[inflate]], because it autodetects format\n * by header.content. Done for convenience.\n **/\n\n\n exports.Inflate = Inflate;\n exports.inflate = inflate;\n exports.inflateRaw = inflateRaw;\n exports.ungzip = inflate;\n\n },{\"./utils/common\":3,\"./utils/strings\":4,\"./zlib/constants\":6,\"./zlib/gzheader\":9,\"./zlib/inflate\":11,\"./zlib/messages\":13,\"./zlib/zstream\":15}],3:[function(require,module,exports){\n\n\n var TYPED_OK = (typeof Uint8Array !== 'undefined') &&\n (typeof Uint16Array !== 'undefined') &&\n (typeof Int32Array !== 'undefined');\n\n function _has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n exports.assign = function (obj /*from1, from2, from3, ...*/) {\n var sources = Array.prototype.slice.call(arguments, 1);\n while (sources.length) {\n var source = sources.shift();\n if (!source) { continue; }\n\n if (typeof source !== 'object') {\n throw new TypeError(source + 'must be non-object');\n }\n\n for (var p in source) {\n if (_has(source, p)) {\n obj[p] = source[p];\n }\n }\n }\n\n return obj;\n };\n\n\n// reduce buffer size, avoiding mem copy\n exports.shrinkBuf = function (buf, size) {\n if (buf.length === size) { return buf; }\n if (buf.subarray) { return buf.subarray(0, size); }\n buf.length = size;\n return buf;\n };\n\n\n var fnTyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n if (src.subarray && dest.subarray) {\n dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n return;\n }\n // Fallback to ordinary array\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n var i, l, len, pos, chunk, result;\n\n // calculate data length\n len = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n len += chunks[i].length;\n }\n\n // join chunks\n result = new Uint8Array(len);\n pos = 0;\n for (i = 0, l = chunks.length; i < l; i++) {\n chunk = chunks[i];\n result.set(chunk, pos);\n pos += chunk.length;\n }\n\n return result;\n }\n };\n\n var fnUntyped = {\n arraySet: function (dest, src, src_offs, len, dest_offs) {\n for (var i = 0; i < len; i++) {\n dest[dest_offs + i] = src[src_offs + i];\n }\n },\n // Join array of chunks to single array.\n flattenChunks: function (chunks) {\n return [].concat.apply([], chunks);\n }\n };\n\n\n// Enable/Disable typed arrays use, for testing\n//\n exports.setTyped = function (on) {\n if (on) {\n exports.Buf8 = Uint8Array;\n exports.Buf16 = Uint16Array;\n exports.Buf32 = Int32Array;\n exports.assign(exports, fnTyped);\n } else {\n exports.Buf8 = Array;\n exports.Buf16 = Array;\n exports.Buf32 = Array;\n exports.assign(exports, fnUntyped);\n }\n };\n\n exports.setTyped(TYPED_OK);\n\n },{}],4:[function(require,module,exports){\n\n\n var utils = require('./common');\n\n\n// Quick check if we can use fast array to bin string conversion\n//\n// - apply(Array) can fail on Android 2.2\n// - apply(Uint8Array) can fail on iOS 5.1 Safari\n//\n var STR_APPLY_OK = true;\n var STR_APPLY_UIA_OK = true;\n\n try { String.fromCharCode.apply(null, [ 0 ]); } catch (__) { STR_APPLY_OK = false; }\n try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; }\n\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\n var _utf8len = new utils.Buf8(256);\n for (var q = 0; q < 256; q++) {\n _utf8len[q] = (q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1);\n }\n _utf8len[254] = _utf8len[254] = 1; // Invalid sequence start\n\n\n// convert string to array (typed, when possible)\n exports.string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n buf = new utils.Buf8(buf_len);\n\n // convert\n for (i = 0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos + 1 < str_len)) {\n c2 = str.charCodeAt(m_pos + 1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n };\n\n// Helper (used in 2 places)\n function buf2binstring(buf, len) {\n // On Chrome, the arguments in a function call that are allowed is `65534`.\n // If the length of the buffer is smaller than that, we can use this optimization,\n // otherwise we will take a slower path.\n if (len < 65534) {\n if ((buf.subarray && STR_APPLY_UIA_OK) || (!buf.subarray && STR_APPLY_OK)) {\n return String.fromCharCode.apply(null, utils.shrinkBuf(buf, len));\n }\n }\n\n var result = '';\n for (var i = 0; i < len; i++) {\n result += String.fromCharCode(buf[i]);\n }\n return result;\n }\n\n\n// Convert byte array to binary string\n exports.buf2binstring = function (buf) {\n return buf2binstring(buf, buf.length);\n };\n\n\n// Convert binary string (typed, when possible)\n exports.binstring2buf = function (str) {\n var buf = new utils.Buf8(str.length);\n for (var i = 0, len = buf.length; i < len; i++) {\n buf[i] = str.charCodeAt(i);\n }\n return buf;\n };\n\n\n// convert array to string\n exports.buf2string = function (buf, max) {\n var i, out, c, c_len;\n var len = max || buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len * 2);\n\n for (out = 0, i = 0; i < len;) {\n c = buf[i++];\n // quick process ascii\n if (c < 0x80) { utf16buf[out++] = c; continue; }\n\n c_len = _utf8len[c];\n // skip 5 & 6 byte codes\n if (c_len > 4) { utf16buf[out++] = 0xfffd; i += c_len - 1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n return buf2binstring(utf16buf, out);\n };\n\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\n exports.utf8border = function (buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max - 1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means buffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n };\n\n },{\"./common\":3}],5:[function(require,module,exports){\n\n// Note: adler32 takes 12% for level 0 and 2% for level 6.\n// It isn't worth it to make additional optimizations as in original.\n// Small size is preferable.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n function adler32(adler, buf, len, pos) {\n var s1 = (adler & 0xffff) |0,\n s2 = ((adler >>> 16) & 0xffff) |0,\n n = 0;\n\n while (len !== 0) {\n // Set limit ~ twice less than 5552, to keep\n // s2 in 31-bits, because we force signed ints.\n // in other case %= will fail.\n n = len > 2000 ? 2000 : len;\n len -= n;\n\n do {\n s1 = (s1 + buf[pos++]) |0;\n s2 = (s2 + s1) |0;\n } while (--n);\n\n s1 %= 65521;\n s2 %= 65521;\n }\n\n return (s1 | (s2 << 16)) |0;\n }\n\n\n module.exports = adler32;\n\n },{}],6:[function(require,module,exports){\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n module.exports = {\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n Z_NO_FLUSH: 0,\n Z_PARTIAL_FLUSH: 1,\n Z_SYNC_FLUSH: 2,\n Z_FULL_FLUSH: 3,\n Z_FINISH: 4,\n Z_BLOCK: 5,\n Z_TREES: 6,\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n Z_OK: 0,\n Z_STREAM_END: 1,\n Z_NEED_DICT: 2,\n Z_ERRNO: -1,\n Z_STREAM_ERROR: -2,\n Z_DATA_ERROR: -3,\n //Z_MEM_ERROR: -4,\n Z_BUF_ERROR: -5,\n //Z_VERSION_ERROR: -6,\n\n /* compression levels */\n Z_NO_COMPRESSION: 0,\n Z_BEST_SPEED: 1,\n Z_BEST_COMPRESSION: 9,\n Z_DEFAULT_COMPRESSION: -1,\n\n\n Z_FILTERED: 1,\n Z_HUFFMAN_ONLY: 2,\n Z_RLE: 3,\n Z_FIXED: 4,\n Z_DEFAULT_STRATEGY: 0,\n\n /* Possible values of the data_type field (though see inflate()) */\n Z_BINARY: 0,\n Z_TEXT: 1,\n //Z_ASCII: 1, // = Z_TEXT (deprecated)\n Z_UNKNOWN: 2,\n\n /* The deflate compression method */\n Z_DEFLATED: 8\n //Z_NULL: null // Use -1 or null inline, depending on var type\n };\n\n },{}],7:[function(require,module,exports){\n\n// Note: we can't get significant speed boost here.\n// So write code to minimize size - no pregenerated tables\n// and array tools dependencies.\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// Use ordinary array, since untyped makes no boost here\n function makeTable() {\n var c, table = [];\n\n for (var n = 0; n < 256; n++) {\n c = n;\n for (var k = 0; k < 8; k++) {\n c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n }\n\n// Create table on load. Just 255 signed longs. Not a problem.\n var crcTable = makeTable();\n\n\n function crc32(crc, buf, len, pos) {\n var t = crcTable,\n end = pos + len;\n\n crc ^= -1;\n\n for (var i = pos; i < end; i++) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n }\n\n\n module.exports = crc32;\n\n },{}],8:[function(require,module,exports){\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n var utils = require('../utils/common');\n var trees = require('./trees');\n var adler32 = require('./adler32');\n var crc32 = require('./crc32');\n var msg = require('./messages');\n\n /* Public constants ==========================================================*/\n /* ===========================================================================*/\n\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n var Z_NO_FLUSH = 0;\n var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n var Z_FULL_FLUSH = 3;\n var Z_FINISH = 4;\n var Z_BLOCK = 5;\n//var Z_TREES = 6;\n\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n var Z_OK = 0;\n var Z_STREAM_END = 1;\n//var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\n var Z_STREAM_ERROR = -2;\n var Z_DATA_ERROR = -3;\n//var Z_MEM_ERROR = -4;\n var Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n\n /* compression levels */\n//var Z_NO_COMPRESSION = 0;\n//var Z_BEST_SPEED = 1;\n//var Z_BEST_COMPRESSION = 9;\n var Z_DEFAULT_COMPRESSION = -1;\n\n\n var Z_FILTERED = 1;\n var Z_HUFFMAN_ONLY = 2;\n var Z_RLE = 3;\n var Z_FIXED = 4;\n var Z_DEFAULT_STRATEGY = 0;\n\n /* Possible values of the data_type field (though see inflate()) */\n//var Z_BINARY = 0;\n//var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\n var Z_UNKNOWN = 2;\n\n\n /* The deflate compression method */\n var Z_DEFLATED = 8;\n\n /*============================================================================*/\n\n\n var MAX_MEM_LEVEL = 9;\n /* Maximum value for memLevel in deflateInit2 */\n var MAX_WBITS = 15;\n /* 32K LZ77 window */\n var DEF_MEM_LEVEL = 8;\n\n\n var LENGTH_CODES = 29;\n /* number of length codes, not counting the special END_BLOCK code */\n var LITERALS = 256;\n /* number of literal bytes 0..255 */\n var L_CODES = LITERALS + 1 + LENGTH_CODES;\n /* number of Literal or Length codes, including the END_BLOCK code */\n var D_CODES = 30;\n /* number of distance codes */\n var BL_CODES = 19;\n /* number of codes used to transfer the bit lengths */\n var HEAP_SIZE = 2 * L_CODES + 1;\n /* maximum heap size */\n var MAX_BITS = 15;\n /* All codes must not exceed MAX_BITS bits */\n\n var MIN_MATCH = 3;\n var MAX_MATCH = 258;\n var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n\n var PRESET_DICT = 0x20;\n\n var INIT_STATE = 42;\n var EXTRA_STATE = 69;\n var NAME_STATE = 73;\n var COMMENT_STATE = 91;\n var HCRC_STATE = 103;\n var BUSY_STATE = 113;\n var FINISH_STATE = 666;\n\n var BS_NEED_MORE = 1; /* block not completed, need more input or more output */\n var BS_BLOCK_DONE = 2; /* block flush performed */\n var BS_FINISH_STARTED = 3; /* finish started, need only more output at next deflate */\n var BS_FINISH_DONE = 4; /* finish done, accept no more input or output */\n\n var OS_CODE = 0x03; // Unix :) . Don't detect, use this default.\n\n function err(strm, errorCode) {\n strm.msg = msg[errorCode];\n return errorCode;\n }\n\n function rank(f) {\n return ((f) << 1) - ((f) > 4 ? 9 : 0);\n }\n\n function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n\n /* =========================================================================\n * Flush as much pending output as possible. All deflate() output goes\n * through this function so some applications may wish to modify it\n * to avoid allocating a large strm->output buffer and copying into it.\n * (See also read_buf()).\n */\n function flush_pending(strm) {\n var s = strm.state;\n\n //_tr_flush_bits(s);\n var len = s.pending;\n if (len > strm.avail_out) {\n len = strm.avail_out;\n }\n if (len === 0) { return; }\n\n utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n strm.next_out += len;\n s.pending_out += len;\n strm.total_out += len;\n strm.avail_out -= len;\n s.pending -= len;\n if (s.pending === 0) {\n s.pending_out = 0;\n }\n }\n\n\n function flush_block_only(s, last) {\n trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n s.block_start = s.strstart;\n flush_pending(s.strm);\n }\n\n\n function put_byte(s, b) {\n s.pending_buf[s.pending++] = b;\n }\n\n\n /* =========================================================================\n * Put a short in the pending buffer. The 16-bit value is put in MSB order.\n * IN assertion: the stream state is correct and there is enough room in\n * pending_buf.\n */\n function putShortMSB(s, b) {\n// put_byte(s, (Byte)(b >> 8));\n// put_byte(s, (Byte)(b & 0xff));\n s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n s.pending_buf[s.pending++] = b & 0xff;\n }\n\n\n /* ===========================================================================\n * Read a new buffer from the current input stream, update the adler32\n * and total number of bytes read. All deflate() input goes through\n * this function so some applications may wish to modify it to avoid\n * allocating a large strm->input buffer and copying from it.\n * (See also flush_pending()).\n */\n function read_buf(strm, buf, start, size) {\n var len = strm.avail_in;\n\n if (len > size) { len = size; }\n if (len === 0) { return 0; }\n\n strm.avail_in -= len;\n\n // zmemcpy(buf, strm->next_in, len);\n utils.arraySet(buf, strm.input, strm.next_in, len, start);\n if (strm.state.wrap === 1) {\n strm.adler = adler32(strm.adler, buf, len, start);\n }\n\n else if (strm.state.wrap === 2) {\n strm.adler = crc32(strm.adler, buf, len, start);\n }\n\n strm.next_in += len;\n strm.total_in += len;\n\n return len;\n }\n\n\n /* ===========================================================================\n * Set match_start to the longest match starting at the given string and\n * return its length. Matches shorter or equal to prev_length are discarded,\n * in which case the result is equal to prev_length and match_start is\n * garbage.\n * IN assertions: cur_match is the head of the hash chain for the current\n * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1\n * OUT assertion: the match length is not greater than s->lookahead.\n */\n function longest_match(s, cur_match) {\n var chain_length = s.max_chain_length; /* max hash chain length */\n var scan = s.strstart; /* current string */\n var match; /* matched string */\n var len; /* length of current match */\n var best_len = s.prev_length; /* best match length so far */\n var nice_match = s.nice_match; /* stop if match long enough */\n var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0/*NIL*/;\n\n var _win = s.window; // shortcut\n\n var wmask = s.w_mask;\n var prev = s.prev;\n\n /* Stop when cur_match becomes <= limit. To simplify the code,\n * we prevent matches with the string of window index 0.\n */\n\n var strend = s.strstart + MAX_MATCH;\n var scan_end1 = _win[scan + best_len - 1];\n var scan_end = _win[scan + best_len];\n\n /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.\n * It is easy to get rid of this optimization if necessary.\n */\n // Assert(s->hash_bits >= 8 && MAX_MATCH == 258, \"Code too clever\");\n\n /* Do not waste too much time if we already have a good match: */\n if (s.prev_length >= s.good_match) {\n chain_length >>= 2;\n }\n /* Do not look for matches beyond the end of the input. This is necessary\n * to make deflate deterministic.\n */\n if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n\n // Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, \"need lookahead\");\n\n do {\n // Assert(cur_match < s->strstart, \"no future\");\n match = cur_match;\n\n /* Skip to next match if the match length cannot increase\n * or if the match length is less than 2. Note that the checks below\n * for insufficient lookahead only occur occasionally for performance\n * reasons. Therefore uninitialized memory will be accessed, and\n * conditional jumps will be made that depend on those values.\n * However the length of the match is limited to the lookahead, so\n * the output of deflate is not affected by the uninitialized values.\n */\n\n if (_win[match + best_len] !== scan_end ||\n _win[match + best_len - 1] !== scan_end1 ||\n _win[match] !== _win[scan] ||\n _win[++match] !== _win[scan + 1]) {\n continue;\n }\n\n /* The check at best_len-1 can be removed because it will be made\n * again later. (This heuristic is not always a win.)\n * It is not necessary to compare scan[2] and match[2] since they\n * are always equal when the other bytes match, given that\n * the hash keys are equal and that HASH_BITS >= 8.\n */\n scan += 2;\n match++;\n // Assert(*scan == *match, \"match[2]?\");\n\n /* We check for insufficient lookahead only every 8th comparison;\n * the 256th check will be made at strstart+258.\n */\n do {\n /*jshint noempty:false*/\n } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n scan < strend);\n\n // Assert(scan <= s->window+(unsigned)(s->window_size-1), \"wild scan\");\n\n len = MAX_MATCH - (strend - scan);\n scan = strend - MAX_MATCH;\n\n if (len > best_len) {\n s.match_start = cur_match;\n best_len = len;\n if (len >= nice_match) {\n break;\n }\n scan_end1 = _win[scan + best_len - 1];\n scan_end = _win[scan + best_len];\n }\n } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n\n if (best_len <= s.lookahead) {\n return best_len;\n }\n return s.lookahead;\n }\n\n\n /* ===========================================================================\n * Fill the window when the lookahead becomes insufficient.\n * Updates strstart and lookahead.\n *\n * IN assertion: lookahead < MIN_LOOKAHEAD\n * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD\n * At least one byte has been read, or avail_in == 0; reads are\n * performed for at least two bytes (required for the zip translate_eol\n * option -- not supported here).\n */\n function fill_window(s) {\n var _w_size = s.w_size;\n var p, n, m, more, str;\n\n //Assert(s->lookahead < MIN_LOOKAHEAD, \"already enough lookahead\");\n\n do {\n more = s.window_size - s.lookahead - s.strstart;\n\n // JS ints have 32 bit, block below not needed\n /* Deal with !@#$% 64K limit: */\n //if (sizeof(int) <= 2) {\n // if (more == 0 && s->strstart == 0 && s->lookahead == 0) {\n // more = wsize;\n //\n // } else if (more == (unsigned)(-1)) {\n // /* Very unlikely, but possible on 16 bit machine if\n // * strstart == 0 && lookahead == 1 (input done a byte at time)\n // */\n // more--;\n // }\n //}\n\n\n /* If the window is almost full and there is insufficient lookahead,\n * move the upper half to the lower one to make room in the upper half.\n */\n if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n\n utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n s.match_start -= _w_size;\n s.strstart -= _w_size;\n /* we now have strstart >= MAX_DIST */\n s.block_start -= _w_size;\n\n /* Slide the hash table (could be avoided with 32 bit values\n at the expense of memory usage). We slide even when level == 0\n to keep the hash table consistent if we switch back to level > 0\n later. (Using level 0 permanently is not an optimal usage of\n zlib, so we don't care about this pathological case.)\n */\n\n n = s.hash_size;\n p = n;\n do {\n m = s.head[--p];\n s.head[p] = (m >= _w_size ? m - _w_size : 0);\n } while (--n);\n\n n = _w_size;\n p = n;\n do {\n m = s.prev[--p];\n s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n /* If n is not on any hash chain, prev[n] is garbage but\n * its value will never be used.\n */\n } while (--n);\n\n more += _w_size;\n }\n if (s.strm.avail_in === 0) {\n break;\n }\n\n /* If there was no sliding:\n * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&\n * more == window_size - lookahead - strstart\n * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)\n * => more >= window_size - 2*WSIZE + 2\n * In the BIG_MEM or MMAP case (not yet supported),\n * window_size == input_size + MIN_LOOKAHEAD &&\n * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.\n * Otherwise, window_size == 2*WSIZE so more >= 2.\n * If there was sliding, more >= WSIZE. So in all cases, more >= 2.\n */\n //Assert(more >= 2, \"more < 2\");\n n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n s.lookahead += n;\n\n /* Initialize the hash value now that we have some input: */\n if (s.lookahead + s.insert >= MIN_MATCH) {\n str = s.strstart - s.insert;\n s.ins_h = s.window[str];\n\n /* UPDATE_HASH(s, s->ins_h, s->window[str + 1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n//#if MIN_MATCH != 3\n// Call update_hash() MIN_MATCH-3 more times\n//#endif\n while (s.insert) {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = str;\n str++;\n s.insert--;\n if (s.lookahead + s.insert < MIN_MATCH) {\n break;\n }\n }\n }\n /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage,\n * but this is not important since only literal bytes will be emitted.\n */\n\n } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n\n /* If the WIN_INIT bytes after the end of the current data have never been\n * written, then zero those bytes in order to avoid memory check reports of\n * the use of uninitialized (or uninitialised as Julian writes) bytes by\n * the longest match routines. Update the high water mark for the next\n * time through here. WIN_INIT is set to MAX_MATCH since the longest match\n * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.\n */\n// if (s.high_water < s.window_size) {\n// var curr = s.strstart + s.lookahead;\n// var init = 0;\n//\n// if (s.high_water < curr) {\n// /* Previous high water mark below current data -- zero WIN_INIT\n// * bytes or up to end of window, whichever is less.\n// */\n// init = s.window_size - curr;\n// if (init > WIN_INIT)\n// init = WIN_INIT;\n// zmemzero(s->window + curr, (unsigned)init);\n// s->high_water = curr + init;\n// }\n// else if (s->high_water < (ulg)curr + WIN_INIT) {\n// /* High water mark at or above current data, but below current data\n// * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up\n// * to end of window, whichever is less.\n// */\n// init = (ulg)curr + WIN_INIT - s->high_water;\n// if (init > s->window_size - s->high_water)\n// init = s->window_size - s->high_water;\n// zmemzero(s->window + s->high_water, (unsigned)init);\n// s->high_water += init;\n// }\n// }\n//\n// Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,\n// \"not enough room for search\");\n }\n\n /* ===========================================================================\n * Copy without compression as much as possible from the input stream, return\n * the current block state.\n * This function does not insert new strings in the dictionary since\n * uncompressible data is probably not useful. This function is used\n * only for the level=0 compression option.\n * NOTE: this function should be optimized to avoid extra copying from\n * window to pending_buf.\n */\n function deflate_stored(s, flush) {\n /* Stored blocks are limited to 0xffff bytes, pending_buf is limited\n * to pending_buf_size, and each stored block has a 5 byte header:\n */\n var max_block_size = 0xffff;\n\n if (max_block_size > s.pending_buf_size - 5) {\n max_block_size = s.pending_buf_size - 5;\n }\n\n /* Copy as much as possible from input to output: */\n for (;;) {\n /* Fill the window as much as possible: */\n if (s.lookahead <= 1) {\n\n //Assert(s->strstart < s->w_size+MAX_DIST(s) ||\n // s->block_start >= (long)s->w_size, \"slide too late\");\n// if (!(s.strstart < s.w_size + (s.w_size - MIN_LOOKAHEAD) ||\n// s.block_start >= s.w_size)) {\n// throw new Error(\"slide too late\");\n// }\n\n fill_window(s);\n if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n\n if (s.lookahead === 0) {\n break;\n }\n /* flush the current block */\n }\n //Assert(s->block_start >= 0L, \"block gone\");\n// if (s.block_start < 0) throw new Error(\"block gone\");\n\n s.strstart += s.lookahead;\n s.lookahead = 0;\n\n /* Emit a stored block if pending_buf will be full: */\n var max_start = s.block_start + max_block_size;\n\n if (s.strstart === 0 || s.strstart >= max_start) {\n /* strstart == 0 is possible when wraparound on 16-bit machine */\n s.lookahead = s.strstart - max_start;\n s.strstart = max_start;\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n\n\n }\n /* Flush if we may have to slide, otherwise block_start may become\n * negative and the data will be gone:\n */\n if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n\n s.insert = 0;\n\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n\n if (s.strstart > s.block_start) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_NEED_MORE;\n }\n\n /* ===========================================================================\n * Compress as much as possible from the input stream, return the current\n * block state.\n * This function does not perform lazy evaluation of matches and inserts\n * new strings in the dictionary only for unmatched strings or for short\n * matches. It is used only for the fast compression options.\n */\n function deflate_fast(s, flush) {\n var hash_head; /* head of the hash chain */\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) {\n break; /* flush the current block */\n }\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n * At this point we have always match_length < MIN_MATCH\n */\n if (hash_head !== 0/*NIL*/ && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n }\n if (s.match_length >= MIN_MATCH) {\n // check_match(s, s.strstart, s.match_start, s.match_length); // for debug only\n\n /*** _tr_tally_dist(s, s.strstart - s.match_start,\n s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n\n /* Insert new strings in the hash table only if the match length\n * is not too large. This saves time but degrades compression.\n */\n if (s.match_length <= s.max_lazy_match/*max_insert_length*/ && s.lookahead >= MIN_MATCH) {\n s.match_length--; /* string at strstart already in table */\n do {\n s.strstart++;\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n /* strstart never exceeds WSIZE-MAX_MATCH, so there are\n * always MIN_MATCH bytes ahead.\n */\n } while (--s.match_length !== 0);\n s.strstart++;\n } else\n {\n s.strstart += s.match_length;\n s.match_length = 0;\n s.ins_h = s.window[s.strstart];\n /* UPDATE_HASH(s, s.ins_h, s.window[s.strstart+1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n\n//#if MIN_MATCH != 3\n// Call UPDATE_HASH() MIN_MATCH-3 more times\n//#endif\n /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not\n * matter since it will be recomputed at next deflate call.\n */\n }\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s.window[s.strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n }\n\n /* ===========================================================================\n * Same as above, but achieves better compression. We use a lazy\n * evaluation for matches: a match is finally adopted only if there is\n * no better match at the next window position.\n */\n function deflate_slow(s, flush) {\n var hash_head; /* head of hash chain */\n var bflush; /* set if current block must be flushed */\n\n var max_insert;\n\n /* Process the input block. */\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the next match, plus MIN_MATCH bytes to insert the\n * string following the next match.\n */\n if (s.lookahead < MIN_LOOKAHEAD) {\n fill_window(s);\n if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* Insert the string window[strstart .. strstart+2] in the\n * dictionary, and set hash_head to the head of the hash chain:\n */\n hash_head = 0/*NIL*/;\n if (s.lookahead >= MIN_MATCH) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n\n /* Find the longest match, discarding those <= prev_length.\n */\n s.prev_length = s.match_length;\n s.prev_match = s.match_start;\n s.match_length = MIN_MATCH - 1;\n\n if (hash_head !== 0/*NIL*/ && s.prev_length < s.max_lazy_match &&\n s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)/*MAX_DIST(s)*/) {\n /* To simplify the code, we prevent matches with the string\n * of window index 0 (in particular we have to avoid a match\n * of the string with itself at the start of the input file).\n */\n s.match_length = longest_match(s, hash_head);\n /* longest_match() sets match_start */\n\n if (s.match_length <= 5 &&\n (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096/*TOO_FAR*/))) {\n\n /* If prev_match is also MIN_MATCH, match_start is garbage\n * but we will ignore the current match anyway.\n */\n s.match_length = MIN_MATCH - 1;\n }\n }\n /* If there was a match at the previous step and the current\n * match is not better, output the previous match:\n */\n if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n max_insert = s.strstart + s.lookahead - MIN_MATCH;\n /* Do not insert strings in hash table beyond this. */\n\n //check_match(s, s.strstart-1, s.prev_match, s.prev_length);\n\n /***_tr_tally_dist(s, s.strstart - 1 - s.prev_match,\n s.prev_length - MIN_MATCH, bflush);***/\n bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n /* Insert in hash table all strings up to the end of the match.\n * strstart-1 and strstart are already inserted. If there is not\n * enough lookahead, the last two strings are not inserted in\n * the hash table.\n */\n s.lookahead -= s.prev_length - 1;\n s.prev_length -= 2;\n do {\n if (++s.strstart <= max_insert) {\n /*** INSERT_STRING(s, s.strstart, hash_head); ***/\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n s.head[s.ins_h] = s.strstart;\n /***/\n }\n } while (--s.prev_length !== 0);\n s.match_available = 0;\n s.match_length = MIN_MATCH - 1;\n s.strstart++;\n\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n } else if (s.match_available) {\n /* If there was no match at the previous position, output a\n * single literal. If there was a match but the current match\n * is longer, truncate the previous match to a single literal.\n */\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n if (bflush) {\n /*** FLUSH_BLOCK_ONLY(s, 0) ***/\n flush_block_only(s, false);\n /***/\n }\n s.strstart++;\n s.lookahead--;\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n } else {\n /* There is no previous match to compare with, wait for\n * the next step to decide.\n */\n s.match_available = 1;\n s.strstart++;\n s.lookahead--;\n }\n }\n //Assert (flush != Z_NO_FLUSH, \"no flush?\");\n if (s.match_available) {\n //Tracevv((stderr,\"%c\", s->window[s->strstart-1]));\n /*** _tr_tally_lit(s, s.window[s.strstart-1], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n\n s.match_available = 0;\n }\n s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n\n return BS_BLOCK_DONE;\n }\n\n\n /* ===========================================================================\n * For Z_RLE, simply look for runs of bytes, generate matches only of distance\n * one. Do not maintain a hash table. (It will be regenerated if this run of\n * deflate switches away from Z_RLE.)\n */\n function deflate_rle(s, flush) {\n var bflush; /* set if current block must be flushed */\n var prev; /* byte at distance one to match */\n var scan, strend; /* scan goes up to strend for length of run */\n\n var _win = s.window;\n\n for (;;) {\n /* Make sure that we always have enough lookahead, except\n * at the end of the input file. We need MAX_MATCH bytes\n * for the longest run, plus one for the unrolled loop.\n */\n if (s.lookahead <= MAX_MATCH) {\n fill_window(s);\n if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n if (s.lookahead === 0) { break; } /* flush the current block */\n }\n\n /* See how many times the previous byte repeats */\n s.match_length = 0;\n if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n scan = s.strstart - 1;\n prev = _win[scan];\n if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n strend = s.strstart + MAX_MATCH;\n do {\n /*jshint noempty:false*/\n } while (prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n prev === _win[++scan] && prev === _win[++scan] &&\n scan < strend);\n s.match_length = MAX_MATCH - (strend - scan);\n if (s.match_length > s.lookahead) {\n s.match_length = s.lookahead;\n }\n }\n //Assert(scan <= s->window+(uInt)(s->window_size-1), \"wild scan\");\n }\n\n /* Emit match if have run of MIN_MATCH or longer, else emit literal */\n if (s.match_length >= MIN_MATCH) {\n //check_match(s, s.strstart, s.strstart - 1, s.match_length);\n\n /*** _tr_tally_dist(s, 1, s.match_length - MIN_MATCH, bflush); ***/\n bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n\n s.lookahead -= s.match_length;\n s.strstart += s.match_length;\n s.match_length = 0;\n } else {\n /* No match, output a literal byte */\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n\n s.lookahead--;\n s.strstart++;\n }\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n }\n\n /* ===========================================================================\n * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table.\n * (It will be regenerated if this run of deflate switches away from Huffman.)\n */\n function deflate_huff(s, flush) {\n var bflush; /* set if current block must be flushed */\n\n for (;;) {\n /* Make sure that we have a literal to write. */\n if (s.lookahead === 0) {\n fill_window(s);\n if (s.lookahead === 0) {\n if (flush === Z_NO_FLUSH) {\n return BS_NEED_MORE;\n }\n break; /* flush the current block */\n }\n }\n\n /* Output a literal byte */\n s.match_length = 0;\n //Tracevv((stderr,\"%c\", s->window[s->strstart]));\n /*** _tr_tally_lit(s, s.window[s.strstart], bflush); ***/\n bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n s.lookahead--;\n s.strstart++;\n if (bflush) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n }\n s.insert = 0;\n if (flush === Z_FINISH) {\n /*** FLUSH_BLOCK(s, 1); ***/\n flush_block_only(s, true);\n if (s.strm.avail_out === 0) {\n return BS_FINISH_STARTED;\n }\n /***/\n return BS_FINISH_DONE;\n }\n if (s.last_lit) {\n /*** FLUSH_BLOCK(s, 0); ***/\n flush_block_only(s, false);\n if (s.strm.avail_out === 0) {\n return BS_NEED_MORE;\n }\n /***/\n }\n return BS_BLOCK_DONE;\n }\n\n /* Values for max_lazy_match, good_match and max_chain_length, depending on\n * the desired pack level (0..9). The values given below have been tuned to\n * exclude worst case performance for pathological files. Better values may be\n * found for specific files.\n */\n function Config(good_length, max_lazy, nice_length, max_chain, func) {\n this.good_length = good_length;\n this.max_lazy = max_lazy;\n this.nice_length = nice_length;\n this.max_chain = max_chain;\n this.func = func;\n }\n\n var configuration_table;\n\n configuration_table = [\n /* good lazy nice chain */\n new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */\n new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */\n new Config(4, 5, 16, 8, deflate_fast), /* 2 */\n new Config(4, 6, 32, 32, deflate_fast), /* 3 */\n\n new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */\n new Config(8, 16, 32, 32, deflate_slow), /* 5 */\n new Config(8, 16, 128, 128, deflate_slow), /* 6 */\n new Config(8, 32, 128, 256, deflate_slow), /* 7 */\n new Config(32, 128, 258, 1024, deflate_slow), /* 8 */\n new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */\n ];\n\n\n /* ===========================================================================\n * Initialize the \"longest match\" routines for a new zlib stream\n */\n function lm_init(s) {\n s.window_size = 2 * s.w_size;\n\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n\n /* Set the default configuration parameters:\n */\n s.max_lazy_match = configuration_table[s.level].max_lazy;\n s.good_match = configuration_table[s.level].good_length;\n s.nice_match = configuration_table[s.level].nice_length;\n s.max_chain_length = configuration_table[s.level].max_chain;\n\n s.strstart = 0;\n s.block_start = 0;\n s.lookahead = 0;\n s.insert = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n s.ins_h = 0;\n }\n\n\n function DeflateState() {\n this.strm = null; /* pointer back to this zlib stream */\n this.status = 0; /* as the name implies */\n this.pending_buf = null; /* output still pending */\n this.pending_buf_size = 0; /* size of pending_buf */\n this.pending_out = 0; /* next pending byte to output to the stream */\n this.pending = 0; /* nb of bytes in the pending buffer */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.gzhead = null; /* gzip header information to write */\n this.gzindex = 0; /* where in extra, name, or comment */\n this.method = Z_DEFLATED; /* can only be DEFLATED */\n this.last_flush = -1; /* value of flush param for previous deflate call */\n\n this.w_size = 0; /* LZ77 window size (32K by default) */\n this.w_bits = 0; /* log2(w_size) (8..16) */\n this.w_mask = 0; /* w_size - 1 */\n\n this.window = null;\n /* Sliding window. Input bytes are read into the second half of the window,\n * and move to the first half later to keep a dictionary of at least wSize\n * bytes. With this organization, matches are limited to a distance of\n * wSize-MAX_MATCH bytes, but this ensures that IO is always\n * performed with a length multiple of the block size.\n */\n\n this.window_size = 0;\n /* Actual size of window: 2*wSize, except when the user input buffer\n * is directly used as sliding window.\n */\n\n this.prev = null;\n /* Link to older string with same hash index. To limit the size of this\n * array to 64K, this link is maintained only for the last 32K strings.\n * An index in this array is thus a window index modulo 32K.\n */\n\n this.head = null; /* Heads of the hash chains or NIL. */\n\n this.ins_h = 0; /* hash index of string to be inserted */\n this.hash_size = 0; /* number of elements in hash table */\n this.hash_bits = 0; /* log2(hash_size) */\n this.hash_mask = 0; /* hash_size-1 */\n\n this.hash_shift = 0;\n /* Number of bits by which ins_h must be shifted at each input\n * step. It must be such that after MIN_MATCH steps, the oldest\n * byte no longer takes part in the hash key, that is:\n * hash_shift * MIN_MATCH >= hash_bits\n */\n\n this.block_start = 0;\n /* Window position at the beginning of the current output block. Gets\n * negative when the window is moved backwards.\n */\n\n this.match_length = 0; /* length of best match */\n this.prev_match = 0; /* previous match */\n this.match_available = 0; /* set if previous match exists */\n this.strstart = 0; /* start of string to insert */\n this.match_start = 0; /* start of matching string */\n this.lookahead = 0; /* number of valid bytes ahead in window */\n\n this.prev_length = 0;\n /* Length of the best match at previous step. Matches not greater than this\n * are discarded. This is used in the lazy match evaluation.\n */\n\n this.max_chain_length = 0;\n /* To speed up deflation, hash chains are never searched beyond this\n * length. A higher limit improves compression ratio but degrades the\n * speed.\n */\n\n this.max_lazy_match = 0;\n /* Attempt to find a better match only when the current match is strictly\n * smaller than this value. This mechanism is used only for compression\n * levels >= 4.\n */\n // That's alias to max_lazy_match, don't use directly\n //this.max_insert_length = 0;\n /* Insert new strings in the hash table only if the match length is not\n * greater than this length. This saves time but degrades compression.\n * max_insert_length is used only for compression levels <= 3.\n */\n\n this.level = 0; /* compression level (1..9) */\n this.strategy = 0; /* favor or force Huffman coding*/\n\n this.good_match = 0;\n /* Use a faster search when the previous match is longer than this */\n\n this.nice_match = 0; /* Stop searching when current match exceeds this */\n\n /* used by trees.c: */\n\n /* Didn't use ct_data typedef below to suppress compiler warning */\n\n // struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */\n // struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */\n // struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */\n\n // Use flat array of DOUBLE size, with interleaved fata,\n // because JS does not support effective\n this.dyn_ltree = new utils.Buf16(HEAP_SIZE * 2);\n this.dyn_dtree = new utils.Buf16((2 * D_CODES + 1) * 2);\n this.bl_tree = new utils.Buf16((2 * BL_CODES + 1) * 2);\n zero(this.dyn_ltree);\n zero(this.dyn_dtree);\n zero(this.bl_tree);\n\n this.l_desc = null; /* desc. for literal tree */\n this.d_desc = null; /* desc. for distance tree */\n this.bl_desc = null; /* desc. for bit length tree */\n\n //ush bl_count[MAX_BITS+1];\n this.bl_count = new utils.Buf16(MAX_BITS + 1);\n /* number of codes at each bit length for an optimal tree */\n\n //int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */\n this.heap = new utils.Buf16(2 * L_CODES + 1); /* heap used to build the Huffman trees */\n zero(this.heap);\n\n this.heap_len = 0; /* number of elements in the heap */\n this.heap_max = 0; /* element of largest frequency */\n /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.\n * The same heap array is used to build all trees.\n */\n\n this.depth = new utils.Buf16(2 * L_CODES + 1); //uch depth[2*L_CODES+1];\n zero(this.depth);\n /* Depth of each subtree used as tie breaker for trees of equal frequency\n */\n\n this.l_buf = 0; /* buffer index for literals or lengths */\n\n this.lit_bufsize = 0;\n /* Size of match buffer for literals/lengths. There are 4 reasons for\n * limiting lit_bufsize to 64K:\n * - frequencies can be kept in 16 bit counters\n * - if compression is not successful for the first block, all input\n * data is still in the window so we can still emit a stored block even\n * when input comes from standard input. (This can also be done for\n * all blocks if lit_bufsize is not greater than 32K.)\n * - if compression is not successful for a file smaller than 64K, we can\n * even emit a stored file instead of a stored block (saving 5 bytes).\n * This is applicable only for zip (not gzip or zlib).\n * - creating new Huffman trees less frequently may not provide fast\n * adaptation to changes in the input data statistics. (Take for\n * example a binary file with poorly compressible code followed by\n * a highly compressible string table.) Smaller buffer sizes give\n * fast adaptation but have of course the overhead of transmitting\n * trees more frequently.\n * - I can't count above 4\n */\n\n this.last_lit = 0; /* running index in l_buf */\n\n this.d_buf = 0;\n /* Buffer index for distances. To simplify the code, d_buf and l_buf have\n * the same number of elements. To use different lengths, an extra flag\n * array would be necessary.\n */\n\n this.opt_len = 0; /* bit length of current block with optimal trees */\n this.static_len = 0; /* bit length of current block with static trees */\n this.matches = 0; /* number of string matches in current block */\n this.insert = 0; /* bytes at end of window left to insert */\n\n\n this.bi_buf = 0;\n /* Output buffer. bits are inserted starting at the bottom (least\n * significant bits).\n */\n this.bi_valid = 0;\n /* Number of valid bits in bi_buf. All bits above the last valid bit\n * are always zero.\n */\n\n // Used for window memory init. We safely ignore it for JS. That makes\n // sense only for pointers and memory check tools.\n //this.high_water = 0;\n /* High water mark offset in window for initialized bytes -- bytes above\n * this are set to zero in order to avoid memory check warnings when\n * longest match routines access bytes past the input. This is then\n * updated to the new high water mark.\n */\n }\n\n\n function deflateResetKeep(strm) {\n var s;\n\n if (!strm || !strm.state) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.total_in = strm.total_out = 0;\n strm.data_type = Z_UNKNOWN;\n\n s = strm.state;\n s.pending = 0;\n s.pending_out = 0;\n\n if (s.wrap < 0) {\n s.wrap = -s.wrap;\n /* was made negative by deflate(..., Z_FINISH); */\n }\n s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n strm.adler = (s.wrap === 2) ?\n 0 // crc32(0, Z_NULL, 0)\n :\n 1; // adler32(0, Z_NULL, 0)\n s.last_flush = Z_NO_FLUSH;\n trees._tr_init(s);\n return Z_OK;\n }\n\n\n function deflateReset(strm) {\n var ret = deflateResetKeep(strm);\n if (ret === Z_OK) {\n lm_init(strm.state);\n }\n return ret;\n }\n\n\n function deflateSetHeader(strm, head) {\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n strm.state.gzhead = head;\n return Z_OK;\n }\n\n\n function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n if (!strm) { // === Z_NULL\n return Z_STREAM_ERROR;\n }\n var wrap = 1;\n\n if (level === Z_DEFAULT_COMPRESSION) {\n level = 6;\n }\n\n if (windowBits < 0) { /* suppress zlib wrapper */\n wrap = 0;\n windowBits = -windowBits;\n }\n\n else if (windowBits > 15) {\n wrap = 2; /* write gzip wrapper instead */\n windowBits -= 16;\n }\n\n\n if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n strategy < 0 || strategy > Z_FIXED) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n\n if (windowBits === 8) {\n windowBits = 9;\n }\n /* until 256-byte window bug fixed */\n\n var s = new DeflateState();\n\n strm.state = s;\n s.strm = strm;\n\n s.wrap = wrap;\n s.gzhead = null;\n s.w_bits = windowBits;\n s.w_size = 1 << s.w_bits;\n s.w_mask = s.w_size - 1;\n\n s.hash_bits = memLevel + 7;\n s.hash_size = 1 << s.hash_bits;\n s.hash_mask = s.hash_size - 1;\n s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n\n s.window = new utils.Buf8(s.w_size * 2);\n s.head = new utils.Buf16(s.hash_size);\n s.prev = new utils.Buf16(s.w_size);\n\n // Don't need mem init magic for JS.\n //s.high_water = 0; /* nothing written to s->window yet */\n\n s.lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */\n\n s.pending_buf_size = s.lit_bufsize * 4;\n\n //overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);\n //s->pending_buf = (uchf *) overlay;\n s.pending_buf = new utils.Buf8(s.pending_buf_size);\n\n // It is offset from `s.pending_buf` (size is `s.lit_bufsize * 2`)\n //s->d_buf = overlay + s->lit_bufsize/sizeof(ush);\n s.d_buf = 1 * s.lit_bufsize;\n\n //s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;\n s.l_buf = (1 + 2) * s.lit_bufsize;\n\n s.level = level;\n s.strategy = strategy;\n s.method = method;\n\n return deflateReset(strm);\n }\n\n function deflateInit(strm, level) {\n return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n }\n\n\n function deflate(strm, flush) {\n var old_flush, s;\n var beg, val; // for gzip header write only\n\n if (!strm || !strm.state ||\n flush > Z_BLOCK || flush < 0) {\n return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n }\n\n s = strm.state;\n\n if (!strm.output ||\n (!strm.input && strm.avail_in !== 0) ||\n (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n }\n\n s.strm = strm; /* just in case */\n old_flush = s.last_flush;\n s.last_flush = flush;\n\n /* Write the header */\n if (s.status === INIT_STATE) {\n\n if (s.wrap === 2) { // GZIP header\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n put_byte(s, 31);\n put_byte(s, 139);\n put_byte(s, 8);\n if (!s.gzhead) { // s->gzhead == Z_NULL\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, 0);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, OS_CODE);\n s.status = BUSY_STATE;\n }\n else {\n put_byte(s, (s.gzhead.text ? 1 : 0) +\n (s.gzhead.hcrc ? 2 : 0) +\n (!s.gzhead.extra ? 0 : 4) +\n (!s.gzhead.name ? 0 : 8) +\n (!s.gzhead.comment ? 0 : 16)\n );\n put_byte(s, s.gzhead.time & 0xff);\n put_byte(s, (s.gzhead.time >> 8) & 0xff);\n put_byte(s, (s.gzhead.time >> 16) & 0xff);\n put_byte(s, (s.gzhead.time >> 24) & 0xff);\n put_byte(s, s.level === 9 ? 2 :\n (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n 4 : 0));\n put_byte(s, s.gzhead.os & 0xff);\n if (s.gzhead.extra && s.gzhead.extra.length) {\n put_byte(s, s.gzhead.extra.length & 0xff);\n put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n }\n if (s.gzhead.hcrc) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n }\n s.gzindex = 0;\n s.status = EXTRA_STATE;\n }\n }\n else // DEFLATE header\n {\n var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n var level_flags = -1;\n\n if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n level_flags = 0;\n } else if (s.level < 6) {\n level_flags = 1;\n } else if (s.level === 6) {\n level_flags = 2;\n } else {\n level_flags = 3;\n }\n header |= (level_flags << 6);\n if (s.strstart !== 0) { header |= PRESET_DICT; }\n header += 31 - (header % 31);\n\n s.status = BUSY_STATE;\n putShortMSB(s, header);\n\n /* Save the adler32 of the preset dictionary: */\n if (s.strstart !== 0) {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n strm.adler = 1; // adler32(0L, Z_NULL, 0);\n }\n }\n\n//#ifdef GZIP\n if (s.status === EXTRA_STATE) {\n if (s.gzhead.extra/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n\n while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n break;\n }\n }\n put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n s.gzindex++;\n }\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (s.gzindex === s.gzhead.extra.length) {\n s.gzindex = 0;\n s.status = NAME_STATE;\n }\n }\n else {\n s.status = NAME_STATE;\n }\n }\n if (s.status === NAME_STATE) {\n if (s.gzhead.name/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.name.length) {\n val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.gzindex = 0;\n s.status = COMMENT_STATE;\n }\n }\n else {\n s.status = COMMENT_STATE;\n }\n }\n if (s.status === COMMENT_STATE) {\n if (s.gzhead.comment/* != Z_NULL*/) {\n beg = s.pending; /* start of bytes to update crc */\n //int val;\n\n do {\n if (s.pending === s.pending_buf_size) {\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n flush_pending(strm);\n beg = s.pending;\n if (s.pending === s.pending_buf_size) {\n val = 1;\n break;\n }\n }\n // JS specific: little magic to add zero terminator to end of string\n if (s.gzindex < s.gzhead.comment.length) {\n val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n } else {\n val = 0;\n }\n put_byte(s, val);\n } while (val !== 0);\n\n if (s.gzhead.hcrc && s.pending > beg) {\n strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n }\n if (val === 0) {\n s.status = HCRC_STATE;\n }\n }\n else {\n s.status = HCRC_STATE;\n }\n }\n if (s.status === HCRC_STATE) {\n if (s.gzhead.hcrc) {\n if (s.pending + 2 > s.pending_buf_size) {\n flush_pending(strm);\n }\n if (s.pending + 2 <= s.pending_buf_size) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n strm.adler = 0; //crc32(0L, Z_NULL, 0);\n s.status = BUSY_STATE;\n }\n }\n else {\n s.status = BUSY_STATE;\n }\n }\n//#endif\n\n /* Flush as much pending output as possible */\n if (s.pending !== 0) {\n flush_pending(strm);\n if (strm.avail_out === 0) {\n /* Since avail_out is 0, deflate will be called again with\n * more output space, but possibly with both pending and\n * avail_in equal to zero. There won't be anything to do,\n * but this is not an error situation so make sure we\n * return OK instead of BUF_ERROR at next call of deflate:\n */\n s.last_flush = -1;\n return Z_OK;\n }\n\n /* Make sure there is something to do and avoid duplicate consecutive\n * flushes. For repeated and useless calls with Z_FINISH, we keep\n * returning Z_STREAM_END instead of Z_BUF_ERROR.\n */\n } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n flush !== Z_FINISH) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* User must not provide more input after the first FINISH: */\n if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n return err(strm, Z_BUF_ERROR);\n }\n\n /* Start a new block or continue the current one.\n */\n if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n configuration_table[s.level].func(s, flush));\n\n if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n s.status = FINISH_STATE;\n }\n if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n if (strm.avail_out === 0) {\n s.last_flush = -1;\n /* avoid BUF_ERROR next call, see above */\n }\n return Z_OK;\n /* If flush != Z_NO_FLUSH && avail_out == 0, the next call\n * of deflate should use the same flush parameter to make sure\n * that the flush is complete. So we don't have to output an\n * empty block here, this will be done at next call. This also\n * ensures that for a very small output buffer, we emit at most\n * one empty block.\n */\n }\n if (bstate === BS_BLOCK_DONE) {\n if (flush === Z_PARTIAL_FLUSH) {\n trees._tr_align(s);\n }\n else if (flush !== Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */\n\n trees._tr_stored_block(s, 0, 0, false);\n /* For a full flush, this empty block will be recognized\n * as a special marker by inflate_sync().\n */\n if (flush === Z_FULL_FLUSH) {\n /*** CLEAR_HASH(s); ***/ /* forget history */\n zero(s.head); // Fill with NIL (= 0);\n\n if (s.lookahead === 0) {\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n }\n }\n flush_pending(strm);\n if (strm.avail_out === 0) {\n s.last_flush = -1; /* avoid BUF_ERROR at next call, see above */\n return Z_OK;\n }\n }\n }\n //Assert(strm->avail_out > 0, \"bug2\");\n //if (strm.avail_out <= 0) { throw new Error(\"bug2\");}\n\n if (flush !== Z_FINISH) { return Z_OK; }\n if (s.wrap <= 0) { return Z_STREAM_END; }\n\n /* Write the trailer */\n if (s.wrap === 2) {\n put_byte(s, strm.adler & 0xff);\n put_byte(s, (strm.adler >> 8) & 0xff);\n put_byte(s, (strm.adler >> 16) & 0xff);\n put_byte(s, (strm.adler >> 24) & 0xff);\n put_byte(s, strm.total_in & 0xff);\n put_byte(s, (strm.total_in >> 8) & 0xff);\n put_byte(s, (strm.total_in >> 16) & 0xff);\n put_byte(s, (strm.total_in >> 24) & 0xff);\n }\n else\n {\n putShortMSB(s, strm.adler >>> 16);\n putShortMSB(s, strm.adler & 0xffff);\n }\n\n flush_pending(strm);\n /* If avail_out is zero, the application will call deflate again\n * to flush the rest.\n */\n if (s.wrap > 0) { s.wrap = -s.wrap; }\n /* write the trailer only once! */\n return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n }\n\n function deflateEnd(strm) {\n var status;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n status = strm.state.status;\n if (status !== INIT_STATE &&\n status !== EXTRA_STATE &&\n status !== NAME_STATE &&\n status !== COMMENT_STATE &&\n status !== HCRC_STATE &&\n status !== BUSY_STATE &&\n status !== FINISH_STATE\n ) {\n return err(strm, Z_STREAM_ERROR);\n }\n\n strm.state = null;\n\n return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n }\n\n\n /* =========================================================================\n * Initializes the compression dictionary from the given byte\n * sequence without producing any compressed output.\n */\n function deflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var s;\n var str, n;\n var wrap;\n var avail;\n var next;\n var input;\n var tmpDict;\n\n if (!strm/*== Z_NULL*/ || !strm.state/*== Z_NULL*/) {\n return Z_STREAM_ERROR;\n }\n\n s = strm.state;\n wrap = s.wrap;\n\n if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n return Z_STREAM_ERROR;\n }\n\n /* when using zlib wrappers, compute Adler-32 for provided dictionary */\n if (wrap === 1) {\n /* adler32(strm->adler, dictionary, dictLength); */\n strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n }\n\n s.wrap = 0; /* avoid computing Adler-32 in read_buf */\n\n /* if dictionary would fill window, just replace the history */\n if (dictLength >= s.w_size) {\n if (wrap === 0) { /* already empty otherwise */\n /*** CLEAR_HASH(s); ***/\n zero(s.head); // Fill with NIL (= 0);\n s.strstart = 0;\n s.block_start = 0;\n s.insert = 0;\n }\n /* use the tail */\n // dictionary = dictionary.slice(dictLength - s.w_size);\n tmpDict = new utils.Buf8(s.w_size);\n utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n dictionary = tmpDict;\n dictLength = s.w_size;\n }\n /* insert dictionary into window and hash */\n avail = strm.avail_in;\n next = strm.next_in;\n input = strm.input;\n strm.avail_in = dictLength;\n strm.next_in = 0;\n strm.input = dictionary;\n fill_window(s);\n while (s.lookahead >= MIN_MATCH) {\n str = s.strstart;\n n = s.lookahead - (MIN_MATCH - 1);\n do {\n /* UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH-1]); */\n s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n\n s.prev[str & s.w_mask] = s.head[s.ins_h];\n\n s.head[s.ins_h] = str;\n str++;\n } while (--n);\n s.strstart = str;\n s.lookahead = MIN_MATCH - 1;\n fill_window(s);\n }\n s.strstart += s.lookahead;\n s.block_start = s.strstart;\n s.insert = s.lookahead;\n s.lookahead = 0;\n s.match_length = s.prev_length = MIN_MATCH - 1;\n s.match_available = 0;\n strm.next_in = next;\n strm.input = input;\n strm.avail_in = avail;\n s.wrap = wrap;\n return Z_OK;\n }\n\n\n exports.deflateInit = deflateInit;\n exports.deflateInit2 = deflateInit2;\n exports.deflateReset = deflateReset;\n exports.deflateResetKeep = deflateResetKeep;\n exports.deflateSetHeader = deflateSetHeader;\n exports.deflate = deflate;\n exports.deflateEnd = deflateEnd;\n exports.deflateSetDictionary = deflateSetDictionary;\n exports.deflateInfo = 'pako deflate (from Nodeca project)';\n\n /* Not implemented\nexports.deflateBound = deflateBound;\nexports.deflateCopy = deflateCopy;\nexports.deflateParams = deflateParams;\nexports.deflatePending = deflatePending;\nexports.deflatePrime = deflatePrime;\nexports.deflateTune = deflateTune;\n*/\n\n },{\"../utils/common\":3,\"./adler32\":5,\"./crc32\":7,\"./messages\":13,\"./trees\":14}],9:[function(require,module,exports){\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n function GZheader() {\n /* true if compressed data believed to be text */\n this.text = 0;\n /* modification time */\n this.time = 0;\n /* extra flags (not used when writing a gzip file) */\n this.xflags = 0;\n /* operating system */\n this.os = 0;\n /* pointer to extra field or Z_NULL if none */\n this.extra = null;\n /* extra field length (valid if extra != Z_NULL) */\n this.extra_len = 0; // Actually, we don't need it in JS,\n // but leave for few code modifications\n\n //\n // Setup limits is not necessary because in js we should not preallocate memory\n // for inflate use constant limit in 65536 bytes\n //\n\n /* space at extra (only when reading header) */\n // this.extra_max = 0;\n /* pointer to zero-terminated file name or Z_NULL */\n this.name = '';\n /* space at name (only when reading header) */\n // this.name_max = 0;\n /* pointer to zero-terminated comment or Z_NULL */\n this.comment = '';\n /* space at comment (only when reading header) */\n // this.comm_max = 0;\n /* true if there was or will be a header crc */\n this.hcrc = 0;\n /* true when done reading gzip header (not used when writing a gzip file) */\n this.done = false;\n }\n\n module.exports = GZheader;\n\n },{}],10:[function(require,module,exports){\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n// See state defs from inflate.js\n var BAD = 30; /* got a data error -- remain here until reset */\n var TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n\n /*\n Decode literal, length, and distance codes and write out the resulting\n literal and match bytes until either not enough input or output is\n available, an end-of-block is encountered, or a data error is encountered.\n When large enough input and output buffers are supplied to inflate(), for\n example, a 16K input buffer and a 64K output buffer, more than 95% of the\n inflate execution time is spent in this routine.\n\n Entry assumptions:\n\n state.mode === LEN\n strm.avail_in >= 6\n strm.avail_out >= 258\n start >= strm.avail_out\n state.bits < 8\n\n On return, state.mode is one of:\n\n LEN -- ran out of enough output space or enough available input\n TYPE -- reached end of block code, inflate() to interpret next block\n BAD -- error in block data\n\n Notes:\n\n - The maximum input bits used by a length/distance pair is 15 bits for the\n length code, 5 bits for the length extra, 15 bits for the distance code,\n and 13 bits for the distance extra. This totals 48 bits, or six bytes.\n Therefore if strm.avail_in >= 6, then there is enough input to avoid\n checking for available input while decoding.\n\n - The maximum bytes that a single length/distance pair can output is 258\n bytes, which is the maximum length that can be coded. inflate_fast()\n requires strm.avail_out >= 258 for each loop to avoid checking for\n output space.\n */\n module.exports = function inflate_fast(strm, start) {\n var state;\n var _in; /* local strm.input */\n var last; /* have enough input while in < last */\n var _out; /* local strm.output */\n var beg; /* inflate()'s initial strm.output */\n var end; /* while out < end, enough space available */\n//#ifdef INFLATE_STRICT\n var dmax; /* maximum distance from zlib header */\n//#endif\n var wsize; /* window size or zero if not using window */\n var whave; /* valid bytes in the window */\n var wnext; /* window write index */\n // Use `s_window` instead `window`, avoid conflict with instrumentation tools\n var s_window; /* allocated sliding window, if wsize != 0 */\n var hold; /* local strm.hold */\n var bits; /* local strm.bits */\n var lcode; /* local strm.lencode */\n var dcode; /* local strm.distcode */\n var lmask; /* mask for first level of length codes */\n var dmask; /* mask for first level of distance codes */\n var here; /* retrieved table entry */\n var op; /* code bits, operation, extra bits, or */\n /* window position, window bytes to copy */\n var len; /* match length, unused bytes */\n var dist; /* match distance */\n var from; /* where to copy match from */\n var from_source;\n\n\n var input, output; // JS specific, because we have no pointers\n\n /* copy state to local variables */\n state = strm.state;\n //here = state.here;\n _in = strm.next_in;\n input = strm.input;\n last = _in + (strm.avail_in - 5);\n _out = strm.next_out;\n output = strm.output;\n beg = _out - (start - strm.avail_out);\n end = _out + (strm.avail_out - 257);\n//#ifdef INFLATE_STRICT\n dmax = state.dmax;\n//#endif\n wsize = state.wsize;\n whave = state.whave;\n wnext = state.wnext;\n s_window = state.window;\n hold = state.hold;\n bits = state.bits;\n lcode = state.lencode;\n dcode = state.distcode;\n lmask = (1 << state.lenbits) - 1;\n dmask = (1 << state.distbits) - 1;\n\n\n /* decode literals and length/distances until end-of-block or not enough\n input data or output space */\n\n top:\n do {\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n\n here = lcode[hold & lmask];\n\n dolen:\n for (;;) { // Goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n if (op === 0) { /* literal */\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n output[_out++] = here & 0xffff/*here.val*/;\n }\n else if (op & 16) { /* length base */\n len = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (op) {\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n len += hold & ((1 << op) - 1);\n hold >>>= op;\n bits -= op;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", len));\n if (bits < 15) {\n hold += input[_in++] << bits;\n bits += 8;\n hold += input[_in++] << bits;\n bits += 8;\n }\n here = dcode[hold & dmask];\n\n dodist:\n for (;;) { // goto emulation\n op = here >>> 24/*here.bits*/;\n hold >>>= op;\n bits -= op;\n op = (here >>> 16) & 0xff/*here.op*/;\n\n if (op & 16) { /* distance base */\n dist = here & 0xffff/*here.val*/;\n op &= 15; /* number of extra bits */\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n if (bits < op) {\n hold += input[_in++] << bits;\n bits += 8;\n }\n }\n dist += hold & ((1 << op) - 1);\n//#ifdef INFLATE_STRICT\n if (dist > dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n//#endif\n hold >>>= op;\n bits -= op;\n //Tracevv((stderr, \"inflate: distance %u\\n\", dist));\n op = _out - beg; /* max distance in output */\n if (dist > op) { /* see if copy from window */\n op = dist - op; /* distance back in window */\n if (op > whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break top;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// if (len <= op - whave) {\n// do {\n// output[_out++] = 0;\n// } while (--len);\n// continue top;\n// }\n// len -= op - whave;\n// do {\n// output[_out++] = 0;\n// } while (--op > whave);\n// if (op === 0) {\n// from = _out - dist;\n// do {\n// output[_out++] = output[from++];\n// } while (--len);\n// continue top;\n// }\n//#endif\n }\n from = 0; // window index\n from_source = s_window;\n if (wnext === 0) { /* very common case */\n from += wsize - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n else if (wnext < op) { /* wrap around window */\n from += wsize + wnext - op;\n op -= wnext;\n if (op < len) { /* some from end of window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = 0;\n if (wnext < len) { /* some from start of window */\n op = wnext;\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n }\n else { /* contiguous in window */\n from += wnext - op;\n if (op < len) { /* some from window */\n len -= op;\n do {\n output[_out++] = s_window[from++];\n } while (--op);\n from = _out - dist; /* rest from output */\n from_source = output;\n }\n }\n while (len > 2) {\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n output[_out++] = from_source[from++];\n len -= 3;\n }\n if (len) {\n output[_out++] = from_source[from++];\n if (len > 1) {\n output[_out++] = from_source[from++];\n }\n }\n }\n else {\n from = _out - dist; /* copy direct from output */\n do { /* minimum length is three */\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n output[_out++] = output[from++];\n len -= 3;\n } while (len > 2);\n if (len) {\n output[_out++] = output[from++];\n if (len > 1) {\n output[_out++] = output[from++];\n }\n }\n }\n }\n else if ((op & 64) === 0) { /* 2nd level distance code */\n here = dcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dodist;\n }\n else {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n }\n else if ((op & 64) === 0) { /* 2nd level length code */\n here = lcode[(here & 0xffff)/*here.val*/ + (hold & ((1 << op) - 1))];\n continue dolen;\n }\n else if (op & 32) { /* end-of-block */\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.mode = TYPE;\n break top;\n }\n else {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break top;\n }\n\n break; // need to emulate goto via \"continue\"\n }\n } while (_in < last && _out < end);\n\n /* return unused bytes (on entry, bits < 8, so in won't go too far back) */\n len = bits >> 3;\n _in -= len;\n bits -= len << 3;\n hold &= (1 << bits) - 1;\n\n /* update state and return */\n strm.next_in = _in;\n strm.next_out = _out;\n strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n state.hold = hold;\n state.bits = bits;\n return;\n };\n\n },{}],11:[function(require,module,exports){\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n var utils = require('../utils/common');\n var adler32 = require('./adler32');\n var crc32 = require('./crc32');\n var inflate_fast = require('./inffast');\n var inflate_table = require('./inftrees');\n\n var CODES = 0;\n var LENS = 1;\n var DISTS = 2;\n\n /* Public constants ==========================================================*/\n /* ===========================================================================*/\n\n\n /* Allowed flush values; see deflate() and inflate() below for details */\n//var Z_NO_FLUSH = 0;\n//var Z_PARTIAL_FLUSH = 1;\n//var Z_SYNC_FLUSH = 2;\n//var Z_FULL_FLUSH = 3;\n var Z_FINISH = 4;\n var Z_BLOCK = 5;\n var Z_TREES = 6;\n\n\n /* Return codes for the compression/decompression functions. Negative values\n * are errors, positive values are used for special but normal events.\n */\n var Z_OK = 0;\n var Z_STREAM_END = 1;\n var Z_NEED_DICT = 2;\n//var Z_ERRNO = -1;\n var Z_STREAM_ERROR = -2;\n var Z_DATA_ERROR = -3;\n var Z_MEM_ERROR = -4;\n var Z_BUF_ERROR = -5;\n//var Z_VERSION_ERROR = -6;\n\n /* The deflate compression method */\n var Z_DEFLATED = 8;\n\n\n /* STATES ====================================================================*/\n /* ===========================================================================*/\n\n\n var HEAD = 1; /* i: waiting for magic header */\n var FLAGS = 2; /* i: waiting for method and flags (gzip) */\n var TIME = 3; /* i: waiting for modification time (gzip) */\n var OS = 4; /* i: waiting for extra flags and operating system (gzip) */\n var EXLEN = 5; /* i: waiting for extra length (gzip) */\n var EXTRA = 6; /* i: waiting for extra bytes (gzip) */\n var NAME = 7; /* i: waiting for end of file name (gzip) */\n var COMMENT = 8; /* i: waiting for end of comment (gzip) */\n var HCRC = 9; /* i: waiting for header crc (gzip) */\n var DICTID = 10; /* i: waiting for dictionary check value */\n var DICT = 11; /* waiting for inflateSetDictionary() call */\n var TYPE = 12; /* i: waiting for type bits, including last-flag bit */\n var TYPEDO = 13; /* i: same, but skip check to exit inflate on new block */\n var STORED = 14; /* i: waiting for stored size (length and complement) */\n var COPY_ = 15; /* i/o: same as COPY below, but only first time in */\n var COPY = 16; /* i/o: waiting for input or output to copy stored block */\n var TABLE = 17; /* i: waiting for dynamic block table lengths */\n var LENLENS = 18; /* i: waiting for code length code lengths */\n var CODELENS = 19; /* i: waiting for length/lit and distance code lengths */\n var LEN_ = 20; /* i: same as LEN below, but only first time in */\n var LEN = 21; /* i: waiting for length/lit/eob code */\n var LENEXT = 22; /* i: waiting for length extra bits */\n var DIST = 23; /* i: waiting for distance code */\n var DISTEXT = 24; /* i: waiting for distance extra bits */\n var MATCH = 25; /* o: waiting for output space to copy string */\n var LIT = 26; /* o: waiting for output space to write literal */\n var CHECK = 27; /* i: waiting for 32-bit check value */\n var LENGTH = 28; /* i: waiting for 32-bit length (gzip) */\n var DONE = 29; /* finished check, done -- remain here until reset */\n var BAD = 30; /* got a data error -- remain here until reset */\n var MEM = 31; /* got an inflate() memory error -- remain here until reset */\n var SYNC = 32; /* looking for synchronization bytes to restart inflate() */\n\n /* ===========================================================================*/\n\n\n\n var ENOUGH_LENS = 852;\n var ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\n var MAX_WBITS = 15;\n /* 32K LZ77 window */\n var DEF_WBITS = MAX_WBITS;\n\n\n function zswap32(q) {\n return (((q >>> 24) & 0xff) +\n ((q >>> 8) & 0xff00) +\n ((q & 0xff00) << 8) +\n ((q & 0xff) << 24));\n }\n\n\n function InflateState() {\n this.mode = 0; /* current inflate mode */\n this.last = false; /* true if processing last block */\n this.wrap = 0; /* bit 0 true for zlib, bit 1 true for gzip */\n this.havedict = false; /* true if dictionary provided */\n this.flags = 0; /* gzip header method and flags (0 if zlib) */\n this.dmax = 0; /* zlib header max distance (INFLATE_STRICT) */\n this.check = 0; /* protected copy of check value */\n this.total = 0; /* protected copy of output count */\n // TODO: may be {}\n this.head = null; /* where to save gzip header information */\n\n /* sliding window */\n this.wbits = 0; /* log base 2 of requested window size */\n this.wsize = 0; /* window size or zero if not using window */\n this.whave = 0; /* valid bytes in the window */\n this.wnext = 0; /* window write index */\n this.window = null; /* allocated sliding window, if needed */\n\n /* bit accumulator */\n this.hold = 0; /* input bit accumulator */\n this.bits = 0; /* number of bits in \"in\" */\n\n /* for string and stored block copying */\n this.length = 0; /* literal or length of data to copy */\n this.offset = 0; /* distance back to copy string from */\n\n /* for table and code decoding */\n this.extra = 0; /* extra bits needed */\n\n /* fixed and dynamic code tables */\n this.lencode = null; /* starting table for length/literal codes */\n this.distcode = null; /* starting table for distance codes */\n this.lenbits = 0; /* index bits for lencode */\n this.distbits = 0; /* index bits for distcode */\n\n /* dynamic table building */\n this.ncode = 0; /* number of code length code lengths */\n this.nlen = 0; /* number of length code lengths */\n this.ndist = 0; /* number of distance code lengths */\n this.have = 0; /* number of code lengths in lens[] */\n this.next = null; /* next available space in codes[] */\n\n this.lens = new utils.Buf16(320); /* temporary storage for code lengths */\n this.work = new utils.Buf16(288); /* work area for code table building */\n\n /*\n because we don't have pointers in js, we use lencode and distcode directly\n as buffers so we don't need codes\n */\n //this.codes = new utils.Buf32(ENOUGH); /* space for code tables */\n this.lendyn = null; /* dynamic table for length/literal codes (JS specific) */\n this.distdyn = null; /* dynamic table for distance codes (JS specific) */\n this.sane = 0; /* if false, allow invalid distance too far */\n this.back = 0; /* bits back of last unprocessed length/lit */\n this.was = 0; /* initial length of match */\n }\n\n function inflateResetKeep(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n strm.total_in = strm.total_out = state.total = 0;\n strm.msg = ''; /*Z_NULL*/\n if (state.wrap) { /* to support ill-conceived Java test suite */\n strm.adler = state.wrap & 1;\n }\n state.mode = HEAD;\n state.last = 0;\n state.havedict = 0;\n state.dmax = 32768;\n state.head = null/*Z_NULL*/;\n state.hold = 0;\n state.bits = 0;\n //state.lencode = state.distcode = state.next = state.codes;\n state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n\n state.sane = 1;\n state.back = -1;\n //Tracev((stderr, \"inflate: reset\\n\"));\n return Z_OK;\n }\n\n function inflateReset(strm) {\n var state;\n\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n state.wsize = 0;\n state.whave = 0;\n state.wnext = 0;\n return inflateResetKeep(strm);\n\n }\n\n function inflateReset2(strm, windowBits) {\n var wrap;\n var state;\n\n /* get the state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n /* extract wrap request from windowBits parameter */\n if (windowBits < 0) {\n wrap = 0;\n windowBits = -windowBits;\n }\n else {\n wrap = (windowBits >> 4) + 1;\n if (windowBits < 48) {\n windowBits &= 15;\n }\n }\n\n /* set number of window bits, free window if different */\n if (windowBits && (windowBits < 8 || windowBits > 15)) {\n return Z_STREAM_ERROR;\n }\n if (state.window !== null && state.wbits !== windowBits) {\n state.window = null;\n }\n\n /* update state and reset the rest of it */\n state.wrap = wrap;\n state.wbits = windowBits;\n return inflateReset(strm);\n }\n\n function inflateInit2(strm, windowBits) {\n var ret;\n var state;\n\n if (!strm) { return Z_STREAM_ERROR; }\n //strm.msg = Z_NULL; /* in case we return an error */\n\n state = new InflateState();\n\n //if (state === Z_NULL) return Z_MEM_ERROR;\n //Tracev((stderr, \"inflate: allocated\\n\"));\n strm.state = state;\n state.window = null/*Z_NULL*/;\n ret = inflateReset2(strm, windowBits);\n if (ret !== Z_OK) {\n strm.state = null/*Z_NULL*/;\n }\n return ret;\n }\n\n function inflateInit(strm) {\n return inflateInit2(strm, DEF_WBITS);\n }\n\n\n /*\n Return state with length and distance decoding tables and index sizes set to\n fixed code decoding. Normally this returns fixed tables from inffixed.h.\n If BUILDFIXED is defined, then instead this routine builds the tables the\n first time it's called, and returns those tables the first time and\n thereafter. This reduces the size of the code by about 2K bytes, in\n exchange for a little execution time. However, BUILDFIXED should not be\n used for threaded applications, since the rewriting of the tables and virgin\n may not be thread-safe.\n */\n var virgin = true;\n\n var lenfix, distfix; // We have no pointers in JS, so keep tables separate\n\n function fixedtables(state) {\n /* build fixed huffman tables if first call (may not be thread safe) */\n if (virgin) {\n var sym;\n\n lenfix = new utils.Buf32(512);\n distfix = new utils.Buf32(32);\n\n /* literal/length table */\n sym = 0;\n while (sym < 144) { state.lens[sym++] = 8; }\n while (sym < 256) { state.lens[sym++] = 9; }\n while (sym < 280) { state.lens[sym++] = 7; }\n while (sym < 288) { state.lens[sym++] = 8; }\n\n inflate_table(LENS, state.lens, 0, 288, lenfix, 0, state.work, { bits: 9 });\n\n /* distance table */\n sym = 0;\n while (sym < 32) { state.lens[sym++] = 5; }\n\n inflate_table(DISTS, state.lens, 0, 32, distfix, 0, state.work, { bits: 5 });\n\n /* do this just once */\n virgin = false;\n }\n\n state.lencode = lenfix;\n state.lenbits = 9;\n state.distcode = distfix;\n state.distbits = 5;\n }\n\n\n /*\n Update the window with the last wsize (normally 32K) bytes written before\n returning. If window does not exist yet, create it. This is only called\n when a window is already in use, or when output has been written during this\n inflate call, but the end of the deflate stream has not been reached yet.\n It is also called to create a window for dictionary data when a dictionary\n is loaded.\n\n Providing output buffers larger than 32K to inflate() should provide a speed\n advantage, since only the last 32K of output is copied to the sliding window\n upon return from inflate(), and since all distances after the first 32K of\n output will fall in the output data, making match copies simpler and faster.\n The advantage may be dependent on the size of the processor's data caches.\n */\n function updatewindow(strm, src, end, copy) {\n var dist;\n var state = strm.state;\n\n /* if it hasn't been done already, allocate space for the window */\n if (state.window === null) {\n state.wsize = 1 << state.wbits;\n state.wnext = 0;\n state.whave = 0;\n\n state.window = new utils.Buf8(state.wsize);\n }\n\n /* copy state->wsize or less output bytes into the circular window */\n if (copy >= state.wsize) {\n utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n state.wnext = 0;\n state.whave = state.wsize;\n }\n else {\n dist = state.wsize - state.wnext;\n if (dist > copy) {\n dist = copy;\n }\n //zmemcpy(state->window + state->wnext, end - copy, dist);\n utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n copy -= dist;\n if (copy) {\n //zmemcpy(state->window, end - copy, copy);\n utils.arraySet(state.window, src, end - copy, copy, 0);\n state.wnext = copy;\n state.whave = state.wsize;\n }\n else {\n state.wnext += dist;\n if (state.wnext === state.wsize) { state.wnext = 0; }\n if (state.whave < state.wsize) { state.whave += dist; }\n }\n }\n return 0;\n }\n\n function inflate(strm, flush) {\n var state;\n var input, output; // input/output buffers\n var next; /* next input INDEX */\n var put; /* next output INDEX */\n var have, left; /* available input and output */\n var hold; /* bit buffer */\n var bits; /* bits in bit buffer */\n var _in, _out; /* save starting available input and output */\n var copy; /* number of stored or match bytes to copy */\n var from; /* where to copy match bytes from */\n var from_source;\n var here = 0; /* current decoding table entry */\n var here_bits, here_op, here_val; // paked \"here\" denormalized (JS specific)\n //var last; /* parent table entry */\n var last_bits, last_op, last_val; // paked \"last\" denormalized (JS specific)\n var len; /* length to copy for repeats, bits to drop */\n var ret; /* return code */\n var hbuf = new utils.Buf8(4); /* buffer for gzip header crc calculation */\n var opts;\n\n var n; // temporary var for NEED_BITS\n\n var order = /* permutation of code lengths */\n [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n\n\n if (!strm || !strm.state || !strm.output ||\n (!strm.input && strm.avail_in !== 0)) {\n return Z_STREAM_ERROR;\n }\n\n state = strm.state;\n if (state.mode === TYPE) { state.mode = TYPEDO; } /* skip check */\n\n\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n _in = have;\n _out = left;\n ret = Z_OK;\n\n inf_leave: // goto emulation\n for (;;) {\n switch (state.mode) {\n case HEAD:\n if (state.wrap === 0) {\n state.mode = TYPEDO;\n break;\n }\n //=== NEEDBITS(16);\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((state.wrap & 2) && hold === 0x8b1f) { /* gzip header */\n state.check = 0/*crc32(0L, Z_NULL, 0)*/;\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = FLAGS;\n break;\n }\n state.flags = 0; /* expect zlib header */\n if (state.head) {\n state.head.done = false;\n }\n if (!(state.wrap & 1) || /* check if zlib header allowed */\n (((hold & 0xff)/*BITS(8)*/ << 8) + (hold >> 8)) % 31) {\n strm.msg = 'incorrect header check';\n state.mode = BAD;\n break;\n }\n if ((hold & 0x0f)/*BITS(4)*/ !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n len = (hold & 0x0f)/*BITS(4)*/ + 8;\n if (state.wbits === 0) {\n state.wbits = len;\n }\n else if (len > state.wbits) {\n strm.msg = 'invalid window size';\n state.mode = BAD;\n break;\n }\n state.dmax = 1 << len;\n //Tracev((stderr, \"inflate: zlib header ok\\n\"));\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = hold & 0x200 ? DICTID : TYPE;\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n break;\n case FLAGS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.flags = hold;\n if ((state.flags & 0xff) !== Z_DEFLATED) {\n strm.msg = 'unknown compression method';\n state.mode = BAD;\n break;\n }\n if (state.flags & 0xe000) {\n strm.msg = 'unknown header flags set';\n state.mode = BAD;\n break;\n }\n if (state.head) {\n state.head.text = ((hold >> 8) & 1);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = TIME;\n /* falls through */\n case TIME:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.time = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC4(state.check, hold)\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n hbuf[2] = (hold >>> 16) & 0xff;\n hbuf[3] = (hold >>> 24) & 0xff;\n state.check = crc32(state.check, hbuf, 4, 0);\n //===\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = OS;\n /* falls through */\n case OS:\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (state.head) {\n state.head.xflags = (hold & 0xff);\n state.head.os = (hold >> 8);\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = EXLEN;\n /* falls through */\n case EXLEN:\n if (state.flags & 0x0400) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length = hold;\n if (state.head) {\n state.head.extra_len = hold;\n }\n if (state.flags & 0x0200) {\n //=== CRC2(state.check, hold);\n hbuf[0] = hold & 0xff;\n hbuf[1] = (hold >>> 8) & 0xff;\n state.check = crc32(state.check, hbuf, 2, 0);\n //===//\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n else if (state.head) {\n state.head.extra = null/*Z_NULL*/;\n }\n state.mode = EXTRA;\n /* falls through */\n case EXTRA:\n if (state.flags & 0x0400) {\n copy = state.length;\n if (copy > have) { copy = have; }\n if (copy) {\n if (state.head) {\n len = state.head.extra_len - state.length;\n if (!state.head.extra) {\n // Use untyped array for more convenient processing later\n state.head.extra = new Array(state.head.extra_len);\n }\n utils.arraySet(\n state.head.extra,\n input,\n next,\n // extra field is limited to 65536 bytes\n // - no need for additional size check\n copy,\n /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/\n len\n );\n //zmemcpy(state.head.extra + len, next,\n // len + copy > state.head.extra_max ?\n // state.head.extra_max - len : copy);\n }\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n state.length -= copy;\n }\n if (state.length) { break inf_leave; }\n }\n state.length = 0;\n state.mode = NAME;\n /* falls through */\n case NAME:\n if (state.flags & 0x0800) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n // TODO: 2 or 1 bytes?\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.name_max*/)) {\n state.head.name += String.fromCharCode(len);\n }\n } while (len && copy < have);\n\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.name = null;\n }\n state.length = 0;\n state.mode = COMMENT;\n /* falls through */\n case COMMENT:\n if (state.flags & 0x1000) {\n if (have === 0) { break inf_leave; }\n copy = 0;\n do {\n len = input[next + copy++];\n /* use constant limit because in js we should not preallocate memory */\n if (state.head && len &&\n (state.length < 65536 /*state.head.comm_max*/)) {\n state.head.comment += String.fromCharCode(len);\n }\n } while (len && copy < have);\n if (state.flags & 0x0200) {\n state.check = crc32(state.check, input, copy, next);\n }\n have -= copy;\n next += copy;\n if (len) { break inf_leave; }\n }\n else if (state.head) {\n state.head.comment = null;\n }\n state.mode = HCRC;\n /* falls through */\n case HCRC:\n if (state.flags & 0x0200) {\n //=== NEEDBITS(16); */\n while (bits < 16) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.check & 0xffff)) {\n strm.msg = 'header crc mismatch';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n }\n if (state.head) {\n state.head.hcrc = ((state.flags >> 9) & 1);\n state.head.done = true;\n }\n strm.adler = state.check = 0;\n state.mode = TYPE;\n break;\n case DICTID:\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n strm.adler = state.check = zswap32(hold);\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = DICT;\n /* falls through */\n case DICT:\n if (state.havedict === 0) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n return Z_NEED_DICT;\n }\n strm.adler = state.check = 1/*adler32(0L, Z_NULL, 0)*/;\n state.mode = TYPE;\n /* falls through */\n case TYPE:\n if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case TYPEDO:\n if (state.last) {\n //--- BYTEBITS() ---//\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n state.mode = CHECK;\n break;\n }\n //=== NEEDBITS(3); */\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.last = (hold & 0x01)/*BITS(1)*/;\n //--- DROPBITS(1) ---//\n hold >>>= 1;\n bits -= 1;\n //---//\n\n switch ((hold & 0x03)/*BITS(2)*/) {\n case 0: /* stored block */\n //Tracev((stderr, \"inflate: stored block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = STORED;\n break;\n case 1: /* fixed block */\n fixedtables(state);\n //Tracev((stderr, \"inflate: fixed codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = LEN_; /* decode codes */\n if (flush === Z_TREES) {\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break inf_leave;\n }\n break;\n case 2: /* dynamic block */\n //Tracev((stderr, \"inflate: dynamic codes block%s\\n\",\n // state.last ? \" (last)\" : \"\"));\n state.mode = TABLE;\n break;\n case 3:\n strm.msg = 'invalid block type';\n state.mode = BAD;\n }\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n break;\n case STORED:\n //--- BYTEBITS() ---// /* go to byte boundary */\n hold >>>= bits & 7;\n bits -= bits & 7;\n //---//\n //=== NEEDBITS(32); */\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n strm.msg = 'invalid stored block lengths';\n state.mode = BAD;\n break;\n }\n state.length = hold & 0xffff;\n //Tracev((stderr, \"inflate: stored length %u\\n\",\n // state.length));\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n state.mode = COPY_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case COPY_:\n state.mode = COPY;\n /* falls through */\n case COPY:\n copy = state.length;\n if (copy) {\n if (copy > have) { copy = have; }\n if (copy > left) { copy = left; }\n if (copy === 0) { break inf_leave; }\n //--- zmemcpy(put, next, copy); ---\n utils.arraySet(output, input, next, copy, put);\n //---//\n have -= copy;\n next += copy;\n left -= copy;\n put += copy;\n state.length -= copy;\n break;\n }\n //Tracev((stderr, \"inflate: stored end\\n\"));\n state.mode = TYPE;\n break;\n case TABLE:\n //=== NEEDBITS(14); */\n while (bits < 14) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.nlen = (hold & 0x1f)/*BITS(5)*/ + 257;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ndist = (hold & 0x1f)/*BITS(5)*/ + 1;\n //--- DROPBITS(5) ---//\n hold >>>= 5;\n bits -= 5;\n //---//\n state.ncode = (hold & 0x0f)/*BITS(4)*/ + 4;\n //--- DROPBITS(4) ---//\n hold >>>= 4;\n bits -= 4;\n //---//\n//#ifndef PKZIP_BUG_WORKAROUND\n if (state.nlen > 286 || state.ndist > 30) {\n strm.msg = 'too many length or distance symbols';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracev((stderr, \"inflate: table sizes ok\\n\"));\n state.have = 0;\n state.mode = LENLENS;\n /* falls through */\n case LENLENS:\n while (state.have < state.ncode) {\n //=== NEEDBITS(3);\n while (bits < 3) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.lens[order[state.have++]] = (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n while (state.have < 19) {\n state.lens[order[state.have++]] = 0;\n }\n // We have separate tables & no pointers. 2 commented lines below not needed.\n //state.next = state.codes;\n //state.lencode = state.next;\n // Switch to use dynamic table\n state.lencode = state.lendyn;\n state.lenbits = 7;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n state.lenbits = opts.bits;\n\n if (ret) {\n strm.msg = 'invalid code lengths set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, \"inflate: code lengths ok\\n\"));\n state.have = 0;\n state.mode = CODELENS;\n /* falls through */\n case CODELENS:\n while (state.have < state.nlen + state.ndist) {\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)];/*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_val < 16) {\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.lens[state.have++] = here_val;\n }\n else {\n if (here_val === 16) {\n //=== NEEDBITS(here.bits + 2);\n n = here_bits + 2;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n if (state.have === 0) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n len = state.lens[state.have - 1];\n copy = 3 + (hold & 0x03);//BITS(2);\n //--- DROPBITS(2) ---//\n hold >>>= 2;\n bits -= 2;\n //---//\n }\n else if (here_val === 17) {\n //=== NEEDBITS(here.bits + 3);\n n = here_bits + 3;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 3 + (hold & 0x07);//BITS(3);\n //--- DROPBITS(3) ---//\n hold >>>= 3;\n bits -= 3;\n //---//\n }\n else {\n //=== NEEDBITS(here.bits + 7);\n n = here_bits + 7;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n len = 0;\n copy = 11 + (hold & 0x7f);//BITS(7);\n //--- DROPBITS(7) ---//\n hold >>>= 7;\n bits -= 7;\n //---//\n }\n if (state.have + copy > state.nlen + state.ndist) {\n strm.msg = 'invalid bit length repeat';\n state.mode = BAD;\n break;\n }\n while (copy--) {\n state.lens[state.have++] = len;\n }\n }\n }\n\n /* handle error breaks in while */\n if (state.mode === BAD) { break; }\n\n /* check for end-of-block code (better have one) */\n if (state.lens[256] === 0) {\n strm.msg = 'invalid code -- missing end-of-block';\n state.mode = BAD;\n break;\n }\n\n /* build code tables -- note: do not change the lenbits or distbits\n values here (9 and 6) without reading the comments in inftrees.h\n concerning the ENOUGH constants, which depend on those values */\n state.lenbits = 9;\n\n opts = { bits: state.lenbits };\n ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.lenbits = opts.bits;\n // state.lencode = state.next;\n\n if (ret) {\n strm.msg = 'invalid literal/lengths set';\n state.mode = BAD;\n break;\n }\n\n state.distbits = 6;\n //state.distcode.copy(state.codes);\n // Switch to use dynamic table\n state.distcode = state.distdyn;\n opts = { bits: state.distbits };\n ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n // We have separate tables & no pointers. 2 commented lines below not needed.\n // state.next_index = opts.table_index;\n state.distbits = opts.bits;\n // state.distcode = state.next;\n\n if (ret) {\n strm.msg = 'invalid distances set';\n state.mode = BAD;\n break;\n }\n //Tracev((stderr, 'inflate: codes ok\\n'));\n state.mode = LEN_;\n if (flush === Z_TREES) { break inf_leave; }\n /* falls through */\n case LEN_:\n state.mode = LEN;\n /* falls through */\n case LEN:\n if (have >= 6 && left >= 258) {\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n inflate_fast(strm, _out);\n //--- LOAD() ---\n put = strm.next_out;\n output = strm.output;\n left = strm.avail_out;\n next = strm.next_in;\n input = strm.input;\n have = strm.avail_in;\n hold = state.hold;\n bits = state.bits;\n //---\n\n if (state.mode === TYPE) {\n state.back = -1;\n }\n break;\n }\n state.back = 0;\n for (;;) {\n here = state.lencode[hold & ((1 << state.lenbits) - 1)]; /*BITS(state.lenbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if (here_bits <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if (here_op && (here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.lencode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n state.length = here_val;\n if (here_op === 0) {\n //Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?\n // \"inflate: literal '%c'\\n\" :\n // \"inflate: literal 0x%02x\\n\", here.val));\n state.mode = LIT;\n break;\n }\n if (here_op & 32) {\n //Tracevv((stderr, \"inflate: end of block\\n\"));\n state.back = -1;\n state.mode = TYPE;\n break;\n }\n if (here_op & 64) {\n strm.msg = 'invalid literal/length code';\n state.mode = BAD;\n break;\n }\n state.extra = here_op & 15;\n state.mode = LENEXT;\n /* falls through */\n case LENEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.length += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n //Tracevv((stderr, \"inflate: length %u\\n\", state.length));\n state.was = state.length;\n state.mode = DIST;\n /* falls through */\n case DIST:\n for (;;) {\n here = state.distcode[hold & ((1 << state.distbits) - 1)];/*BITS(state.distbits)*/\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n if ((here_op & 0xf0) === 0) {\n last_bits = here_bits;\n last_op = here_op;\n last_val = here_val;\n for (;;) {\n here = state.distcode[last_val +\n ((hold & ((1 << (last_bits + last_op)) - 1))/*BITS(last.bits + last.op)*/ >> last_bits)];\n here_bits = here >>> 24;\n here_op = (here >>> 16) & 0xff;\n here_val = here & 0xffff;\n\n if ((last_bits + here_bits) <= bits) { break; }\n //--- PULLBYTE() ---//\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n //---//\n }\n //--- DROPBITS(last.bits) ---//\n hold >>>= last_bits;\n bits -= last_bits;\n //---//\n state.back += last_bits;\n }\n //--- DROPBITS(here.bits) ---//\n hold >>>= here_bits;\n bits -= here_bits;\n //---//\n state.back += here_bits;\n if (here_op & 64) {\n strm.msg = 'invalid distance code';\n state.mode = BAD;\n break;\n }\n state.offset = here_val;\n state.extra = (here_op) & 15;\n state.mode = DISTEXT;\n /* falls through */\n case DISTEXT:\n if (state.extra) {\n //=== NEEDBITS(state.extra);\n n = state.extra;\n while (bits < n) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n state.offset += hold & ((1 << state.extra) - 1)/*BITS(state.extra)*/;\n //--- DROPBITS(state.extra) ---//\n hold >>>= state.extra;\n bits -= state.extra;\n //---//\n state.back += state.extra;\n }\n//#ifdef INFLATE_STRICT\n if (state.offset > state.dmax) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n//#endif\n //Tracevv((stderr, \"inflate: distance %u\\n\", state.offset));\n state.mode = MATCH;\n /* falls through */\n case MATCH:\n if (left === 0) { break inf_leave; }\n copy = _out - left;\n if (state.offset > copy) { /* copy from window */\n copy = state.offset - copy;\n if (copy > state.whave) {\n if (state.sane) {\n strm.msg = 'invalid distance too far back';\n state.mode = BAD;\n break;\n }\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n//#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR\n// Trace((stderr, \"inflate.c too far\\n\"));\n// copy -= state.whave;\n// if (copy > state.length) { copy = state.length; }\n// if (copy > left) { copy = left; }\n// left -= copy;\n// state.length -= copy;\n// do {\n// output[put++] = 0;\n// } while (--copy);\n// if (state.length === 0) { state.mode = LEN; }\n// break;\n//#endif\n }\n if (copy > state.wnext) {\n copy -= state.wnext;\n from = state.wsize - copy;\n }\n else {\n from = state.wnext - copy;\n }\n if (copy > state.length) { copy = state.length; }\n from_source = state.window;\n }\n else { /* copy from output */\n from_source = output;\n from = put - state.offset;\n copy = state.length;\n }\n if (copy > left) { copy = left; }\n left -= copy;\n state.length -= copy;\n do {\n output[put++] = from_source[from++];\n } while (--copy);\n if (state.length === 0) { state.mode = LEN; }\n break;\n case LIT:\n if (left === 0) { break inf_leave; }\n output[put++] = state.length;\n left--;\n state.mode = LEN;\n break;\n case CHECK:\n if (state.wrap) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n // Use '|' instead of '+' to make sure that result is signed\n hold |= input[next++] << bits;\n bits += 8;\n }\n //===//\n _out -= left;\n strm.total_out += _out;\n state.total += _out;\n if (_out) {\n strm.adler = state.check =\n /*UPDATE(state.check, put - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n\n }\n _out = left;\n // NB: crc32 stored as signed 32-bit int, zswap32 returns signed too\n if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n strm.msg = 'incorrect data check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: check matches trailer\\n\"));\n }\n state.mode = LENGTH;\n /* falls through */\n case LENGTH:\n if (state.wrap && state.flags) {\n //=== NEEDBITS(32);\n while (bits < 32) {\n if (have === 0) { break inf_leave; }\n have--;\n hold += input[next++] << bits;\n bits += 8;\n }\n //===//\n if (hold !== (state.total & 0xffffffff)) {\n strm.msg = 'incorrect length check';\n state.mode = BAD;\n break;\n }\n //=== INITBITS();\n hold = 0;\n bits = 0;\n //===//\n //Tracev((stderr, \"inflate: length matches trailer\\n\"));\n }\n state.mode = DONE;\n /* falls through */\n case DONE:\n ret = Z_STREAM_END;\n break inf_leave;\n case BAD:\n ret = Z_DATA_ERROR;\n break inf_leave;\n case MEM:\n return Z_MEM_ERROR;\n case SYNC:\n /* falls through */\n default:\n return Z_STREAM_ERROR;\n }\n }\n\n // inf_leave <- here is real place for \"goto inf_leave\", emulated via \"break inf_leave\"\n\n /*\n Return from inflate(), updating the total counts and the check value.\n If there was no progress during the inflate() call, return a buffer\n error. Call updatewindow() to create and/or update the window state.\n Note: a memory error from inflate() is non-recoverable.\n */\n\n //--- RESTORE() ---\n strm.next_out = put;\n strm.avail_out = left;\n strm.next_in = next;\n strm.avail_in = have;\n state.hold = hold;\n state.bits = bits;\n //---\n\n if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n (state.mode < CHECK || flush !== Z_FINISH))) {\n if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n }\n _in -= strm.avail_in;\n _out -= strm.avail_out;\n strm.total_in += _in;\n strm.total_out += _out;\n state.total += _out;\n if (state.wrap && _out) {\n strm.adler = state.check = /*UPDATE(state.check, strm.next_out - _out, _out);*/\n (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n }\n strm.data_type = state.bits + (state.last ? 64 : 0) +\n (state.mode === TYPE ? 128 : 0) +\n (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n ret = Z_BUF_ERROR;\n }\n return ret;\n }\n\n function inflateEnd(strm) {\n\n if (!strm || !strm.state /*|| strm->zfree == (free_func)0*/) {\n return Z_STREAM_ERROR;\n }\n\n var state = strm.state;\n if (state.window) {\n state.window = null;\n }\n strm.state = null;\n return Z_OK;\n }\n\n function inflateGetHeader(strm, head) {\n var state;\n\n /* check state */\n if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n state = strm.state;\n if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n\n /* save header structure */\n state.head = head;\n head.done = false;\n return Z_OK;\n }\n\n function inflateSetDictionary(strm, dictionary) {\n var dictLength = dictionary.length;\n\n var state;\n var dictid;\n var ret;\n\n /* check state */\n if (!strm /* == Z_NULL */ || !strm.state /* == Z_NULL */) { return Z_STREAM_ERROR; }\n state = strm.state;\n\n if (state.wrap !== 0 && state.mode !== DICT) {\n return Z_STREAM_ERROR;\n }\n\n /* check for correct dictionary identifier */\n if (state.mode === DICT) {\n dictid = 1; /* adler32(0, null, 0)*/\n /* dictid = adler32(dictid, dictionary, dictLength); */\n dictid = adler32(dictid, dictionary, dictLength, 0);\n if (dictid !== state.check) {\n return Z_DATA_ERROR;\n }\n }\n /* copy dictionary to window using updatewindow(), which will amend the\n existing dictionary if appropriate */\n ret = updatewindow(strm, dictionary, dictLength, dictLength);\n if (ret) {\n state.mode = MEM;\n return Z_MEM_ERROR;\n }\n state.havedict = 1;\n // Tracev((stderr, \"inflate: dictionary set\\n\"));\n return Z_OK;\n }\n\n exports.inflateReset = inflateReset;\n exports.inflateReset2 = inflateReset2;\n exports.inflateResetKeep = inflateResetKeep;\n exports.inflateInit = inflateInit;\n exports.inflateInit2 = inflateInit2;\n exports.inflate = inflate;\n exports.inflateEnd = inflateEnd;\n exports.inflateGetHeader = inflateGetHeader;\n exports.inflateSetDictionary = inflateSetDictionary;\n exports.inflateInfo = 'pako inflate (from Nodeca project)';\n\n /* Not implemented\nexports.inflateCopy = inflateCopy;\nexports.inflateGetDictionary = inflateGetDictionary;\nexports.inflateMark = inflateMark;\nexports.inflatePrime = inflatePrime;\nexports.inflateSync = inflateSync;\nexports.inflateSyncPoint = inflateSyncPoint;\nexports.inflateUndermine = inflateUndermine;\n*/\n\n },{\"../utils/common\":3,\"./adler32\":5,\"./crc32\":7,\"./inffast\":10,\"./inftrees\":12}],12:[function(require,module,exports){\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n var utils = require('../utils/common');\n\n var MAXBITS = 15;\n var ENOUGH_LENS = 852;\n var ENOUGH_DISTS = 592;\n//var ENOUGH = (ENOUGH_LENS+ENOUGH_DISTS);\n\n var CODES = 0;\n var LENS = 1;\n var DISTS = 2;\n\n var lbase = [ /* Length codes 257..285 base */\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n ];\n\n var lext = [ /* Length codes 257..285 extra */\n 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n ];\n\n var dbase = [ /* Distance codes 0..29 base */\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577, 0, 0\n ];\n\n var dext = [ /* Distance codes 0..29 extra */\n 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n 23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n 28, 28, 29, 29, 64, 64\n ];\n\n module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n {\n var bits = opts.bits;\n //here = opts.here; /* table entry for duplication */\n\n var len = 0; /* a code's length in bits */\n var sym = 0; /* index of code symbols */\n var min = 0, max = 0; /* minimum and maximum code lengths */\n var root = 0; /* number of index bits for root table */\n var curr = 0; /* number of index bits for current table */\n var drop = 0; /* code bits to drop for sub-table */\n var left = 0; /* number of prefix codes available */\n var used = 0; /* code entries in table used */\n var huff = 0; /* Huffman code */\n var incr; /* for incrementing code, index */\n var fill; /* index for replicating entries */\n var low; /* low bits for current root entry */\n var mask; /* mask for low root bits */\n var next; /* next available space in table */\n var base = null; /* base value table to use */\n var base_index = 0;\n// var shoextra; /* extra bits table to use */\n var end; /* use base and extra for symbol > end */\n var count = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* number of codes of each length */\n var offs = new utils.Buf16(MAXBITS + 1); //[MAXBITS+1]; /* offsets in table for each length */\n var extra = null;\n var extra_index = 0;\n\n var here_bits, here_op, here_val;\n\n /*\n Process a set of code lengths to create a canonical Huffman code. The\n code lengths are lens[0..codes-1]. Each length corresponds to the\n symbols 0..codes-1. The Huffman code is generated by first sorting the\n symbols by length from short to long, and retaining the symbol order\n for codes with equal lengths. Then the code starts with all zero bits\n for the first code of the shortest length, and the codes are integer\n increments for the same length, and zeros are appended as the length\n increases. For the deflate format, these bits are stored backwards\n from their more natural integer increment ordering, and so when the\n decoding tables are built in the large loop below, the integer codes\n are incremented backwards.\n\n This routine assumes, but does not check, that all of the entries in\n lens[] are in the range 0..MAXBITS. The caller must assure this.\n 1..MAXBITS is interpreted as that code length. zero means that that\n symbol does not occur in this code.\n\n The codes are sorted by computing a count of codes for each length,\n creating from that a table of starting indices for each length in the\n sorted table, and then entering the symbols in order in the sorted\n table. The sorted table is work[], with that space being provided by\n the caller.\n\n The length counts are used for other purposes as well, i.e. finding\n the minimum and maximum length codes, determining if there are any\n codes at all, checking for a valid set of lengths, and looking ahead\n at length counts to determine sub-table sizes when building the\n decoding tables.\n */\n\n /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */\n for (len = 0; len <= MAXBITS; len++) {\n count[len] = 0;\n }\n for (sym = 0; sym < codes; sym++) {\n count[lens[lens_index + sym]]++;\n }\n\n /* bound code lengths, force root to be within code lengths */\n root = bits;\n for (max = MAXBITS; max >= 1; max--) {\n if (count[max] !== 0) { break; }\n }\n if (root > max) {\n root = max;\n }\n if (max === 0) { /* no symbols to code at all */\n //table.op[opts.table_index] = 64; //here.op = (var char)64; /* invalid code marker */\n //table.bits[opts.table_index] = 1; //here.bits = (var char)1;\n //table.val[opts.table_index++] = 0; //here.val = (var short)0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n\n //table.op[opts.table_index] = 64;\n //table.bits[opts.table_index] = 1;\n //table.val[opts.table_index++] = 0;\n table[table_index++] = (1 << 24) | (64 << 16) | 0;\n\n opts.bits = 1;\n return 0; /* no symbols, but wait for decoding to report error */\n }\n for (min = 1; min < max; min++) {\n if (count[min] !== 0) { break; }\n }\n if (root < min) {\n root = min;\n }\n\n /* check for an over-subscribed or incomplete set of lengths */\n left = 1;\n for (len = 1; len <= MAXBITS; len++) {\n left <<= 1;\n left -= count[len];\n if (left < 0) {\n return -1;\n } /* over-subscribed */\n }\n if (left > 0 && (type === CODES || max !== 1)) {\n return -1; /* incomplete set */\n }\n\n /* generate offsets into symbol table for each length for sorting */\n offs[1] = 0;\n for (len = 1; len < MAXBITS; len++) {\n offs[len + 1] = offs[len] + count[len];\n }\n\n /* sort symbols by length, by symbol order within each length */\n for (sym = 0; sym < codes; sym++) {\n if (lens[lens_index + sym] !== 0) {\n work[offs[lens[lens_index + sym]]++] = sym;\n }\n }\n\n /*\n Create and fill in decoding tables. In this loop, the table being\n filled is at next and has curr index bits. The code being used is huff\n with length len. That code is converted to an index by dropping drop\n bits off of the bottom. For codes where len is less than drop + curr,\n those top drop + curr - len bits are incremented through all values to\n fill the table with replicated entries.\n\n root is the number of index bits for the root table. When len exceeds\n root, sub-tables are created pointed to by the root entry with an index\n of the low root bits of huff. This is saved in low to check for when a\n new sub-table should be started. drop is zero when the root table is\n being filled, and drop is root when sub-tables are being filled.\n\n When a new sub-table is needed, it is necessary to look ahead in the\n code lengths to determine what size sub-table is needed. The length\n counts are used for this, and so count[] is decremented as codes are\n entered in the tables.\n\n used keeps track of how many table entries have been allocated from the\n provided *table space. It is checked for LENS and DIST tables against\n the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in\n the initial root table size constants. See the comments in inftrees.h\n for more information.\n\n sym increments through all symbols, and the loop terminates when\n all codes of length max, i.e. all codes, have been processed. This\n routine permits incomplete codes, so another loop after this one fills\n in the rest of the decoding tables with invalid code markers.\n */\n\n /* set up for code type */\n // poor man optimization - use if-else instead of switch,\n // to avoid deopts in old v8\n if (type === CODES) {\n base = extra = work; /* dummy value--not used */\n end = 19;\n\n } else if (type === LENS) {\n base = lbase;\n base_index -= 257;\n extra = lext;\n extra_index -= 257;\n end = 256;\n\n } else { /* DISTS */\n base = dbase;\n extra = dext;\n end = -1;\n }\n\n /* initialize opts for loop */\n huff = 0; /* starting code */\n sym = 0; /* starting code symbol */\n len = min; /* starting code length */\n next = table_index; /* current table to fill in */\n curr = root; /* current table index bits */\n drop = 0; /* current bits to drop from code for index */\n low = -1; /* trigger new sub-table when len > root */\n used = 1 << root; /* use root table entries */\n mask = used - 1; /* mask for comparing low */\n\n /* check available table space */\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* process all codes and make table entries */\n for (;;) {\n /* create table entry */\n here_bits = len - drop;\n if (work[sym] < end) {\n here_op = 0;\n here_val = work[sym];\n }\n else if (work[sym] > end) {\n here_op = extra[extra_index + work[sym]];\n here_val = base[base_index + work[sym]];\n }\n else {\n here_op = 32 + 64; /* end of block */\n here_val = 0;\n }\n\n /* replicate for those indices with low len bits equal to huff */\n incr = 1 << (len - drop);\n fill = 1 << curr;\n min = fill; /* save offset to next table */\n do {\n fill -= incr;\n table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n } while (fill !== 0);\n\n /* backwards increment the len-bit code huff */\n incr = 1 << (len - 1);\n while (huff & incr) {\n incr >>= 1;\n }\n if (incr !== 0) {\n huff &= incr - 1;\n huff += incr;\n } else {\n huff = 0;\n }\n\n /* go to next symbol, update count, len */\n sym++;\n if (--count[len] === 0) {\n if (len === max) { break; }\n len = lens[lens_index + work[sym]];\n }\n\n /* create new sub-table if needed */\n if (len > root && (huff & mask) !== low) {\n /* if first time, transition to sub-tables */\n if (drop === 0) {\n drop = root;\n }\n\n /* increment past last table */\n next += min; /* here min is 1 << curr */\n\n /* determine length of next table */\n curr = len - drop;\n left = 1 << curr;\n while (curr + drop < max) {\n left -= count[curr + drop];\n if (left <= 0) { break; }\n curr++;\n left <<= 1;\n }\n\n /* check for enough space */\n used += 1 << curr;\n if ((type === LENS && used > ENOUGH_LENS) ||\n (type === DISTS && used > ENOUGH_DISTS)) {\n return 1;\n }\n\n /* point entry in root table to sub-table */\n low = huff & mask;\n /*table.op[low] = curr;\n table.bits[low] = root;\n table.val[low] = next - opts.table_index;*/\n table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n }\n }\n\n /* fill in remaining table entry if code is incomplete (guaranteed to have\n at most one remaining entry, since if the code is incomplete, the\n maximum code length that was allowed to get this far is one bit) */\n if (huff !== 0) {\n //table.op[next + huff] = 64; /* invalid code marker */\n //table.bits[next + huff] = len - drop;\n //table.val[next + huff] = 0;\n table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n }\n\n /* set return parameters */\n //opts.table_index += used;\n opts.bits = root;\n return 0;\n };\n\n },{\"../utils/common\":3}],13:[function(require,module,exports){\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n module.exports = {\n 2: 'need dictionary', /* Z_NEED_DICT 2 */\n 1: 'stream end', /* Z_STREAM_END 1 */\n 0: '', /* Z_OK 0 */\n '-1': 'file error', /* Z_ERRNO (-1) */\n '-2': 'stream error', /* Z_STREAM_ERROR (-2) */\n '-3': 'data error', /* Z_DATA_ERROR (-3) */\n '-4': 'insufficient memory', /* Z_MEM_ERROR (-4) */\n '-5': 'buffer error', /* Z_BUF_ERROR (-5) */\n '-6': 'incompatible version' /* Z_VERSION_ERROR (-6) */\n };\n\n },{}],14:[function(require,module,exports){\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n /* eslint-disable space-unary-ops */\n\n var utils = require('../utils/common');\n\n /* Public constants ==========================================================*/\n /* ===========================================================================*/\n\n\n//var Z_FILTERED = 1;\n//var Z_HUFFMAN_ONLY = 2;\n//var Z_RLE = 3;\n var Z_FIXED = 4;\n//var Z_DEFAULT_STRATEGY = 0;\n\n /* Possible values of the data_type field (though see inflate()) */\n var Z_BINARY = 0;\n var Z_TEXT = 1;\n//var Z_ASCII = 1; // = Z_TEXT\n var Z_UNKNOWN = 2;\n\n /*============================================================================*/\n\n\n function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n\n// From zutil.h\n\n var STORED_BLOCK = 0;\n var STATIC_TREES = 1;\n var DYN_TREES = 2;\n /* The three kinds of block type */\n\n var MIN_MATCH = 3;\n var MAX_MATCH = 258;\n /* The minimum and maximum match lengths */\n\n// From deflate.h\n /* ===========================================================================\n * Internal compression state.\n */\n\n var LENGTH_CODES = 29;\n /* number of length codes, not counting the special END_BLOCK code */\n\n var LITERALS = 256;\n /* number of literal bytes 0..255 */\n\n var L_CODES = LITERALS + 1 + LENGTH_CODES;\n /* number of Literal or Length codes, including the END_BLOCK code */\n\n var D_CODES = 30;\n /* number of distance codes */\n\n var BL_CODES = 19;\n /* number of codes used to transfer the bit lengths */\n\n var HEAP_SIZE = 2 * L_CODES + 1;\n /* maximum heap size */\n\n var MAX_BITS = 15;\n /* All codes must not exceed MAX_BITS bits */\n\n var Buf_size = 16;\n /* size of bit buffer in bi_buf */\n\n\n /* ===========================================================================\n * Constants\n */\n\n var MAX_BL_BITS = 7;\n /* Bit length codes must not exceed MAX_BL_BITS bits */\n\n var END_BLOCK = 256;\n /* end of block literal code */\n\n var REP_3_6 = 16;\n /* repeat previous bit length 3-6 times (2 bits of repeat count) */\n\n var REPZ_3_10 = 17;\n /* repeat a zero length 3-10 times (3 bits of repeat count) */\n\n var REPZ_11_138 = 18;\n /* repeat a zero length 11-138 times (7 bits of repeat count) */\n\n /* eslint-disable comma-spacing,array-bracket-spacing */\n var extra_lbits = /* extra bits for each length code */\n [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n\n var extra_dbits = /* extra bits for each distance code */\n [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n\n var extra_blbits = /* extra bits for each bit length code */\n [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n\n var bl_order =\n [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n /* eslint-enable comma-spacing,array-bracket-spacing */\n\n /* The lengths of the bit length codes are sent in order of decreasing\n * probability, to avoid transmitting the lengths for unused bit length codes.\n */\n\n /* ===========================================================================\n * Local data. These are initialized only once.\n */\n\n// We pre-fill arrays with 0 to avoid uninitialized gaps\n\n var DIST_CODE_LEN = 512; /* see definition of array dist_code below */\n\n// !!!! Use flat array instead of structure, Freq = i*2, Len = i*2+1\n var static_ltree = new Array((L_CODES + 2) * 2);\n zero(static_ltree);\n /* The static literal tree. Since the bit lengths are imposed, there is no\n * need for the L_CODES extra codes used during heap construction. However\n * The codes 286 and 287 are needed to build a canonical tree (see _tr_init\n * below).\n */\n\n var static_dtree = new Array(D_CODES * 2);\n zero(static_dtree);\n /* The static distance tree. (Actually a trivial tree since all codes use\n * 5 bits.)\n */\n\n var _dist_code = new Array(DIST_CODE_LEN);\n zero(_dist_code);\n /* Distance codes. The first 256 values correspond to the distances\n * 3 .. 258, the last 256 values correspond to the top 8 bits of\n * the 15 bit distances.\n */\n\n var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1);\n zero(_length_code);\n /* length code for each normalized match length (0 == MIN_MATCH) */\n\n var base_length = new Array(LENGTH_CODES);\n zero(base_length);\n /* First normalized length for each code (0 = MIN_MATCH) */\n\n var base_dist = new Array(D_CODES);\n zero(base_dist);\n /* First normalized distance for each code (0 = distance of 1) */\n\n\n function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n\n this.static_tree = static_tree; /* static tree or NULL */\n this.extra_bits = extra_bits; /* extra bits for each code or NULL */\n this.extra_base = extra_base; /* base index for extra_bits */\n this.elems = elems; /* max number of elements in the tree */\n this.max_length = max_length; /* max bit length for the codes */\n\n // show if `static_tree` has data or dummy - needed for monomorphic objects\n this.has_stree = static_tree && static_tree.length;\n }\n\n\n var static_l_desc;\n var static_d_desc;\n var static_bl_desc;\n\n\n function TreeDesc(dyn_tree, stat_desc) {\n this.dyn_tree = dyn_tree; /* the dynamic tree */\n this.max_code = 0; /* largest code with non zero frequency */\n this.stat_desc = stat_desc; /* the corresponding static tree */\n }\n\n\n\n function d_code(dist) {\n return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n }\n\n\n /* ===========================================================================\n * Output a short LSB first on the stream.\n * IN assertion: there is enough room in pendingBuf.\n */\n function put_short(s, w) {\n// put_byte(s, (uch)((w) & 0xff));\n// put_byte(s, (uch)((ush)(w) >> 8));\n s.pending_buf[s.pending++] = (w) & 0xff;\n s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n }\n\n\n /* ===========================================================================\n * Send a value on a given number of bits.\n * IN assertion: length <= 16 and value fits in length bits.\n */\n function send_bits(s, value, length) {\n if (s.bi_valid > (Buf_size - length)) {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n put_short(s, s.bi_buf);\n s.bi_buf = value >> (Buf_size - s.bi_valid);\n s.bi_valid += length - Buf_size;\n } else {\n s.bi_buf |= (value << s.bi_valid) & 0xffff;\n s.bi_valid += length;\n }\n }\n\n\n function send_code(s, c, tree) {\n send_bits(s, tree[c * 2]/*.Code*/, tree[c * 2 + 1]/*.Len*/);\n }\n\n\n /* ===========================================================================\n * Reverse the first len bits of a code, using straightforward code (a faster\n * method would use a table)\n * IN assertion: 1 <= len <= 15\n */\n function bi_reverse(code, len) {\n var res = 0;\n do {\n res |= code & 1;\n code >>>= 1;\n res <<= 1;\n } while (--len > 0);\n return res >>> 1;\n }\n\n\n /* ===========================================================================\n * Flush the bit buffer, keeping at most 7 bits in it.\n */\n function bi_flush(s) {\n if (s.bi_valid === 16) {\n put_short(s, s.bi_buf);\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n } else if (s.bi_valid >= 8) {\n s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n s.bi_buf >>= 8;\n s.bi_valid -= 8;\n }\n }\n\n\n /* ===========================================================================\n * Compute the optimal bit lengths for a tree and update the total bit length\n * for the current block.\n * IN assertion: the fields freq and dad are set, heap[heap_max] and\n * above are the tree nodes sorted by increasing frequency.\n * OUT assertions: the field len is set to the optimal bit length, the\n * array bl_count contains the frequencies for each bit length.\n * The length opt_len is updated; static_len is also updated if stree is\n * not null.\n */\n function gen_bitlen(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n {\n var tree = desc.dyn_tree;\n var max_code = desc.max_code;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var extra = desc.stat_desc.extra_bits;\n var base = desc.stat_desc.extra_base;\n var max_length = desc.stat_desc.max_length;\n var h; /* heap index */\n var n, m; /* iterate over the tree elements */\n var bits; /* bit length */\n var xbits; /* extra bits */\n var f; /* frequency */\n var overflow = 0; /* number of elements with bit length too large */\n\n for (bits = 0; bits <= MAX_BITS; bits++) {\n s.bl_count[bits] = 0;\n }\n\n /* In a first pass, compute the optimal bit lengths (which may\n * overflow in the case of the bit length tree).\n */\n tree[s.heap[s.heap_max] * 2 + 1]/*.Len*/ = 0; /* root of the heap */\n\n for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n n = s.heap[h];\n bits = tree[tree[n * 2 + 1]/*.Dad*/ * 2 + 1]/*.Len*/ + 1;\n if (bits > max_length) {\n bits = max_length;\n overflow++;\n }\n tree[n * 2 + 1]/*.Len*/ = bits;\n /* We overwrite tree[n].Dad which is no longer needed */\n\n if (n > max_code) { continue; } /* not a leaf node */\n\n s.bl_count[bits]++;\n xbits = 0;\n if (n >= base) {\n xbits = extra[n - base];\n }\n f = tree[n * 2]/*.Freq*/;\n s.opt_len += f * (bits + xbits);\n if (has_stree) {\n s.static_len += f * (stree[n * 2 + 1]/*.Len*/ + xbits);\n }\n }\n if (overflow === 0) { return; }\n\n // Trace((stderr,\"\\nbit length overflow\\n\"));\n /* This happens for example on obj2 and pic of the Calgary corpus */\n\n /* Find the first bit length which could increase: */\n do {\n bits = max_length - 1;\n while (s.bl_count[bits] === 0) { bits--; }\n s.bl_count[bits]--; /* move one leaf down the tree */\n s.bl_count[bits + 1] += 2; /* move one overflow item as its brother */\n s.bl_count[max_length]--;\n /* The brother of the overflow item also moves one step up,\n * but this does not affect bl_count[max_length]\n */\n overflow -= 2;\n } while (overflow > 0);\n\n /* Now recompute all bit lengths, scanning in increasing frequency.\n * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all\n * lengths instead of fixing only the wrong ones. This idea is taken\n * from 'ar' written by Haruhiko Okumura.)\n */\n for (bits = max_length; bits !== 0; bits--) {\n n = s.bl_count[bits];\n while (n !== 0) {\n m = s.heap[--h];\n if (m > max_code) { continue; }\n if (tree[m * 2 + 1]/*.Len*/ !== bits) {\n // Trace((stderr,\"code %d bits %d->%d\\n\", m, tree[m].Len, bits));\n s.opt_len += (bits - tree[m * 2 + 1]/*.Len*/) * tree[m * 2]/*.Freq*/;\n tree[m * 2 + 1]/*.Len*/ = bits;\n }\n n--;\n }\n }\n }\n\n\n /* ===========================================================================\n * Generate the codes for a given tree and bit counts (which need not be\n * optimal).\n * IN assertion: the array bl_count contains the bit length statistics for\n * the given tree and the field len is set for all tree elements.\n * OUT assertion: the field code is set for all tree elements of non\n * zero code length.\n */\n function gen_codes(tree, max_code, bl_count)\n// ct_data *tree; /* the tree to decorate */\n// int max_code; /* largest code with non zero frequency */\n// ushf *bl_count; /* number of codes at each bit length */\n {\n var next_code = new Array(MAX_BITS + 1); /* next code value for each bit length */\n var code = 0; /* running code value */\n var bits; /* bit index */\n var n; /* code index */\n\n /* The distribution counts are first used to generate the code values\n * without bit reversal.\n */\n for (bits = 1; bits <= MAX_BITS; bits++) {\n next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n }\n /* Check that the bit counts in bl_count are consistent. The last code\n * must be all ones.\n */\n //Assert (code + bl_count[MAX_BITS]-1 == (1< length code (0..28) */\n length = 0;\n for (code = 0; code < LENGTH_CODES - 1; code++) {\n base_length[code] = length;\n for (n = 0; n < (1 << extra_lbits[code]); n++) {\n _length_code[length++] = code;\n }\n }\n //Assert (length == 256, \"tr_static_init: length != 256\");\n /* Note that the length 255 (match length 258) can be represented\n * in two different ways: code 284 + 5 bits or code 285, so we\n * overwrite length_code[255] to use the best encoding:\n */\n _length_code[length - 1] = code;\n\n /* Initialize the mapping dist (0..32K) -> dist code (0..29) */\n dist = 0;\n for (code = 0; code < 16; code++) {\n base_dist[code] = dist;\n for (n = 0; n < (1 << extra_dbits[code]); n++) {\n _dist_code[dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: dist != 256\");\n dist >>= 7; /* from now on, all distances are divided by 128 */\n for (; code < D_CODES; code++) {\n base_dist[code] = dist << 7;\n for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n _dist_code[256 + dist++] = code;\n }\n }\n //Assert (dist == 256, \"tr_static_init: 256+dist != 512\");\n\n /* Construct the codes of the static literal tree */\n for (bits = 0; bits <= MAX_BITS; bits++) {\n bl_count[bits] = 0;\n }\n\n n = 0;\n while (n <= 143) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n while (n <= 255) {\n static_ltree[n * 2 + 1]/*.Len*/ = 9;\n n++;\n bl_count[9]++;\n }\n while (n <= 279) {\n static_ltree[n * 2 + 1]/*.Len*/ = 7;\n n++;\n bl_count[7]++;\n }\n while (n <= 287) {\n static_ltree[n * 2 + 1]/*.Len*/ = 8;\n n++;\n bl_count[8]++;\n }\n /* Codes 286 and 287 do not exist, but we must include them in the\n * tree construction to get a canonical Huffman tree (longest code\n * all ones)\n */\n gen_codes(static_ltree, L_CODES + 1, bl_count);\n\n /* The static distance tree is trivial: */\n for (n = 0; n < D_CODES; n++) {\n static_dtree[n * 2 + 1]/*.Len*/ = 5;\n static_dtree[n * 2]/*.Code*/ = bi_reverse(n, 5);\n }\n\n // Now data ready and we can init static trees\n static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS);\n static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS);\n\n //static_init_done = true;\n }\n\n\n /* ===========================================================================\n * Initialize a new block.\n */\n function init_block(s) {\n var n; /* iterates over tree elements */\n\n /* Initialize the trees. */\n for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2]/*.Freq*/ = 0; }\n for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2]/*.Freq*/ = 0; }\n\n s.dyn_ltree[END_BLOCK * 2]/*.Freq*/ = 1;\n s.opt_len = s.static_len = 0;\n s.last_lit = s.matches = 0;\n }\n\n\n /* ===========================================================================\n * Flush the bit buffer and align the output on a byte boundary\n */\n function bi_windup(s)\n {\n if (s.bi_valid > 8) {\n put_short(s, s.bi_buf);\n } else if (s.bi_valid > 0) {\n //put_byte(s, (Byte)s->bi_buf);\n s.pending_buf[s.pending++] = s.bi_buf;\n }\n s.bi_buf = 0;\n s.bi_valid = 0;\n }\n\n /* ===========================================================================\n * Copy a stored block, storing first the length and its\n * one's complement if requested.\n */\n function copy_block(s, buf, len, header)\n//DeflateState *s;\n//charf *buf; /* the input data */\n//unsigned len; /* its length */\n//int header; /* true if block header must be written */\n {\n bi_windup(s); /* align on byte boundary */\n\n if (header) {\n put_short(s, len);\n put_short(s, ~len);\n }\n// while (len--) {\n// put_byte(s, *buf++);\n// }\n utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n s.pending += len;\n }\n\n /* ===========================================================================\n * Compares to subtrees, using the tree depth as tie breaker when\n * the subtrees have equal frequency. This minimizes the worst case length.\n */\n function smaller(tree, n, m, depth) {\n var _n2 = n * 2;\n var _m2 = m * 2;\n return (tree[_n2]/*.Freq*/ < tree[_m2]/*.Freq*/ ||\n (tree[_n2]/*.Freq*/ === tree[_m2]/*.Freq*/ && depth[n] <= depth[m]));\n }\n\n /* ===========================================================================\n * Restore the heap property by moving down the tree starting at node k,\n * exchanging a node with the smallest of its two sons if necessary, stopping\n * when the heap property is re-established (each father smaller than its\n * two sons).\n */\n function pqdownheap(s, tree, k)\n// deflate_state *s;\n// ct_data *tree; /* the tree to restore */\n// int k; /* node to move down */\n {\n var v = s.heap[k];\n var j = k << 1; /* left son of k */\n while (j <= s.heap_len) {\n /* Set j to the smallest of the two sons: */\n if (j < s.heap_len &&\n smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n j++;\n }\n /* Exit if v is smaller than both sons */\n if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n\n /* Exchange v with the smallest son */\n s.heap[k] = s.heap[j];\n k = j;\n\n /* And continue down the tree, setting j to the left son of k */\n j <<= 1;\n }\n s.heap[k] = v;\n }\n\n\n// inlined manually\n// var SMALLEST = 1;\n\n /* ===========================================================================\n * Send the block data compressed using the given Huffman trees\n */\n function compress_block(s, ltree, dtree)\n// deflate_state *s;\n// const ct_data *ltree; /* literal tree */\n// const ct_data *dtree; /* distance tree */\n {\n var dist; /* distance of matched string */\n var lc; /* match length or unmatched char (if dist == 0) */\n var lx = 0; /* running index in l_buf */\n var code; /* the code to send */\n var extra; /* number of extra bits to send */\n\n if (s.last_lit !== 0) {\n do {\n dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n lc = s.pending_buf[s.l_buf + lx];\n lx++;\n\n if (dist === 0) {\n send_code(s, lc, ltree); /* send a literal byte */\n //Tracecv(isgraph(lc), (stderr,\" '%c' \", lc));\n } else {\n /* Here, lc is the match length - MIN_MATCH */\n code = _length_code[lc];\n send_code(s, code + LITERALS + 1, ltree); /* send the length code */\n extra = extra_lbits[code];\n if (extra !== 0) {\n lc -= base_length[code];\n send_bits(s, lc, extra); /* send the extra length bits */\n }\n dist--; /* dist is now the match distance - 1 */\n code = d_code(dist);\n //Assert (code < D_CODES, \"bad d_code\");\n\n send_code(s, code, dtree); /* send the distance code */\n extra = extra_dbits[code];\n if (extra !== 0) {\n dist -= base_dist[code];\n send_bits(s, dist, extra); /* send the extra distance bits */\n }\n } /* literal or match pair ? */\n\n /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */\n //Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,\n // \"pendingBuf overflow\");\n\n } while (lx < s.last_lit);\n }\n\n send_code(s, END_BLOCK, ltree);\n }\n\n\n /* ===========================================================================\n * Construct one Huffman tree and assigns the code bit strings and lengths.\n * Update the total bit length for the current block.\n * IN assertion: the field freq is set for all tree elements.\n * OUT assertions: the fields len and code are set to the optimal bit length\n * and corresponding code. The length opt_len is updated; static_len is\n * also updated if stree is not null. The field max_code is set.\n */\n function build_tree(s, desc)\n// deflate_state *s;\n// tree_desc *desc; /* the tree descriptor */\n {\n var tree = desc.dyn_tree;\n var stree = desc.stat_desc.static_tree;\n var has_stree = desc.stat_desc.has_stree;\n var elems = desc.stat_desc.elems;\n var n, m; /* iterate over heap elements */\n var max_code = -1; /* largest code with non zero frequency */\n var node; /* new node being created */\n\n /* Construct the initial heap, with least frequent element in\n * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].\n * heap[0] is not used.\n */\n s.heap_len = 0;\n s.heap_max = HEAP_SIZE;\n\n for (n = 0; n < elems; n++) {\n if (tree[n * 2]/*.Freq*/ !== 0) {\n s.heap[++s.heap_len] = max_code = n;\n s.depth[n] = 0;\n\n } else {\n tree[n * 2 + 1]/*.Len*/ = 0;\n }\n }\n\n /* The pkzip format requires that at least one distance code exists,\n * and that at least one bit should be sent even if there is only one\n * possible code. So to avoid special checks later on we force at least\n * two codes of non zero frequency.\n */\n while (s.heap_len < 2) {\n node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n tree[node * 2]/*.Freq*/ = 1;\n s.depth[node] = 0;\n s.opt_len--;\n\n if (has_stree) {\n s.static_len -= stree[node * 2 + 1]/*.Len*/;\n }\n /* node is 0 or 1 so it does not have extra bits */\n }\n desc.max_code = max_code;\n\n /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,\n * establish sub-heaps of increasing lengths:\n */\n for (n = (s.heap_len >> 1/*int /2*/); n >= 1; n--) { pqdownheap(s, tree, n); }\n\n /* Construct the Huffman tree by repeatedly combining the least two\n * frequent nodes.\n */\n node = elems; /* next internal node of the tree */\n do {\n //pqremove(s, tree, n); /* n = node of least frequency */\n /*** pqremove ***/\n n = s.heap[1/*SMALLEST*/];\n s.heap[1/*SMALLEST*/] = s.heap[s.heap_len--];\n pqdownheap(s, tree, 1/*SMALLEST*/);\n /***/\n\n m = s.heap[1/*SMALLEST*/]; /* m = node of next least frequency */\n\n s.heap[--s.heap_max] = n; /* keep the nodes sorted by frequency */\n s.heap[--s.heap_max] = m;\n\n /* Create a new node father of n and m */\n tree[node * 2]/*.Freq*/ = tree[n * 2]/*.Freq*/ + tree[m * 2]/*.Freq*/;\n s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n tree[n * 2 + 1]/*.Dad*/ = tree[m * 2 + 1]/*.Dad*/ = node;\n\n /* and insert the new node in the heap */\n s.heap[1/*SMALLEST*/] = node++;\n pqdownheap(s, tree, 1/*SMALLEST*/);\n\n } while (s.heap_len >= 2);\n\n s.heap[--s.heap_max] = s.heap[1/*SMALLEST*/];\n\n /* At this point, the fields freq and dad are set. We can now\n * generate the bit lengths.\n */\n gen_bitlen(s, desc);\n\n /* The field len is now set, we can generate the bit codes */\n gen_codes(tree, max_code, s.bl_count);\n }\n\n\n /* ===========================================================================\n * Scan a literal or distance tree to determine the frequencies of the codes\n * in the bit length tree.\n */\n function scan_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n {\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n tree[(max_code + 1) * 2 + 1]/*.Len*/ = 0xffff; /* guard */\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n s.bl_tree[curlen * 2]/*.Freq*/ += count;\n\n } else if (curlen !== 0) {\n\n if (curlen !== prevlen) { s.bl_tree[curlen * 2]/*.Freq*/++; }\n s.bl_tree[REP_3_6 * 2]/*.Freq*/++;\n\n } else if (count <= 10) {\n s.bl_tree[REPZ_3_10 * 2]/*.Freq*/++;\n\n } else {\n s.bl_tree[REPZ_11_138 * 2]/*.Freq*/++;\n }\n\n count = 0;\n prevlen = curlen;\n\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n }\n\n\n /* ===========================================================================\n * Send a literal or distance tree in compressed form, using the codes in\n * bl_tree.\n */\n function send_tree(s, tree, max_code)\n// deflate_state *s;\n// ct_data *tree; /* the tree to be scanned */\n// int max_code; /* and its largest code of non zero frequency */\n {\n var n; /* iterates over all tree elements */\n var prevlen = -1; /* last emitted length */\n var curlen; /* length of current code */\n\n var nextlen = tree[0 * 2 + 1]/*.Len*/; /* length of next code */\n\n var count = 0; /* repeat count of the current code */\n var max_count = 7; /* max repeat count */\n var min_count = 4; /* min repeat count */\n\n /* tree[max_code+1].Len = -1; */ /* guard already set */\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n }\n\n for (n = 0; n <= max_code; n++) {\n curlen = nextlen;\n nextlen = tree[(n + 1) * 2 + 1]/*.Len*/;\n\n if (++count < max_count && curlen === nextlen) {\n continue;\n\n } else if (count < min_count) {\n do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n\n } else if (curlen !== 0) {\n if (curlen !== prevlen) {\n send_code(s, curlen, s.bl_tree);\n count--;\n }\n //Assert(count >= 3 && count <= 6, \" 3_6?\");\n send_code(s, REP_3_6, s.bl_tree);\n send_bits(s, count - 3, 2);\n\n } else if (count <= 10) {\n send_code(s, REPZ_3_10, s.bl_tree);\n send_bits(s, count - 3, 3);\n\n } else {\n send_code(s, REPZ_11_138, s.bl_tree);\n send_bits(s, count - 11, 7);\n }\n\n count = 0;\n prevlen = curlen;\n if (nextlen === 0) {\n max_count = 138;\n min_count = 3;\n\n } else if (curlen === nextlen) {\n max_count = 6;\n min_count = 3;\n\n } else {\n max_count = 7;\n min_count = 4;\n }\n }\n }\n\n\n /* ===========================================================================\n * Construct the Huffman tree for the bit lengths and return the index in\n * bl_order of the last bit length code to send.\n */\n function build_bl_tree(s) {\n var max_blindex; /* index of last bit length code of non zero freq */\n\n /* Determine the bit length frequencies for literal and distance trees */\n scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n\n /* Build the bit length tree: */\n build_tree(s, s.bl_desc);\n /* opt_len now includes the length of the tree representations, except\n * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.\n */\n\n /* Determine the number of bit length codes to send. The pkzip format\n * requires that at least 4 bit length codes be sent. (appnote.txt says\n * 3 but the actual value used is 4.)\n */\n for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n if (s.bl_tree[bl_order[max_blindex] * 2 + 1]/*.Len*/ !== 0) {\n break;\n }\n }\n /* Update opt_len to include the bit length tree and counts */\n s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n //Tracev((stderr, \"\\ndyn trees: dyn %ld, stat %ld\",\n // s->opt_len, s->static_len));\n\n return max_blindex;\n }\n\n\n /* ===========================================================================\n * Send the header for a block using dynamic Huffman trees: the counts, the\n * lengths of the bit length codes, the literal tree and the distance tree.\n * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.\n */\n function send_all_trees(s, lcodes, dcodes, blcodes)\n// deflate_state *s;\n// int lcodes, dcodes, blcodes; /* number of codes for each tree */\n {\n var rank; /* index in bl_order */\n\n //Assert (lcodes >= 257 && dcodes >= 1 && blcodes >= 4, \"not enough codes\");\n //Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,\n // \"too many codes\");\n //Tracev((stderr, \"\\nbl counts: \"));\n send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */\n send_bits(s, dcodes - 1, 5);\n send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */\n for (rank = 0; rank < blcodes; rank++) {\n //Tracev((stderr, \"\\nbl code %2d \", bl_order[rank]));\n send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1]/*.Len*/, 3);\n }\n //Tracev((stderr, \"\\nbl tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_ltree, lcodes - 1); /* literal tree */\n //Tracev((stderr, \"\\nlit tree: sent %ld\", s->bits_sent));\n\n send_tree(s, s.dyn_dtree, dcodes - 1); /* distance tree */\n //Tracev((stderr, \"\\ndist tree: sent %ld\", s->bits_sent));\n }\n\n\n /* ===========================================================================\n * Check if the data type is TEXT or BINARY, using the following algorithm:\n * - TEXT if the two conditions below are satisfied:\n * a) There are no non-portable control characters belonging to the\n * \"black list\" (0..6, 14..25, 28..31).\n * b) There is at least one printable character belonging to the\n * \"white list\" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).\n * - BINARY otherwise.\n * - The following partially-portable control characters form a\n * \"gray list\" that is ignored in this detection algorithm:\n * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).\n * IN assertion: the fields Freq of dyn_ltree are set.\n */\n function detect_data_type(s) {\n /* black_mask is the bit mask of black-listed bytes\n * set bits 0..6, 14..25, and 28..31\n * 0xf3ffc07f = binary 11110011111111111100000001111111\n */\n var black_mask = 0xf3ffc07f;\n var n;\n\n /* Check for non-textual (\"black-listed\") bytes. */\n for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n if ((black_mask & 1) && (s.dyn_ltree[n * 2]/*.Freq*/ !== 0)) {\n return Z_BINARY;\n }\n }\n\n /* Check for textual (\"white-listed\") bytes. */\n if (s.dyn_ltree[9 * 2]/*.Freq*/ !== 0 || s.dyn_ltree[10 * 2]/*.Freq*/ !== 0 ||\n s.dyn_ltree[13 * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n for (n = 32; n < LITERALS; n++) {\n if (s.dyn_ltree[n * 2]/*.Freq*/ !== 0) {\n return Z_TEXT;\n }\n }\n\n /* There are no \"black-listed\" or \"white-listed\" bytes:\n * this stream either is empty or has tolerated (\"gray-listed\") bytes only.\n */\n return Z_BINARY;\n }\n\n\n var static_init_done = false;\n\n /* ===========================================================================\n * Initialize the tree data structures for a new zlib stream.\n */\n function _tr_init(s)\n {\n\n if (!static_init_done) {\n tr_static_init();\n static_init_done = true;\n }\n\n s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc);\n s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc);\n s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n\n s.bi_buf = 0;\n s.bi_valid = 0;\n\n /* Initialize the first block of the first file: */\n init_block(s);\n }\n\n\n /* ===========================================================================\n * Send a stored block\n */\n function _tr_stored_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n {\n send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); /* send block type */\n copy_block(s, buf, stored_len, true); /* with header */\n }\n\n\n /* ===========================================================================\n * Send one empty static block to give enough lookahead for inflate.\n * This takes 10 bits, of which 7 may remain in the bit buffer.\n */\n function _tr_align(s) {\n send_bits(s, STATIC_TREES << 1, 3);\n send_code(s, END_BLOCK, static_ltree);\n bi_flush(s);\n }\n\n\n /* ===========================================================================\n * Determine the best encoding for the current block: dynamic trees, static\n * trees or store, and output the encoded block to the zip file.\n */\n function _tr_flush_block(s, buf, stored_len, last)\n//DeflateState *s;\n//charf *buf; /* input block, or NULL if too old */\n//ulg stored_len; /* length of input block */\n//int last; /* one if this is the last block for a file */\n {\n var opt_lenb, static_lenb; /* opt_len and static_len in bytes */\n var max_blindex = 0; /* index of last bit length code of non zero freq */\n\n /* Build the Huffman trees unless a stored block is forced */\n if (s.level > 0) {\n\n /* Check if the file is binary or text */\n if (s.strm.data_type === Z_UNKNOWN) {\n s.strm.data_type = detect_data_type(s);\n }\n\n /* Construct the literal and distance trees */\n build_tree(s, s.l_desc);\n // Tracev((stderr, \"\\nlit data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n\n build_tree(s, s.d_desc);\n // Tracev((stderr, \"\\ndist data: dyn %ld, stat %ld\", s->opt_len,\n // s->static_len));\n /* At this point, opt_len and static_len are the total bit lengths of\n * the compressed block data, excluding the tree representations.\n */\n\n /* Build the bit length tree for the above two trees, and get the index\n * in bl_order of the last bit length code to send.\n */\n max_blindex = build_bl_tree(s);\n\n /* Determine the best encoding. Compute the block lengths in bytes. */\n opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n static_lenb = (s.static_len + 3 + 7) >>> 3;\n\n // Tracev((stderr, \"\\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u \",\n // opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,\n // s->last_lit));\n\n if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n\n } else {\n // Assert(buf != (char*)0, \"lost buf\");\n opt_lenb = static_lenb = stored_len + 5; /* force a stored block */\n }\n\n if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n /* 4: two words for the lengths */\n\n /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.\n * Otherwise we can't have processed more than WSIZE input bytes since\n * the last block flush, because compression would have been\n * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to\n * transform a block into a stored block.\n */\n _tr_stored_block(s, buf, stored_len, last);\n\n } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n\n send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n compress_block(s, static_ltree, static_dtree);\n\n } else {\n send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n compress_block(s, s.dyn_ltree, s.dyn_dtree);\n }\n // Assert (s->compressed_len == s->bits_sent, \"bad compressed size\");\n /* The above check is made mod 2^32, for files larger than 512 MB\n * and uLong implemented on 32 bits.\n */\n init_block(s);\n\n if (last) {\n bi_windup(s);\n }\n // Tracev((stderr,\"\\ncomprlen %lu(%lu) \", s->compressed_len>>3,\n // s->compressed_len-7*last));\n }\n\n /* ===========================================================================\n * Save the match info and tally the frequency counts. Return true if\n * the current block must be flushed.\n */\n function _tr_tally(s, dist, lc)\n// deflate_state *s;\n// unsigned dist; /* distance of matched string */\n// unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */\n {\n //var out_length, in_length, dcode;\n\n s.pending_buf[s.d_buf + s.last_lit * 2] = (dist >>> 8) & 0xff;\n s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n\n s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n s.last_lit++;\n\n if (dist === 0) {\n /* lc is the unmatched char */\n s.dyn_ltree[lc * 2]/*.Freq*/++;\n } else {\n s.matches++;\n /* Here, lc is the match length - MIN_MATCH */\n dist--; /* dist = match distance - 1 */\n //Assert((ush)dist < (ush)MAX_DIST(s) &&\n // (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&\n // (ush)d_code(dist) < (ush)D_CODES, \"_tr_tally: bad match\");\n\n s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]/*.Freq*/++;\n s.dyn_dtree[d_code(dist) * 2]/*.Freq*/++;\n }\n\n// (!) This block is disabled in zlib defaults,\n// don't enable it for binary compatibility\n\n//#ifdef TRUNCATE_BLOCK\n// /* Try to guess if it is profitable to stop the current block here */\n// if ((s.last_lit & 0x1fff) === 0 && s.level > 2) {\n// /* Compute an upper bound for the compressed length */\n// out_length = s.last_lit*8;\n// in_length = s.strstart - s.block_start;\n//\n// for (dcode = 0; dcode < D_CODES; dcode++) {\n// out_length += s.dyn_dtree[dcode*2]/*.Freq*/ * (5 + extra_dbits[dcode]);\n// }\n// out_length >>>= 3;\n// //Tracev((stderr,\"\\nlast_lit %u, in %ld, out ~%ld(%ld%%) \",\n// // s->last_lit, in_length, out_length,\n// // 100L - out_length*100L/in_length));\n// if (s.matches < (s.last_lit>>1)/*int /2*/ && out_length < (in_length>>1)/*int /2*/) {\n// return true;\n// }\n// }\n//#endif\n\n return (s.last_lit === s.lit_bufsize - 1);\n /* We avoid equality with lit_bufsize because of wraparound at 64K\n * on 16 bit machines and because stored blocks are restricted to\n * 64K-1 bytes.\n */\n }\n\n exports._tr_init = _tr_init;\n exports._tr_stored_block = _tr_stored_block;\n exports._tr_flush_block = _tr_flush_block;\n exports._tr_tally = _tr_tally;\n exports._tr_align = _tr_align;\n\n },{\"../utils/common\":3}],15:[function(require,module,exports){\n\n// (C) 1995-2013 Jean-loup Gailly and Mark Adler\n// (C) 2014-2017 Vitaly Puzrin and Andrey Tupitsin\n//\n// This software is provided 'as-is', without any express or implied\n// warranty. In no event will the authors be held liable for any damages\n// arising from the use of this software.\n//\n// Permission is granted to anyone to use this software for any purpose,\n// including commercial applications, and to alter it and redistribute it\n// freely, subject to the following restrictions:\n//\n// 1. The origin of this software must not be misrepresented; you must not\n// claim that you wrote the original software. If you use this software\n// in a product, an acknowledgment in the product documentation would be\n// appreciated but is not required.\n// 2. Altered source versions must be plainly marked as such, and must not be\n// misrepresented as being the original software.\n// 3. This notice may not be removed or altered from any source distribution.\n\n function ZStream() {\n /* next input byte */\n this.input = null; // JS specific, because we have no pointers\n this.next_in = 0;\n /* number of bytes available at input */\n this.avail_in = 0;\n /* total number of input bytes read so far */\n this.total_in = 0;\n /* next output byte should be put there */\n this.output = null; // JS specific, because we have no pointers\n this.next_out = 0;\n /* remaining free space at output */\n this.avail_out = 0;\n /* total number of bytes output so far */\n this.total_out = 0;\n /* last error message, NULL if no error */\n this.msg = ''/*Z_NULL*/;\n /* not visible by applications */\n this.state = null;\n /* best guess about the data type: binary or text */\n this.data_type = 2/*Z_UNKNOWN*/;\n /* adler32 value of the uncompressed data */\n this.adler = 0;\n }\n\n module.exports = ZStream;\n\n },{}],\"/\":[function(require,module,exports){\n\n var assign = require('./lib/utils/common').assign;\n\n var deflate = require('./lib/deflate');\n var inflate = require('./lib/inflate');\n var constants = require('./lib/zlib/constants');\n\n var pako = {};\n\n assign(pako, deflate, inflate, constants);\n\n module.exports = pako;\n\n },{\"./lib/deflate\":1,\"./lib/inflate\":2,\"./lib/utils/common\":3,\"./lib/zlib/constants\":6}]},{},[])(\"/\")\n});\n\nvar p = /*#__PURE__*/Object.freeze({\n __proto__: null\n});\n\n/*\n\n Parser for .XKT Format V1\n\n.XKT specifications: https://github.com/xeokit/xeokit-sdk/wiki/XKT-Format\n\n DEPRECATED\n\n */\n\nlet pako$8 = window.pako || p;\nif (!pako$8.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako$8 = pako$8.default;\n}\n\nconst decompressColor$8 = (function () {\n const color2 = new Float32Array(3);\n return function (color) {\n color2[0] = color[0] / 255.0;\n color2[1] = color[1] / 255.0;\n color2[2] = color[2] / 255.0;\n return color2;\n };\n})();\n\nfunction extract$8(elements) {\n return {\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n meshPositions: elements[4],\n meshIndices: elements[5],\n meshEdgesIndices: elements[6],\n meshColors: elements[7],\n entityIDs: elements[8],\n entityMeshes: elements[9],\n entityIsObjects: elements[10],\n positionsDecodeMatrix: elements[11]\n };\n}\n\nfunction inflate$8(deflatedData) {\n return {\n positions: new Uint16Array(pako$8.inflate(deflatedData.positions).buffer),\n normals: new Int8Array(pako$8.inflate(deflatedData.normals).buffer),\n indices: new Uint32Array(pako$8.inflate(deflatedData.indices).buffer),\n edgeIndices: new Uint32Array(pako$8.inflate(deflatedData.edgeIndices).buffer),\n meshPositions: new Uint32Array(pako$8.inflate(deflatedData.meshPositions).buffer),\n meshIndices: new Uint32Array(pako$8.inflate(deflatedData.meshIndices).buffer),\n meshEdgesIndices: new Uint32Array(pako$8.inflate(deflatedData.meshEdgesIndices).buffer),\n meshColors: new Uint8Array(pako$8.inflate(deflatedData.meshColors).buffer),\n entityIDs: pako$8.inflate(deflatedData.entityIDs, {to: 'string'}),\n entityMeshes: new Uint32Array(pako$8.inflate(deflatedData.entityMeshes).buffer),\n entityIsObjects: new Uint8Array(pako$8.inflate(deflatedData.entityIsObjects).buffer),\n positionsDecodeMatrix: new Float32Array(pako$8.inflate(deflatedData.positionsDecodeMatrix).buffer)\n };\n}\n\nfunction load$8(viewer, options, inflatedData, performanceModel) {\n\n performanceModel.positionsCompression = \"precompressed\";\n performanceModel.normalsCompression = \"precompressed\";\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n const meshPositions = inflatedData.meshPositions;\n const meshIndices = inflatedData.meshIndices;\n const meshEdgesIndices = inflatedData.meshEdgesIndices;\n const meshColors = inflatedData.meshColors;\n const entityIDs = JSON.parse(inflatedData.entityIDs);\n const entityMeshes = inflatedData.entityMeshes;\n const entityIsObjects = inflatedData.entityIsObjects;\n const numMeshes = meshPositions.length;\n const numEntities = entityMeshes.length;\n\n for (let i = 0; i < numEntities; i++) {\n\n const xktEntityId = entityIDs [i];\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(performanceModel.id, xktEntityId) : xktEntityId;\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n\n if (metaObject) {\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n }\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n const lastEntity = (i === numEntities - 1);\n const meshIds = [];\n\n for (let j = entityMeshes [i], jlen = lastEntity ? entityMeshes.length : entityMeshes [i + 1]; j < jlen; j++) {\n\n const lastMesh = (j === (numMeshes - 1));\n const meshId = entityId + \".mesh.\" + j;\n\n const color = decompressColor$8(meshColors.subarray((j * 4), (j * 4) + 3));\n const opacity = meshColors[(j * 4) + 3] / 255.0;\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positions: positions.subarray(meshPositions [j], lastMesh ? positions.length : meshPositions [j + 1]),\n normals: normals.subarray(meshPositions [j], lastMesh ? positions.length : meshPositions [j + 1]),\n indices: indices.subarray(meshIndices [j], lastMesh ? indices.length : meshIndices [j + 1]),\n edgeIndices: edgeIndices.subarray(meshEdgesIndices [j], lastMesh ? edgeIndices.length : meshEdgesIndices [j + 1]),\n positionsDecodeMatrix: inflatedData.positionsDecodeMatrix,\n color: color,\n opacity: opacity\n }));\n\n meshIds.push(meshId);\n }\n\n performanceModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: (entityIsObjects [i] === 1),\n meshIds: meshIds\n }));\n }\n}\n\n/** @private */\nconst ParserV1 = {\n version: 1,\n parse: function (viewer, options, elements, performanceModel) {\n const deflatedData = extract$8(elements);\n const inflatedData = inflate$8(deflatedData);\n load$8(viewer, options, inflatedData, performanceModel);\n }\n};\n\n/*\n\nParser for .XKT Format V2\n\nDEPRECATED\n\n.XKT specifications: https://github.com/xeokit/xeokit-sdk/wiki/XKT-Format\n\n */\n\nlet pako$7 = window.pako || p;\nif (!pako$7.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako$7 = pako$7.default;\n}\n\nfunction extract$7(elements) {\n return {\n\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n\n meshPositions: elements[4],\n meshIndices: elements[5],\n meshEdgesIndices: elements[6],\n meshColors: elements[7],\n\n entityIDs: elements[8],\n entityMeshes: elements[9],\n entityIsObjects: elements[10],\n\n positionsDecodeMatrix: elements[11],\n\n entityMeshIds: elements[12],\n entityMatrices: elements[13],\n entityUsesInstancing: elements[14]\n };\n}\n\nfunction inflate$7(deflatedData) {\n return {\n positions: new Uint16Array(pako$7.inflate(deflatedData.positions).buffer),\n normals: new Int8Array(pako$7.inflate(deflatedData.normals).buffer),\n indices: new Uint32Array(pako$7.inflate(deflatedData.indices).buffer),\n edgeIndices: new Uint32Array(pako$7.inflate(deflatedData.edgeIndices).buffer),\n\n meshPositions: new Uint32Array(pako$7.inflate(deflatedData.meshPositions).buffer),\n meshIndices: new Uint32Array(pako$7.inflate(deflatedData.meshIndices).buffer),\n meshEdgesIndices: new Uint32Array(pako$7.inflate(deflatedData.meshEdgesIndices).buffer),\n meshColors: new Uint8Array(pako$7.inflate(deflatedData.meshColors).buffer),\n\n entityIDs: pako$7.inflate(deflatedData.entityIDs, {to: 'string'}),\n entityMeshes: new Uint32Array(pako$7.inflate(deflatedData.entityMeshes).buffer),\n entityIsObjects: new Uint8Array(pako$7.inflate(deflatedData.entityIsObjects).buffer),\n\n positionsDecodeMatrix: new Float32Array(pako$7.inflate(deflatedData.positionsDecodeMatrix).buffer),\n\n entityMeshIds: new Uint32Array(pako$7.inflate(deflatedData.entityMeshIds).buffer),\n entityMatrices: new Float32Array(pako$7.inflate(deflatedData.entityMatrices).buffer),\n entityUsesInstancing: new Uint8Array(pako$7.inflate(deflatedData.entityUsesInstancing).buffer)\n };\n}\n\nconst decompressColor$7 = (function () {\n const color2 = new Float32Array(3);\n return function (color) {\n color2[0] = color[0] / 255.0;\n color2[1] = color[1] / 255.0;\n color2[2] = color[2] / 255.0;\n return color2;\n };\n})();\n\nfunction load$7(viewer, options, inflatedData, performanceModel) {\n\n performanceModel.positionsCompression = \"precompressed\";\n performanceModel.normalsCompression = \"precompressed\";\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n const meshPositions = inflatedData.meshPositions;\n const meshIndices = inflatedData.meshIndices;\n const meshEdgesIndices = inflatedData.meshEdgesIndices;\n const meshColors = inflatedData.meshColors;\n const entityIDs = JSON.parse(inflatedData.entityIDs);\n const entityMeshes = inflatedData.entityMeshes;\n const entityIsObjects = inflatedData.entityIsObjects;\n const entityMeshIds = inflatedData.entityMeshIds;\n const entityMatrices = inflatedData.entityMatrices;\n const entityUsesInstancing = inflatedData.entityUsesInstancing;\n\n const numMeshes = meshPositions.length;\n const numEntities = entityMeshes.length;\n\n const alreadyCreatedGeometries = {};\n\n for (let i = 0; i < numEntities; i++) {\n\n const xktEntityId = entityIDs [i];\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(performanceModel.id, xktEntityId) : xktEntityId;\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n const entityMatrix = entityMatrices.subarray((i * 16), (i * 16) + 16);\n\n if (metaObject) {\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n }\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n const lastEntity = (i === numEntities - 1);\n\n const meshIds = [];\n\n for (let j = entityMeshes [i], jlen = lastEntity ? entityMeshIds.length : entityMeshes [i + 1]; j < jlen; j++) {\n\n const jj = entityMeshIds [j];\n\n const lastMesh = (jj === (numMeshes - 1));\n const meshId = entityId + \".mesh.\" + jj;\n\n const color = decompressColor$7(meshColors.subarray((jj * 4), (jj * 4) + 3));\n const opacity = meshColors[(jj * 4) + 3] / 255.0;\n\n const tmpPositions = positions.subarray(meshPositions [jj], lastMesh ? positions.length : meshPositions [jj + 1]);\n const tmpNormals = normals.subarray(meshPositions [jj], lastMesh ? positions.length : meshPositions [jj + 1]);\n const tmpIndices = indices.subarray(meshIndices [jj], lastMesh ? indices.length : meshIndices [jj + 1]);\n const tmpEdgeIndices = edgeIndices.subarray(meshEdgesIndices [jj], lastMesh ? edgeIndices.length : meshEdgesIndices [jj + 1]);\n\n if (entityUsesInstancing [i] === 1) {\n\n const geometryId = \"geometry.\" + jj;\n\n if (!(geometryId in alreadyCreatedGeometries)) {\n\n performanceModel.createGeometry({\n id: geometryId,\n positions: tmpPositions,\n normals: tmpNormals,\n indices: tmpIndices,\n edgeIndices: tmpEdgeIndices,\n primitive: \"triangles\",\n positionsDecodeMatrix: inflatedData.positionsDecodeMatrix,\n });\n\n alreadyCreatedGeometries [geometryId] = true;\n }\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n color: color,\n opacity: opacity,\n matrix: entityMatrix,\n geometryId: geometryId,\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positions: tmpPositions,\n normals: tmpNormals,\n indices: tmpIndices,\n edgeIndices: tmpEdgeIndices,\n positionsDecodeMatrix: inflatedData.positionsDecodeMatrix,\n color: color,\n opacity: opacity\n }));\n\n meshIds.push(meshId);\n }\n }\n\n if (meshIds.length) {\n\n performanceModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: (entityIsObjects [i] === 1),\n meshIds: meshIds\n }));\n }\n }\n}\n\n/** @private */\nconst ParserV2 = {\n version: 2,\n parse: function (viewer, options, elements, performanceModel) {\n const deflatedData = extract$7(elements);\n const inflatedData = inflate$7(deflatedData);\n load$7(viewer, options, inflatedData, performanceModel);\n }\n};\n\n/*\n\nParser for .XKT Format V3\n\n.XKT specifications: https://github.com/xeokit/xeokit-sdk/wiki/XKT-Format\n\n */\n\nlet pako$6 = window.pako || p;\nif (!pako$6.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako$6 = pako$6.default;\n}\n\nfunction extract$6(elements) {\n return {\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n meshPositions: elements[4],\n meshIndices: elements[5],\n meshEdgesIndices: elements[6],\n meshColors: elements[7],\n entityIDs: elements[8],\n entityMeshes: elements[9],\n entityIsObjects: elements[10],\n instancedPositionsDecodeMatrix: elements[11],\n batchedPositionsDecodeMatrix: elements[12],\n entityMeshIds: elements[13],\n entityMatrices: elements[14],\n entityUsesInstancing: elements[15]\n };\n}\n\nfunction inflate$6(deflatedData) {\n return {\n positions: new Uint16Array(pako$6.inflate(deflatedData.positions).buffer),\n normals: new Int8Array(pako$6.inflate(deflatedData.normals).buffer),\n indices: new Uint32Array(pako$6.inflate(deflatedData.indices).buffer),\n edgeIndices: new Uint32Array(pako$6.inflate(deflatedData.edgeIndices).buffer),\n meshPositions: new Uint32Array(pako$6.inflate(deflatedData.meshPositions).buffer),\n meshIndices: new Uint32Array(pako$6.inflate(deflatedData.meshIndices).buffer),\n meshEdgesIndices: new Uint32Array(pako$6.inflate(deflatedData.meshEdgesIndices).buffer),\n meshColors: new Uint8Array(pako$6.inflate(deflatedData.meshColors).buffer),\n entityIDs: pako$6.inflate(deflatedData.entityIDs, {to: 'string'}),\n entityMeshes: new Uint32Array(pako$6.inflate(deflatedData.entityMeshes).buffer),\n entityIsObjects: new Uint8Array(pako$6.inflate(deflatedData.entityIsObjects).buffer),\n instancedPositionsDecodeMatrix: new Float32Array(pako$6.inflate(deflatedData.instancedPositionsDecodeMatrix).buffer),\n batchedPositionsDecodeMatrix: new Float32Array(pako$6.inflate(deflatedData.batchedPositionsDecodeMatrix).buffer),\n entityMeshIds: new Uint32Array(pako$6.inflate(deflatedData.entityMeshIds).buffer),\n entityMatrices: new Float32Array(pako$6.inflate(deflatedData.entityMatrices).buffer),\n entityUsesInstancing: new Uint8Array(pako$6.inflate(deflatedData.entityUsesInstancing).buffer)\n };\n}\n\nconst decompressColor$6 = (function () {\n const color2 = new Float32Array(3);\n return function (color) {\n color2[0] = color[0] / 255.0;\n color2[1] = color[1] / 255.0;\n color2[2] = color[2] / 255.0;\n return color2;\n };\n})();\n\nfunction load$6(viewer, options, inflatedData, performanceModel) {\n\n performanceModel.positionsCompression = \"precompressed\";\n performanceModel.normalsCompression = \"precompressed\";\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n const meshPositions = inflatedData.meshPositions;\n const meshIndices = inflatedData.meshIndices;\n const meshEdgesIndices = inflatedData.meshEdgesIndices;\n const meshColors = inflatedData.meshColors;\n const entityIDs = JSON.parse(inflatedData.entityIDs);\n const entityMeshes = inflatedData.entityMeshes;\n const entityIsObjects = inflatedData.entityIsObjects;\n const entityMeshIds = inflatedData.entityMeshIds;\n const entityMatrices = inflatedData.entityMatrices;\n const entityUsesInstancing = inflatedData.entityUsesInstancing;\n\n const numMeshes = meshPositions.length;\n const numEntities = entityMeshes.length;\n\n const _alreadyCreatedGeometries = {};\n\n for (let i = 0; i < numEntities; i++) {\n\n const xktEntityId = entityIDs [i];\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(performanceModel.id, xktEntityId) : xktEntityId;\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n const entityMatrix = entityMatrices.subarray((i * 16), (i * 16) + 16);\n\n if (metaObject) {\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n }\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n const lastEntity = (i === numEntities - 1);\n\n const meshIds = [];\n\n for (let j = entityMeshes [i], jlen = lastEntity ? entityMeshIds.length : entityMeshes [i + 1]; j < jlen; j++) {\n var jj = entityMeshIds [j];\n\n const lastMesh = (jj === (numMeshes - 1));\n const meshId = entityId + \".mesh.\" + jj;\n\n const color = decompressColor$6(meshColors.subarray((jj * 4), (jj * 4) + 3));\n const opacity = meshColors[(jj * 4) + 3] / 255.0;\n\n var tmpPositions = positions.subarray(meshPositions [jj], lastMesh ? positions.length : meshPositions [jj + 1]);\n var tmpNormals = normals.subarray(meshPositions [jj], lastMesh ? positions.length : meshPositions [jj + 1]);\n var tmpIndices = indices.subarray(meshIndices [jj], lastMesh ? indices.length : meshIndices [jj + 1]);\n var tmpEdgeIndices = edgeIndices.subarray(meshEdgesIndices [jj], lastMesh ? edgeIndices.length : meshEdgesIndices [jj + 1]);\n\n if (entityUsesInstancing [i] === 1) {\n var geometryId = \"geometry.\" + jj;\n\n if (!(geometryId in _alreadyCreatedGeometries)) {\n\n performanceModel.createGeometry({\n id: geometryId,\n positions: tmpPositions,\n normals: tmpNormals,\n indices: tmpIndices,\n edgeIndices: tmpEdgeIndices,\n primitive: \"triangles\",\n positionsDecodeMatrix: inflatedData.instancedPositionsDecodeMatrix\n });\n\n _alreadyCreatedGeometries [geometryId] = true;\n }\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n color: color,\n opacity: opacity,\n matrix: entityMatrix,\n geometryId: geometryId,\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positions: tmpPositions,\n normals: tmpNormals,\n indices: tmpIndices,\n edgeIndices: tmpEdgeIndices,\n positionsDecodeMatrix: inflatedData.batchedPositionsDecodeMatrix,\n color: color,\n opacity: opacity\n }));\n\n meshIds.push(meshId);\n }\n }\n\n if (meshIds.length) {\n performanceModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: (entityIsObjects [i] === 1),\n meshIds: meshIds\n }));\n }\n }\n}\n\n/** @private */\nconst ParserV3 = {\n version: 3,\n parse: function (viewer, options, elements, performanceModel) {\n const deflatedData = extract$6(elements);\n const inflatedData = inflate$6(deflatedData);\n load$6(viewer, options, inflatedData, performanceModel);\n }\n};\n\n/*\n\nParser for .XKT Format V4\n\n.XKT specifications: https://github.com/xeokit/xeokit-sdk/wiki/XKT-Format\n\n */\n\nlet pako$5 = window.pako || p;\nif (!pako$5.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako$5 = pako$5.default;\n}\n\nfunction extract$5(elements) {\n return {\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n decodeMatrices: elements[4],\n matrices: elements[5],\n eachPrimitivePositionsAndNormalsPortion: elements[6],\n eachPrimitiveIndicesPortion: elements[7],\n eachPrimitiveEdgeIndicesPortion: elements[8],\n eachPrimitiveDecodeMatricesPortion: elements[9],\n eachPrimitiveColor: elements[10],\n primitiveInstances: elements[11],\n eachEntityId: elements[12],\n eachEntityPrimitiveInstancesPortion: elements[13],\n eachEntityMatricesPortion: elements[14],\n eachEntityMatrix: elements[15]\n };\n}\n\nfunction inflate$5(deflatedData) {\n return {\n positions: new Uint16Array(pako$5.inflate(deflatedData.positions).buffer),\n normals: new Int8Array(pako$5.inflate(deflatedData.normals).buffer),\n indices: new Uint32Array(pako$5.inflate(deflatedData.indices).buffer),\n edgeIndices: new Uint32Array(pako$5.inflate(deflatedData.edgeIndices).buffer),\n decodeMatrices: new Float32Array(pako$5.inflate(deflatedData.decodeMatrices).buffer),\n matrices: new Float32Array(pako$5.inflate(deflatedData.matrices).buffer),\n eachPrimitivePositionsAndNormalsPortion: new Uint32Array(pako$5.inflate(deflatedData.eachPrimitivePositionsAndNormalsPortion).buffer),\n eachPrimitiveIndicesPortion: new Uint32Array(pako$5.inflate(deflatedData.eachPrimitiveIndicesPortion).buffer),\n eachPrimitiveEdgeIndicesPortion: new Uint32Array(pako$5.inflate(deflatedData.eachPrimitiveEdgeIndicesPortion).buffer),\n eachPrimitiveDecodeMatricesPortion: new Uint32Array(pako$5.inflate(deflatedData.eachPrimitiveDecodeMatricesPortion).buffer),\n eachPrimitiveColor: new Uint8Array(pako$5.inflate(deflatedData.eachPrimitiveColor).buffer),\n primitiveInstances: new Uint32Array(pako$5.inflate(deflatedData.primitiveInstances).buffer),\n eachEntityId: pako$5.inflate(deflatedData.eachEntityId, {to: 'string'}),\n eachEntityPrimitiveInstancesPortion: new Uint32Array(pako$5.inflate(deflatedData.eachEntityPrimitiveInstancesPortion).buffer),\n eachEntityMatricesPortion: new Uint32Array(pako$5.inflate(deflatedData.eachEntityMatricesPortion).buffer)\n };\n}\n\nconst decompressColor$5 = (function () {\n const color2 = new Float32Array(3);\n return function (color) {\n color2[0] = color[0] / 255.0;\n color2[1] = color[1] / 255.0;\n color2[2] = color[2] / 255.0;\n return color2;\n };\n})();\n\nfunction load$5(viewer, options, inflatedData, performanceModel) {\n\n performanceModel.positionsCompression = \"precompressed\";\n performanceModel.normalsCompression = \"precompressed\";\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n const decodeMatrices = inflatedData.decodeMatrices;\n const matrices = inflatedData.matrices;\n\n const eachPrimitivePositionsAndNormalsPortion = inflatedData.eachPrimitivePositionsAndNormalsPortion;\n const eachPrimitiveIndicesPortion = inflatedData.eachPrimitiveIndicesPortion;\n const eachPrimitiveEdgeIndicesPortion = inflatedData.eachPrimitiveEdgeIndicesPortion;\n const eachPrimitiveDecodeMatricesPortion = inflatedData.eachPrimitiveDecodeMatricesPortion;\n const eachPrimitiveColor = inflatedData.eachPrimitiveColor;\n\n const primitiveInstances = inflatedData.primitiveInstances;\n\n const eachEntityId = JSON.parse(inflatedData.eachEntityId);\n const eachEntityPrimitiveInstancesPortion = inflatedData.eachEntityPrimitiveInstancesPortion;\n const eachEntityMatricesPortion = inflatedData.eachEntityMatricesPortion;\n\n const numPrimitives = eachPrimitivePositionsAndNormalsPortion.length;\n const numPrimitiveInstances = primitiveInstances.length;\n const primitiveInstanceCounts = new Uint8Array(numPrimitives); // For each mesh, how many times it is instanced\n const orderedPrimitiveIndexes = new Uint32Array(numPrimitives); // For each mesh, its index sorted into runs that share the same decode matrix\n\n const numEntities = eachEntityId.length;\n\n // Get lookup that orders primitives into runs that share the same decode matrices;\n // this is used to create meshes in batches that use the same decode matrix\n\n for (let primitiveIndex = 0; primitiveIndex < numPrimitives; primitiveIndex++) {\n orderedPrimitiveIndexes[primitiveIndex] = primitiveIndex;\n }\n\n orderedPrimitiveIndexes.sort((i1, i2) => {\n if (eachPrimitiveDecodeMatricesPortion[i1] < eachPrimitiveDecodeMatricesPortion[i2]) {\n return -1;\n }\n if (eachPrimitiveDecodeMatricesPortion[i1] > eachPrimitiveDecodeMatricesPortion[i2]) {\n return 1;\n }\n return 0;\n });\n\n // Count instances of each primitive\n\n for (let primitiveInstanceIndex = 0; primitiveInstanceIndex < numPrimitiveInstances; primitiveInstanceIndex++) {\n const primitiveIndex = primitiveInstances[primitiveInstanceIndex];\n primitiveInstanceCounts[primitiveIndex]++;\n }\n\n // Map batched primitives to the entities that will use them\n\n const batchedPrimitiveEntityIndexes = {};\n\n for (let entityIndex = 0; entityIndex < numEntities; entityIndex++) {\n\n const lastEntityIndex = (numEntities - 1);\n const atLastEntity = (entityIndex === lastEntityIndex);\n const firstEntityPrimitiveInstanceIndex = eachEntityPrimitiveInstancesPortion [entityIndex];\n const lastEntityPrimitiveInstanceIndex = atLastEntity ? eachEntityPrimitiveInstancesPortion[lastEntityIndex] : eachEntityPrimitiveInstancesPortion[entityIndex + 1];\n\n for (let primitiveInstancesIndex = firstEntityPrimitiveInstanceIndex; primitiveInstancesIndex < lastEntityPrimitiveInstanceIndex; primitiveInstancesIndex++) {\n\n const primitiveIndex = primitiveInstances[primitiveInstancesIndex];\n const primitiveInstanceCount = primitiveInstanceCounts[primitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n if (!isInstancedPrimitive) {\n batchedPrimitiveEntityIndexes[primitiveIndex] = entityIndex;\n }\n }\n }\n\n // Create 1) geometries for instanced primitives, and 2) meshes for batched primitives. We create all the\n // batched meshes now, before we create entities, because we're creating the batched meshes in runs that share\n // the same decode matrices. Each run of meshes with the same decode matrix will end up in the same\n // BatchingLayer; the PerformanceModel#createMesh() method starts a new BatchingLayer each time the decode\n // matrix has changed since the last invocation of that method, hence why we need to order batched meshes\n // in runs like this.\n\n for (let primitiveIndex = 0; primitiveIndex < numPrimitives; primitiveIndex++) {\n\n const orderedPrimitiveIndex = orderedPrimitiveIndexes[primitiveIndex];\n\n const atLastPrimitive = (orderedPrimitiveIndex === (numPrimitives - 1));\n\n const primitiveInstanceCount = primitiveInstanceCounts[orderedPrimitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n const color = decompressColor$5(eachPrimitiveColor.subarray((orderedPrimitiveIndex * 4), (orderedPrimitiveIndex * 4) + 3));\n const opacity = eachPrimitiveColor[(orderedPrimitiveIndex * 4) + 3] / 255.0;\n\n const primitivePositions = positions.subarray(eachPrimitivePositionsAndNormalsPortion [orderedPrimitiveIndex], atLastPrimitive ? positions.length : eachPrimitivePositionsAndNormalsPortion [orderedPrimitiveIndex + 1]);\n const primitiveNormals = normals.subarray(eachPrimitivePositionsAndNormalsPortion [orderedPrimitiveIndex], atLastPrimitive ? normals.length : eachPrimitivePositionsAndNormalsPortion [orderedPrimitiveIndex + 1]);\n const primitiveIndices = indices.subarray(eachPrimitiveIndicesPortion [orderedPrimitiveIndex], atLastPrimitive ? indices.length : eachPrimitiveIndicesPortion [orderedPrimitiveIndex + 1]);\n const primitiveEdgeIndices = edgeIndices.subarray(eachPrimitiveEdgeIndicesPortion [orderedPrimitiveIndex], atLastPrimitive ? edgeIndices.length : eachPrimitiveEdgeIndicesPortion [orderedPrimitiveIndex + 1]);\n const primitiveDecodeMatrix = decodeMatrices.subarray(eachPrimitiveDecodeMatricesPortion [orderedPrimitiveIndex], eachPrimitiveDecodeMatricesPortion [orderedPrimitiveIndex] + 16);\n\n if (isInstancedPrimitive) {\n\n // Primitive instanced by more than one entity, and has positions in Model-space\n\n var geometryId = \"geometry\" + orderedPrimitiveIndex; // These IDs are local to the PerformanceModel\n\n performanceModel.createGeometry({\n id: geometryId,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices,\n positionsDecodeMatrix: primitiveDecodeMatrix\n });\n\n } else {\n\n // Primitive is used only by one entity, and has positions pre-transformed into World-space\n\n const meshId = orderedPrimitiveIndex; // These IDs are local to the PerformanceModel\n\n const entityIndex = batchedPrimitiveEntityIndexes[orderedPrimitiveIndex];\n eachEntityId[entityIndex];\n\n const meshDefaults = {}; // TODO: get from lookup from entity IDs\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices,\n positionsDecodeMatrix: primitiveDecodeMatrix,\n color: color,\n opacity: opacity\n }));\n }\n }\n\n let countInstances = 0;\n\n for (let entityIndex = 0; entityIndex < numEntities; entityIndex++) {\n\n const lastEntityIndex = (numEntities - 1);\n const atLastEntity = (entityIndex === lastEntityIndex);\n const entityId = eachEntityId[entityIndex];\n const firstEntityPrimitiveInstanceIndex = eachEntityPrimitiveInstancesPortion [entityIndex];\n const lastEntityPrimitiveInstanceIndex = atLastEntity ? eachEntityPrimitiveInstancesPortion[lastEntityIndex] : eachEntityPrimitiveInstancesPortion[entityIndex + 1];\n\n const meshIds = [];\n\n for (let primitiveInstancesIndex = firstEntityPrimitiveInstanceIndex; primitiveInstancesIndex < lastEntityPrimitiveInstanceIndex; primitiveInstancesIndex++) {\n\n const primitiveIndex = primitiveInstances[primitiveInstancesIndex];\n const primitiveInstanceCount = primitiveInstanceCounts[primitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n if (isInstancedPrimitive) {\n\n const meshDefaults = {}; // TODO: get from lookup from entity IDs\n\n const meshId = \"instance.\" + countInstances++;\n const geometryId = \"geometry\" + primitiveIndex;\n const matricesIndex = (eachEntityMatricesPortion [entityIndex]) * 16;\n const matrix = matrices.subarray(matricesIndex, matricesIndex + 16);\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n matrix: matrix\n }));\n\n meshIds.push(meshId);\n\n } else {\n meshIds.push(primitiveIndex);\n }\n }\n\n if (meshIds.length > 0) {\n\n const entityDefaults = {}; // TODO: get from lookup from entity IDs\n\n performanceModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true, ///////////////// TODO: If metaobject exists\n meshIds: meshIds\n }));\n }\n }\n}\n\n/** @private */\nconst ParserV4 = {\n version: 4,\n parse: function (viewer, options, elements, performanceModel) {\n const deflatedData = extract$5(elements);\n const inflatedData = inflate$5(deflatedData);\n load$5(viewer, options, inflatedData, performanceModel);\n }\n};\n\n/*\n\n Parser for .XKT Format V5\n\n.XKT specifications: https://github.com/xeokit/xeokit-sdk/wiki/XKT-Format\n\n */\n\nlet pako$4 = window.pako || p;\nif (!pako$4.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako$4 = pako$4.default;\n}\n\nfunction extract$4(elements) {\n return {\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n matrices: elements[4],\n eachPrimitivePositionsAndNormalsPortion: elements[5],\n eachPrimitiveIndicesPortion: elements[6],\n eachPrimitiveEdgeIndicesPortion: elements[7],\n eachPrimitiveColor: elements[8],\n primitiveInstances: elements[9],\n eachEntityId: elements[10],\n eachEntityPrimitiveInstancesPortion: elements[11],\n eachEntityMatricesPortion: elements[12]\n };\n}\n\nfunction inflate$4(deflatedData) {\n return {\n positions: new Float32Array(pako$4.inflate(deflatedData.positions).buffer),\n normals: new Int8Array(pako$4.inflate(deflatedData.normals).buffer),\n indices: new Uint32Array(pako$4.inflate(deflatedData.indices).buffer),\n edgeIndices: new Uint32Array(pako$4.inflate(deflatedData.edgeIndices).buffer),\n matrices: new Float32Array(pako$4.inflate(deflatedData.matrices).buffer),\n eachPrimitivePositionsAndNormalsPortion: new Uint32Array(pako$4.inflate(deflatedData.eachPrimitivePositionsAndNormalsPortion).buffer),\n eachPrimitiveIndicesPortion: new Uint32Array(pako$4.inflate(deflatedData.eachPrimitiveIndicesPortion).buffer),\n eachPrimitiveEdgeIndicesPortion: new Uint32Array(pako$4.inflate(deflatedData.eachPrimitiveEdgeIndicesPortion).buffer),\n eachPrimitiveColor: new Uint8Array(pako$4.inflate(deflatedData.eachPrimitiveColor).buffer),\n primitiveInstances: new Uint32Array(pako$4.inflate(deflatedData.primitiveInstances).buffer),\n eachEntityId: pako$4.inflate(deflatedData.eachEntityId, {to: 'string'}),\n eachEntityPrimitiveInstancesPortion: new Uint32Array(pako$4.inflate(deflatedData.eachEntityPrimitiveInstancesPortion).buffer),\n eachEntityMatricesPortion: new Uint32Array(pako$4.inflate(deflatedData.eachEntityMatricesPortion).buffer)\n };\n}\n\nconst decompressColor$4 = (function () {\n const color2 = new Float32Array(3);\n return function (color) {\n color2[0] = color[0] / 255.0;\n color2[1] = color[1] / 255.0;\n color2[2] = color[2] / 255.0;\n return color2;\n };\n})();\n\nfunction load$4(viewer, options, inflatedData, performanceModel) {\n\n performanceModel.positionsCompression = \"disabled\"; // Positions in XKT V4 are floats, which we never quantize, for precision with big models\n performanceModel.normalsCompression = \"precompressed\"; // Normals are oct-encoded though\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n const matrices = inflatedData.matrices;\n\n const eachPrimitivePositionsAndNormalsPortion = inflatedData.eachPrimitivePositionsAndNormalsPortion;\n const eachPrimitiveIndicesPortion = inflatedData.eachPrimitiveIndicesPortion;\n const eachPrimitiveEdgeIndicesPortion = inflatedData.eachPrimitiveEdgeIndicesPortion;\n const eachPrimitiveColor = inflatedData.eachPrimitiveColor;\n\n const primitiveInstances = inflatedData.primitiveInstances;\n\n const eachEntityId = JSON.parse(inflatedData.eachEntityId);\n const eachEntityPrimitiveInstancesPortion = inflatedData.eachEntityPrimitiveInstancesPortion;\n const eachEntityMatricesPortion = inflatedData.eachEntityMatricesPortion;\n\n const numPrimitives = eachPrimitivePositionsAndNormalsPortion.length;\n const numPrimitiveInstances = primitiveInstances.length;\n const primitiveInstanceCounts = new Uint8Array(numPrimitives); // For each mesh, how many times it is instanced\n\n const numEntities = eachEntityId.length;\n\n // Count instances of each primitive\n\n for (let primitiveInstanceIndex = 0; primitiveInstanceIndex < numPrimitiveInstances; primitiveInstanceIndex++) {\n const primitiveIndex = primitiveInstances[primitiveInstanceIndex];\n primitiveInstanceCounts[primitiveIndex]++;\n }\n\n // Map batched primitives to the entities that will use them\n\n const batchedPrimitiveEntityIndexes = {};\n\n for (let entityIndex = 0; entityIndex < numEntities; entityIndex++) {\n\n const lastEntityIndex = (numEntities - 1);\n const atLastEntity = (entityIndex === lastEntityIndex);\n const firstEntityPrimitiveInstanceIndex = eachEntityPrimitiveInstancesPortion [entityIndex];\n const lastEntityPrimitiveInstanceIndex = atLastEntity ? eachEntityPrimitiveInstancesPortion[lastEntityIndex] : eachEntityPrimitiveInstancesPortion[entityIndex + 1];\n\n for (let primitiveInstancesIndex = firstEntityPrimitiveInstanceIndex; primitiveInstancesIndex < lastEntityPrimitiveInstanceIndex; primitiveInstancesIndex++) {\n\n const primitiveIndex = primitiveInstances[primitiveInstancesIndex];\n const primitiveInstanceCount = primitiveInstanceCounts[primitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n if (!isInstancedPrimitive) {\n batchedPrimitiveEntityIndexes[primitiveIndex] = entityIndex;\n }\n }\n }\n\n // Create geometries for instanced primitives and meshes for batched primitives.\n\n for (let primitiveIndex = 0; primitiveIndex < numPrimitives; primitiveIndex++) {\n\n const atLastPrimitive = (primitiveIndex === (numPrimitives - 1));\n\n const primitiveInstanceCount = primitiveInstanceCounts[primitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n const color = decompressColor$4(eachPrimitiveColor.subarray((primitiveIndex * 4), (primitiveIndex * 4) + 3));\n const opacity = eachPrimitiveColor[(primitiveIndex * 4) + 3] / 255.0;\n\n const primitivePositions = positions.subarray(eachPrimitivePositionsAndNormalsPortion [primitiveIndex], atLastPrimitive ? positions.length : eachPrimitivePositionsAndNormalsPortion [primitiveIndex + 1]);\n const primitiveNormals = normals.subarray(eachPrimitivePositionsAndNormalsPortion [primitiveIndex], atLastPrimitive ? normals.length : eachPrimitivePositionsAndNormalsPortion [primitiveIndex + 1]);\n const primitiveIndices = indices.subarray(eachPrimitiveIndicesPortion [primitiveIndex], atLastPrimitive ? indices.length : eachPrimitiveIndicesPortion [primitiveIndex + 1]);\n const primitiveEdgeIndices = edgeIndices.subarray(eachPrimitiveEdgeIndicesPortion [primitiveIndex], atLastPrimitive ? edgeIndices.length : eachPrimitiveEdgeIndicesPortion [primitiveIndex + 1]);\n\n if (isInstancedPrimitive) {\n\n // Primitive instanced by more than one entity, and has positions in Model-space\n\n var geometryId = \"geometry\" + primitiveIndex; // These IDs are local to the PerformanceModel\n\n performanceModel.createGeometry({\n id: geometryId,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices\n });\n\n } else {\n\n // Primitive is used only by one entity, and has positions pre-transformed into World-space\n\n const meshId = primitiveIndex; // These IDs are local to the PerformanceModel\n\n const entityIndex = batchedPrimitiveEntityIndexes[primitiveIndex];\n eachEntityId[entityIndex];\n\n const meshDefaults = {}; // TODO: get from lookup from entity IDs\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices,\n color: color,\n opacity: opacity\n }));\n }\n }\n\n let countInstances = 0;\n\n for (let entityIndex = 0; entityIndex < numEntities; entityIndex++) {\n\n const lastEntityIndex = (numEntities - 1);\n const atLastEntity = (entityIndex === lastEntityIndex);\n const entityId = eachEntityId[entityIndex];\n const firstEntityPrimitiveInstanceIndex = eachEntityPrimitiveInstancesPortion [entityIndex];\n const lastEntityPrimitiveInstanceIndex = atLastEntity ? eachEntityPrimitiveInstancesPortion[lastEntityIndex] : eachEntityPrimitiveInstancesPortion[entityIndex + 1];\n\n const meshIds = [];\n\n for (let primitiveInstancesIndex = firstEntityPrimitiveInstanceIndex; primitiveInstancesIndex < lastEntityPrimitiveInstanceIndex; primitiveInstancesIndex++) {\n\n const primitiveIndex = primitiveInstances[primitiveInstancesIndex];\n const primitiveInstanceCount = primitiveInstanceCounts[primitiveIndex];\n const isInstancedPrimitive = (primitiveInstanceCount > 1);\n\n if (isInstancedPrimitive) {\n\n const meshDefaults = {}; // TODO: get from lookup from entity IDs\n\n const meshId = \"instance.\" + countInstances++;\n const geometryId = \"geometry\" + primitiveIndex;\n const matricesIndex = (eachEntityMatricesPortion [entityIndex]) * 16;\n const matrix = matrices.subarray(matricesIndex, matricesIndex + 16);\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n matrix: matrix\n }));\n\n meshIds.push(meshId);\n\n } else {\n meshIds.push(primitiveIndex);\n }\n }\n\n if (meshIds.length > 0) {\n\n const entityDefaults = {}; // TODO: get from lookup from entity IDs\n\n performanceModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true, ///////////////// TODO: If metaobject exists\n meshIds: meshIds\n }));\n }\n }\n}\n\n/** @private */\nconst ParserV5 = {\n version: 5,\n parse: function (viewer, options, elements, performanceModel) {\n const deflatedData = extract$4(elements);\n const inflatedData = inflate$4(deflatedData);\n load$4(viewer, options, inflatedData, performanceModel);\n }\n};\n\n/*\n\n Parser for .XKT Format V6\n\n */\n\nlet pako$3 = window.pako || p;\nif (!pako$3.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako$3 = pako$3.default;\n}\n\nfunction extract$3(elements) {\n\n return {\n positions: elements[0],\n normals: elements[1],\n indices: elements[2],\n edgeIndices: elements[3],\n matrices: elements[4],\n reusedPrimitivesDecodeMatrix: elements[5],\n eachPrimitivePositionsAndNormalsPortion: elements[6],\n eachPrimitiveIndicesPortion: elements[7],\n eachPrimitiveEdgeIndicesPortion: elements[8],\n eachPrimitiveColorAndOpacity: elements[9],\n primitiveInstances: elements[10],\n eachEntityId: elements[11],\n eachEntityPrimitiveInstancesPortion: elements[12],\n eachEntityMatricesPortion: elements[13],\n eachTileAABB: elements[14],\n eachTileEntitiesPortion: elements[15]\n };\n}\n\nfunction inflate$3(deflatedData) {\n\n function inflate(array, options) {\n return (array.length === 0) ? [] : pako$3.inflate(array, options).buffer;\n }\n\n return {\n positions: new Uint16Array(inflate(deflatedData.positions)),\n normals: new Int8Array(inflate(deflatedData.normals)),\n indices: new Uint32Array(inflate(deflatedData.indices)),\n edgeIndices: new Uint32Array(inflate(deflatedData.edgeIndices)),\n matrices: new Float32Array(inflate(deflatedData.matrices)),\n reusedPrimitivesDecodeMatrix: new Float32Array(inflate(deflatedData.reusedPrimitivesDecodeMatrix)),\n eachPrimitivePositionsAndNormalsPortion: new Uint32Array(inflate(deflatedData.eachPrimitivePositionsAndNormalsPortion)),\n eachPrimitiveIndicesPortion: new Uint32Array(inflate(deflatedData.eachPrimitiveIndicesPortion)),\n eachPrimitiveEdgeIndicesPortion: new Uint32Array(inflate(deflatedData.eachPrimitiveEdgeIndicesPortion)),\n eachPrimitiveColorAndOpacity: new Uint8Array(inflate(deflatedData.eachPrimitiveColorAndOpacity)),\n primitiveInstances: new Uint32Array(inflate(deflatedData.primitiveInstances)),\n eachEntityId: pako$3.inflate(deflatedData.eachEntityId, {to: 'string'}),\n eachEntityPrimitiveInstancesPortion: new Uint32Array(inflate(deflatedData.eachEntityPrimitiveInstancesPortion)),\n eachEntityMatricesPortion: new Uint32Array(inflate(deflatedData.eachEntityMatricesPortion)),\n eachTileAABB: new Float64Array(inflate(deflatedData.eachTileAABB)),\n eachTileEntitiesPortion: new Uint32Array(inflate(deflatedData.eachTileEntitiesPortion))\n };\n}\n\nconst decompressColor$3 = (function () {\n const floatColor = new Float32Array(3);\n return function (intColor) {\n floatColor[0] = intColor[0] / 255.0;\n floatColor[1] = intColor[1] / 255.0;\n floatColor[2] = intColor[2] / 255.0;\n return floatColor;\n };\n})();\n\nfunction load$3(viewer, options, inflatedData, performanceModel) {\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n\n const matrices = inflatedData.matrices;\n\n const reusedPrimitivesDecodeMatrix = inflatedData.reusedPrimitivesDecodeMatrix;\n\n const eachPrimitivePositionsAndNormalsPortion = inflatedData.eachPrimitivePositionsAndNormalsPortion;\n const eachPrimitiveIndicesPortion = inflatedData.eachPrimitiveIndicesPortion;\n const eachPrimitiveEdgeIndicesPortion = inflatedData.eachPrimitiveEdgeIndicesPortion;\n const eachPrimitiveColorAndOpacity = inflatedData.eachPrimitiveColorAndOpacity;\n\n const primitiveInstances = inflatedData.primitiveInstances;\n\n const eachEntityId = JSON.parse(inflatedData.eachEntityId);\n const eachEntityPrimitiveInstancesPortion = inflatedData.eachEntityPrimitiveInstancesPortion;\n const eachEntityMatricesPortion = inflatedData.eachEntityMatricesPortion;\n\n const eachTileAABB = inflatedData.eachTileAABB;\n const eachTileEntitiesPortion = inflatedData.eachTileEntitiesPortion;\n\n const numPrimitives = eachPrimitivePositionsAndNormalsPortion.length;\n const numPrimitiveInstances = primitiveInstances.length;\n const numEntities = eachEntityId.length;\n const numTiles = eachTileEntitiesPortion.length;\n\n let nextMeshId = 0;\n\n // Count instances of each primitive\n\n const primitiveReuseCounts = new Uint32Array(numPrimitives);\n\n for (let primitiveInstanceIndex = 0; primitiveInstanceIndex < numPrimitiveInstances; primitiveInstanceIndex++) {\n const primitiveIndex = primitiveInstances[primitiveInstanceIndex];\n if (primitiveReuseCounts[primitiveIndex] !== undefined) {\n primitiveReuseCounts[primitiveIndex]++;\n } else {\n primitiveReuseCounts[primitiveIndex] = 1;\n }\n }\n\n // Iterate over tiles\n\n const tileCenter = math.vec3();\n const rtcAABB = math.AABB3();\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const lastTileIndex = (numTiles - 1);\n\n const atLastTile = (tileIndex === lastTileIndex);\n\n const firstTileEntityIndex = eachTileEntitiesPortion [tileIndex];\n const lastTileEntityIndex = atLastTile ? numEntities : eachTileEntitiesPortion[tileIndex + 1];\n\n const tileAABBIndex = tileIndex * 6;\n const tileAABB = eachTileAABB.subarray(tileAABBIndex, tileAABBIndex + 6);\n\n math.getAABB3Center(tileAABB, tileCenter);\n\n rtcAABB[0] = tileAABB[0] - tileCenter[0];\n rtcAABB[1] = tileAABB[1] - tileCenter[1];\n rtcAABB[2] = tileAABB[2] - tileCenter[2];\n rtcAABB[3] = tileAABB[3] - tileCenter[0];\n rtcAABB[4] = tileAABB[4] - tileCenter[1];\n rtcAABB[5] = tileAABB[5] - tileCenter[2];\n\n const tileDecodeMatrix = geometryCompressionUtils.createPositionsDecodeMatrix(rtcAABB);\n\n const geometryCreated = {};\n\n // Iterate over each tile's entities\n\n for (let tileEntityIndex = firstTileEntityIndex; tileEntityIndex < lastTileEntityIndex; tileEntityIndex++) {\n\n const xktEntityId = eachEntityId[tileEntityIndex];\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(performanceModel.id, xktEntityId) : xktEntityId;\n\n const entityMatrixIndex = eachEntityMatricesPortion[tileEntityIndex];\n const entityMatrix = matrices.slice(entityMatrixIndex, entityMatrixIndex + 16);\n\n const lastTileEntityIndex = (numEntities - 1);\n const atLastTileEntity = (tileEntityIndex === lastTileEntityIndex);\n const firstPrimitiveInstanceIndex = eachEntityPrimitiveInstancesPortion [tileEntityIndex];\n const lastPrimitiveInstanceIndex = atLastTileEntity ? primitiveInstances.length : eachEntityPrimitiveInstancesPortion[tileEntityIndex + 1];\n\n const meshIds = [];\n\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n\n if (metaObject) {\n\n // Mask loading of object types\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n // Get initial property values for object types\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n }\n\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n // Iterate each entity's primitive instances\n\n for (let primitiveInstancesIndex = firstPrimitiveInstanceIndex; primitiveInstancesIndex < lastPrimitiveInstanceIndex; primitiveInstancesIndex++) {\n\n const primitiveIndex = primitiveInstances[primitiveInstancesIndex];\n const primitiveReuseCount = primitiveReuseCounts[primitiveIndex];\n const isReusedPrimitive = (primitiveReuseCount > 1);\n\n const atLastPrimitive = (primitiveIndex === (numPrimitives - 1));\n\n const primitivePositions = positions.subarray(eachPrimitivePositionsAndNormalsPortion [primitiveIndex], atLastPrimitive ? positions.length : eachPrimitivePositionsAndNormalsPortion [primitiveIndex + 1]);\n const primitiveNormals = normals.subarray(eachPrimitivePositionsAndNormalsPortion [primitiveIndex], atLastPrimitive ? normals.length : eachPrimitivePositionsAndNormalsPortion [primitiveIndex + 1]);\n const primitiveIndices = indices.subarray(eachPrimitiveIndicesPortion [primitiveIndex], atLastPrimitive ? indices.length : eachPrimitiveIndicesPortion [primitiveIndex + 1]);\n const primitiveEdgeIndices = edgeIndices.subarray(eachPrimitiveEdgeIndicesPortion [primitiveIndex], atLastPrimitive ? edgeIndices.length : eachPrimitiveEdgeIndicesPortion [primitiveIndex + 1]);\n\n const color = decompressColor$3(eachPrimitiveColorAndOpacity.subarray((primitiveIndex * 4), (primitiveIndex * 4) + 3));\n const opacity = eachPrimitiveColorAndOpacity[(primitiveIndex * 4) + 3] / 255.0;\n\n const meshId = nextMeshId++;\n\n if (isReusedPrimitive) {\n\n // Create mesh for multi-use primitive - create (or reuse) geometry, create mesh using that geometry\n\n const geometryId = \"geometry.\" + tileIndex + \".\" + primitiveIndex; // These IDs are local to the PerformanceModel\n\n if (!geometryCreated[geometryId]) {\n\n performanceModel.createGeometry({\n id: geometryId,\n rtcCenter: tileCenter,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices,\n positionsDecodeMatrix: reusedPrimitivesDecodeMatrix\n });\n\n geometryCreated[geometryId] = true;\n }\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n matrix: entityMatrix,\n color: color,\n opacity: opacity\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n rtcCenter: tileCenter,\n primitive: \"triangles\",\n positions: primitivePositions,\n normals: primitiveNormals,\n indices: primitiveIndices,\n edgeIndices: primitiveEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: color,\n opacity: opacity\n }));\n\n meshIds.push(meshId);\n }\n }\n\n if (meshIds.length > 0) {\n\n performanceModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true,\n meshIds: meshIds\n }));\n }\n }\n }\n}\n\n/** @private */\nconst ParserV6 = {\n version: 6,\n parse: function (viewer, options, elements, performanceModel) {\n const deflatedData = extract$3(elements);\n const inflatedData = inflate$3(deflatedData);\n load$3(viewer, options, inflatedData, performanceModel);\n }\n};\n\n/*\n\n Parser for .XKT Format V7\n\n */\n\nlet pako$2 = window.pako || p;\nif (!pako$2.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako$2 = pako$2.default;\n}\n\nfunction extract$2(elements) {\n\n return {\n\n // Vertex attributes\n\n positions: elements[0],\n normals: elements[1],\n colors: elements[2],\n\n // Indices\n\n indices: elements[3],\n edgeIndices: elements[4],\n\n // Transform matrices\n\n matrices: elements[5],\n\n reusedGeometriesDecodeMatrix: elements[6],\n\n // Geometries\n\n eachGeometryPrimitiveType: elements[7],\n eachGeometryPositionsPortion: elements[8],\n eachGeometryNormalsPortion: elements[9],\n eachGeometryColorsPortion: elements[10],\n eachGeometryIndicesPortion: elements[11],\n eachGeometryEdgeIndicesPortion: elements[12],\n\n // Meshes are grouped in runs that are shared by the same entities\n\n eachMeshGeometriesPortion: elements[13],\n eachMeshMatricesPortion: elements[14],\n eachMeshMaterial: elements[15],\n\n // Entity elements in the following arrays are grouped in runs that are shared by the same tiles\n\n eachEntityId: elements[16],\n eachEntityMeshesPortion: elements[17],\n\n eachTileAABB: elements[18],\n eachTileEntitiesPortion: elements[19]\n };\n}\n\nfunction inflate$2(deflatedData) {\n\n function inflate(array, options) {\n return (array.length === 0) ? [] : pako$2.inflate(array, options).buffer;\n }\n\n return {\n positions: new Uint16Array(inflate(deflatedData.positions)),\n normals: new Int8Array(inflate(deflatedData.normals)),\n colors: new Uint8Array(inflate(deflatedData.colors)),\n\n indices: new Uint32Array(inflate(deflatedData.indices)),\n edgeIndices: new Uint32Array(inflate(deflatedData.edgeIndices)),\n\n matrices: new Float32Array(inflate(deflatedData.matrices)),\n\n reusedGeometriesDecodeMatrix: new Float32Array(inflate(deflatedData.reusedGeometriesDecodeMatrix)),\n\n eachGeometryPrimitiveType: new Uint8Array(inflate(deflatedData.eachGeometryPrimitiveType)),\n eachGeometryPositionsPortion: new Uint32Array(inflate(deflatedData.eachGeometryPositionsPortion)),\n eachGeometryNormalsPortion: new Uint32Array(inflate(deflatedData.eachGeometryNormalsPortion)),\n eachGeometryColorsPortion: new Uint32Array(inflate(deflatedData.eachGeometryColorsPortion)),\n eachGeometryIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryIndicesPortion)),\n eachGeometryEdgeIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryEdgeIndicesPortion)),\n\n eachMeshGeometriesPortion: new Uint32Array(inflate(deflatedData.eachMeshGeometriesPortion)),\n eachMeshMatricesPortion: new Uint32Array(inflate(deflatedData.eachMeshMatricesPortion)),\n eachMeshMaterial: new Uint8Array(inflate(deflatedData.eachMeshMaterial)),\n\n eachEntityId: pako$2.inflate(deflatedData.eachEntityId, {to: 'string'}),\n eachEntityMeshesPortion: new Uint32Array(inflate(deflatedData.eachEntityMeshesPortion)),\n\n eachTileAABB: new Float64Array(inflate(deflatedData.eachTileAABB)),\n eachTileEntitiesPortion: new Uint32Array(inflate(deflatedData.eachTileEntitiesPortion)),\n };\n}\n\nconst decompressColor$2 = (function () {\n const floatColor = new Float32Array(3);\n return function (intColor) {\n floatColor[0] = intColor[0] / 255.0;\n floatColor[1] = intColor[1] / 255.0;\n floatColor[2] = intColor[2] / 255.0;\n return floatColor;\n };\n})();\n\nfunction convertColorsRGBToRGBA$1(colorsRGB) {\n const colorsRGBA = [];\n for (let i = 0, len = colorsRGB.length; i < len; i+=3) {\n colorsRGBA.push(colorsRGB[i]);\n colorsRGBA.push(colorsRGB[i+1]);\n colorsRGBA.push(colorsRGB[i+2]);\n colorsRGBA.push(1.0);\n }\n return colorsRGBA;\n}\n\nfunction load$2(viewer, options, inflatedData, performanceModel) {\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const colors = inflatedData.colors;\n\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n\n const matrices = inflatedData.matrices;\n\n const reusedGeometriesDecodeMatrix = inflatedData.reusedGeometriesDecodeMatrix;\n\n const eachGeometryPrimitiveType = inflatedData.eachGeometryPrimitiveType;\n const eachGeometryPositionsPortion = inflatedData.eachGeometryPositionsPortion;\n const eachGeometryNormalsPortion = inflatedData.eachGeometryNormalsPortion;\n const eachGeometryColorsPortion = inflatedData.eachGeometryColorsPortion;\n const eachGeometryIndicesPortion = inflatedData.eachGeometryIndicesPortion;\n const eachGeometryEdgeIndicesPortion = inflatedData.eachGeometryEdgeIndicesPortion;\n\n const eachMeshGeometriesPortion = inflatedData.eachMeshGeometriesPortion;\n const eachMeshMatricesPortion = inflatedData.eachMeshMatricesPortion;\n const eachMeshMaterial = inflatedData.eachMeshMaterial;\n\n const eachEntityId = JSON.parse(inflatedData.eachEntityId);\n const eachEntityMeshesPortion = inflatedData.eachEntityMeshesPortion;\n\n const eachTileAABB = inflatedData.eachTileAABB;\n const eachTileEntitiesPortion = inflatedData.eachTileEntitiesPortion;\n\n const numGeometries = eachGeometryPositionsPortion.length;\n const numMeshes = eachMeshGeometriesPortion.length;\n const numEntities = eachEntityId.length;\n const numTiles = eachTileEntitiesPortion.length;\n\n let nextMeshId = 0;\n\n // Count instances of each geometry\n\n const geometryReuseCounts = new Uint32Array(numGeometries);\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n if (geometryReuseCounts[geometryIndex] !== undefined) {\n geometryReuseCounts[geometryIndex]++;\n } else {\n geometryReuseCounts[geometryIndex] = 1;\n }\n }\n\n // Iterate over tiles\n\n const tileCenter = math.vec3();\n const rtcAABB = math.AABB3();\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const lastTileIndex = (numTiles - 1);\n\n const atLastTile = (tileIndex === lastTileIndex);\n\n const firstTileEntityIndex = eachTileEntitiesPortion [tileIndex];\n const lastTileEntityIndex = atLastTile ? numEntities : eachTileEntitiesPortion[tileIndex + 1];\n\n const tileAABBIndex = tileIndex * 6;\n const tileAABB = eachTileAABB.subarray(tileAABBIndex, tileAABBIndex + 6);\n\n math.getAABB3Center(tileAABB, tileCenter);\n\n rtcAABB[0] = tileAABB[0] - tileCenter[0];\n rtcAABB[1] = tileAABB[1] - tileCenter[1];\n rtcAABB[2] = tileAABB[2] - tileCenter[2];\n rtcAABB[3] = tileAABB[3] - tileCenter[0];\n rtcAABB[4] = tileAABB[4] - tileCenter[1];\n rtcAABB[5] = tileAABB[5] - tileCenter[2];\n\n const tileDecodeMatrix = geometryCompressionUtils.createPositionsDecodeMatrix(rtcAABB);\n\n const geometryCreated = {};\n\n // Iterate over each tile's entities\n\n for (let tileEntityIndex = firstTileEntityIndex; tileEntityIndex < lastTileEntityIndex; tileEntityIndex++) {\n\n const xktEntityId = eachEntityId[tileEntityIndex];\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(performanceModel.id, xktEntityId) : xktEntityId;\n\n const lastTileEntityIndex = (numEntities - 1);\n const atLastTileEntity = (tileEntityIndex === lastTileEntityIndex);\n const firstMeshIndex = eachEntityMeshesPortion [tileEntityIndex];\n const lastMeshIndex = atLastTileEntity ? eachMeshGeometriesPortion.length : eachEntityMeshesPortion[tileEntityIndex + 1];\n\n const meshIds = [];\n\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n\n if (metaObject) {\n\n // Mask loading of object types\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n // Get initial property values for object types\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n if (props.metallic !== undefined && props.metallic !== null) {\n meshDefaults.metallic = props.metallic;\n }\n if (props.roughness !== undefined && props.roughness !== null) {\n meshDefaults.roughness = props.roughness;\n }\n }\n\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n // Iterate each entity's meshes\n\n for (let meshIndex = firstMeshIndex; meshIndex < lastMeshIndex; meshIndex++) {\n\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n const geometryReuseCount = geometryReuseCounts[geometryIndex];\n const isReusedGeometry = (geometryReuseCount > 1);\n\n const atLastGeometry = (geometryIndex === (numGeometries - 1));\n\n const meshColor = decompressColor$2(eachMeshMaterial.subarray((meshIndex * 6), (meshIndex * 6) + 3));\n const meshOpacity = eachMeshMaterial[(meshIndex * 6) + 3] / 255.0;\n const meshMetallic = eachMeshMaterial[(meshIndex * 6) + 4] / 255.0;\n const meshRoughness = eachMeshMaterial[(meshIndex * 6) + 5] / 255.0;\n\n const meshId = nextMeshId++;\n\n if (isReusedGeometry) {\n\n // Create mesh for multi-use geometry - create (or reuse) geometry, create mesh using that geometry\n\n const meshMatrixIndex = eachMeshMatricesPortion[meshIndex];\n const meshMatrix = matrices.slice(meshMatrixIndex, meshMatrixIndex + 16);\n\n const geometryId = \"geometry.\" + tileIndex + \".\" + geometryIndex; // These IDs are local to the PerformanceModel\n\n if (!geometryCreated[geometryId]) {\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let primitiveName;\n let geometryPositions;\n let geometryNormals;\n let geometryColors;\n let geometryIndices;\n let geometryEdgeIndices;\n\n switch (primitiveType) {\n case 0:\n primitiveName = \"solid\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n break;\n case 1:\n primitiveName = \"surface\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n break;\n case 2:\n primitiveName = \"points\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryColors = convertColorsRGBToRGBA$1(colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]));\n break;\n case 3:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n break;\n default:\n continue;\n }\n\n performanceModel.createGeometry({\n id: geometryId,\n rtcCenter: tileCenter,\n primitive: primitiveName,\n positions: geometryPositions,\n normals: geometryNormals,\n colors: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: reusedGeometriesDecodeMatrix\n });\n\n geometryCreated[geometryId] = true;\n }\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n matrix: meshMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n\n } else {\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let primitiveName;\n let geometryPositions;\n let geometryNormals;\n let geometryColors;\n let geometryIndices;\n let geometryEdgeIndices;\n\n switch (primitiveType) {\n case 0:\n primitiveName = \"solid\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n break;\n case 1:\n primitiveName = \"surface\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n break;\n case 2:\n primitiveName = \"points\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryColors = convertColorsRGBToRGBA$1(colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]));\n break;\n case 3:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n break;\n default:\n continue;\n }\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n rtcCenter: tileCenter,\n primitive: primitiveName,\n positions: geometryPositions,\n normals: geometryNormals,\n colors: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n }\n }\n\n if (meshIds.length > 0) {\n\n performanceModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true,\n meshIds: meshIds\n }));\n }\n }\n }\n}\n\n/** @private */\nconst ParserV7 = {\n version: 7,\n parse: function (viewer, options, elements, performanceModel) {\n const deflatedData = extract$2(elements);\n const inflatedData = inflate$2(deflatedData);\n load$2(viewer, options, inflatedData, performanceModel);\n }\n};\n\n/*\n\n Parser for .XKT Format V8\n\n */\n\nlet pako$1 = window.pako || p;\nif (!pako$1.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako$1 = pako$1.default;\n}\n\nfunction extract$1(elements) {\n\n return {\n\n // Vertex attributes\n\n types: elements[0],\n eachMetaObjectId: elements[1],\n eachMetaObjectType: elements[2],\n eachMetaObjectName: elements[3],\n eachMetaObjectParent: elements[4],\n\n positions: elements[5],\n normals: elements[6],\n colors: elements[7],\n indices: elements[8],\n edgeIndices: elements[9],\n\n // Transform matrices\n\n matrices: elements[10],\n reusedGeometriesDecodeMatrix: elements[11],\n\n // Geometries\n\n eachGeometryPrimitiveType: elements[12],\n eachGeometryPositionsPortion: elements[13],\n eachGeometryNormalsPortion: elements[14],\n eachGeometryColorsPortion: elements[15],\n eachGeometryIndicesPortion: elements[16],\n eachGeometryEdgeIndicesPortion: elements[17],\n\n // Meshes are grouped in runs that are shared by the same entities\n\n eachMeshGeometriesPortion: elements[18],\n eachMeshMatricesPortion: elements[19],\n eachMeshMaterial: elements[20],\n\n // Entity elements in the following arrays are grouped in runs that are shared by the same tiles\n\n eachEntityMetaObject: elements[21],\n eachEntityMeshesPortion: elements[22],\n\n eachTileAABB: elements[23],\n eachTileEntitiesPortion: elements[24]\n };\n}\n\nfunction inflate$1(deflatedData) {\n\n function inflate(array, options) {\n return (array.length === 0) ? [] : pako$1.inflate(array, options).buffer;\n }\n\n return {\n\n types: pako$1.inflate(deflatedData.types, {to: 'string'}),\n eachMetaObjectId: pako$1.inflate(deflatedData.eachMetaObjectId, {to: 'string'}),\n eachMetaObjectType: new Uint32Array(inflate(deflatedData.eachMetaObjectType)),\n eachMetaObjectName: pako$1.inflate(deflatedData.eachMetaObjectName, {to: 'string'}),\n eachMetaObjectParent: new Uint32Array(inflate(deflatedData.eachMetaObjectParent)),\n\n positions: new Uint16Array(inflate(deflatedData.positions)),\n normals: new Int8Array(inflate(deflatedData.normals)),\n colors: new Uint8Array(inflate(deflatedData.colors)),\n indices: new Uint32Array(inflate(deflatedData.indices)),\n edgeIndices: new Uint32Array(inflate(deflatedData.edgeIndices)),\n\n matrices: new Float32Array(inflate(deflatedData.matrices)),\n reusedGeometriesDecodeMatrix: new Float32Array(inflate(deflatedData.reusedGeometriesDecodeMatrix)),\n\n eachGeometryPrimitiveType: new Uint8Array(inflate(deflatedData.eachGeometryPrimitiveType)),\n eachGeometryPositionsPortion: new Uint32Array(inflate(deflatedData.eachGeometryPositionsPortion)),\n eachGeometryNormalsPortion: new Uint32Array(inflate(deflatedData.eachGeometryNormalsPortion)),\n eachGeometryColorsPortion: new Uint32Array(inflate(deflatedData.eachGeometryColorsPortion)),\n eachGeometryIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryIndicesPortion)),\n eachGeometryEdgeIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryEdgeIndicesPortion)),\n\n eachMeshGeometriesPortion: new Uint32Array(inflate(deflatedData.eachMeshGeometriesPortion)),\n eachMeshMatricesPortion: new Uint32Array(inflate(deflatedData.eachMeshMatricesPortion)),\n eachMeshMaterial: new Uint8Array(inflate(deflatedData.eachMeshMaterial)),\n\n eachEntityMetaObject: new Uint32Array(inflate(deflatedData.eachEntityMetaObject)),\n eachEntityMeshesPortion: new Uint32Array(inflate(deflatedData.eachEntityMeshesPortion)),\n\n eachTileAABB: new Float64Array(inflate(deflatedData.eachTileAABB)),\n eachTileEntitiesPortion: new Uint32Array(inflate(deflatedData.eachTileEntitiesPortion)),\n };\n}\n\nconst decompressColor$1 = (function () {\n const floatColor = new Float32Array(3);\n return function (intColor) {\n floatColor[0] = intColor[0] / 255.0;\n floatColor[1] = intColor[1] / 255.0;\n floatColor[2] = intColor[2] / 255.0;\n return floatColor;\n };\n})();\n\nfunction convertColorsRGBToRGBA(colorsRGB) {\n const colorsRGBA = [];\n for (let i = 0, len = colorsRGB.length; i < len; i+=3) {\n colorsRGBA.push(colorsRGB[i]);\n colorsRGBA.push(colorsRGB[i+1]);\n colorsRGBA.push(colorsRGB[i+2]);\n colorsRGBA.push(1.0);\n }\n return colorsRGBA;\n}\n\nfunction load$1(viewer, options, inflatedData, performanceModel) {\n\n const types = JSON.parse(inflatedData.types);\n const eachMetaObjectId = JSON.parse(inflatedData.eachMetaObjectId);\n const eachMetaObjectType = inflatedData.eachMetaObjectType;\n const eachMetaObjectName = JSON.parse(inflatedData.eachMetaObjectName);\n const eachMetaObjectParent = inflatedData.eachMetaObjectParent;\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const colors = inflatedData.colors;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n\n const matrices = inflatedData.matrices;\n const reusedGeometriesDecodeMatrix = inflatedData.reusedGeometriesDecodeMatrix;\n\n const eachGeometryPrimitiveType = inflatedData.eachGeometryPrimitiveType;\n const eachGeometryPositionsPortion = inflatedData.eachGeometryPositionsPortion;\n const eachGeometryNormalsPortion = inflatedData.eachGeometryNormalsPortion;\n const eachGeometryColorsPortion = inflatedData.eachGeometryColorsPortion;\n const eachGeometryIndicesPortion = inflatedData.eachGeometryIndicesPortion;\n const eachGeometryEdgeIndicesPortion = inflatedData.eachGeometryEdgeIndicesPortion;\n\n const eachMeshGeometriesPortion = inflatedData.eachMeshGeometriesPortion;\n const eachMeshMatricesPortion = inflatedData.eachMeshMatricesPortion;\n const eachMeshMaterial = inflatedData.eachMeshMaterial;\n\n const eachEntityMetaObject = inflatedData.eachEntityMetaObject;\n const eachEntityMeshesPortion = inflatedData.eachEntityMeshesPortion;\n\n const eachTileAABB = inflatedData.eachTileAABB;\n const eachTileEntitiesPortion = inflatedData.eachTileEntitiesPortion;\n\n const numMetaObjects = eachMetaObjectId.length;\n const numGeometries = eachGeometryPositionsPortion.length;\n const numMeshes = eachMeshGeometriesPortion.length;\n const numEntities = eachEntityMetaObject.length;\n const numTiles = eachTileEntitiesPortion.length;\n\n let nextMeshId = 0;\n\n // Create metamodel, unless already loaded from JSON by XKTLoaderPlugin\n\n const metaModelId = performanceModel.id;\n\n if (!viewer.metaScene.metaModels[metaModelId]) {\n\n const metaModelData = {\n metaObjects: []\n };\n\n for (let metaObjectIndex = 0; metaObjectIndex < numMetaObjects; metaObjectIndex++) {\n\n const metaObjectId = eachMetaObjectId[metaObjectIndex];\n const typeIndex = eachMetaObjectType[metaObjectIndex];\n const metaObjectType = types[typeIndex] || \"default\";\n const metaObjectName = eachMetaObjectName[metaObjectIndex];\n const metaObjectParentIndex = eachMetaObjectParent[metaObjectIndex];\n const metaObjectParentId = (metaObjectParentIndex !== metaObjectIndex) ? eachMetaObjectId[metaObjectParentIndex] : null;\n\n metaModelData.metaObjects.push({\n id: metaObjectId,\n type: metaObjectType,\n name: metaObjectName,\n parent: metaObjectParentId\n });\n }\n\n viewer.metaScene.createMetaModel(metaModelId, metaModelData, {\n includeTypes: options.includeTypes,\n excludeTypes: options.excludeTypes,\n globalizeObjectIds: options.globalizeObjectIds\n });\n\n performanceModel.once(\"destroyed\", () => {\n viewer.metaScene.destroyMetaModel(metaModelId);\n });\n }\n\n // Count instances of each geometry\n\n const geometryReuseCounts = new Uint32Array(numGeometries);\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n if (geometryReuseCounts[geometryIndex] !== undefined) {\n geometryReuseCounts[geometryIndex]++;\n } else {\n geometryReuseCounts[geometryIndex] = 1;\n }\n }\n\n // Iterate over tiles\n\n const tileCenter = math.vec3();\n const rtcAABB = math.AABB3();\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const lastTileIndex = (numTiles - 1);\n\n const atLastTile = (tileIndex === lastTileIndex);\n\n const firstTileEntityIndex = eachTileEntitiesPortion [tileIndex];\n const lastTileEntityIndex = atLastTile ? numEntities : eachTileEntitiesPortion[tileIndex + 1];\n\n const tileAABBIndex = tileIndex * 6;\n const tileAABB = eachTileAABB.subarray(tileAABBIndex, tileAABBIndex + 6);\n\n math.getAABB3Center(tileAABB, tileCenter);\n\n rtcAABB[0] = tileAABB[0] - tileCenter[0];\n rtcAABB[1] = tileAABB[1] - tileCenter[1];\n rtcAABB[2] = tileAABB[2] - tileCenter[2];\n rtcAABB[3] = tileAABB[3] - tileCenter[0];\n rtcAABB[4] = tileAABB[4] - tileCenter[1];\n rtcAABB[5] = tileAABB[5] - tileCenter[2];\n\n const tileDecodeMatrix = geometryCompressionUtils.createPositionsDecodeMatrix(rtcAABB);\n\n const geometryCreated = {};\n\n // Iterate over each tile's entities\n\n for (let tileEntityIndex = firstTileEntityIndex; tileEntityIndex < lastTileEntityIndex; tileEntityIndex++) {\n\n const xktMetaObjectIndex = eachEntityMetaObject[tileEntityIndex];\n const xktMetaObjectId = eachMetaObjectId[xktMetaObjectIndex];\n const xktEntityId = xktMetaObjectId;\n\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(performanceModel.id, xktEntityId) : xktEntityId;\n\n const lastTileEntityIndex = (numEntities - 1);\n const atLastTileEntity = (tileEntityIndex === lastTileEntityIndex);\n const firstMeshIndex = eachEntityMeshesPortion [tileEntityIndex];\n const lastMeshIndex = atLastTileEntity ? eachMeshGeometriesPortion.length : eachEntityMeshesPortion[tileEntityIndex + 1];\n\n const meshIds = [];\n\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n\n if (metaObject) {\n\n // Mask loading of object types\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n // Get initial property values for object types\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n if (props.metallic !== undefined && props.metallic !== null) {\n meshDefaults.metallic = props.metallic;\n }\n if (props.roughness !== undefined && props.roughness !== null) {\n meshDefaults.roughness = props.roughness;\n }\n }\n\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n // Iterate each entity's meshes\n\n for (let meshIndex = firstMeshIndex; meshIndex < lastMeshIndex; meshIndex++) {\n\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n const geometryReuseCount = geometryReuseCounts[geometryIndex];\n const isReusedGeometry = (geometryReuseCount > 1);\n\n const atLastGeometry = (geometryIndex === (numGeometries - 1));\n\n const meshColor = decompressColor$1(eachMeshMaterial.subarray((meshIndex * 6), (meshIndex * 6) + 3));\n const meshOpacity = eachMeshMaterial[(meshIndex * 6) + 3] / 255.0;\n const meshMetallic = eachMeshMaterial[(meshIndex * 6) + 4] / 255.0;\n const meshRoughness = eachMeshMaterial[(meshIndex * 6) + 5] / 255.0;\n\n const meshId = nextMeshId++;\n\n if (isReusedGeometry) {\n\n // Create mesh for multi-use geometry - create (or reuse) geometry, create mesh using that geometry\n\n const meshMatrixIndex = eachMeshMatricesPortion[meshIndex];\n const meshMatrix = matrices.slice(meshMatrixIndex, meshMatrixIndex + 16);\n\n const geometryId = \"geometry.\" + tileIndex + \".\" + geometryIndex; // These IDs are local to the PerformanceModel\n\n if (!geometryCreated[geometryId]) {\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let primitiveName;\n let geometryPositions;\n let geometryNormals;\n let geometryColors;\n let geometryIndices;\n let geometryEdgeIndices;\n let geometryValid = false;\n\n switch (primitiveType) {\n case 0:\n primitiveName = \"solid\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 1:\n primitiveName = \"surface\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 2:\n primitiveName = \"points\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryColors = convertColorsRGBToRGBA(colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]));\n geometryValid = (geometryPositions.length > 0);\n break;\n case 3:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n default:\n continue;\n }\n\n if (geometryValid) {\n\n performanceModel.createGeometry({\n id: geometryId,\n rtcCenter: tileCenter,\n primitive: primitiveName,\n positions: geometryPositions,\n normals: geometryNormals,\n colorsCompressed: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: reusedGeometriesDecodeMatrix\n });\n\n geometryCreated[geometryId] = true;\n }\n }\n\n if (geometryCreated[geometryId]) {\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n matrix: meshMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n }\n\n } else {\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let primitiveName;\n let geometryPositions;\n let geometryNormals;\n let geometryColors;\n let geometryIndices;\n let geometryEdgeIndices;\n let geometryValid = false;\n\n switch (primitiveType) {\n case 0:\n primitiveName = \"solid\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 1:\n primitiveName = \"surface\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 2:\n primitiveName = \"points\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryColors = convertColorsRGBToRGBA(colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]));\n geometryValid = (geometryPositions.length > 0);\n break;\n case 3:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n default:\n continue;\n }\n\n if (geometryValid) {\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n rtcCenter: tileCenter,\n primitive: primitiveName,\n positions: geometryPositions,\n normals: geometryNormals,\n colorsCompressed: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n }\n }\n }\n\n if (meshIds.length > 0) {\n\n performanceModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true,\n meshIds: meshIds\n }));\n }\n }\n }\n}\n\n/** @private */\nconst ParserV8 = {\n version: 8,\n parse: function (viewer, options, elements, performanceModel) {\n const deflatedData = extract$1(elements);\n const inflatedData = inflate$1(deflatedData);\n load$1(viewer, options, inflatedData, performanceModel);\n }\n};\n\n/*\n\n Parser for .XKT Format V9\n\n */\n\nlet pako = window.pako || p;\nif (!pako.inflate) { // See https://github.com/nodeca/pako/issues/97\n pako = pako.default;\n}\n\nfunction extract(elements) {\n\n return {\n\n // Metadata\n\n metadata: elements[0],\n\n positions: elements[1],\n normals: elements[2],\n colors: elements[3],\n indices: elements[4],\n edgeIndices: elements[5],\n\n // Transform matrices\n\n matrices: elements[6],\n reusedGeometriesDecodeMatrix: elements[7],\n\n // Geometries\n\n eachGeometryPrimitiveType: elements[8],\n eachGeometryPositionsPortion: elements[9],\n eachGeometryNormalsPortion: elements[10],\n eachGeometryColorsPortion: elements[11],\n eachGeometryIndicesPortion: elements[12],\n eachGeometryEdgeIndicesPortion: elements[13],\n\n // Meshes are grouped in runs that are shared by the same entities\n\n eachMeshGeometriesPortion: elements[14],\n eachMeshMatricesPortion: elements[15],\n eachMeshMaterial: elements[16],\n\n // Entity elements in the following arrays are grouped in runs that are shared by the same tiles\n\n eachEntityId: elements[17],\n eachEntityMeshesPortion: elements[18],\n\n eachTileAABB: elements[19],\n eachTileEntitiesPortion: elements[20]\n };\n}\n\nfunction inflate(deflatedData) {\n\n function inflate(array, options) {\n return (array.length === 0) ? [] : pako.inflate(array, options).buffer;\n }\n\n return {\n\n metadata: JSON.parse(pako.inflate(deflatedData.metadata, {to: 'string'})),\n\n positions: new Uint16Array(inflate(deflatedData.positions)),\n normals: new Int8Array(inflate(deflatedData.normals)),\n colors: new Uint8Array(inflate(deflatedData.colors)),\n indices: new Uint32Array(inflate(deflatedData.indices)),\n edgeIndices: new Uint32Array(inflate(deflatedData.edgeIndices)),\n\n matrices: new Float32Array(inflate(deflatedData.matrices)),\n reusedGeometriesDecodeMatrix: new Float32Array(inflate(deflatedData.reusedGeometriesDecodeMatrix)),\n\n eachGeometryPrimitiveType: new Uint8Array(inflate(deflatedData.eachGeometryPrimitiveType)),\n eachGeometryPositionsPortion: new Uint32Array(inflate(deflatedData.eachGeometryPositionsPortion)),\n eachGeometryNormalsPortion: new Uint32Array(inflate(deflatedData.eachGeometryNormalsPortion)),\n eachGeometryColorsPortion: new Uint32Array(inflate(deflatedData.eachGeometryColorsPortion)),\n eachGeometryIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryIndicesPortion)),\n eachGeometryEdgeIndicesPortion: new Uint32Array(inflate(deflatedData.eachGeometryEdgeIndicesPortion)),\n\n eachMeshGeometriesPortion: new Uint32Array(inflate(deflatedData.eachMeshGeometriesPortion)),\n eachMeshMatricesPortion: new Uint32Array(inflate(deflatedData.eachMeshMatricesPortion)),\n eachMeshMaterial: new Uint8Array(inflate(deflatedData.eachMeshMaterial)),\n\n eachEntityId: JSON.parse(pako.inflate(deflatedData.eachEntityId, {to: 'string'})),\n eachEntityMeshesPortion: new Uint32Array(inflate(deflatedData.eachEntityMeshesPortion)),\n\n eachTileAABB: new Float64Array(inflate(deflatedData.eachTileAABB)),\n eachTileEntitiesPortion: new Uint32Array(inflate(deflatedData.eachTileEntitiesPortion)),\n };\n}\n\nconst decompressColor = (function () {\n const floatColor = new Float32Array(3);\n return function (intColor) {\n floatColor[0] = intColor[0] / 255.0;\n floatColor[1] = intColor[1] / 255.0;\n floatColor[2] = intColor[2] / 255.0;\n return floatColor;\n };\n})();\n\nfunction load(viewer, options, inflatedData, performanceModel) {\n\n const metadata = inflatedData.metadata;\n\n const positions = inflatedData.positions;\n const normals = inflatedData.normals;\n const colors = inflatedData.colors;\n const indices = inflatedData.indices;\n const edgeIndices = inflatedData.edgeIndices;\n\n const matrices = inflatedData.matrices;\n const reusedGeometriesDecodeMatrix = inflatedData.reusedGeometriesDecodeMatrix;\n\n const eachGeometryPrimitiveType = inflatedData.eachGeometryPrimitiveType;\n const eachGeometryPositionsPortion = inflatedData.eachGeometryPositionsPortion;\n const eachGeometryNormalsPortion = inflatedData.eachGeometryNormalsPortion;\n const eachGeometryColorsPortion = inflatedData.eachGeometryColorsPortion;\n const eachGeometryIndicesPortion = inflatedData.eachGeometryIndicesPortion;\n const eachGeometryEdgeIndicesPortion = inflatedData.eachGeometryEdgeIndicesPortion;\n\n const eachMeshGeometriesPortion = inflatedData.eachMeshGeometriesPortion;\n const eachMeshMatricesPortion = inflatedData.eachMeshMatricesPortion;\n const eachMeshMaterial = inflatedData.eachMeshMaterial;\n\n const eachEntityId = inflatedData.eachEntityId;\n const eachEntityMeshesPortion = inflatedData.eachEntityMeshesPortion;\n\n const eachTileAABB = inflatedData.eachTileAABB;\n const eachTileEntitiesPortion = inflatedData.eachTileEntitiesPortion;\n\n const numGeometries = eachGeometryPositionsPortion.length;\n const numMeshes = eachMeshGeometriesPortion.length;\n const numEntities = eachEntityMeshesPortion.length;\n const numTiles = eachTileEntitiesPortion.length;\n\n let nextMeshId = 0;\n\n // Create metamodel, unless already loaded from external JSON file by XKTLoaderPlugin\n\n const metaModelId = performanceModel.id;\n\n if (!viewer.metaScene.metaModels[metaModelId]) {\n\n viewer.metaScene.createMetaModel(metaModelId, metadata, {\n includeTypes: options.includeTypes,\n excludeTypes: options.excludeTypes,\n globalizeObjectIds: options.globalizeObjectIds\n });\n\n performanceModel.once(\"destroyed\", () => {\n viewer.metaScene.destroyMetaModel(metaModelId);\n });\n }\n\n // Count instances of each geometry\n\n const geometryReuseCounts = new Uint32Array(numGeometries);\n\n for (let meshIndex = 0; meshIndex < numMeshes; meshIndex++) {\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n if (geometryReuseCounts[geometryIndex] !== undefined) {\n geometryReuseCounts[geometryIndex]++;\n } else {\n geometryReuseCounts[geometryIndex] = 1;\n }\n }\n\n // Iterate over tiles\n\n const tileCenter = math.vec3();\n const rtcAABB = math.AABB3();\n\n for (let tileIndex = 0; tileIndex < numTiles; tileIndex++) {\n\n const lastTileIndex = (numTiles - 1);\n\n const atLastTile = (tileIndex === lastTileIndex);\n\n const firstTileEntityIndex = eachTileEntitiesPortion [tileIndex];\n const lastTileEntityIndex = atLastTile ? (numEntities - 1) : (eachTileEntitiesPortion[tileIndex + 1] - 1);\n\n const tileAABBIndex = tileIndex * 6;\n const tileAABB = eachTileAABB.subarray(tileAABBIndex, tileAABBIndex + 6);\n\n math.getAABB3Center(tileAABB, tileCenter);\n\n rtcAABB[0] = tileAABB[0] - tileCenter[0];\n rtcAABB[1] = tileAABB[1] - tileCenter[1];\n rtcAABB[2] = tileAABB[2] - tileCenter[2];\n rtcAABB[3] = tileAABB[3] - tileCenter[0];\n rtcAABB[4] = tileAABB[4] - tileCenter[1];\n rtcAABB[5] = tileAABB[5] - tileCenter[2];\n\n const tileDecodeMatrix = geometryCompressionUtils.createPositionsDecodeMatrix(rtcAABB);\n\n const geometryCreated = {};\n\n // Iterate over each tile's entities\n\n for (let tileEntityIndex = firstTileEntityIndex; tileEntityIndex <= lastTileEntityIndex; tileEntityIndex++) {\n\n const xktEntityId = eachEntityId[tileEntityIndex];\n\n const entityId = options.globalizeObjectIds ? math.globalizeObjectId(performanceModel.id, xktEntityId) : xktEntityId;\n\n const finalTileEntityIndex = (numEntities - 1);\n const atLastTileEntity = (tileEntityIndex === finalTileEntityIndex);\n const firstMeshIndex = eachEntityMeshesPortion [tileEntityIndex];\n const lastMeshIndex = atLastTileEntity ? (eachMeshGeometriesPortion.length - 1) : (eachEntityMeshesPortion[tileEntityIndex + 1] - 1);\n\n const meshIds = [];\n\n const metaObject = viewer.metaScene.metaObjects[entityId];\n const entityDefaults = {};\n const meshDefaults = {};\n\n if (metaObject) {\n\n // Mask loading of object types\n\n if (options.excludeTypesMap && metaObject.type && options.excludeTypesMap[metaObject.type]) {\n continue;\n }\n\n if (options.includeTypesMap && metaObject.type && (!options.includeTypesMap[metaObject.type])) {\n continue;\n }\n\n // Get initial property values for object types\n\n const props = options.objectDefaults ? options.objectDefaults[metaObject.type] || options.objectDefaults[\"DEFAULT\"] : null;\n\n if (props) {\n if (props.visible === false) {\n entityDefaults.visible = false;\n }\n if (props.pickable === false) {\n entityDefaults.pickable = false;\n }\n if (props.colorize) {\n meshDefaults.color = props.colorize;\n }\n if (props.opacity !== undefined && props.opacity !== null) {\n meshDefaults.opacity = props.opacity;\n }\n if (props.metallic !== undefined && props.metallic !== null) {\n meshDefaults.metallic = props.metallic;\n }\n if (props.roughness !== undefined && props.roughness !== null) {\n meshDefaults.roughness = props.roughness;\n }\n }\n\n } else {\n if (options.excludeUnclassifiedObjects) {\n continue;\n }\n }\n\n // Iterate each entity's meshes\n\n for (let meshIndex = firstMeshIndex; meshIndex <= lastMeshIndex; meshIndex++) {\n\n const geometryIndex = eachMeshGeometriesPortion[meshIndex];\n const geometryReuseCount = geometryReuseCounts[geometryIndex];\n const isReusedGeometry = (geometryReuseCount > 1);\n\n const atLastGeometry = (geometryIndex === (numGeometries - 1));\n\n const meshColor = decompressColor(eachMeshMaterial.subarray((meshIndex * 6), (meshIndex * 6) + 3));\n const meshOpacity = eachMeshMaterial[(meshIndex * 6) + 3] / 255.0;\n const meshMetallic = eachMeshMaterial[(meshIndex * 6) + 4] / 255.0;\n const meshRoughness = eachMeshMaterial[(meshIndex * 6) + 5] / 255.0;\n\n const meshId = nextMeshId++;\n\n if (isReusedGeometry) {\n\n // Create mesh for multi-use geometry - create (or reuse) geometry, create mesh using that geometry\n\n const meshMatrixIndex = eachMeshMatricesPortion[meshIndex];\n const meshMatrix = matrices.slice(meshMatrixIndex, meshMatrixIndex + 16);\n\n const geometryId = \"geometry.\" + tileIndex + \".\" + geometryIndex; // These IDs are local to the PerformanceModel\n\n if (!geometryCreated[geometryId]) {\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let primitiveName;\n let geometryPositions;\n let geometryNormals;\n let geometryColors;\n let geometryIndices;\n let geometryEdgeIndices;\n let geometryValid = false;\n\n switch (primitiveType) {\n case 0:\n primitiveName = \"solid\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 1:\n primitiveName = \"surface\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 2:\n primitiveName = \"points\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryColors = colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0);\n break;\n case 3:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n default:\n continue;\n }\n\n if (geometryValid) {\n\n performanceModel.createGeometry({\n id: geometryId,\n rtcCenter: tileCenter,\n primitive: primitiveName,\n positions: geometryPositions,\n normals: geometryNormals,\n colorsCompressed: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: reusedGeometriesDecodeMatrix\n });\n\n geometryCreated[geometryId] = true;\n }\n }\n\n if (geometryCreated[geometryId]) {\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n geometryId: geometryId,\n matrix: meshMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n }\n\n } else {\n\n const primitiveType = eachGeometryPrimitiveType[geometryIndex];\n\n let primitiveName;\n let geometryPositions;\n let geometryNormals;\n let geometryColors;\n let geometryIndices;\n let geometryEdgeIndices;\n let geometryValid = false;\n\n switch (primitiveType) {\n case 0:\n primitiveName = \"solid\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 1:\n primitiveName = \"surface\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryNormals = normals.subarray(eachGeometryNormalsPortion [geometryIndex], atLastGeometry ? normals.length : eachGeometryNormalsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryEdgeIndices = edgeIndices.subarray(eachGeometryEdgeIndicesPortion [geometryIndex], atLastGeometry ? edgeIndices.length : eachGeometryEdgeIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n case 2:\n primitiveName = \"points\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryColors = colors.subarray(eachGeometryColorsPortion [geometryIndex], atLastGeometry ? colors.length : eachGeometryColorsPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0);\n break;\n case 3:\n primitiveName = \"lines\";\n geometryPositions = positions.subarray(eachGeometryPositionsPortion [geometryIndex], atLastGeometry ? positions.length : eachGeometryPositionsPortion [geometryIndex + 1]);\n geometryIndices = indices.subarray(eachGeometryIndicesPortion [geometryIndex], atLastGeometry ? indices.length : eachGeometryIndicesPortion [geometryIndex + 1]);\n geometryValid = (geometryPositions.length > 0 && geometryIndices.length > 0);\n break;\n default:\n continue;\n }\n\n if (geometryValid) {\n\n performanceModel.createMesh(utils.apply(meshDefaults, {\n id: meshId,\n rtcCenter: tileCenter,\n primitive: primitiveName,\n positions: geometryPositions,\n normals: geometryNormals,\n colorsCompressed: geometryColors,\n indices: geometryIndices,\n edgeIndices: geometryEdgeIndices,\n positionsDecodeMatrix: tileDecodeMatrix,\n color: meshColor,\n metallic: meshMetallic,\n roughness: meshRoughness,\n opacity: meshOpacity\n }));\n\n meshIds.push(meshId);\n }\n }\n }\n\n if (meshIds.length > 0) {\n\n performanceModel.createEntity(utils.apply(entityDefaults, {\n id: entityId,\n isObject: true,\n meshIds: meshIds\n }));\n }\n }\n }\n}\n\n/** @private */\nconst ParserV9 = {\n version: 9,\n parse: function (viewer, options, elements, performanceModel) {\n const deflatedData = extract(elements);\n const inflatedData = inflate(deflatedData);\n load(viewer, options, inflatedData, performanceModel);\n }\n};\n\nconst parsers = {};\n\nparsers[ParserV1.version] = ParserV1;\nparsers[ParserV2.version] = ParserV2;\nparsers[ParserV3.version] = ParserV3;\nparsers[ParserV4.version] = ParserV4;\nparsers[ParserV5.version] = ParserV5;\nparsers[ParserV6.version] = ParserV6;\nparsers[ParserV7.version] = ParserV7;\nparsers[ParserV8.version] = ParserV8;\nparsers[ParserV9.version] = ParserV9;\n\n/**\n * {@link Viewer} plugin that loads models from xeokit's optimized *````.XKT````* format.\n *\n * \n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#loading_XKT_OTCConferenceCenter)]\n *\n * ## Overview\n *\n * * XKTLoaderPlugin is the most efficient way to load high-detail models into xeokit.\n * * An *````.XKT````* file is a single BLOB containing a model, compressed using geometry quantization\n * and [pako](https://nodeca.github.io/pako/).\n * * Supports double-precision coordinates, via ````.XKT```` format version 6.\n * * Set the position, scale and rotation of each model as you load it.\n * * Filter which IFC types get loaded.\n * * Configure initial default appearances for IFC types.\n * * Set a custom data source for *````.XKT````* and IFC metadata files.\n * * Option to load multiple copies of the same model, without object ID clashes.\n *\n * ## Creating *````.XKT````* Files and Metadata\n *\n * See [Creating Files for Offline BIM](https://github.com/xeokit/xeokit-sdk/wiki/Creating-Files-for-Offline-BIM).\n *\n * ## Scene representation\n *\n * When loading a model, XKTLoaderPlugin creates an {@link Entity} that represents the model, which\n * will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id}\n * in {@link Scene#models}. The XKTLoaderPlugin also creates an {@link Entity} for each object within the\n * model. Those Entities will have {@link Entity#isObject} set ````true```` and will be registered\n * by {@link Entity#id} in {@link Scene#objects}.\n *\n * ## Metadata\n *\n * Since XKT V8, model metadata is included in the XKT file. If the XKT file has metadata, then loading it creates\n * model metadata components within the Viewer, namely a {@link MetaModel} corresponding to the model {@link Entity},\n * and a {@link MetaObject} for each object {@link Entity}.\n *\n * Each {@link MetaObject} has a {@link MetaObject#type}, which indicates the classification of its corresponding\n * {@link Entity}. When loading metadata, we can also configure XKTLoaderPlugin with a custom lookup table of initial\n * values to set on the properties of each type of {@link Entity}. By default, XKTLoaderPlugin uses its own map of\n * default colors and visibilities for IFC element types.\n *\n * For XKT versions prior to V8, we provided the metadata to XKTLoaderPlugin as an accompanying JSON file to load. We can\n * still do that for all XKT versions, and for XKT V8+ it will override any metadata provided within the XKT file.\n *\n * ## Usage\n *\n * In the example below we'll load the Schependomlaan model from a [.XKT file](https://github.com/xeokit/xeokit-sdk/tree/master/examples/models/xkt/schependomlaan).\n *\n * This will create a bunch of {@link Entity}s that represents the model and its objects, along with a {@link MetaModel} and {@link MetaObject}s\n * that hold their metadata.\n *\n * Since this model contains IFC types, the XKTLoaderPlugin will set the initial appearance of each object\n * {@link Entity} according to its IFC type in {@link XKTLoaderPlugin#objectDefaults}.\n *\n * Read more about this example in the user guide on [Viewing BIM Models Offline](https://www.notion.so/xeokit/Viewing-an-IFC-Model-with-xeokit-c373e48bc4094ff5b6e5c5700ff580ee).\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_XKT_metadata_Schependomlaan)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a Viewer,\n * // 2. Arrange the camera\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * // 2\n * viewer.camera.eye = [-2.56, 8.38, 8.27];\n * viewer.camera.look = [13.44, 3.31, -14.83];\n * viewer.camera.up = [0.10, 0.98, -0.14];\n *\n * //------------------------------------------------------------------------------------------------------------------\n * // 1. Create a XKTLoaderPlugin,\n * // 2. Load a building model and JSON IFC metadata\n * //------------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * // 2\n * const model = xktLoader.load({ // Returns an Entity that represents the model\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * //--------------------------------------------------------------------------------------------------------------\n * // 1. Find metadata on the third storey\n * // 2. Select all the objects in the building's third storey\n * // 3. Fit the camera to all the objects on the third storey\n * //--------------------------------------------------------------------------------------------------------------\n *\n * // 1\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"]; // MetaModel with ID \"myModel\"\n * const metaObject\n * = viewer.metaScene.metaObjects[\"0u4wgLe6n0ABVaiXyikbkA\"]; // MetaObject with ID \"0u4wgLe6n0ABVaiXyikbkA\"\n *\n * const name = metaObject.name; // \"01 eerste verdieping\"\n * const type = metaObject.type; // \"IfcBuildingStorey\"\n * const parent = metaObject.parent; // MetaObject with type \"IfcBuilding\"\n * const children = metaObject.children; // Array of child MetaObjects\n * const objectId = metaObject.id; // \"0u4wgLe6n0ABVaiXyikbkA\"\n * const objectIds = viewer.metaScene.getObjectIDsInSubtree(objectId); // IDs of leaf sub-objects\n * const aabb = viewer.scene.getAABB(objectIds); // Axis-aligned boundary of the leaf sub-objects\n *\n * // 2\n * viewer.scene.setObjectsSelected(objectIds, true);\n *\n * // 3\n * viewer.cameraFlight.flyTo(aabb);\n * });\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n *\n * ## Transforming\n *\n * We have the option to rotate, scale and translate each *````.XKT````* model as we load it.\n *\n * This lets us load multiple models, or even multiple copies of the same model, and position them apart from each other.\n *\n * In the example below, we'll scale our model to half its size, rotate it 90 degrees about its local X-axis, then\n * translate it 100 units along its X axis.\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_XKT_Duplex_transform)]\n *\n * ````javascript\n * xktLoader.load({\n * src: \"./models/xkt/Duplex.ifc.xkt\",\n * rotation: [90,0,0],\n * scale: [0.5, 0.5, 0.5],\n * position: [100, 0, 0]\n * });\n * ````\n *\n * ## Including and excluding IFC types\n *\n * We can also load only those objects that have the specified IFC types.\n *\n * In the example below, we'll load only the objects that represent walls.\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_XKT_includeTypes)]\n *\n * ````javascript\n * const model2 = xktLoader.load({\n * id: \"myModel2\",\n * src: \"./models/xkt/OTCConferenceCenter.xkt\",\n * includeTypes: [\"IfcWallStandardCase\"]\n * });\n * ````\n *\n * We can also load only those objects that **don't** have the specified IFC types.\n *\n * In the example below, we'll load only the objects that do not represent empty space.\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_XKT_excludeTypes)]\n *\n * ````javascript\n * const model3 = xktLoader.load({\n * id: \"myModel3\",\n * src: \"./models/xkt/OTCConferenceCenter.xkt\",\n * excludeTypes: [\"IfcSpace\"]\n * });\n * ````\n *\n * ## Configuring initial IFC object appearances\n *\n * We can specify the custom initial appearance of loaded objects according to their IFC types.\n *\n * This is useful for things like:\n *\n * * setting the colors to our objects according to their IFC types,\n * * automatically hiding ````IfcSpace```` objects, and\n * * ensuring that ````IfcWindow```` objects are always transparent.\n *
    \n * In the example below, we'll load a model, while configuring ````IfcSpace```` elements to be always initially invisible,\n * and ````IfcWindow```` types to be always translucent blue.\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#BIMOffline_XKT_objectDefaults)]\n *\n * ````javascript\n * const myObjectDefaults = {\n *\n * IfcSpace: {\n * visible: false\n * },\n * IfcWindow: {\n * colorize: [0.337255, 0.303922, 0.870588], // Blue\n * opacity: 0.3\n * },\n *\n * //...\n *\n * DEFAULT: {\n * colorize: [0.5, 0.5, 0.5]\n * }\n * };\n *\n * const model4 = xktLoader.load({\n * id: \"myModel4\",\n * src: \"./models/xkt/Duplex.ifc.xkt\",\n * objectDefaults: myObjectDefaults // Use our custom initial default states for object Entities\n * });\n * ````\n *\n * When we don't customize the appearance of IFC types, as just above, then IfcSpace elements tend to obscure other\n * elements, which can be confusing.\n *\n * It's often helpful to make IfcSpaces transparent and unpickable, like this:\n *\n * ````javascript\n * const xktLoader = new XKTLoaderPlugin(viewer, {\n * objectDefaults: {\n * IfcSpace: {\n * pickable: false,\n * opacity: 0.2\n * }\n * }\n * });\n * ````\n *\n * Alternatively, we could just make IfcSpaces invisible, which also makes them unpickable:\n *\n * ````javascript\n * const xktLoader = new XKTLoaderPlugin(viewer, {\n * objectDefaults: {\n * IfcSpace: {\n * visible: false\n * }\n * }\n * });\n * ````\n *\n * ## Configuring a custom data source\n *\n * By default, XKTLoaderPlugin will load *````.XKT````* files and metadata JSON over HTTP.\n *\n * In the example below, we'll customize the way XKTLoaderPlugin loads the files by configuring it with our own data source\n * object. For simplicity, our custom data source example also uses HTTP, using a couple of xeokit utility functions.\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_XKT_dataSource)]\n *\n * ````javascript\n * import {utils} from \"xeokit-sdk.es.js\";\n *\n * class MyDataSource {\n *\n * constructor() {\n * }\n *\n * // Gets metamodel JSON\n * getMetaModel(metaModelSrc, ok, error) {\n * console.log(\"MyDataSource#getMetaModel(\" + metaModelSrc + \", ... )\");\n * utils.loadJSON(metaModelSrc,\n * (json) => {\n * ok(json);\n * },\n * function (errMsg) {\n * error(errMsg);\n * });\n * }\n *\n * // Gets the contents of the given .XKT file in an arraybuffer\n * getXKT(src, ok, error) {\n * console.log(\"MyDataSource#getXKT(\" + xKTSrc + \", ... )\");\n * utils.loadArraybuffer(src,\n * (arraybuffer) => {\n * ok(arraybuffer);\n * },\n * function (errMsg) {\n * error(errMsg);\n * });\n * }\n * }\n *\n * const xktLoader2 = new XKTLoaderPlugin(viewer, {\n * dataSource: new MyDataSource()\n * });\n *\n * const model5 = xktLoader2.load({\n * id: \"myModel5\",\n * src: \"./models/xkt/Duplex.ifc.xkt\"\n * });\n * ````\n *\n * ## Loading multiple copies of a model, without object ID clashes\n *\n * Sometimes we need to load two or more instances of the same model, without having clashes\n * between the IDs of the equivalent objects in the model instances.\n *\n * As shown in the example below, we do this by setting {@link XKTLoaderPlugin#globalizeObjectIds} ````true```` before we load our models.\n *\n * * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#TreeViewPlugin_Containment_MultipleModels)]\n *\n * ````javascript\n * xktLoader.globalizeObjectIds = true;\n *\n * const model = xktLoader.load({\n * id: \"model1\",\n * src: \"./models/xkt/Schependomlaan.xkt\"\n * });\n *\n * const model2 = xktLoader.load({\n * id: \"model2\",\n * src: \"./models/xkt/Schependomlaan.xkt\"\n * });\n * ````\n *\n * For each {@link Entity} loaded by these two calls, {@link Entity#id} and {@link MetaObject#id} will get prefixed by\n * the ID of their model, in order to avoid ID clashes between the two models.\n *\n * An Entity belonging to the first model will get an ID like this:\n *\n * ````\n * myModel1#0BTBFw6f90Nfh9rP1dlXrb\n * ````\n *\n * The equivalent Entity in the second model will get an ID like this:\n *\n * ````\n * myModel2#0BTBFw6f90Nfh9rP1dlXrb\n * ````\n *\n * Now, to update the visibility of both of those Entities collectively, using {@link Scene#setObjectsVisible}, we can\n * supply just the IFC product ID part to that method:\n *\n * ````javascript\n * myViewer.scene.setObjectVisibilities(\"0BTBFw6f90Nfh9rP1dlXrb\", true);\n * ````\n *\n * The method, along with {@link Scene#setObjectsXRayed}, {@link Scene#setObjectsHighlighted} etc, will internally expand\n * the given ID to refer to the instances of that Entity in both models.\n *\n * We can also, of course, reference each Entity directly, using its globalized ID:\n *\n * ````javascript\n * myViewer.scene.setObjectVisibilities(\"myModel1#0BTBFw6f90Nfh9rP1dlXrb\", true);\n *````\n *\n * @class XKTLoaderPlugin\n */\nclass XKTLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n *\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"XKTLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {Object} [cfg.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {Object} [cfg.dataSource] A custom data source through which the XKTLoaderPlugin can load model and metadata files. Defaults to an instance of {@link XKTDefaultDataSource}, which loads uover HTTP.\n * @param {String[]} [cfg.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [cfg.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [cfg.excludeUnclassifiedObjects=false] When loading metadata and this is ````true````, will only load {@link Entity}s that have {@link MetaObject}s (that are not excluded). This is useful when we don't want Entitys in the Scene that are not represented within IFC navigation components, such as {@link TreeViewPlugin}.\n * @param {Number} [cfg.maxGeometryBatchSize=50000000] Maximum geometry batch size, as number of vertices. This is optionally supplied\n * to limit the size of the batched geometry arrays that {@link PerformanceModel} internally creates for batched geometries.\n * A low value means less heap allocation/de-allocation while loading batched geometries, but more draw calls and\n * slower rendering speed. A high value means larger heap allocation/de-allocation while loading, but less draw calls\n * and faster rendering speed. It's recommended to keep this somewhere roughly between ````50000```` and ````50000000```.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"XKTLoader\", viewer, cfg);\n\n this._maxGeometryBatchSize = cfg.maxGeometryBatchSize;\n\n this.dataSource = cfg.dataSource;\n this.objectDefaults = cfg.objectDefaults;\n this.includeTypes = cfg.includeTypes;\n this.excludeTypes = cfg.excludeTypes;\n this.excludeUnclassifiedObjects = cfg.excludeUnclassifiedObjects;\n }\n\n /**\n * Gets the ````.xkt```` format versions supported by this XKTLoaderPlugin/\n * @returns {string[]}\n */\n get supportedVersions() {\n return Object.keys(parsers);\n }\n\n /**\n * Sets a custom data source through which the XKTLoaderPlugin can load models and metadata.\n *\n * Default value is {@link XKTDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n */\n set dataSource(value) {\n this._dataSource = value || new XKTDefaultDataSource();\n }\n\n /**\n * Gets the custom data source through which the XKTLoaderPlugin can load models and metadata.\n *\n * Default value is {@link XKTDefaultDataSource}, which loads via HTTP.\n *\n * @type {Object}\n */\n get dataSource() {\n return this._dataSource;\n }\n\n /**\n * Sets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n set objectDefaults(value) {\n this._objectDefaults = value || IFCObjectDefaults;\n }\n\n /**\n * Gets map of initial default states for each loaded {@link Entity} that represents an object.\n *\n * Default value is {@link IFCObjectDefaults}.\n *\n * @type {{String: Object}}\n */\n get objectDefaults() {\n return this._objectDefaults;\n }\n\n /**\n * Sets the whitelist of the IFC types loaded by this XKTLoaderPlugin.\n *\n * When loading models with metadata, causes this XKTLoaderPlugin to only load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n set includeTypes(value) {\n this._includeTypes = value;\n }\n\n /**\n * Gets the whitelist of the IFC types loaded by this XKTLoaderPlugin.\n *\n * When loading models with metadata, causes this XKTLoaderPlugin to only load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n get includeTypes() {\n return this._includeTypes;\n }\n\n /**\n * Sets the blacklist of IFC types that are never loaded by this XKTLoaderPlugin.\n *\n * When loading models with metadata, causes this XKTLoaderPlugin to **not** load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n set excludeTypes(value) {\n this._excludeTypes = value;\n }\n\n /**\n * Gets the blacklist of IFC types that are never loaded by this XKTLoaderPlugin.\n *\n * When loading models with metadata, causes this XKTLoaderPlugin to **not** load objects whose types are in this\n * list. An object's type is indicated by its {@link MetaObject}'s {@link MetaObject#type}.\n *\n * Default value is ````undefined````.\n *\n * @type {String[]}\n */\n get excludeTypes() {\n return this._excludeTypes;\n }\n\n\n /**\n * Sets whether we load objects that don't have IFC types.\n *\n * When loading models with metadata and this is ````true````, XKTLoaderPlugin will not load objects\n * that don't have IFC types.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n set excludeUnclassifiedObjects(value) {\n this._excludeUnclassifiedObjects = !!value;\n }\n\n /**\n * Gets whether we load objects that don't have IFC types.\n *\n * When loading models with metadata and this is ````true````, XKTLoaderPlugin will not load objects\n * that don't have IFC types.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get excludeUnclassifiedObjects() {\n return this._excludeUnclassifiedObjects;\n }\n\n /**\n * Sets whether XKTLoaderPlugin globalizes each {@link Entity#id} and {@link MetaObject#id} as it loads a model.\n *\n * Set this ````true```` when you need to load multiple instances of the same model, to avoid ID clashes\n * between the objects in the different instances.\n *\n * When we load a model with this set ````true````, then each {@link Entity#id} and {@link MetaObject#id} will be\n * prefixed by the ID of the model, ie. ````#````.\n *\n * {@link Entity#originalSystemId} and {@link MetaObject#originalSystemId} will always hold the original, un-prefixed, ID values.\n *\n * Default value is ````false````.\n *\n * See the main {@link XKTLoaderPlugin} class documentation for usage info.\n *\n * @type {Boolean}\n */\n set globalizeObjectIds(value) {\n this._globalizeObjectIds = !!value;\n }\n\n /**\n * Gets whether XKTLoaderPlugin globalizes each {@link Entity#id} and {@link MetaObject#id} as it loads a model.\n *\n * Default value is ````false````.\n *\n * @type {Boolean}\n */\n get globalizeObjectIds() {\n return this._globalizeObjectIds;\n }\n\n /**\n * Loads an ````.xkt```` model into this XKTLoaderPlugin's {@link Viewer}.\n *\n * Since xeokit/xeokit-sdk 1.9.0, XKTLoaderPlugin has supported XKT 8, which bundles the metamodel\n * data (eg. an IFC element hierarchy) in the XKT file itself. For XKT 8, we therefore no longer need to\n * load the metamodel data from a separate accompanying JSON file, as we did with previous XKT versions.\n * However, if we do choose to specify a separate metamodel JSON file to load (eg. for backward compatibility\n * in data pipelines), then that metamodel will be loaded and the metamodel in the XKT 8 file will be ignored.\n *\n * @param {*} params Loading parameters.\n * @param {String} [params.id] ID to assign to the root {@link Entity#id}, unique among all components in the Viewer's {@link Scene}, generated automatically by default.\n * @param {String} [params.src] Path to a *````.xkt````* file, as an alternative to the ````xkt```` parameter.\n * @param {ArrayBuffer} [params.xkt] The *````.xkt````* file data, as an alternative to the ````src```` parameter.\n * @param {String} [params.metaModelSrc] Path to an optional metadata file, as an alternative to the ````metaModelData```` parameter.\n * @param {*} [params.metaModelData] JSON model metadata, as an alternative to the ````metaModelSrc```` parameter.\n * @param {{String:Object}} [params.objectDefaults] Map of initial default states for each loaded {@link Entity} that represents an object. Default value is {@link IFCObjectDefaults}.\n * @param {String[]} [params.includeTypes] When loading metadata, only loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {String[]} [params.excludeTypes] When loading metadata, never loads objects that have {@link MetaObject}s with {@link MetaObject#type} values in this list.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the model with edges emphasized.\n * @param {Number[]} [params.position=[0,0,0]] The model World-space 3D position.\n * @param {Number[]} [params.scale=[1,1,1]] The model's World-space scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's World-space rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [params.edges=false] Indicates if the model's edges are initially emphasized.\n * @param {Boolean} [params.saoEnabled=true] Indicates if Scalable Ambient Obscurance (SAO) will apply to the model. SAO is configured by the Scene's {@link SAO} component. Only works when {@link SAO#enabled} is also ````true````\n * @param {Boolean} [params.pbrEnabled=false] Indicates if physically-based rendering (PBR) will apply to the model. Only works when {@link Scene#pbrEnabled} is also ````true````.\n * @param {Number} [params.backfaces=false] When we set this ````true````, then we force rendering of backfaces for the model. When\n * we leave this ````false````, then we allow the Viewer to decide when to render backfaces. In that case, the\n * Viewer will hide backfaces on watertight meshes, show backfaces on open meshes, and always show backfaces on meshes when we slice them open with {@link SectionPlane}s.\n * @param {Boolean} [params.excludeUnclassifiedObjects=false] When loading metadata and this is ````true````, will only load {@link Entity}s that have {@link MetaObject}s (that are not excluded). This is useful when we don't want Entitys in the Scene that are not represented within IFC navigation components, such as {@link TreeViewPlugin}.\n * @param {Boolean} [params.globalizeObjectIds=false] Indicates whether to globalize each {@link Entity#id} and {@link MetaObject#id}, in case you need to prevent ID clashes with other models. See {@link XKTLoaderPlugin#globalizeObjectIds} for more info.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n */\n load(params = {}) {\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const performanceModel = new PerformanceModel(this.viewer.scene, utils.apply(params, {\n isModel: true,\n maxGeometryBatchSize: this._maxGeometryBatchSize\n }));\n\n const modelId = performanceModel.id; // In case ID was auto-generated\n\n if (!params.src && !params.xkt) {\n this.error(\"load() param expected: src or xkt\");\n return performanceModel; // Return new empty model\n }\n\n const options = {};\n const includeTypes = params.includeTypes || this._includeTypes;\n const excludeTypes = params.excludeTypes || this._excludeTypes;\n const objectDefaults = params.objectDefaults || this._objectDefaults;\n\n if (includeTypes) {\n options.includeTypesMap = {};\n for (let i = 0, len = includeTypes.length; i < len; i++) {\n options.includeTypesMap[includeTypes[i]] = true;\n }\n }\n\n if (excludeTypes) {\n options.excludeTypesMap = {};\n for (let i = 0, len = excludeTypes.length; i < len; i++) {\n options.excludeTypesMap[excludeTypes[i]] = true;\n }\n }\n\n if (objectDefaults) {\n options.objectDefaults = objectDefaults;\n }\n\n options.excludeUnclassifiedObjects = (params.excludeUnclassifiedObjects !== undefined) ? (!!params.excludeUnclassifiedObjects) : this._excludeUnclassifiedObjects;\n options.globalizeObjectIds = (params.globalizeObjectIds !== undefined) ? (!!params.globalizeObjectIds) : this._globalizeObjectIds;\n\n if (params.metaModelSrc || params.metaModelData) {\n\n const processMetaModelData = (metaModelData) => {\n\n const metaModel = this.viewer.metaScene.createMetaModel(modelId, metaModelData, {\n includeTypes: includeTypes,\n excludeTypes: excludeTypes,\n globalizeObjectIds: this.globalizeObjectIds\n });\n\n if (!metaModel) {\n return false;\n }\n\n if (params.src) {\n this._loadModel(params.src, params, options, performanceModel);\n } else {\n this._parseModel(params.xkt, params, options, performanceModel);\n }\n\n performanceModel.once(\"destroyed\", () => {\n this.viewer.metaScene.destroyMetaModel(performanceModel.id);\n });\n\n return true;\n };\n\n if (params.metaModelSrc) {\n\n const metaModelSrc = params.metaModelSrc;\n\n this.viewer.scene.canvas.spinner.processes++;\n\n this._dataSource.getMetaModel(metaModelSrc, (metaModelData) => {\n\n if (performanceModel.destroyed) {\n return;\n }\n\n if (!processMetaModelData(metaModelData)) {\n\n this.error(`load(): Failed to load model metadata for model '${modelId} from '${metaModelSrc}' - metadata not valid`);\n\n performanceModel.fire(\"error\", \"Metadata not valid\");\n }\n\n this.viewer.scene.canvas.spinner.processes--;\n\n }, (errMsg) => {\n\n this.error(`load(): Failed to load model metadata for model '${modelId} from '${metaModelSrc}' - ${errMsg}`);\n\n performanceModel.fire(\"error\", `Failed to load model metadata from '${metaModelSrc}' - ${errMsg}`);\n\n this.viewer.scene.canvas.spinner.processes--;\n });\n\n } else if (params.metaModelData) {\n\n if (!processMetaModelData(params.metaModelData)) {\n\n this.error(`load(): Failed to load model metadata for model '${modelId} from '${params.metaModelSrc}' - metadata not valid`);\n\n performanceModel.fire(\"error\", \"Metadata not valid\");\n }\n }\n\n } else {\n if (params.src) {\n this._loadModel(params.src, params, options, performanceModel);\n } else {\n this._parseModel(params.xkt, params, options, performanceModel);\n }\n }\n\n return performanceModel;\n }\n\n _loadModel(src, params, options, performanceModel) {\n\n const spinner = this.viewer.scene.canvas.spinner;\n\n spinner.processes++;\n\n this._dataSource.getXKT(params.src, (arrayBuffer) => {\n this._parseModel(arrayBuffer, params, options, performanceModel);\n spinner.processes--;\n },\n (errMsg) => {\n spinner.processes--;\n this.error(errMsg);\n performanceModel.fire(\"error\", errMsg);\n });\n }\n\n _parseModel(arrayBuffer, params, options, performanceModel) {\n\n if (performanceModel.destroyed) {\n return;\n }\n\n const dataView = new DataView(arrayBuffer);\n const dataArray = new Uint8Array(arrayBuffer);\n const xktVersion = dataView.getUint32(0, true);\n const parser = parsers[xktVersion];\n\n if (!parser) {\n this.error(\"Unsupported .XKT file version: \" + xktVersion + \" - this XKTLoaderPlugin supports versions \" + Object.keys(parsers));\n return;\n }\n\n this.log(\"Loading .xkt V\" + xktVersion);\n\n const numElements = dataView.getUint32(4, true);\n const elements = [];\n let byteOffset = (numElements + 2) * 4;\n for (let i = 0; i < numElements; i++) {\n const elementSize = dataView.getUint32((i + 2) * 4, true);\n elements.push(dataArray.subarray(byteOffset, byteOffset + elementSize));\n byteOffset += elementSize;\n }\n\n parser.parse(this.viewer, options, elements, performanceModel);\n\n performanceModel.finalize();\n\n this._createDefaultMetaModelIfNeeded(performanceModel, params, options);\n\n performanceModel.scene.once(\"tick\", () => {\n if (performanceModel.destroyed) {\n return;\n }\n performanceModel.scene.fire(\"modelLoaded\", performanceModel.id); // FIXME: Assumes listeners know order of these two events\n performanceModel.fire(\"loaded\", true, false); // Don't forget the event, for late subscribers\n });\n }\n\n _createDefaultMetaModelIfNeeded(performanceModel, params, options) {\n\n const metaModelId = performanceModel.id;\n\n if (!this.viewer.metaScene.metaModels[metaModelId]) {\n\n const metaModelData = {\n metaObjects: []\n };\n\n metaModelData.metaObjects.push({\n id: metaModelId,\n type: \"default\",\n name: metaModelId,\n parent: null\n });\n\n const entityList = performanceModel.entityList;\n\n for (let i = 0, len = entityList.length; i < len; i++) {\n const entity = entityList[i];\n if (entity.isObject) {\n metaModelData.metaObjects.push({\n id: entity.id,\n type: \"default\",\n name: entity.id,\n parent: metaModelId\n });\n }\n }\n\n const src = params.src;\n\n this.viewer.metaScene.createMetaModel(metaModelId, metaModelData, {\n\n includeTypes: options.includeTypes,\n excludeTypes: options.excludeTypes,\n globalizeObjectIds: options.globalizeObjectIds,\n\n getProperties: async (propertiesId) => {\n return await this._dataSource.getProperties(src, propertiesId);\n }\n });\n\n performanceModel.once(\"destroyed\", () => {\n this.viewer.metaScene.destroyMetaModel(metaModelId);\n });\n }\n }\n}\n\n/**\n * @desc Configures the normal rendered appearance of {@link Mesh}es using the non-realistic but GPU-efficient Lambertian flat shading model for calculating reflectance.\n *\n * * Useful for efficiently rendering non-realistic objects for high-detail CAD.\n * * Use {@link PhongMaterial} when you need specular highlights.\n * * Use the physically-based {@link MetallicMaterial} or {@link SpecularMaterial} when you need more realism.\n * * For LambertMaterial, the illumination calculation is performed at each triangle vertex, and the resulting color is interpolated across the face of the triangle. For {@link PhongMaterial}, {@link MetallicMaterial} and\n * {@link SpecularMaterial}, vertex normals are interpolated across the surface of the triangle, and the illumination calculation is performed at each texel.\n *\n * ## Usage\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_LambertMaterial)]\n *\n * In the example below we'll create a {@link Mesh} with a shape defined by a {@link buildTorusGeometry} and normal rendering appearance configured with a LambertMaterial.\n *\n * ```` javascript\n * import {Viewer, Mesh, buildTorusGeometry, ReadableGeometry, LambertMaterial} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 12,\n * tubeSegments: 8,\n * arc: Math.PI * 2.0\n * }),\n * material: new LambertMaterial(viewer.scene, {\n * ambient: [0.3, 0.3, 0.3],\n * color: [0.5, 0.5, 0.0],\n * alpha: 1.0, // Default\n * lineWidth: 1,\n * pointSize: 1,\n * backfaces: false,\n * frontFace: \"ccw\"\n * })\n * });\n * ````\n *\n * ## LambertMaterial Properties\n *\n * The following table summarizes LambertMaterial properties:\n *\n * | Property | Type | Range | Default Value | Space | Description |\n * |:--------:|:----:|:-----:|:-------------:|:-----:|:-----------:|\n * | {@link LambertMaterial#ambient} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the ambient light reflected by the material. |\n * | {@link LambertMaterial#color} | Array | [0, 1] for all components | [1,1,1,1] | linear | The RGB components of the diffuse light reflected by the material. |\n * | {@link LambertMaterial#emissive} | Array | [0, 1] for all components | [0,0,0] | linear | The RGB components of the light emitted by the material. |\n * | {@link LambertMaterial#alpha} | Number | [0, 1] | 1 | linear | The transparency of the material surface (0 fully transparent, 1 fully opaque). |\n * | {@link LambertMaterial#lineWidth} | Number | [0..100] | 1 | | Line width in pixels. |\n * | {@link LambertMaterial#pointSize} | Number | [0..100] | 1 | | Point size in pixels. |\n * | {@link LambertMaterial#backfaces} | Boolean | | false | | Whether to render {@link Geometry} backfaces. |\n * | {@link LambertMaterial#frontface} | String | \"ccw\", \"cw\" | \"ccw\" | | The winding order for {@link Geometry} frontfaces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise. |\n *\n */\nclass LambertMaterial extends Material {\n\n /**\n @private\n */\n get type() {\n return \"LambertMaterial\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] The LambertMaterial configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {String:Object} [cfg.meta=null] Metadata to attach to this LambertMaterial.\n * @param {Number[]} [cfg.ambient=[1.0, 1.0, 1.0 ]] LambertMaterial ambient color.\n * @param {Number[]} [cfg.color=[ 1.0, 1.0, 1.0 ]] LambertMaterial diffuse color.\n * @param {Number[]} [cfg.emissive=[ 0.0, 0.0, 0.0 ]] LambertMaterial emissive color.\n * @param {Number} [cfg.alpha=1]Scalar in range 0-1 that controls alpha, where 0 is completely transparent and 1 is completely opaque.\n * @param {Number} [cfg.reflectivity=1]Scalar in range 0-1 that controls how much {@link ReflectionMap} is reflected.\n * @param {Number} [cfg.lineWidth=1] Scalar that controls the width of {@link Geometry} lines.\n * @param {Number} [cfg.pointSize=1] Scalar that controls the size of points for {@link Geometry} with {@link Geometry#primitive} set to \"points\".\n * @param {Boolean} [cfg.backfaces=false] Whether to render {@link Geometry} backfaces.\n * @param {Boolean} [cfg.frontface=\"ccw\"] The winding order for {@link Geometry} front faces - \"cw\" for clockwise, or \"ccw\" for counter-clockwise.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n type: \"LambertMaterial\",\n ambient: math.vec3([1.0, 1.0, 1.0]),\n color: math.vec3([1.0, 1.0, 1.0]),\n emissive: math.vec3([0.0, 0.0, 0.0]),\n alpha: null,\n alphaMode: 0, // 2 (\"blend\") when transparent, so renderer knows when to add to transparency bin\n lineWidth: null,\n pointSize: null,\n backfaces: null,\n frontface: null, // Boolean for speed; true == \"ccw\", false == \"cw\"\n hash: \"/lam;\"\n });\n\n this.ambient = cfg.ambient;\n this.color = cfg.color;\n this.emissive = cfg.emissive;\n this.alpha = cfg.alpha;\n this.lineWidth = cfg.lineWidth;\n this.pointSize = cfg.pointSize;\n this.backfaces = cfg.backfaces;\n this.frontface = cfg.frontface;\n }\n\n /**\n * Sets the LambertMaterial's ambient color.\n *\n * Default value is ````[0.3, 0.3, 0.3]````.\n *\n * @type {Number[]}\n */\n set ambient(value) {\n let ambient = this._state.ambient;\n if (!ambient) {\n ambient = this._state.ambient = new Float32Array(3);\n } else if (value && ambient[0] === value[0] && ambient[1] === value[1] && ambient[2] === value[2]) {\n return;\n }\n if (value) {\n ambient[0] = value[0];\n ambient[1] = value[1];\n ambient[2] = value[2];\n } else {\n ambient[0] = .2;\n ambient[1] = .2;\n ambient[2] = .2;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the LambertMaterial's ambient color.\n *\n * Default value is ````[0.3, 0.3, 0.3]````.\n *\n * @type {Number[]}\n */\n get ambient() {\n return this._state.ambient;\n }\n\n /**\n * Sets the LambertMaterial's diffuse color.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n set color(value) {\n let color = this._state.color;\n if (!color) {\n color = this._state.color = new Float32Array(3);\n } else if (value && color[0] === value[0] && color[1] === value[1] && color[2] === value[2]) {\n return;\n }\n if (value) {\n color[0] = value[0];\n color[1] = value[1];\n color[2] = value[2];\n } else {\n color[0] = 1;\n color[1] = 1;\n color[2] = 1;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the LambertMaterial's diffuse color.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n get color() {\n return this._state.color;\n }\n\n /**\n * Sets the LambertMaterial's emissive color.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n set emissive(value) {\n let emissive = this._state.emissive;\n if (!emissive) {\n emissive = this._state.emissive = new Float32Array(3);\n } else if (value && emissive[0] === value[0] && emissive[1] === value[1] && emissive[2] === value[2]) {\n return;\n }\n if (value) {\n emissive[0] = value[0];\n emissive[1] = value[1];\n emissive[2] = value[2];\n } else {\n emissive[0] = 0;\n emissive[1] = 0;\n emissive[2] = 0;\n }\n this.glRedraw();\n }\n\n /**\n * Gets the LambertMaterial's emissive color.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n get emissive() {\n return this._state.emissive;\n }\n\n /**\n * Sets factor in the range ````[0..1]```` indicating how transparent the LambertMaterial is.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default value is ````1.0````\n *\n * @type {Number}\n */\n set alpha(value) {\n value = (value !== undefined && value !== null) ? value : 1.0;\n if (this._state.alpha === value) {\n return;\n }\n this._state.alpha = value;\n this._state.alphaMode = value < 1.0 ? 2 /* blend */ : 0;\n /* opaque */\n this.glRedraw();\n }\n\n /**\n * Gets factor in the range ````[0..1]```` indicating how transparent the LambertMaterial is.\n *\n * A value of ````0.0```` indicates fully transparent, ````1.0```` is fully opaque.\n *\n * Default value is ````1.0````\n *\n * @type {Number}\n */\n get alpha() {\n return this._state.alpha;\n }\n\n /**\n * Sets the LambertMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set lineWidth(value) {\n this._state.lineWidth = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the LambertMaterial's line width.\n *\n * This is not supported by WebGL implementations based on DirectX [2019].\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get lineWidth() {\n return this._state.lineWidth;\n }\n\n /**\n * Sets the LambertMaterial's point size.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n set pointSize(value) {\n this._state.pointSize = value || 1.0;\n this.glRedraw();\n }\n\n /**\n * Gets the LambertMaterial's point size.\n *\n * Default value is ````1.0````.\n *\n * @type {Number}\n */\n get pointSize() {\n return this._state.pointSize;\n }\n\n /**\n * Sets whether backfaces are visible on attached {@link Mesh}es.\n *\n * @type {Boolean}\n */\n set backfaces(value) {\n value = !!value;\n if (this._state.backfaces === value) {\n return;\n }\n this._state.backfaces = value;\n this.glRedraw();\n }\n\n /**\n * Gets whether backfaces are visible on attached {@link Mesh}es.\n *\n * @type {Boolean}\n */\n get backfaces() {\n return this._state.backfaces;\n }\n\n /**\n * Sets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n *\n * Default value is ````\"ccw\"````.\n *\n * @type {String}\n */\n set frontface(value) {\n value = value !== \"cw\";\n if (this._state.frontface === value) {\n return;\n }\n this._state.frontface = value;\n this.glRedraw();\n }\n\n /**\n * Gets the winding direction of front faces of {@link Geometry} of attached {@link Mesh}es.\n *\n * Default value is ````\"ccw\"````.\n *\n * @type {String}\n */\n get frontface() {\n return this._state.frontface ? \"ccw\" : \"cw\";\n }\n\n _getState() {\n return this._state;\n }\n\n /**\n * Destroys this LambertMaterial.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\n/*\n Copyright (c) 2013 Gildas Lormeau. 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,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors 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 ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n 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 * @private\n * @type {{}}\n */\nvar zipLib = {};\n\n(function (obj) {\n\n var ERR_BAD_FORMAT = \"File format is not recognized.\";\n var ERR_CRC = \"CRC failed.\";\n var ERR_ENCRYPTED = \"File contains encrypted entry.\";\n var ERR_ZIP64 = \"File is using Zip64 (4gb+ file size).\";\n var ERR_READ = \"Error while reading zip file.\";\n var ERR_WRITE = \"Error while writing zip file.\";\n var ERR_WRITE_DATA = \"Error while writing file data.\";\n var ERR_READ_DATA = \"Error while reading file data.\";\n var ERR_DUPLICATED_NAME = \"File already exists.\";\n var CHUNK_SIZE = 512 * 1024;\n\n var TEXT_PLAIN = \"text/plain\";\n\n var appendABViewSupported;\n try {\n appendABViewSupported = new Blob([new DataView(new ArrayBuffer(0))]).size === 0;\n } catch (e) {\n }\n\n function Crc32() {\n this.crc = -1;\n }\n\n Crc32.prototype.append = function append(data) {\n var crc = this.crc | 0, table = this.table;\n for (var offset = 0, len = data.length | 0; offset < len; offset++)\n crc = (crc >>> 8) ^ table[(crc ^ data[offset]) & 0xFF];\n this.crc = crc;\n };\n Crc32.prototype.get = function get() {\n return ~this.crc;\n };\n Crc32.prototype.table = (function () {\n var i, j, t, table = []; // Uint32Array is actually slower than []\n for (i = 0; i < 256; i++) {\n t = i;\n for (j = 0; j < 8; j++)\n if (t & 1)\n t = (t >>> 1) ^ 0xEDB88320;\n else\n t = t >>> 1;\n table[i] = t;\n }\n return table;\n })();\n\n // \"no-op\" codec\n function NOOP() {\n }\n\n NOOP.prototype.append = function append(bytes, onprogress) {\n return bytes;\n };\n NOOP.prototype.flush = function flush() {\n };\n\n function blobSlice(blob, index, length) {\n if (index < 0 || length < 0 || index + length > blob.size)\n throw new RangeError('offset:' + index + ', length:' + length + ', size:' + blob.size);\n if (blob.slice)\n return blob.slice(index, index + length);\n else if (blob.webkitSlice)\n return blob.webkitSlice(index, index + length);\n else if (blob.mozSlice)\n return blob.mozSlice(index, index + length);\n else if (blob.msSlice)\n return blob.msSlice(index, index + length);\n }\n\n function getDataHelper(byteLength, bytes) {\n var dataBuffer, dataArray;\n dataBuffer = new ArrayBuffer(byteLength);\n dataArray = new Uint8Array(dataBuffer);\n if (bytes)\n dataArray.set(bytes, 0);\n return {\n buffer: dataBuffer,\n array: dataArray,\n view: new DataView(dataBuffer)\n };\n }\n\n // Readers\n function Reader() {\n }\n\n function TextReader(text) {\n var that = this, blobReader;\n\n function init(callback, onerror) {\n var blob = new Blob([text], {\n type: TEXT_PLAIN\n });\n blobReader = new BlobReader(blob);\n blobReader.init(function () {\n that.size = blobReader.size;\n callback();\n }, onerror);\n }\n\n function readUint8Array(index, length, callback, onerror) {\n blobReader.readUint8Array(index, length, callback, onerror);\n }\n\n that.size = 0;\n that.init = init;\n that.readUint8Array = readUint8Array;\n }\n\n TextReader.prototype = new Reader();\n TextReader.prototype.constructor = TextReader;\n\n function Data64URIReader(dataURI) {\n var that = this, dataStart;\n\n function init(callback) {\n var dataEnd = dataURI.length;\n while (dataURI.charAt(dataEnd - 1) == \"=\")\n dataEnd--;\n dataStart = dataURI.indexOf(\",\") + 1;\n that.size = Math.floor((dataEnd - dataStart) * 0.75);\n callback();\n }\n\n function readUint8Array(index, length, callback) {\n var i, data = getDataHelper(length);\n var start = Math.floor(index / 3) * 4;\n var end = Math.ceil((index + length) / 3) * 4;\n var bytes = obj.atob(dataURI.substring(start + dataStart, end + dataStart));\n var delta = index - Math.floor(start / 4) * 3;\n for (i = delta; i < delta + length; i++)\n data.array[i - delta] = bytes.charCodeAt(i);\n callback(data.array);\n }\n\n that.size = 0;\n that.init = init;\n that.readUint8Array = readUint8Array;\n }\n\n Data64URIReader.prototype = new Reader();\n Data64URIReader.prototype.constructor = Data64URIReader;\n\n function BlobReader(blob) {\n var that = this;\n\n function init(callback) {\n that.size = blob.size;\n callback();\n }\n\n function readUint8Array(index, length, callback, onerror) {\n var reader = new FileReader();\n reader.onload = function (e) {\n callback(new Uint8Array(e.target.result));\n };\n reader.onerror = onerror;\n try {\n reader.readAsArrayBuffer(blobSlice(blob, index, length));\n } catch (e) {\n onerror(e);\n }\n }\n\n that.size = 0;\n that.init = init;\n that.readUint8Array = readUint8Array;\n }\n\n BlobReader.prototype = new Reader();\n BlobReader.prototype.constructor = BlobReader;\n\n // Writers\n\n function Writer() {\n }\n\n Writer.prototype.getData = function (callback) {\n callback(this.data);\n };\n\n function TextWriter(encoding) {\n var that = this, blob;\n\n function init(callback) {\n blob = new Blob([], {\n type: TEXT_PLAIN\n });\n callback();\n }\n\n function writeUint8Array(array, callback) {\n blob = new Blob([blob, appendABViewSupported ? array : array.buffer], {\n type: TEXT_PLAIN\n });\n callback();\n }\n\n function getData(callback, onerror) {\n var reader = new FileReader();\n reader.onload = function (e) {\n callback(e.target.result);\n };\n reader.onerror = onerror;\n reader.readAsText(blob, encoding);\n }\n\n that.init = init;\n that.writeUint8Array = writeUint8Array;\n that.getData = getData;\n }\n\n TextWriter.prototype = new Writer();\n TextWriter.prototype.constructor = TextWriter;\n\n function Data64URIWriter(contentType) {\n var that = this, data = \"\", pending = \"\";\n\n function init(callback) {\n data += \"data:\" + (contentType || \"\") + \";base64,\";\n callback();\n }\n\n function writeUint8Array(array, callback) {\n var i, delta = pending.length, dataString = pending;\n pending = \"\";\n for (i = 0; i < (Math.floor((delta + array.length) / 3) * 3) - delta; i++)\n dataString += String.fromCharCode(array[i]);\n for (; i < array.length; i++)\n pending += String.fromCharCode(array[i]);\n if (dataString.length > 2)\n data += obj.btoa(dataString);\n else\n pending = dataString;\n callback();\n }\n\n function getData(callback) {\n callback(data + obj.btoa(pending));\n }\n\n that.init = init;\n that.writeUint8Array = writeUint8Array;\n that.getData = getData;\n }\n\n Data64URIWriter.prototype = new Writer();\n Data64URIWriter.prototype.constructor = Data64URIWriter;\n\n function BlobWriter(contentType) {\n var blob, that = this;\n\n function init(callback) {\n blob = new Blob([], {\n type: contentType\n });\n callback();\n }\n\n function writeUint8Array(array, callback) {\n blob = new Blob([blob, appendABViewSupported ? array : array.buffer], {\n type: contentType\n });\n callback();\n }\n\n function getData(callback) {\n callback(blob);\n }\n\n that.init = init;\n that.writeUint8Array = writeUint8Array;\n that.getData = getData;\n }\n\n BlobWriter.prototype = new Writer();\n BlobWriter.prototype.constructor = BlobWriter;\n\n /**\n * inflate/deflate core functions\n * @param worker {Worker} web worker for the task.\n * @param initialMessage {Object} initial message to be sent to the worker. should contain\n * sn(serial number for distinguishing multiple tasks sent to the worker), and codecClass.\n * This function may add more properties before sending.\n */\n function launchWorkerProcess(worker, initialMessage, reader, writer, offset, size, onprogress, onend, onreaderror, onwriteerror) {\n var chunkIndex = 0, index, outputSize, sn = initialMessage.sn, crc;\n\n function onflush() {\n worker.removeEventListener('message', onmessage, false);\n onend(outputSize, crc);\n }\n\n function onmessage(event) {\n var message = event.data, data = message.data, err = message.error;\n if (err) {\n err.toString = function () {\n return 'Error: ' + this.message;\n };\n onreaderror(err);\n return;\n }\n if (message.sn !== sn)\n return;\n if (typeof message.codecTime === 'number')\n worker.codecTime += message.codecTime; // should be before onflush()\n if (typeof message.crcTime === 'number')\n worker.crcTime += message.crcTime;\n\n switch (message.type) {\n case 'append':\n if (data) {\n outputSize += data.length;\n writer.writeUint8Array(data, function () {\n step();\n }, onwriteerror);\n } else\n step();\n break;\n case 'flush':\n crc = message.crc;\n if (data) {\n outputSize += data.length;\n writer.writeUint8Array(data, function () {\n onflush();\n }, onwriteerror);\n } else\n onflush();\n break;\n case 'progress':\n if (onprogress)\n onprogress(index + message.loaded, size);\n break;\n case 'importScripts': //no need to handle here\n case 'newTask':\n case 'echo':\n break;\n default:\n console.warn('zip.js:launchWorkerProcess: unknown message: ', message);\n }\n }\n\n function step() {\n index = chunkIndex * CHUNK_SIZE;\n // use `<=` instead of `<`, because `size` may be 0.\n if (index <= size) {\n reader.readUint8Array(offset + index, Math.min(CHUNK_SIZE, size - index), function (array) {\n if (onprogress)\n onprogress(index, size);\n var msg = index === 0 ? initialMessage : {sn: sn};\n msg.type = 'append';\n msg.data = array;\n\n // posting a message with transferables will fail on IE10\n try {\n worker.postMessage(msg, [array.buffer]);\n } catch (ex) {\n worker.postMessage(msg); // retry without transferables\n }\n chunkIndex++;\n }, onreaderror);\n } else {\n worker.postMessage({\n sn: sn,\n type: 'flush'\n });\n }\n }\n\n outputSize = 0;\n worker.addEventListener('message', onmessage, false);\n step();\n }\n\n function launchProcess(process, reader, writer, offset, size, crcType, onprogress, onend, onreaderror, onwriteerror) {\n var chunkIndex = 0, index, outputSize = 0,\n crcInput = crcType === 'input',\n crcOutput = crcType === 'output',\n crc = new Crc32();\n\n function step() {\n var outputData;\n index = chunkIndex * CHUNK_SIZE;\n if (index < size)\n reader.readUint8Array(offset + index, Math.min(CHUNK_SIZE, size - index), function (inputData) {\n var outputData;\n try {\n outputData = process.append(inputData, function (loaded) {\n if (onprogress)\n onprogress(index + loaded, size);\n });\n } catch (e) {\n onreaderror(e);\n return;\n }\n if (outputData) {\n outputSize += outputData.length;\n writer.writeUint8Array(outputData, function () {\n chunkIndex++;\n setTimeout(step, 1);\n }, onwriteerror);\n if (crcOutput)\n crc.append(outputData);\n } else {\n chunkIndex++;\n setTimeout(step, 1);\n }\n if (crcInput)\n crc.append(inputData);\n if (onprogress)\n onprogress(index, size);\n }, onreaderror);\n else {\n try {\n outputData = process.flush();\n } catch (e) {\n onreaderror(e);\n return;\n }\n if (outputData) {\n if (crcOutput)\n crc.append(outputData);\n outputSize += outputData.length;\n writer.writeUint8Array(outputData, function () {\n onend(outputSize, crc.get());\n }, onwriteerror);\n } else\n onend(outputSize, crc.get());\n }\n }\n\n step();\n }\n\n function inflate(worker, sn, reader, writer, offset, size, computeCrc32, onend, onprogress, onreaderror, onwriteerror) {\n var crcType = computeCrc32 ? 'output' : 'none';\n if (obj.zip.useWebWorkers) {\n var initialMessage = {\n sn: sn,\n codecClass: 'Inflater',\n crcType: crcType,\n };\n launchWorkerProcess(worker, initialMessage, reader, writer, offset, size, onprogress, onend, onreaderror, onwriteerror);\n } else\n launchProcess(new obj.zip.Inflater(), reader, writer, offset, size, crcType, onprogress, onend, onreaderror, onwriteerror);\n }\n\n function deflate(worker, sn, reader, writer, level, onend, onprogress, onreaderror, onwriteerror) {\n var crcType = 'input';\n if (obj.zip.useWebWorkers) {\n var initialMessage = {\n sn: sn,\n options: {level: level},\n codecClass: 'Deflater',\n crcType: crcType,\n };\n launchWorkerProcess(worker, initialMessage, reader, writer, 0, reader.size, onprogress, onend, onreaderror, onwriteerror);\n } else\n launchProcess(new obj.zip.Deflater(), reader, writer, 0, reader.size, crcType, onprogress, onend, onreaderror, onwriteerror);\n }\n\n function copy(worker, sn, reader, writer, offset, size, computeCrc32, onend, onprogress, onreaderror, onwriteerror) {\n var crcType = 'input';\n if (obj.zip.useWebWorkers && computeCrc32) {\n var initialMessage = {\n sn: sn,\n codecClass: 'NOOP',\n crcType: crcType,\n };\n launchWorkerProcess(worker, initialMessage, reader, writer, offset, size, onprogress, onend, onreaderror, onwriteerror);\n } else\n launchProcess(new NOOP(), reader, writer, offset, size, crcType, onprogress, onend, onreaderror, onwriteerror);\n }\n\n // ZipReader\n\n function decodeASCII(str) {\n var i, out = \"\", charCode, extendedASCII = ['\\u00C7', '\\u00FC', '\\u00E9', '\\u00E2', '\\u00E4', '\\u00E0', '\\u00E5', '\\u00E7', '\\u00EA', '\\u00EB',\n '\\u00E8', '\\u00EF', '\\u00EE', '\\u00EC', '\\u00C4', '\\u00C5', '\\u00C9', '\\u00E6', '\\u00C6', '\\u00F4', '\\u00F6', '\\u00F2', '\\u00FB', '\\u00F9',\n '\\u00FF', '\\u00D6', '\\u00DC', '\\u00F8', '\\u00A3', '\\u00D8', '\\u00D7', '\\u0192', '\\u00E1', '\\u00ED', '\\u00F3', '\\u00FA', '\\u00F1', '\\u00D1',\n '\\u00AA', '\\u00BA', '\\u00BF', '\\u00AE', '\\u00AC', '\\u00BD', '\\u00BC', '\\u00A1', '\\u00AB', '\\u00BB', '_', '_', '_', '\\u00A6', '\\u00A6',\n '\\u00C1', '\\u00C2', '\\u00C0', '\\u00A9', '\\u00A6', '\\u00A6', '+', '+', '\\u00A2', '\\u00A5', '+', '+', '-', '-', '+', '-', '+', '\\u00E3',\n '\\u00C3', '+', '+', '-', '-', '\\u00A6', '-', '+', '\\u00A4', '\\u00F0', '\\u00D0', '\\u00CA', '\\u00CB', '\\u00C8', 'i', '\\u00CD', '\\u00CE',\n '\\u00CF', '+', '+', '_', '_', '\\u00A6', '\\u00CC', '_', '\\u00D3', '\\u00DF', '\\u00D4', '\\u00D2', '\\u00F5', '\\u00D5', '\\u00B5', '\\u00FE',\n '\\u00DE', '\\u00DA', '\\u00DB', '\\u00D9', '\\u00FD', '\\u00DD', '\\u00AF', '\\u00B4', '\\u00AD', '\\u00B1', '_', '\\u00BE', '\\u00B6', '\\u00A7',\n '\\u00F7', '\\u00B8', '\\u00B0', '\\u00A8', '\\u00B7', '\\u00B9', '\\u00B3', '\\u00B2', '_', ' '];\n for (i = 0; i < str.length; i++) {\n charCode = str.charCodeAt(i) & 0xFF;\n if (charCode > 127)\n out += extendedASCII[charCode - 128];\n else\n out += String.fromCharCode(charCode);\n }\n return out;\n }\n\n function decodeUTF8(string) {\n return decodeURIComponent(escape(string));\n }\n\n function getString(bytes) {\n var i, str = \"\";\n for (i = 0; i < bytes.length; i++)\n str += String.fromCharCode(bytes[i]);\n return str;\n }\n\n function getDate(timeRaw) {\n var date = (timeRaw & 0xffff0000) >> 16, time = timeRaw & 0x0000ffff;\n try {\n return new Date(1980 + ((date & 0xFE00) >> 9), ((date & 0x01E0) >> 5) - 1, date & 0x001F, (time & 0xF800) >> 11, (time & 0x07E0) >> 5,\n (time & 0x001F) * 2, 0);\n } catch (e) {\n }\n }\n\n function readCommonHeader(entry, data, index, centralDirectory, onerror) {\n entry.version = data.view.getUint16(index, true);\n entry.bitFlag = data.view.getUint16(index + 2, true);\n entry.compressionMethod = data.view.getUint16(index + 4, true);\n entry.lastModDateRaw = data.view.getUint32(index + 6, true);\n entry.lastModDate = getDate(entry.lastModDateRaw);\n if ((entry.bitFlag & 0x01) === 0x01) {\n onerror(ERR_ENCRYPTED);\n return;\n }\n if (centralDirectory || (entry.bitFlag & 0x0008) != 0x0008) {\n entry.crc32 = data.view.getUint32(index + 10, true);\n entry.compressedSize = data.view.getUint32(index + 14, true);\n entry.uncompressedSize = data.view.getUint32(index + 18, true);\n }\n if (entry.compressedSize === 0xFFFFFFFF || entry.uncompressedSize === 0xFFFFFFFF) {\n onerror(ERR_ZIP64);\n return;\n }\n entry.filenameLength = data.view.getUint16(index + 22, true);\n entry.extraFieldLength = data.view.getUint16(index + 24, true);\n }\n\n function createZipReader(reader, callback, onerror) {\n var inflateSN = 0;\n\n function Entry() {\n }\n\n Entry.prototype.getData = function (writer, onend, onprogress, checkCrc32) {\n var that = this;\n\n function testCrc32(crc32) {\n var dataCrc32 = getDataHelper(4);\n dataCrc32.view.setUint32(0, crc32);\n return that.crc32 == dataCrc32.view.getUint32(0);\n }\n\n function getWriterData(uncompressedSize, crc32) {\n if (checkCrc32 && !testCrc32(crc32))\n onerror(ERR_CRC);\n else\n writer.getData(function (data) {\n onend(data);\n });\n }\n\n function onreaderror(err) {\n onerror(err || ERR_READ_DATA);\n }\n\n function onwriteerror(err) {\n onerror(err || ERR_WRITE_DATA);\n }\n\n reader.readUint8Array(that.offset, 30, function (bytes) {\n var data = getDataHelper(bytes.length, bytes), dataOffset;\n if (data.view.getUint32(0) != 0x504b0304) {\n onerror(ERR_BAD_FORMAT);\n return;\n }\n readCommonHeader(that, data, 4, false, onerror);\n dataOffset = that.offset + 30 + that.filenameLength + that.extraFieldLength;\n writer.init(function () {\n if (that.compressionMethod === 0)\n copy(that._worker, inflateSN++, reader, writer, dataOffset, that.compressedSize, checkCrc32, getWriterData, onprogress, onreaderror, onwriteerror);\n else\n inflate(that._worker, inflateSN++, reader, writer, dataOffset, that.compressedSize, checkCrc32, getWriterData, onprogress, onreaderror, onwriteerror);\n }, onwriteerror);\n }, onreaderror);\n };\n\n function seekEOCDR(eocdrCallback) {\n // \"End of central directory record\" is the last part of a zip archive, and is at least 22 bytes long.\n // Zip file comment is the last part of EOCDR and has max length of 64KB,\n // so we only have to search the last 64K + 22 bytes of a archive for EOCDR signature (0x06054b50).\n var EOCDR_MIN = 22;\n if (reader.size < EOCDR_MIN) {\n onerror(ERR_BAD_FORMAT);\n return;\n }\n var ZIP_COMMENT_MAX = 256 * 256, EOCDR_MAX = EOCDR_MIN + ZIP_COMMENT_MAX;\n\n // In most cases, the EOCDR is EOCDR_MIN bytes long\n doSeek(EOCDR_MIN, function () {\n // If not found, try within EOCDR_MAX bytes\n doSeek(Math.min(EOCDR_MAX, reader.size), function () {\n onerror(ERR_BAD_FORMAT);\n });\n });\n\n // seek last length bytes of file for EOCDR\n function doSeek(length, eocdrNotFoundCallback) {\n reader.readUint8Array(reader.size - length, length, function (bytes) {\n for (var i = bytes.length - EOCDR_MIN; i >= 0; i--) {\n if (bytes[i] === 0x50 && bytes[i + 1] === 0x4b && bytes[i + 2] === 0x05 && bytes[i + 3] === 0x06) {\n eocdrCallback(new DataView(bytes.buffer, i, EOCDR_MIN));\n return;\n }\n }\n eocdrNotFoundCallback();\n }, function () {\n onerror(ERR_READ);\n });\n }\n }\n\n var zipReader = {\n getEntries: function (callback) {\n var worker = this._worker;\n // look for End of central directory record\n seekEOCDR(function (dataView) {\n var datalength, fileslength;\n datalength = dataView.getUint32(16, true);\n fileslength = dataView.getUint16(8, true);\n if (datalength < 0 || datalength >= reader.size) {\n onerror(ERR_BAD_FORMAT);\n return;\n }\n reader.readUint8Array(datalength, reader.size - datalength, function (bytes) {\n var i, index = 0, entries = [], entry, filename, comment, data = getDataHelper(bytes.length, bytes);\n for (i = 0; i < fileslength; i++) {\n entry = new Entry();\n entry._worker = worker;\n if (data.view.getUint32(index) != 0x504b0102) {\n onerror(ERR_BAD_FORMAT);\n return;\n }\n readCommonHeader(entry, data, index + 6, true, onerror);\n entry.commentLength = data.view.getUint16(index + 32, true);\n entry.directory = ((data.view.getUint8(index + 38) & 0x10) == 0x10);\n entry.offset = data.view.getUint32(index + 42, true);\n filename = getString(data.array.subarray(index + 46, index + 46 + entry.filenameLength));\n entry.filename = ((entry.bitFlag & 0x0800) === 0x0800) ? decodeUTF8(filename) : decodeASCII(filename);\n if (!entry.directory && entry.filename.charAt(entry.filename.length - 1) == \"/\")\n entry.directory = true;\n comment = getString(data.array.subarray(index + 46 + entry.filenameLength + entry.extraFieldLength, index + 46\n + entry.filenameLength + entry.extraFieldLength + entry.commentLength));\n entry.comment = ((entry.bitFlag & 0x0800) === 0x0800) ? decodeUTF8(comment) : decodeASCII(comment);\n entries.push(entry);\n index += 46 + entry.filenameLength + entry.extraFieldLength + entry.commentLength;\n }\n callback(entries);\n }, function () {\n onerror(ERR_READ);\n });\n });\n },\n close: function (callback) {\n if (this._worker) {\n this._worker.terminate();\n this._worker = null;\n }\n if (callback)\n callback();\n },\n _worker: null\n };\n\n if (!obj.zip.useWebWorkers)\n callback(zipReader);\n else {\n createWorker('inflater',\n function (worker) {\n zipReader._worker = worker;\n callback(zipReader);\n },\n function (err) {\n onerror(err);\n }\n );\n }\n }\n\n // ZipWriter\n\n function encodeUTF8(string) {\n return unescape(encodeURIComponent(string));\n }\n\n function getBytes(str) {\n var i, array = [];\n for (i = 0; i < str.length; i++)\n array.push(str.charCodeAt(i));\n return array;\n }\n\n function createZipWriter(writer, callback, onerror, dontDeflate) {\n var files = {}, filenames = [], datalength = 0;\n var deflateSN = 0;\n\n function onwriteerror(err) {\n onerror(err || ERR_WRITE);\n }\n\n function onreaderror(err) {\n onerror(err || ERR_READ_DATA);\n }\n\n var zipWriter = {\n add: function (name, reader, onend, onprogress, options) {\n var header, filename, date;\n var worker = this._worker;\n\n function writeHeader(callback) {\n var data;\n date = options.lastModDate || new Date();\n header = getDataHelper(26);\n files[name] = {\n headerArray: header.array,\n directory: options.directory,\n filename: filename,\n offset: datalength,\n comment: getBytes(encodeUTF8(options.comment || \"\"))\n };\n header.view.setUint32(0, 0x14000808);\n if (options.version)\n header.view.setUint8(0, options.version);\n if (!dontDeflate && options.level !== 0 && !options.directory)\n header.view.setUint16(4, 0x0800);\n header.view.setUint16(6, (((date.getHours() << 6) | date.getMinutes()) << 5) | date.getSeconds() / 2, true);\n header.view.setUint16(8, ((((date.getFullYear() - 1980) << 4) | (date.getMonth() + 1)) << 5) | date.getDate(), true);\n header.view.setUint16(22, filename.length, true);\n data = getDataHelper(30 + filename.length);\n data.view.setUint32(0, 0x504b0304);\n data.array.set(header.array, 4);\n data.array.set(filename, 30);\n datalength += data.array.length;\n writer.writeUint8Array(data.array, callback, onwriteerror);\n }\n\n function writeFooter(compressedLength, crc32) {\n var footer = getDataHelper(16);\n datalength += compressedLength || 0;\n footer.view.setUint32(0, 0x504b0708);\n if (typeof crc32 != \"undefined\") {\n header.view.setUint32(10, crc32, true);\n footer.view.setUint32(4, crc32, true);\n }\n if (reader) {\n footer.view.setUint32(8, compressedLength, true);\n header.view.setUint32(14, compressedLength, true);\n footer.view.setUint32(12, reader.size, true);\n header.view.setUint32(18, reader.size, true);\n }\n writer.writeUint8Array(footer.array, function () {\n datalength += 16;\n onend();\n }, onwriteerror);\n }\n\n function writeFile() {\n options = options || {};\n name = name.trim();\n if (options.directory && name.charAt(name.length - 1) != \"/\")\n name += \"/\";\n if (files.hasOwnProperty(name)) {\n onerror(ERR_DUPLICATED_NAME);\n return;\n }\n filename = getBytes(encodeUTF8(name));\n filenames.push(name);\n writeHeader(function () {\n if (reader)\n if (dontDeflate || options.level === 0)\n copy(worker, deflateSN++, reader, writer, 0, reader.size, true, writeFooter, onprogress, onreaderror, onwriteerror);\n else\n deflate(worker, deflateSN++, reader, writer, options.level, writeFooter, onprogress, onreaderror, onwriteerror);\n else\n writeFooter();\n });\n }\n\n if (reader)\n reader.init(writeFile, onreaderror);\n else\n writeFile();\n },\n close: function (callback) {\n if (this._worker) {\n this._worker.terminate();\n this._worker = null;\n }\n\n var data, length = 0, index = 0, indexFilename, file;\n for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) {\n file = files[filenames[indexFilename]];\n length += 46 + file.filename.length + file.comment.length;\n }\n data = getDataHelper(length + 22);\n for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) {\n file = files[filenames[indexFilename]];\n data.view.setUint32(index, 0x504b0102);\n data.view.setUint16(index + 4, 0x1400);\n data.array.set(file.headerArray, index + 6);\n data.view.setUint16(index + 32, file.comment.length, true);\n if (file.directory)\n data.view.setUint8(index + 38, 0x10);\n data.view.setUint32(index + 42, file.offset, true);\n data.array.set(file.filename, index + 46);\n data.array.set(file.comment, index + 46 + file.filename.length);\n index += 46 + file.filename.length + file.comment.length;\n }\n data.view.setUint32(index, 0x504b0506);\n data.view.setUint16(index + 8, filenames.length, true);\n data.view.setUint16(index + 10, filenames.length, true);\n data.view.setUint32(index + 12, length, true);\n data.view.setUint32(index + 16, datalength, true);\n writer.writeUint8Array(data.array, function () {\n writer.getData(callback);\n }, onwriteerror);\n },\n _worker: null\n };\n\n if (!obj.zip.useWebWorkers)\n callback(zipWriter);\n else {\n createWorker('deflater',\n function (worker) {\n zipWriter._worker = worker;\n callback(zipWriter);\n },\n function (err) {\n onerror(err);\n }\n );\n }\n }\n\n function resolveURLs(urls) {\n var a = document.createElement('a');\n return urls.map(function (url) {\n a.href = url;\n return a.href;\n });\n }\n\n var DEFAULT_WORKER_SCRIPTS = {\n deflater: ['z-worker.js', 'deflate.js'],\n inflater: ['z-worker.js', 'inflate.js']\n };\n\n function createWorker(type, callback, onerror) {\n if (obj.zip.workerScripts !== null && obj.zip.workerScriptsPath !== null) {\n onerror(new Error('Either zip.workerScripts or zip.workerScriptsPath may be set, not both.'));\n return;\n }\n var scripts;\n if (obj.zip.workerScripts) {\n scripts = obj.zip.workerScripts[type];\n if (!Array.isArray(scripts)) {\n onerror(new Error('zip.workerScripts.' + type + ' is not an array!'));\n return;\n }\n scripts = resolveURLs(scripts);\n } else {\n scripts = DEFAULT_WORKER_SCRIPTS[type].slice(0);\n scripts[0] = (obj.zip.workerScriptsPath || '') + scripts[0];\n }\n var worker = new Worker(scripts[0]);\n // record total consumed time by inflater/deflater/crc32 in this worker\n worker.codecTime = worker.crcTime = 0;\n worker.postMessage({type: 'importScripts', scripts: scripts.slice(1)});\n worker.addEventListener('message', onmessage);\n function onmessage(ev) {\n var msg = ev.data;\n if (msg.error) {\n worker.terminate(); // should before onerror(), because onerror() may throw.\n onerror(msg.error);\n return;\n }\n if (msg.type === 'importScripts') {\n worker.removeEventListener('message', onmessage);\n worker.removeEventListener('error', errorHandler);\n callback(worker);\n }\n }\n\n // catch entry script loading error and other unhandled errors\n worker.addEventListener('error', errorHandler);\n function errorHandler(err) {\n worker.terminate();\n onerror(err);\n }\n }\n\n function onerror_default(error) {\n console.error(error);\n }\n\n obj.zip = {\n Reader: Reader,\n Writer: Writer,\n BlobReader: BlobReader,\n Data64URIReader: Data64URIReader,\n TextReader: TextReader,\n BlobWriter: BlobWriter,\n Data64URIWriter: Data64URIWriter,\n TextWriter: TextWriter,\n createReader: function (reader, callback, onerror) {\n onerror = onerror || onerror_default;\n\n reader.init(function () {\n createZipReader(reader, callback, onerror);\n }, onerror);\n },\n createWriter: function (writer, callback, onerror, dontDeflate) {\n onerror = onerror || onerror_default;\n dontDeflate = !!dontDeflate;\n\n writer.init(function () {\n createZipWriter(writer, callback, onerror, dontDeflate);\n }, onerror);\n },\n useWebWorkers: true,\n /**\n * Directory containing the default worker scripts (z-worker.js, deflate.js, and inflate.js), relative to current base url.\n * E.g.: zip.workerScripts = './';\n */\n workerScriptsPath: null,\n /**\n * Advanced option to control which scripts are loaded in the Web worker. If this option is specified, then workerScriptsPath must not be set.\n * workerScripts.deflater/workerScripts.inflater should be arrays of urls to scripts for deflater/inflater, respectively.\n * Scripts in the array are executed in order, and the first one should be z-worker.js, which is used to start the worker.\n * All urls are relative to current base url.\n * E.g.:\n * zip.workerScripts = {\n\t\t * deflater: ['z-worker.js', 'deflate.js'],\n\t\t * inflater: ['z-worker.js', 'inflate.js']\n\t\t * };\n */\n workerScripts: null,\n };\n\n})(zipLib);\n\n/*\n Copyright (c) 2013 Gildas Lormeau. 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,\n this list of conditions and the following disclaimer.\n\n 2. Redistributions in binary form must reproduce the above copyright\n notice, this list of conditions and the following disclaimer in\n the documentation and/or other materials provided with the distribution.\n\n 3. The names of the authors 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 ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,\n INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JCRAFT,\n INC. OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,\n INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,\n OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\n 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 * @private\n */\nconst zipExt = function(zipObj) {\n\n\tvar ERR_HTTP_RANGE = \"HTTP Range not supported.\";\n\n\tvar Reader = zipObj.Reader;\n\tvar Writer = zipObj.Writer;\n\n\tvar ZipDirectoryEntry;\n\n\tvar appendABViewSupported;\n\ttry {\n\t\tappendABViewSupported = new Blob([new DataView(new ArrayBuffer(0))]).size === 0;\n\t} catch (e) {\n\t}\n\n\tfunction isHttpFamily(url) {\n\t\tvar a = document.createElement(\"a\");\n\t\ta.href = url;\n\t\treturn a.protocol === \"http:\" || a.protocol === \"https:\";\n\t}\n\n\tfunction HttpReader(url) {\n\t\tvar that = this;\n\n\t\tfunction getData(callback, onerror) {\n\t\t\tvar request;\n\t\t\tif (!that.data) {\n\t\t\t\trequest = new XMLHttpRequest();\n\t\t\t\trequest.addEventListener(\"load\", function () {\n\t\t\t\t\tif (!that.size)\n\t\t\t\t\t\tthat.size = Number(request.getResponseHeader(\"Content-Length\")) || Number(request.response.byteLength);\n\t\t\t\t\tthat.data = new Uint8Array(request.response);\n\t\t\t\t\tcallback();\n\t\t\t\t}, false);\n\t\t\t\trequest.addEventListener(\"error\", onerror, false);\n\t\t\t\trequest.open(\"GET\", url);\n\t\t\t\trequest.responseType = \"arraybuffer\";\n\t\t\t\trequest.send();\n\t\t\t} else\n\t\t\t\tcallback();\n\t\t}\n\n\t\tfunction init(callback, onerror) {\n\t\t\tif (!isHttpFamily(url)) {\n\t\t\t\t// For schemas other than http(s), HTTP HEAD may be unavailable,\n\t\t\t\t// so use HTTP GET instead.\n\t\t\t\tgetData(callback, onerror);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar request = new XMLHttpRequest();\n\t\t\trequest.addEventListener(\"load\", function () {\n\t\t\t\tthat.size = Number(request.getResponseHeader(\"Content-Length\"));\n\t\t\t\t// If response header doesn't return size then prefetch the content.\n\t\t\t\tif (!that.size) {\n\t\t\t\t\tgetData(callback, onerror);\n\t\t\t\t} else {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t\trequest.addEventListener(\"error\", onerror, false);\n\t\t\trequest.open(\"HEAD\", url);\n\t\t\trequest.send();\n\t\t}\n\n\t\tfunction readUint8Array(index, length, callback, onerror) {\n\t\t\tgetData(function () {\n\t\t\t\tcallback(new Uint8Array(that.data.subarray(index, index + length)));\n\t\t\t}, onerror);\n\t\t}\n\n\t\tthat.size = 0;\n\t\tthat.init = init;\n\t\tthat.readUint8Array = readUint8Array;\n\t}\n\n\tHttpReader.prototype = new Reader();\n\tHttpReader.prototype.constructor = HttpReader;\n\n\tfunction HttpRangeReader(url) {\n\t\tvar that = this;\n\n\t\tfunction init(callback, onerror) {\n\t\t\tvar request = new XMLHttpRequest();\n\t\t\trequest.addEventListener(\"load\", function () {\n\t\t\t\tthat.size = Number(request.getResponseHeader(\"Content-Length\"));\n\t\t\t\tif (request.getResponseHeader(\"Accept-Ranges\") == \"bytes\")\n\t\t\t\t\tcallback();\n\t\t\t\telse\n\t\t\t\t\tonerror(ERR_HTTP_RANGE);\n\t\t\t}, false);\n\t\t\trequest.addEventListener(\"error\", onerror, false);\n\t\t\trequest.open(\"HEAD\", url);\n\t\t\trequest.send();\n\t\t}\n\n\t\tfunction readArrayBuffer(index, length, callback, onerror) {\n\t\t\tvar request = new XMLHttpRequest();\n\t\t\trequest.open(\"GET\", url);\n\t\t\trequest.responseType = \"arraybuffer\";\n\t\t\trequest.setRequestHeader(\"Range\", \"bytes=\" + index + \"-\" + (index + length - 1));\n\t\t\trequest.addEventListener(\"load\", function () {\n\t\t\t\tcallback(request.response);\n\t\t\t}, false);\n\t\t\trequest.addEventListener(\"error\", onerror, false);\n\t\t\trequest.send();\n\t\t}\n\n\t\tfunction readUint8Array(index, length, callback, onerror) {\n\t\t\treadArrayBuffer(index, length, function (arraybuffer) {\n\t\t\t\tcallback(new Uint8Array(arraybuffer));\n\t\t\t}, onerror);\n\t\t}\n\n\t\tthat.size = 0;\n\t\tthat.init = init;\n\t\tthat.readUint8Array = readUint8Array;\n\t}\n\n\tHttpRangeReader.prototype = new Reader();\n\tHttpRangeReader.prototype.constructor = HttpRangeReader;\n\n\tfunction ArrayBufferReader(arrayBuffer) {\n\t\tvar that = this;\n\n\t\tfunction init(callback, onerror) {\n\t\t\tthat.size = arrayBuffer.byteLength;\n\t\t\tcallback();\n\t\t}\n\n\t\tfunction readUint8Array(index, length, callback, onerror) {\n\t\t\tcallback(new Uint8Array(arrayBuffer.slice(index, index + length)));\n\t\t}\n\n\t\tthat.size = 0;\n\t\tthat.init = init;\n\t\tthat.readUint8Array = readUint8Array;\n\t}\n\n\tArrayBufferReader.prototype = new Reader();\n\tArrayBufferReader.prototype.constructor = ArrayBufferReader;\n\n\tfunction ArrayBufferWriter() {\n\t\tvar array, that = this;\n\n\t\tfunction init(callback, onerror) {\n\t\t\tarray = new Uint8Array();\n\t\t\tcallback();\n\t\t}\n\n\t\tfunction writeUint8Array(arr, callback, onerror) {\n\t\t\tvar tmpArray = new Uint8Array(array.length + arr.length);\n\t\t\ttmpArray.set(array);\n\t\t\ttmpArray.set(arr, array.length);\n\t\t\tarray = tmpArray;\n\t\t\tcallback();\n\t\t}\n\n\t\tfunction getData(callback) {\n\t\t\tcallback(array.buffer);\n\t\t}\n\n\t\tthat.init = init;\n\t\tthat.writeUint8Array = writeUint8Array;\n\t\tthat.getData = getData;\n\t}\n\n\tArrayBufferWriter.prototype = new Writer();\n\tArrayBufferWriter.prototype.constructor = ArrayBufferWriter;\n\n\tfunction FileWriter(fileEntry, contentType) {\n\t\tvar writer, that = this;\n\n\t\tfunction init(callback, onerror) {\n\t\t\tfileEntry.createWriter(function (fileWriter) {\n\t\t\t\twriter = fileWriter;\n\t\t\t\tcallback();\n\t\t\t}, onerror);\n\t\t}\n\n\t\tfunction writeUint8Array(array, callback, onerror) {\n\t\t\tvar blob = new Blob([appendABViewSupported ? array : array.buffer], {\n\t\t\t\ttype: contentType\n\t\t\t});\n\t\t\twriter.onwrite = function () {\n\t\t\t\twriter.onwrite = null;\n\t\t\t\tcallback();\n\t\t\t};\n\t\t\twriter.onerror = onerror;\n\t\t\twriter.write(blob);\n\t\t}\n\n\t\tfunction getData(callback) {\n\t\t\tfileEntry.file(callback);\n\t\t}\n\n\t\tthat.init = init;\n\t\tthat.writeUint8Array = writeUint8Array;\n\t\tthat.getData = getData;\n\t}\n\n\tFileWriter.prototype = new Writer();\n\tFileWriter.prototype.constructor = FileWriter;\n\n\tzipObj.FileWriter = FileWriter;\n\tzipObj.HttpReader = HttpReader;\n\tzipObj.HttpRangeReader = HttpRangeReader;\n\tzipObj.ArrayBufferReader = ArrayBufferReader;\n\tzipObj.ArrayBufferWriter = ArrayBufferWriter;\n\n\tif (zipObj.fs) {\n\t\tZipDirectoryEntry = zipObj.fs.ZipDirectoryEntry;\n\t\tZipDirectoryEntry.prototype.addHttpContent = function (name, URL, useRangeHeader) {\n\t\t\tfunction addChild(parent, name, params, directory) {\n\t\t\t\tif (parent.directory)\n\t\t\t\t\treturn directory ? new ZipDirectoryEntry(parent.fs, name, params, parent) : new zipObj.fs.ZipFileEntry(parent.fs, name, params, parent);\n\t\t\t\telse\n\t\t\t\t\tthrow \"Parent entry is not a directory.\";\n\t\t\t}\n\n\t\t\treturn addChild(this, name, {\n\t\t\t\tdata: URL,\n\t\t\t\tReader: useRangeHeader ? HttpRangeReader : HttpReader\n\t\t\t});\n\t\t};\n\t\tZipDirectoryEntry.prototype.importHttpContent = function (URL, useRangeHeader, onend, onerror) {\n\t\t\tthis.importZip(useRangeHeader ? new HttpRangeReader(URL) : new HttpReader(URL), onend, onerror);\n\t\t};\n\t\tzipObj.fs.FS.prototype.importHttpContent = function (URL, useRangeHeader, onend, onerror) {\n\t\t\tthis.entries = [];\n\t\t\tthis.root = new ZipDirectoryEntry(this);\n\t\t\tthis.root.importHttpContent(URL, useRangeHeader, onend, onerror);\n\t\t};\n\t}\n};\n\nconst zip = zipLib.zip;\nzipExt(zip);\n\nconst supportedSchemas = [\"4.2\"];\n\n/**\n * @private\n */\nclass XML3DSceneGraphLoader {\n\n constructor(plugin, cfg = {}) {\n\n /**\n * Supported 3DXML schema versions\n * @property supportedSchemas\n * @type {string[]}\n */\n this.supportedSchemas = supportedSchemas;\n\n this._xrayOpacity = 0.7;\n this._src = null;\n this._options = cfg;\n\n /**\n * Default viewpoint, containing eye, look and up vectors.\n * Only defined if found in the 3DXML file.\n * @property viewpoint\n * @type {Number[]}\n */\n this.viewpoint = null;\n\n if (!cfg.workerScriptsPath) {\n plugin.error(\"Config expected: workerScriptsPath\");\n return\n }\n zip.workerScriptsPath = cfg.workerScriptsPath;\n\n this.src = cfg.src;\n this.xrayOpacity = 0.7;\n this.displayEffect = cfg.displayEffect;\n this.createMetaModel = cfg.createMetaModel;\n }\n\n load(plugin, modelNode, src, options, ok, error) {\n\n switch (options.materialType) {\n case \"MetallicMaterial\":\n modelNode._defaultMaterial = new MetallicMaterial(modelNode, {\n baseColor: [1, 1, 1],\n metallic: 0.6,\n roughness: 0.6\n });\n break;\n\n case \"SpecularMaterial\":\n modelNode._defaultMaterial = new SpecularMaterial(modelNode, {\n diffuse: [1, 1, 1],\n specular: math.vec3([1.0, 1.0, 1.0]),\n glossiness: 0.5\n });\n break;\n\n default:\n modelNode._defaultMaterial = new PhongMaterial(modelNode, {\n reflectivity: 0.75,\n shiness: 100,\n diffuse: [1, 1, 1]\n });\n }\n\n modelNode._wireframeMaterial = new LambertMaterial(modelNode, {\n color: [0, 0, 0],\n lineWidth: 2\n });\n\n var spinner = modelNode.scene.canvas.spinner;\n spinner.processes++;\n\n load3DXML(plugin, modelNode, src, options, function () {\n spinner.processes--;\n if (ok) {\n ok();\n }\n modelNode.fire(\"loaded\", true, false);\n },\n function (msg) {\n spinner.processes--;\n modelNode.error(msg);\n if (error) {\n error(msg);\n }\n /**\n Fired whenever this XML3D fails to load the 3DXML file\n specified by {@link XML3D/src}.\n @event error\n @param msg {String} Description of the error\n */\n modelNode.fire(\"error\", msg);\n },\n function (err) {\n console.log(\"Error, Will Robinson: \" + err);\n });\n }\n}\n\nvar load3DXML = (function () {\n return function (plugin, modelNode, src, options, ok, error) {\n loadZIP(src, function (zip) { // OK\n parse3DXML(plugin, zip, options, modelNode, ok, error);\n },\n error);\n };\n})();\n\nvar parse3DXML = (function () {\n return function (plugin, zip, options, modelNode, ok) {\n var ctx = {\n plugin: plugin,\n zip: zip,\n edgeThreshold: 30, // Guess at degrees of normal deviation between adjacent tris below which we remove edge between them\n materialType: options.materialType,\n scene: modelNode.scene,\n modelNode: modelNode,\n info: {\n references: {}\n },\n materials: {}\n };\n\n if (options.createMetaModel) {\n ctx.metaModelData = {\n modelId: modelNode.id,\n metaObjects: [{\n name: modelNode.id,\n type: \"Default\",\n id: modelNode.id\n }]\n };\n }\n modelNode.scene.loading++; // Disables (re)compilation\n\n parseDocument(ctx, function () {\n if (ctx.metaModelData) {\n plugin.viewer.metaScene.createMetaModel(modelNode.id, ctx.metaModelData);\n }\n modelNode.scene.loading--; // Re-enables (re)compilation\n ok();\n });\n };\n\n function parseDocument(ctx, ok) {\n ctx.zip.getFile(\"Manifest.xml\", function (xmlDoc, json) {\n var node = json;\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Manifest\":\n parseManifest(ctx, child, ok);\n break;\n }\n }\n });\n }\n\n function parseManifest(ctx, manifest, ok) {\n var children = manifest.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Root\":\n var rootFileSrc = child.children[0];\n ctx.zip.getFile(rootFileSrc, function (xmlDoc, json) {\n parseRoot(ctx, json, ok);\n });\n break;\n }\n }\n }\n\n function parseRoot(ctx, node, ok) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Model_3dxml\":\n parseModel(ctx, child, ok);\n break;\n }\n }\n }\n\n function parseModel(ctx, node, ok) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Header\":\n parseHeader(ctx, child);\n break;\n case \"ProductStructure\":\n parseProductStructure(ctx, child, ok);\n break;\n case \"DefaultView\":\n parseDefaultView(ctx, child);\n break;\n }\n }\n }\n\n function parseHeader(ctx, node) {\n var children = node.children;\n var metaData = {};\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"SchemaVersion\":\n metaData.schemaVersion = child.children[0];\n if (!isSchemaVersionSupported(ctx, metaData.schemaVersion)) {\n ctx.plugin.error(\"Schema version not supported: \" + metaData.schemaVersion + \" - supported versions are: \" + supportedSchemas.join(\",\"));\n }\n break;\n case \"Title\":\n metaData.title = child.children[0];\n break;\n case \"Author\":\n metaData.author = child.children[0];\n break;\n case \"Created\":\n metaData.created = child.children[0];\n break;\n }\n }\n ctx.modelNode.meta = metaData;\n }\n\n function isSchemaVersionSupported(ctx, schemaVersion) {\n for (var i = 0, len = supportedSchemas.length; i < len; i++) {\n if (schemaVersion === supportedSchemas[i]) {\n return true;\n }\n }\n return false;\n }\n\n function parseProductStructure(ctx, productStructureNode, ok) {\n\n parseReferenceReps(ctx, productStructureNode, function (referenceReps) {\n\n // Parse out an intermediate scene DAG representation, that we can then\n // recursive descend through to build a xeokit Object hierarchy.\n\n var children = productStructureNode.children;\n\n var reference3Ds = {};\n var instanceReps = {};\n var instance3Ds = {};\n\n // Map all the elements\n\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n\n case \"Reference3D\":\n reference3Ds[child.id] = {\n type: \"Reference3D\",\n id: child.id,\n name: child.name,\n instance3Ds: {},\n instanceReps: {}\n };\n break;\n\n case \"InstanceRep\":\n var isAggregatedBy;\n var isInstanceOf;\n var relativeMatrix;\n for (var j = 0, lenj = child.children.length; j < lenj; j++) {\n var child2 = child.children[j];\n switch (child2.type) {\n case \"IsAggregatedBy\":\n isAggregatedBy = child2.children[0];\n break;\n case \"IsInstanceOf\":\n isInstanceOf = child2.children[0];\n break;\n }\n }\n instanceReps[child.id] = {\n type: \"InstanceRep\",\n id: child.id,\n name: child.name,\n isAggregatedBy: isAggregatedBy,\n isInstanceOf: isInstanceOf,\n referenceReps: {}\n };\n break;\n\n case \"Instance3D\":\n var isAggregatedBy;\n var isInstanceOf;\n var relativeMatrix;\n for (var j = 0, lenj = child.children.length; j < lenj; j++) {\n var child2 = child.children[j];\n switch (child2.type) {\n case \"IsAggregatedBy\":\n isAggregatedBy = child2.children[0];\n break;\n case \"IsInstanceOf\":\n isInstanceOf = child2.children[0];\n break;\n case \"RelativeMatrix\":\n relativeMatrix = child2.children[0];\n break;\n }\n }\n instance3Ds[child.id] = {\n type: \"Instance3D\",\n id: child.id,\n name: child.name,\n isAggregatedBy: isAggregatedBy,\n isInstanceOf: isInstanceOf,\n relativeMatrix: relativeMatrix,\n reference3Ds: {}\n };\n break;\n }\n }\n\n // Connect Reference3Ds to the Instance3Ds they aggregate\n\n for (var id in instance3Ds) {\n var instance3D = instance3Ds[id];\n var reference3D = reference3Ds[instance3D.isAggregatedBy];\n if (reference3D) {\n reference3D.instance3Ds[instance3D.id] = instance3D;\n } else {\n alert(\"foo\");\n }\n }\n\n // Connect Instance3Ds to the Reference3Ds they instantiate\n\n for (var id in instance3Ds) {\n var instance3D = instance3Ds[id];\n var reference3D = reference3Ds[instance3D.isInstanceOf];\n instance3D.reference3Ds[reference3D.id] = reference3D;\n reference3D.instance3D = instance3D;\n }\n\n // Connect InstanceReps to the ReferenceReps they instantiate\n\n for (var id in instanceReps) {\n var instanceRep = instanceReps[id];\n var referenceRep = referenceReps[instanceRep.isInstanceOf];\n if (referenceRep) {\n instanceRep.referenceReps[referenceRep.id] = referenceRep;\n }\n }\n\n // Connect Reference3Ds to the InstanceReps they aggregate\n\n for (var id in instanceReps) {\n var instanceRep = instanceReps[id];\n var reference3D = reference3Ds[instanceRep.isAggregatedBy];\n if (reference3D) {\n reference3D.instanceReps[instanceRep.id] = instanceRep;\n }\n }\n\n function parseReference3D(ctx, reference3D, group) {\n //ctx.plugin.log(\"parseReference3D( \" + reference3D.id + \" )\");\n for (var id in reference3D.instance3Ds) {\n parseInstance3D(ctx, reference3D.instance3Ds[id], group);\n }\n for (var id in reference3D.instanceReps) {\n parseInstanceRep(ctx, reference3D.instanceReps[id], group);\n }\n }\n\n function parseInstance3D(ctx, instance3D, group) {\n //ctx.plugin.log(\"parseInstance3D( \" + instance3D.id + \" )\");\n\n if (instance3D.relativeMatrix) {\n var matrix = parseFloatArray(instance3D.relativeMatrix, 12);\n var translate = [matrix[9], matrix[10], matrix[11]];\n var mat3 = matrix.slice(0, 9); // Rotation matrix\n var mat4 = math.mat3ToMat4(mat3, math.identityMat4()); // Convert rotation matrix to 4x4\n var childGroup = new Node(ctx.modelNode, {\n position: translate\n });\n if (ctx.metaModelData) {\n ctx.metaModelData.metaObjects.push({\n id: childGroup.id,\n type: \"Default\",\n name: instance3D.name,\n parent: group ? group.id : ctx.modelNode.id\n });\n }\n if (group) {\n group.addChild(childGroup, true);\n } else {\n ctx.modelNode.addChild(childGroup, true);\n }\n group = childGroup;\n childGroup = new Node(ctx.modelNode, {\n matrix: mat4\n });\n if (ctx.metaModelData) {\n ctx.metaModelData.metaObjects.push({\n id: childGroup.id,\n type: \"Default\",\n name: instance3D.name,\n parent: group ? group.id : ctx.modelNode.id\n });\n }\n group.addChild(childGroup, true);\n group = childGroup;\n } else {\n var childGroup = new Node(ctx.modelNode, {});\n if (ctx.metaModelData) {\n ctx.metaModelData.metaObjects.push({\n id: childGroup.id,\n type: \"Default\",\n name: instance3D.name,\n parent: group ? group.id : ctx.modelNode.id\n });\n }\n if (group) {\n group.addChild(childGroup, true);\n } else {\n ctx.modelNode.addChild(childGroup, true);\n }\n group = childGroup;\n }\n for (var id in instance3D.reference3Ds) {\n parseReference3D(ctx, instance3D.reference3Ds[id], group);\n }\n }\n\n function parseInstanceRep(ctx, instanceRep, group) {\n //ctx.plugin.log(\"parseInstanceRep( \" + instanceRep.id + \" )\");\n if (instanceRep.referenceReps) {\n for (var id in instanceRep.referenceReps) {\n var referenceRep = instanceRep.referenceReps[id];\n for (var id2 in referenceRep) {\n if (id2 === \"id\") {\n continue; // HACK\n }\n var meshCfg = referenceRep[id2];\n var lines = meshCfg.geometry.primitive === \"lines\";\n var material = lines ? ctx.modelNode._wireframeMaterial : (meshCfg.materialId ? ctx.materials[meshCfg.materialId] : null);\n var colorize = meshCfg.color;\n var mesh = new Mesh(ctx.modelNode, {\n isObject: true,\n geometry: meshCfg.geometry,\n material: material || ctx.modelNode._defaultMaterial,\n colorize: colorize,\n backfaces: false\n });\n if (ctx.metaModelData) {\n ctx.metaModelData.metaObjects.push({\n id: mesh.id,\n type: \"Default\",\n name: instanceRep.name,\n parent: group ? group.id : ctx.modelNode.id\n });\n }\n if (group) {\n group.addChild(mesh, true);\n } else {\n ctx.modelNode.addChild(mesh, true);\n }\n mesh.colorize = colorize; // HACK: Mesh has inherited modelNode's colorize state, so we need to restore it (we'd better not modify colorize on the modelNode).\n }\n }\n }\n }\n\n // Find the root Reference3D\n\n for (var id in reference3Ds) {\n var reference3D = reference3Ds[id];\n if (!reference3D.instance3D) {\n parseReference3D(ctx, reference3D, null); // HACK: Assuming that root has id == \"1\"\n ok();\n return;\n }\n }\n\n alert(\"No root Reference3D element found in this modelNode - can't load.\");\n\n ok();\n });\n }\n\n function parseIntArray(str) {\n var parts = str.trim().split(\" \");\n var result = new Int32Array(parts.length);\n for (var i = 0; i < parts.length; i++) {\n result[i] = parseInt(parts[i]);\n }\n return result;\n }\n\n function parseReferenceReps(ctx, node, ok) {\n var referenceReps = {};\n var children = node.children;\n var numToLoad = 0;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n if (child.type === \"ReferenceRep\") {\n numToLoad++;\n }\n }\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"ReferenceRep\":\n if (child.associatedFile) {\n var src = stripURN(child.associatedFile);\n (function () {\n var childId = child.id;\n ctx.zip.getFile(src, function (xmlDoc, json) {\n\n var materialIds = xmlDoc.getElementsByTagName(\"MaterialId\");\n\n loadCATMaterialRefDocuments(ctx, materialIds, function () {\n\n // ctx.plugin.log(\"reference loaded: \" + src);\n var referenceRep = {\n id: childId\n };\n parse3DRepDocument(ctx, json, referenceRep);\n referenceReps[childId] = referenceRep;\n if (--numToLoad === 0) {\n ok(referenceReps);\n }\n });\n },\n function (error) {\n // TODO:\n });\n })();\n }\n break;\n }\n }\n }\n\n\n function parseDefaultView(ctx, node) {\n // ctx.plugin.log(\"parseDefaultView\");\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Viewpoint\":\n var children2 = child.children;\n ctx.modelNode.viewpoint = {};\n for (var i2 = 0, len2 = children2.length; i2 < len2; i2++) {\n var child2 = children2[i];\n switch (child2.type) {\n case \"Position\":\n ctx.modelNode.viewpoint.eye = parseFloatArray(child2.children[0], 3);\n break;\n case \"Sight\":\n ctx.modelNode.viewpoint.look = parseFloatArray(child2.children[0], 3);\n break;\n case \"Up\":\n ctx.modelNode.viewpoint.up = parseFloatArray(child2.children[0], 3);\n break;\n }\n }\n break;\n }\n }\n }\n\n function parse3DRepDocument(ctx, node, result) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"XMLRepresentation\":\n parseXMLRepresentation(ctx, child, result);\n break;\n }\n }\n }\n\n function parseXMLRepresentation(ctx, node, result) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Root\":\n parse3DRepRoot(ctx, child, result);\n break;\n }\n }\n }\n\n function parse3DRepRoot(ctx, node, result) {\n switch (node[\"xsi:type\"]) {\n }\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Rep\":\n parse3DRepRep(ctx, child, result);\n break;\n }\n }\n }\n\n function parse3DRepRep(ctx, node, result) {\n switch (node[\"xsi:type\"]) {\n }\n var meshesResult = {\n edgeThreshold: ctx.edgeThreshold || 30,\n compressGeometry: true\n };\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Rep\":\n parse3DRepRep(ctx, child, result);\n break;\n case \"Edges\":\n // Ignoring edges because we auto-generate our own using xeokit\n break;\n case \"Faces\":\n meshesResult.primitive = \"triangles\";\n parseFaces(ctx, child, meshesResult);\n break;\n case \"VertexBuffer\":\n parseVertexBuffer(ctx, child, meshesResult);\n break;\n case \"SurfaceAttributes\":\n parseSurfaceAttributes(ctx, child, meshesResult);\n break;\n }\n }\n if (meshesResult.positions) {\n var geometry = new ReadableGeometry(ctx.modelNode, meshesResult);\n result[geometry.id] = {\n geometry: geometry,\n color: meshesResult.color || [1.0, 1.0, 1.0, 1.0],\n materialId: meshesResult.materialId\n };\n }\n }\n\n function parseFaces(ctx, node, result) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Face\":\n parseFace(ctx, child, result);\n break;\n }\n }\n }\n\n function parseFace(ctx, node, result) {\n var strips = node.strips;\n if (strips) {\n // Triangle strips\n var arrays = parseIntArrays(strips);\n if (arrays.length > 0) {\n result.primitive = \"triangles\";\n var indices = [];\n for (var i = 0, len = arrays.length; i < len; i++) {\n var array = convertTriangleStrip(arrays[i]);\n for (var j = 0, lenj = array.length; j < lenj; j++) {\n indices.push(array[j]);\n }\n }\n result.indices = indices; // TODO\n }\n } else {\n // Triangle meshes\n var triangles = node.triangles;\n if (triangles) {\n result.primitive = \"triangles\";\n result.indices = parseIntArray(triangles);\n }\n }\n // Material\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"SurfaceAttributes\":\n parseSurfaceAttributes(ctx, child, result);\n break;\n }\n }\n }\n\n function convertTriangleStrip(indices) {\n var indices2 = [];\n for (var i = 0, len = indices.length; i < len - 2; i++) {\n {\n if (i & 1) { //\n indices2.push(indices[i]);\n indices2.push(indices[i + 2]);\n indices2.push(indices[i + 1]);\n } else {\n indices2.push(indices[i]);\n indices2.push(indices[i + 1]);\n indices2.push(indices[i + 2]);\n }\n }\n }\n return indices2;\n }\n\n function parseVertexBuffer(ctx, node, result) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Positions\":\n result.positions = parseFloatArray(child.children[0], 3);\n break;\n case \"Normals\":\n result.normals = parseFloatArray(child.children[0], 3);\n break;\n case \"TextureCoordinates\": // TODO: Support dimension and channel?\n result.uv = parseFloatArray(child.children[0], 2);\n break;\n }\n }\n }\n\n function parseIntArrays(str) {\n var coordStrings = str.split(\",\");\n var array = [];\n for (var i = 0, len = coordStrings.length; i < len; i++) {\n var coordStr = coordStrings[i].trim();\n if (coordStr.length > 0) {\n var elemStrings = coordStr.trim().split(\" \");\n var arr = new Int16Array(elemStrings.length);\n var arrIdx = 0;\n for (var j = 0, lenj = elemStrings.length; j < lenj; j++) {\n if (elemStrings[j] !== \"\") {\n arr[arrIdx++] = parseInt(elemStrings[j]);\n }\n }\n array.push(arr);\n }\n }\n return array;\n }\n\n function parseFloatArray(str, numElems) {\n str = str.split(\",\");\n var arr = new Float32Array(str.length * numElems);\n var arrIdx = 0;\n for (var i = 0, len = str.length; i < len; i++) {\n var value = str[i];\n value = value.split(\" \");\n for (var j = 0, lenj = value.length; j < lenj; j++) {\n if (value[j] !== \"\") {\n arr[arrIdx++] = parseFloat(value[j]);\n }\n }\n }\n return arr;\n }\n\n function parseIntArray(str) {\n str = str.trim().split(\" \");\n var arr = new Int32Array(str.length);\n for (var i = 0, len = str.length; i < len; i++) {\n var value = str[i];\n arr[i] = parseInt(value);\n }\n return arr;\n }\n\n function parseSurfaceAttributes(ctx, node, result) {\n result.color = [1, 1, 1, 1];\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Color\":\n result.color[0] = child.red;\n result.color[1] = child.green;\n result.color[2] = child.blue;\n result.color[3] = child.alpha;\n break;\n case \"MaterialApplication\":\n var children2 = child.children;\n for (var j = 0, lenj = children2.length; j < lenj; j++) {\n var child2 = children2[j];\n switch (child2.type) {\n case \"MaterialId\":\n var materialId = getIDFromURI(child2.id);\n var material = ctx.materials[materialId];\n if (!material) {\n ctx.plugin.error(\"material not found: \" + materialId);\n }\n result.materialId = materialId;\n break;\n }\n }\n break;\n }\n }\n }\n})();\n\nfunction loadCATMaterialRefDocuments(ctx, materialIds, ok) {\n var loaded = {};\n\n function load(i, done) {\n if (i >= materialIds.length) {\n ok();\n return;\n }\n var materialId = materialIds[i];\n var src = materialId.id;\n var colonIdx = src.lastIndexOf(\":\");\n if (colonIdx > 0) {\n src = src.substring(colonIdx + 1);\n }\n var hashIdx = src.lastIndexOf(\"#\");\n if (hashIdx > 0) {\n src = src.substring(0, hashIdx);\n }\n if (!loaded[src]) {\n loadCATMaterialRefDocument(ctx, src, function () {\n loaded[src] = true;\n load(i + 1);\n });\n } else {\n load(i + 1);\n }\n }\n\n load(0);\n}\n\nfunction loadCATMaterialRefDocument(ctx, src, ok) { // Loads CATMaterialRef.3dxml\n ctx.zip.getFile(src, function (xmlDoc, json) {\n parseCATMaterialRefDocument(ctx, json, ok);\n });\n}\n\nfunction parseCATMaterialRefDocument(ctx, node, ok) { // Parse CATMaterialRef.3dxml\n // ctx.plugin.log(\"parseCATMaterialRefDocument\");\n var children = node.children;\n var child;\n for (var i = 0, len = children.length; i < len; i++) {\n child = children[i];\n if (child.type === \"Model_3dxml\") {\n parseModel_3dxml(ctx, child, ok);\n }\n }\n}\n\nfunction parseModel_3dxml(ctx, node, ok) { // Parse CATMaterialRef.3dxml\n // ctx.plugin.log(\"parseModel_3dxml\");\n var children = node.children;\n var child;\n for (var i = 0, len = children.length; i < len; i++) {\n child = children[i];\n if (child.type === \"CATMaterialRef\") {\n parseCATMaterialRef(ctx, child, ok);\n }\n }\n}\n\nfunction parseCATMaterialRef(ctx, node, ok) {\n var domainToReferenceMap = {};\n var children = node.children;\n var numToLoad = 0;\n for (var j = 0, lenj = children.length; j < lenj; j++) {\n var child2 = children[j];\n switch (child2.type) {\n case \"MaterialDomainInstance\":\n var isAggregatedBy;\n var isInstanceOf;\n for (var k = 0, lenk = child2.children.length; k < lenk; k++) {\n var child3 = child2.children[k];\n switch (child3.type) {\n case \"IsAggregatedBy\":\n isAggregatedBy = child3.children[0];\n break;\n case \"IsInstanceOf\":\n isInstanceOf = child3.children[0];\n break;\n }\n }\n domainToReferenceMap[isInstanceOf] = isAggregatedBy;\n break;\n }\n }\n for (var j = 0, lenj = children.length; j < lenj; j++) {\n var child2 = children[j];\n switch (child2.type) {\n case \"MaterialDomain\":\n numToLoad++;\n break;\n }\n }\n // Now load them\n for (var j = 0, lenj = children.length; j < lenj; j++) {\n var child2 = children[j];\n switch (child2.type) {\n case \"MaterialDomain\":\n if (child2.associatedFile) {\n (function () {\n var childId = child2.id;\n var src = stripURN(child2.associatedFile);\n ctx.zip.getFile(src, function (xmlDoc, json) {\n // ctx.plugin.log(\"Material def loaded: \" + src);\n ctx.materials[domainToReferenceMap[childId]] = parseMaterialDefDocument(ctx, json);\n\n if (--numToLoad === 0) {\n // console.log(\"All ReferenceReps loaded.\");\n ok();\n }\n },\n function (error) {\n // TODO:\n });\n })();\n }\n break;\n }\n }\n}\n\nfunction parseMaterialDefDocument(ctx, node) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"Osm\":\n return parseMaterialDefDocumentOsm(ctx, child);\n }\n }\n}\n\nfunction parseMaterialDefDocumentOsm(ctx, node) {\n var children = node.children;\n for (var i = 0, len = children.length; i < len; i++) {\n var child = children[i];\n switch (child.type) {\n case \"RenderingRootFeature\":\n //..\n break;\n case \"Feature\":\n\n if (child.Alias === \"RenderingFeature\") {\n // Parse the coefficients, then parse the colors, scaling those by their coefficients.\n var coeffs = {};\n var materialCfg = {};\n var children2 = child.children;\n var j;\n var lenj;\n var child2;\n for (j = 0, lenj = children2.length; j < lenj; j++) {\n child2 = children2[j];\n switch (child2.Name) {\n case \"AmbientCoef\":\n coeffs.ambient = parseFloat(child2.Value);\n break;\n case \"DiffuseCoef\":\n coeffs.diffuse = parseFloat(child2.Value);\n break;\n case \"EmissiveCoef\":\n coeffs.emissive = parseFloat(child2.Value);\n break;\n case \"SpecularExponent\":\n coeffs.specular = parseFloat(child2.Value);\n break;\n }\n }\n for (j = 0, lenj = children2.length; j < lenj; j++) {\n child2 = children2[j];\n switch (child2.Name) {\n case \"AmbientColor\":\n materialCfg.ambient = parseRGB(child2.Value, coeffs.ambient);\n break;\n case \"DiffuseColor\":\n materialCfg.diffuse = parseRGB(child2.Value, coeffs.diffuse);\n break;\n case \"EmissiveColor\":\n materialCfg.emissive = parseRGB(child2.Value, coeffs.emissive);\n break;\n case \"SpecularColor\":\n materialCfg.specular = parseRGB(child2.Value, coeffs.specular);\n break;\n case \"Transparency\":\n var alpha = 1.0 - parseFloat(child2.Value); // GOTCHA: Degree of transparency, not degree of opacity\n if (alpha < 1.0) {\n materialCfg.alpha = alpha;\n materialCfg.alphaMode = \"blend\";\n }\n break;\n }\n }\n\n var material;\n\n switch (ctx.materialType) {\n case \"MetallicMaterial\":\n material = new MetallicMaterial(ctx.modelNode, {\n baseColor: materialCfg.diffuse,\n metallic: 0.7,\n roughness: 0.5,\n emissive: materialCfg.emissive,\n alpha: materialCfg.alpha,\n alphaMode: materialCfg.alphaMode\n });\n break;\n\n case \"SpecularMaterial\":\n material = new SpecularMaterial(ctx.modelNode, {\n diffuse: materialCfg.diffuse,\n specular: materialCfg.specular,\n glossiness: 0.5,\n emissive: materialCfg.emissive,\n alpha: materialCfg.alpha,\n alphaMode: materialCfg.alphaMode\n });\n break;\n\n default:\n material = new PhongMaterial(ctx.modelNode, {\n reflectivity: 0.5,\n ambient: materialCfg.ambient,\n diffuse: materialCfg.diffuse,\n specular: materialCfg.specular,\n // shininess: node.shine,\n emissive: materialCfg.emissive,\n alphaMode: materialCfg.alphaMode,\n alpha: node.alpha\n });\n }\n return material;\n }\n break;\n }\n }\n}\n\nfunction parseRGB(str, coeff) {\n coeff = (coeff !== undefined) ? coeff : 0.5;\n var openBracketIndex = str.indexOf(\"[\");\n var closeBracketIndex = str.indexOf(\"]\");\n str = str.substring(openBracketIndex + 1, closeBracketIndex - openBracketIndex);\n str = str.split(\",\");\n var arr = new Float32Array(str.length);\n var arrIdx = 0;\n for (var i = 0, len = str.length; i < len; i++) {\n var value = str[i];\n value = value.trim().split(\" \");\n for (var j = 0, lenj = value.length; j < lenj; j++) {\n if (value[j] !== \"\") {\n arr[arrIdx++] = parseFloat(value[j]) * coeff;\n }\n }\n }\n return arr;\n}\n\n\n//----------------------------------------------------------------------------------------------------\n\n/**\n * Wraps zip.js to provide an in-memory ZIP archive representing the 3DXML file bundle.\n *\n * Allows us to pluck each file from it as XML and JSON.\n *\n * @constructor\n */\nvar ZIP = function () {\n\n var reader;\n var files = {};\n\n /**\n Loads this ZIP\n\n @param src\n @param ok\n @param error\n */\n this.load = function (src, ok, error) {\n zip.createReader(new zip.HttpReader(src), function (reader) {\n reader.getEntries(function (entries) {\n if (entries.length > 0) {\n for (var i = 0, len = entries.length; i < len; i++) {\n var entry = entries[i];\n files[entry.filename] = entry;\n }\n }\n ok();\n });\n }, error);\n };\n\n /**\n Gets a file as XML and JSON from this ZIP\n @param src\n @param ok\n @param error\n */\n this.getFile = function (src, ok, error) {\n var entry = files[src];\n if (!entry) {\n var errMsg = \"ZIP entry not found: \" + src;\n console.error(errMsg);\n if (error) {\n error(errMsg);\n }\n return;\n }\n entry.getData(new zip.TextWriter(), function (text) {\n\n // Parse to XML\n var parser = new DOMParser();\n var xmlDoc = parser.parseFromString(text, \"text/xml\");\n\n // Parse to JSON\n var json = xmlToJSON(xmlDoc, {});\n\n ok(xmlDoc, json);\n });\n };\n\n function xmlToJSON(node, attributeRenamer) {\n if (node.nodeType === node.TEXT_NODE) {\n var v = node.nodeValue;\n if (v.match(/^\\s+$/) === null) {\n return v;\n }\n } else if (node.nodeType === node.ELEMENT_NODE ||\n node.nodeType === node.DOCUMENT_NODE) {\n var json = {type: node.nodeName, children: []};\n if (node.nodeType === node.ELEMENT_NODE) {\n for (var j = 0; j < node.attributes.length; j++) {\n var attribute = node.attributes[j];\n var nm = attributeRenamer[attribute.nodeName] || attribute.nodeName;\n json[nm] = attribute.nodeValue;\n }\n }\n for (var i = 0; i < node.childNodes.length; i++) {\n var item = node.childNodes[i];\n var j = xmlToJSON(item, attributeRenamer);\n if (j) json.children.push(j);\n }\n return json;\n }\n }\n\n /**\n Disposes of this ZIP\n */\n this.destroy = function () {\n reader.close(function () {\n // onclose callback\n });\n };\n};\n\nfunction\n\nloadZIP(src, ok, err) {\n var zip = new ZIP();\n zip.load(src, function () {\n ok(zip);\n }, function (errMsg) {\n err(\"Error loading ZIP archive: \" + errMsg);\n });\n}\n\nfunction\n\nstripURN(str) {\n var subStr = \"urn:3DXML:\";\n return (str.indexOf(subStr) === 0) ? str.substring(subStr.length) : str;\n}\n\n\nfunction\n\ngetIDFromURI(str) {\n var hashIdx = str.lastIndexOf(\"#\");\n return hashIdx !== -1 ? str.substring(hashIdx + 1) : str;\n}\n\n/**\n * {@link Viewer} plugin that loads models from [3DXML](https://en.wikipedia.org/wiki/3DXML) files.\n *\n * [](https://xeokit.github.io/xeokit-sdk/examples/#loading_3DXML_TreeView)\n *\n * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#loading_3DXML_TreeView)]\n *\n * ## Overview\n *\n * * Currently supports 3DXML V4.2.\n * * Creates an {@link Entity} representing each model it loads, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}.\n * * Creates an {@link Entity} for each object within the model, which will have {@link Entity#isObject} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#objects}.\n * * When loading, can set the World-space position, scale and rotation of each model within World space, along with initial properties for all the model's {@link Entity}s.\n * * Can optionally load a {@link MetaModel} to classify the objects within the model, from which you can create a tree view using the {@link TreeViewPlugin}.\n *
    \n * Note that the name of this plugin is intentionally munged to \"XML3D\" because a JavaScript class name cannot begin with a numeral.\n *\n * An 3DXML model is a zip archive that bundles multiple XML files and assets. Internally, the XML3DLoaderPlugin uses the\n * [zip.js](https://gildas-lormeau.github.io/zip.js/) library to unzip them before loading. The zip.js library uses\n * [Web workers](https://www.w3.org/TR/workers/) for fast unzipping, so XML3DLoaderPlugin requires that we configure it\n * with a ````workerScriptsPath```` property specifying the directory where zip.js keeps its Web worker script. See\n * the example for how to do that.\n *\n * ## Usage\n *\n * In the example below, we'll use an XML3DLoaderPlugin to load a 3DXML model. When the model has loaded,\n * we'll use the {@link CameraFlightAnimation} to fly the {@link Camera} to look at boundary of the model. We'll\n * then get the model's {@link Entity} from the {@link Scene} and highlight the whole model.\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#loading_3DXML_Widget)]\n *\n * ````javascript\n * // Create a xeokit Viewer\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Add an XML3DLoaderPlugin to the Viewer\n * var plugin = new XML3DLoaderPlugin(viewer, {\n * id: \"XML3DLoader\", // Default value\n * workerScriptsPath : \"../../src/plugins/XML3DLoader/zipjs/\" // Path to zip.js workers dir\n * });\n *\n * // Load the 3DXML model\n * var model = plugin.load({ // Model is an Entity\n * id: \"myModel\",\n * src: \"./models/xml3d/3dpreview.3dxml\",\n * scale: [0.1, 0.1, 0.1],\n * rotate: [90, 0, 0],\n * translate: [100,0,0],\n * edges: true\n * });\n *\n * // When the model has loaded, fit it to view\n * model.on(\"loaded\", function() {\n * viewer.cameraFlight.flyTo(model);\n * });\n *\n * // Update properties of the model via the entity\n * model.highlighted = true;\n *\n * // Find the model Entity by ID\n * model = viewer.scene.models[\"myModel\"];\n *\n * // Destroy the model\n * model.destroy();\n * ````\n * ## Loading MetaModels\n *\n * We have the option to load a {@link MetaModel} that contains a hierarchy of {@link MetaObject}s that classifes the objects within\n * our 3DXML model.\n *\n * This is useful for building a tree view to navigate the objects, using {@link TreeViewPlugin}.\n *\n * Let's load the model again, this time creating a MetaModel:\n *\n * ````javascript\n * var model = plugin.load({\n * id: \"myModel\",\n * src: \"./models/xml3d/3dpreview.3dxml\",\n * scale: [0.1, 0.1, 0.1],\n * rotate: [90, 0, 0],\n * translate: [100,0,0],\n * edges: true,\n *\n * createMetaModel: true // <<-------- Create a MetaModel\n * });\n * ````\n *\n * The MetaModel can then be found on the {@link Viewer}'s {@link MetaScene}, using the model's ID:\n *\n * ````javascript\n * const metaModel = viewer.metaScene.metaModels[\"myModel\"];\n * ````\n *\n * Now we can use {@link TreeViewPlugin} to create a tree view to navigate our model's objects:\n *\n * ````javascript\n * import {TreeViewPlugin} from \"xeokit-sdk.es.js\"\"xeokit-sdk.es.js\";\n *\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"myTreeViewContainer\")\n * });\n *\n * const treeView = new TreeViewPlugin(viewer, {\n * containerElement: document.getElementById(\"treeViewContainer\"),\n * autoExpandDepth: 3, // Initially expand tree three storeys deep\n * hierarchy: \"containment\",\n * autoAddModels: false\n * });\n *\n * model.on(\"loaded\", () => {\n * treeView.addModel(model.id);\n * });\n * ````\n *\n * Note that only the TreeViewPlugin \"containment\" hierarchy makes sense for an XML3D model. A \"types\" hierarchy\n * does not make sense because XML3DLoaderPlugin will set each {@link MetaObject#type} to \"Default\", and \"storeys\"\n * does not make sense because that requires some of the MetaObject#type values to be \"IfcBuildingStorey\".\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#loading_3DXML_TreeView)]\n *\n * ## Material Type\n *\n * Although 3DXML only supports Phong materials, XML3DLoaderPlugin is able to convert them to physically-based materials.\n *\n * The plugin supports three material types:\n *\n * | Material Type | Material Components Loaded | Description | Example |\n * |:--------:|:----:|:-----:|:-----:|\n * | \"PhongMaterial\" (default) | {@link PhongMaterial} | Non-physically-correct Blinn-Phong shading model | [Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_3DXML_materialType_Phong) |\n * | \"MetallicMaterial\" | {@link MetallicMaterial} | Physically-accurate specular-glossiness shading model | [Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_3DXML_materialType_Metallic) |\n * | \"SpecularMaterial\" | {@link SpecularMaterial} | Physically-accurate metallic-roughness shading model | [Run example](https://xeokit.github.io/xeokit-sdk/examples/#loading_3DXML_materialType_Specular) |\n *\n *
    \n * Let's load our model again, this time converting the 3DXML Blinn-Phong materials to {@link SpecularMaterial}s:\n *\n * ````javascript\n * var model = plugin.load({ // Model is an Entity\n * id: \"myModel\",\n * src: \"./models/xml3d/3dpreview.3dxml\",\n * materialtype: \"SpecularMaterial\": true\"\n * });\n * ````\n *\n * * [[Run this example](https://xeokit.github.io/xeokit-sdk/examples/#loading_3DXML_materialType_Specular)]\n *\n * @class XML3DLoaderPlugin\n */\n\nclass XML3DLoaderPlugin extends Plugin {\n\n /**\n * @constructor\n * @param {Viewer} viewer The Viewer.\n * @param {Object} cfg Plugin configuration.\n * @param {String} [cfg.id=\"XML3DLoader\"] Optional ID for this plugin, so that we can find it within {@link Viewer#plugins}.\n * @param {String} cfg.workerScriptsPath Path to the directory that contains the\n * bundled [zip.js](https://gildas-lormeau.github.io/zip.js/) archive, which is a dependency of this plugin. This directory\n * contains the script that is used by zip.js to instantiate Web workers, which assist with unzipping the 3DXML, which is a ZIP archive.\n * @param {String} [cfg.materialType=\"PhongMaterial\"] What type of materials to create while loading: \"MetallicMaterial\" to create {@link MetallicMaterial}s, \"SpecularMaterial\" to create {@link SpecularMaterial}s or \"PhongMaterial\" to create {@link PhongMaterial}s. As it loads XML3D's Phong materials, the XMLLoaderPlugin will do its best approximate conversion of those to the specified workflow.\n * @param {Boolean} [cfg.createMetaModel=false] When true, will create a {@link MetaModel} for the model in {@link MetaScene#metaModels}.\n */\n constructor(viewer, cfg = {}) {\n\n super(\"XML3DLoader\", viewer, cfg);\n\n if (!cfg.workerScriptsPath) {\n this.error(\"Config expected: workerScriptsPath\");\n return\n }\n\n this._workerScriptsPath = cfg.workerScriptsPath;\n\n /**\n * @private\n */\n this._loader = new XML3DSceneGraphLoader(this, cfg);\n\n /**\n * Supported 3DXML schema versions\n * @property supportedSchemas\n * @type {string[]}\n */\n this.supportedSchemas = this._loader.supportedSchemas;\n }\n\n /**\n * Loads a 3DXML model from a file into this XML3DLoaderPlugin's {@link Viewer}.\n *\n * Creates a tree of {@link Entity}s within the Viewer's {@link Scene} that represents the model.\n *\n * @param {*} params Loading parameters.\n * @param {String} params.id ID to assign to the model's root {@link Entity}, unique among all components in the Viewer's {@link Scene}.\n * @param {String} [params.src] Path to a 3DXML file.\n * @param {Boolean} [params.edges=false] Whether or not xeokit renders the {@link Entity} with edges emphasized.\n * @param {Number[]} [params.position=[0,0,0]] The model's World-space 3D position.\n * @param {Number[]} [params.scale=[1,1,1]] The model's World-space scale.\n * @param {Number[]} [params.rotation=[0,0,0]] The model's World-space rotation, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [params.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] The model's world transform matrix. Overrides the position, scale and rotation parameters.\n * @param {Boolean} [params.backfaces=false] When true, allows visible backfaces, wherever specified in the 3DXML. When false, ignores backfaces.\n * @param {Number} [params.edgeThreshold=20] When xraying, highlighting, selecting or edging, this is the threshold angle between normals of adjacent triangles, below which their shared wireframe edge is not drawn.\n * @param {String} [params.materialType=\"PhongMaterial\"] What type of materials to create while loading: \"MetallicMaterial\" to create {@link MetallicMaterial}s, \"SpecularMaterial\" to create {@link SpecularMaterial}s or \"PhongMaterial\" to create {@link PhongMaterial}s. As it loads XML3D's Phong materials, the XMLLoaderPlugin will do its best approximate conversion of those to the specified workflow.\n * @param {Boolean} [params.createMetaModel=false] When true, will create a {@link MetaModel} for the model in {@link MetaScene#metaModels}.\n * @returns {Entity} Entity representing the model, which will have {@link Entity#isModel} set ````true```` and will be registered by {@link Entity#id} in {@link Scene#models}\n */\n load(params = {}) {\n\n params.workerScriptsPath = this._workerScriptsPath;\n\n if (params.id && this.viewer.scene.components[params.id]) {\n this.error(\"Component with this ID already exists in viewer: \" + params.id + \" - will autogenerate this ID\");\n delete params.id;\n }\n\n const modelNode = new Node(this.viewer.scene, utils.apply(params, {\n isModel: true\n }));\n\n const src = params.src;\n\n if (!src) {\n this.error(\"load() param expected: src\");\n return modelNode; // Return new empty model\n }\n\n this._loader.load(this, modelNode, src, params);\n\n return modelNode;\n }\n}\n\n/**\n * @desc Localization service for a {@link Viewer}.\n *\n * * A LocaleService is a container of string translations (\"messages\") for various locales.\n * * A {@link Viewer} has its own default LocaleService at {@link Viewer#localeService}.\n * * We can replace that with our own LocaleService, or a custom subclass, via the Viewer's constructor.\n * * Viewer plugins that need localized translations will attempt to them for the currently active locale from the LocaleService.\n * * Whenever we switch the LocaleService to a different locale, plugins will automatically refresh their translations for that locale.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Viewer} that uses an {@link XKTLoaderPlugin} to load a BIM model, and a\n * {@link NavCubePlugin}, which shows a camera navigation cube in the corner of the canvas.\n *\n * We'll also configure our Viewer with our own LocaleService instance, configured with English, Māori and French\n * translations for our NavCubePlugin.\n *\n * We could instead have just used the Viewer's default LocaleService, but this example demonstrates how we might\n * configure the Viewer our own custom LocaleService subclass.\n *\n * The translations fetched by our NavCubePlugin will be:\n *\n * * \"NavCube.front\"\n * * \"NavCube.back\"\n * * \"NavCube.top\"\n * * \"NavCube.bottom\"\n * * \"NavCube.left\"\n * * \"NavCube.right\"\n *\n *
    \n * These are paths that resolve to our translations for the currently active locale, and are hard-coded within\n * the NavCubePlugin.\n *\n * For example, if the LocaleService's locale is set to \"fr\", then the path \"NavCube.back\" will drill down\n * into ````messages->fr->NavCube->front```` and fetch \"Arrière\".\n *\n * If we didn't provide that particular translation in our LocaleService, or any translations for that locale,\n * then the NavCubePlugin will just fall back on its own default hard-coded translation, which in this case is \"BACK\".\n *\n * [[Run example](https://xeokit.github.io/xeokit-sdk/examples/#localization_NavCubePlugin)]\n *\n * ````javascript\n * import {Viewer, LocaleService, NavCubePlugin, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n *\n * canvasId: \"myCanvas\",\n *\n * localeService: new LocaleService({\n * messages: {\n * \"en\": { // English\n * \"NavCube\": {\n * \"front\": \"Front\",\n * \"back\": \"Back\",\n * \"top\": \"Top\",\n * \"bottom\": \"Bottom\",\n * \"left\": \"Left\",\n * \"right\": \"Right\"\n * }\n * },\n * \"mi\": { // Māori\n * \"NavCube\": {\n * \"front\": \"Mua\",\n * \"back\": \"Tuarā\",\n * \"top\": \"Runga\",\n * \"bottom\": \"Raro\",\n * \"left\": \"Mauī\",\n * \"right\": \"Tika\"\n * }\n * },\n * \"fr\": { // Francais\n * \"NavCube\": {\n * \"front\": \"Avant\",\n * \"back\": \"Arrière\",\n * \"top\": \"Supérieur\",\n * \"bottom\": \"Inférieur\",\n * \"left\": \"Gauche\",\n * \"right\": \"Droit\"\n * }\n * }\n * },\n * locale: \"en\"\n * })\n * });\n *\n * viewer.camera.eye = [-3.93, 2.85, 27.01];\n * viewer.camera.look = [4.40, 3.72, 8.89];\n * viewer.camera.up = [-0.01, 0.99, 0.03];\n *\n * const navCubePlugin = new NavCubePlugin(viewer, {\n * canvasID: \"myNavCubeCanvas\"\n * });\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/Duplex.ifc.xkt\",\n * edges: true\n * });\n * ````\n *\n * We can dynamically switch our Viewer to a different locale at any time, which will update the text on the\n * faces of our NavCube:\n *\n * ````javascript\n * viewer.localeService.locale = \"mi\"; // Switch to Māori\n * ````\n *\n * We can load new translations at any time:\n *\n * ````javascript\n * viewer.localeService.loadMessages({\n * \"jp\": { // Japanese\n * \"NavCube\": {\n * \"front\": \"前部\",\n * \"back\": \"裏\",\n * \"top\": \"上\",\n * \"bottom\": \"底\",\n * \"left\": \"左\",\n * \"right\": \"右\"\n * }\n * }\n * });\n * ````\n *\n * And we can clear the translations if needed:\n *\n * ````javascript\n * viewer.localeService.clearMessages();\n * ````\n *\n * We can get an \"updated\" event from the LocaleService whenever we switch locales or load messages, which is useful\n * for triggering UI elements to refresh themselves with updated translations. Internally, our {@link NavCubePlugin}\n * subscribes to this event, fetching new strings for itself via {@link LocaleService#translate} each time the\n * event is fired.\n *\n * ````javascript\n * viewer.localeService.on(\"updated\", () => {\n * console.log( viewer.localeService.translate(\"NavCube.left\") );\n * });\n * ````\n * @since 2.0\n */\nclass LocaleService {\n\n /**\n * Constructs a LocaleService.\n *\n * @param {*} [params={}]\n * @param {JSON} [params.messages]\n * @param {String} [params.locale]\n */\n constructor(params = {}) {\n\n this._eventSubIDMap = null;\n this._eventSubEvents = null;\n this._eventSubs = null;\n this._events = null;\n\n this._locale = \"en\";\n this._messages = {};\n this._locales = [];\n this._locale = \"en\";\n\n this.messages = params.messages;\n this.locale = params.locale;\n }\n\n /**\n * Replaces the current set of locale translations.\n *\n * * Fires an \"updated\" event when done.\n * * Automatically refreshes any plugins that depend on the translations.\n * * Does not change the current locale.\n *\n * ## Usage\n *\n * ````javascript\n * viewer.localeService.setMessages({\n * messages: {\n * \"en\": { // English\n * \"NavCube\": {\n * \"front\": \"Front\",\n * \"back\": \"Back\",\n * \"top\": \"Top\",\n * \"bottom\": \"Bottom\",\n * \"left\": \"Left\",\n * \"right\": \"Right\"\n * }\n * },\n * \"mi\": { // Māori\n * \"NavCube\": {\n * \"front\": \"Mua\",\n * \"back\": \"Tuarā\",\n * \"top\": \"Runga\",\n * \"bottom\": \"Raro\",\n * \"left\": \"Mauī\",\n * \"right\": \"Tika\"\n * }\n * }\n * }\n * });\n * ````\n *\n * @param {*} messages The new translations.\n */\n set messages(messages) {\n this._messages = messages || {};\n this._locales = Object.keys(this._messages);\n this.fire(\"updated\", this);\n }\n\n /**\n * Loads a new set of locale translations, adding them to the existing translations.\n *\n * * Fires an \"updated\" event when done.\n * * Automatically refreshes any plugins that depend on the translations.\n * * Does not change the current locale.\n *\n * ## Usage\n *\n * ````javascript\n * viewer.localeService.loadMessages({\n * \"jp\": { // Japanese\n * \"NavCube\": {\n * \"front\": \"前部\",\n * \"back\": \"裏\",\n * \"top\": \"上\",\n * \"bottom\": \"底\",\n * \"left\": \"左\",\n * \"right\": \"右\"\n * }\n * }\n * });\n * ````\n *\n * @param {*} messages The new translations.\n */\n loadMessages(messages = {}) {\n for (let locale in messages) {\n this._messages[locale] = messages[locale];\n }\n this.messages = this._messages;\n }\n\n /**\n * Clears all locale translations.\n *\n * * Fires an \"updated\" event when done.\n * * Does not change the current locale.\n * * Automatically refreshes any plugins that depend on the translations, which will cause those\n * plugins to fall back on their internal hard-coded text values, since this method removes all\n * our translations.\n */\n clearMessages() {\n this.messages = {};\n }\n\n /**\n * Gets the list of available locales.\n *\n * These are derived from the currently configured set of translations.\n *\n * @returns {String[]} The list of available locales.\n */\n get locales() {\n return this._locales;\n }\n\n /**\n * Sets the current locale.\n *\n * * Fires an \"updated\" event when done.\n * * The given locale does not need to be in the list of available locales returned by {@link LocaleService#locales}, since\n * this method assumes that you may want to load the locales at a later point.\n * * Automatically refreshes any plugins that depend on the translations.\n * * We can then get translations for the locale, if translations have been loaded for it, via {@link LocaleService#translate} and {@link LocaleService#translatePlurals}.\n *\n * @param {String} locale The new current locale.\n */\n set locale(locale) {\n locale = locale || \"de\";\n if (this._locale === locale) {\n return;\n }\n this._locale = locale;\n this.fire(\"updated\", locale);\n }\n\n /**\n * Gets the current locale.\n *\n * @returns {String} The current locale.\n */\n get locale() {\n return this._locale;\n }\n\n /**\n * Translates the given string according to the current locale.\n *\n * Returns null if no translation can be found.\n *\n * @param {String} msg String to translate.\n * @param {*} [args] Extra parameters.\n * @returns {String|null} Translated string if found, else null.\n */\n translate(msg, args) {\n const localeMessages = this._messages[this._locale];\n if (!localeMessages) {\n return null;\n }\n const localeMessage = resolvePath(msg, localeMessages);\n if (localeMessage) {\n if (args) {\n return vsprintf(localeMessage, args);\n }\n return localeMessage;\n }\n return null;\n }\n\n /**\n * Translates the given phrase according to the current locale.\n *\n * Returns null if no translation can be found.\n *\n * @param {String} msg Phrase to translate.\n * @param {Number} count The plural number.\n * @param {*} [args] Extra parameters.\n * @returns {String|null} Translated string if found, else null.\n */\n translatePlurals(msg, count, args) {\n const localeMessages = this._messages[this._locale];\n if (!localeMessages) {\n return null;\n }\n let localeMessage = resolvePath(msg, localeMessages);\n count = parseInt(\"\" + count, 10);\n if (count === 0) {\n localeMessage = localeMessage.zero;\n } else {\n localeMessage = (count > 1) ? localeMessage.other : localeMessage.one;\n }\n if (!localeMessage) {\n return null;\n }\n localeMessage = vsprintf(localeMessage, [count]);\n if (args) {\n localeMessage = vsprintf(localeMessage, args);\n }\n return localeMessage;\n }\n\n /**\n * Fires an event on this LocaleService.\n *\n * Notifies existing subscribers to the event, optionally retains the event to give to\n * any subsequent notifications on the event as they are made.\n *\n * @param {String} event The event type name.\n * @param {Object} value The event parameters.\n * @param {Boolean} [forget=false] When true, does not retain for subsequent subscribers.\n */\n fire(event, value, forget) {\n if (!this._events) {\n this._events = {};\n }\n if (!this._eventSubs) {\n this._eventSubs = {};\n }\n if (forget !== true) {\n this._events[event] = value || true; // Save notification\n }\n const subs = this._eventSubs[event];\n if (subs) {\n for (const subId in subs) {\n if (subs.hasOwnProperty(subId)) {\n const sub = subs[subId];\n sub.callback(value);\n }\n }\n }\n }\n\n /**\n * Subscribes to an event on this LocaleService.\n *\n * @param {String} event The event\n * @param {Function} callback Callback fired on the event\n * @return {String} Handle to the subscription, which may be used to unsubscribe with {@link #off}.\n */\n on(event, callback) {\n if (!this._events) {\n this._events = {};\n }\n if (!this._eventSubIDMap) {\n this._eventSubIDMap = new Map(); // Subscription subId pool\n }\n if (!this._eventSubEvents) {\n this._eventSubEvents = {};\n }\n if (!this._eventSubs) {\n this._eventSubs = {};\n }\n let subs = this._eventSubs[event];\n if (!subs) {\n subs = {};\n this._eventSubs[event] = subs;\n }\n const subId = this._eventSubIDMap.addItem(); // Create unique subId\n subs[subId] = {\n callback: callback\n };\n this._eventSubEvents[subId] = event;\n const value = this._events[event];\n if (value !== undefined) {\n callback(value);\n }\n return subId;\n }\n\n /**\n * Cancels an event subscription that was previously made with {@link LocaleService#on}.\n *\n * @param {String} subId Subscription ID\n */\n off(subId) {\n if (subId === undefined || subId === null) {\n return;\n }\n if (!this._eventSubEvents) {\n return;\n }\n const event = this._eventSubEvents[subId];\n if (event) {\n delete this._eventSubEvents[subId];\n const subs = this._eventSubs[event];\n if (subs) {\n delete subs[subId];\n }\n this._eventSubIDMap.removeItem(subId); // Release subId\n }\n }\n}\n\nfunction resolvePath(key, json) {\n if (json[key]) {\n return json[key];\n }\n const parts = key.split(\".\");\n let obj = json;\n for (let i = 0, len = parts.length; obj && (i < len); i++) {\n const part = parts[i];\n obj = obj[part];\n }\n return obj;\n}\n\nfunction vsprintf(msg, args = []) {\n return msg.replace(/\\{\\{|\\}\\}|\\{(\\d+)\\}/g, function (m, n) {\n if (m === \"{{\") {\n return \"{\";\n }\n if (m === \"}}\") {\n return \"}\";\n }\n return args[n];\n });\n}\n\n/**\n * @desc Abstract base class for curve classes.\n */\nclass Curve extends Component {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this Curve as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Curve}, generated automatically when omitted.\n * @param {Object} [cfg] Configs for this Curve.\n * @param {Number} [cfg.t=0] Current position on this Curve, in range between ````0..1````.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.t = cfg.t;\n }\n\n /**\n * Sets the progress along this Curve.\n *\n * Automatically clamps to range ````[0..1]````.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The progress value.\n */\n set t(value) {\n value = value || 0;\n this._t = value < 0.0 ? 0.0 : (value > 1.0 ? 1.0 : value);\n }\n\n /**\n * Gets the progress along this Curve.\n *\n * @returns {Number} The progress value.\n */\n get t() {\n return this._t;\n }\n\n /**\n * Gets the tangent on this Curve at position {@link Curve#t}.\n *\n * @returns {{Number[]}} The tangent.\n */\n get tangent() {\n return this.getTangent(this._t);\n }\n\n /**\n * Gets the length of this Curve.\n *\n * @returns {Number} The Curve length.\n */\n get length() {\n var lengths = this._getLengths();\n return lengths[lengths.length - 1];\n }\n\n /**\n * Returns a normalized tangent vector on this Curve at the given position.\n *\n * @param {Number} t Position to get tangent at.\n * @returns {{Number[]}} Normalized tangent vector\n */\n getTangent(t) {\n var delta = 0.0001;\n if (t === undefined) {\n t = this._t;\n }\n var t1 = t - delta;\n var t2 = t + delta;\n if (t1 < 0) {\n t1 = 0;\n }\n if (t2 > 1) {\n t2 = 1;\n }\n var pt1 = this.getPoint(t1);\n var pt2 = this.getPoint(t2);\n var vec = math.subVec3(pt2, pt1, []);\n return math.normalizeVec3(vec, []);\n }\n\n getPointAt(u) {\n var t = this.getUToTMapping(u);\n return this.getPoint(t);\n }\n\n /**\n * Samples points on this Curve, at the given number of equally-spaced divisions.\n *\n * @param {Number} divisions The number of divisions.\n * @returns {{Array of Array}} Array of sampled 3D points.\n */\n getPoints(divisions) {\n if (!divisions) {\n divisions = 5;\n }\n var d, pts = [];\n for (d = 0; d <= divisions; d++) {\n pts.push(this.getPoint(d / divisions));\n }\n return pts;\n }\n\n _getLengths(divisions) {\n if (!divisions) {\n divisions = (this.__arcLengthDivisions) ? (this.__arcLengthDivisions) : 200;\n }\n if (this.cacheArcLengths && (this.cacheArcLengths.length === divisions + 1) && !this.needsUpdate) {\n return this.cacheArcLengths;\n\n }\n this.needsUpdate = false;\n var cache = [];\n var current;\n var last = this.getPoint(0);\n var p;\n var sum = 0;\n cache.push(0);\n for (p = 1; p <= divisions; p++) {\n current = this.getPoint(p / divisions);\n sum += math.lenVec3(math.subVec3(current, last, []));\n cache.push(sum);\n last = current;\n }\n this.cacheArcLengths = cache;\n return cache; // { sums: cache, sum:sum }, Sum is in the last element.\n }\n\n _updateArcLengths() {\n this.needsUpdate = true;\n this._getLengths();\n }\n\n // Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equi distance\n\n getUToTMapping(u, distance) {\n var arcLengths = this._getLengths();\n var i = 0;\n var il = arcLengths.length;\n var t;\n var targetArcLength; // The targeted u distance value to get\n if (distance) {\n targetArcLength = distance;\n } else {\n targetArcLength = u * arcLengths[il - 1];\n }\n //var time = Date.now();\n var low = 0, high = il - 1, comparison;\n while (low <= high) {\n i = Math.floor(low + (high - low) / 2); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\n comparison = arcLengths[i] - targetArcLength;\n if (comparison < 0) {\n low = i + 1;\n } else if (comparison > 0) {\n high = i - 1;\n } else {\n high = i;\n break;\n // DONE\n }\n }\n i = high;\n if (arcLengths[i] === targetArcLength) {\n t = i / (il - 1);\n return t;\n }\n var lengthBefore = arcLengths[i];\n var lengthAfter = arcLengths[i + 1];\n var segmentLength = lengthAfter - lengthBefore;\n var segmentFraction = (targetArcLength - lengthBefore) / segmentLength;\n t = (i + segmentFraction) / (il - 1);\n return t;\n }\n}\n\n/**\n * @desc A {@link Curve} along which a 3D position can be animated.\n *\n * * As shown in the diagram below, a SplineCurve is defined by three or more control points.\n * * You can sample a {@link SplineCurve#point} and a {@link Curve#tangent} vector on a SplineCurve for any given value of {@link SplineCurve#t} in the range ````[0..1]````.\n * * When you set {@link SplineCurve#t} on a SplineCurve, its {@link SplineCurve#point} and {@link Curve#tangent} will update accordingly.\n * * To build a complex path, you can combine an unlimited combination of SplineCurves, {@link CubicBezierCurve} and {@link QuadraticBezierCurve} into a {@link Path}.\n *
    \n *
    \n *\n * * Spline Curve from Wikipedia*\n */\nclass SplineCurve extends Curve {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this SplineCurve as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Array} [cfg.points=[]] Control points on this SplineCurve.\n * @param {Number} [cfg.t=0] Current position on this SplineCurve, in range between 0..1.\n * @param {Number} [cfg.t=0] Current position on this CubicBezierCurve, in range between 0..1.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.points = cfg.points;\n this.t = cfg.t;\n }\n\n /**\n * Sets the control points on this SplineCurve.\n *\n * Default value is ````[]````.\n *\n * @param {Number[]} value New control points.\n */\n set points(value) {\n this._points = value || [];\n }\n\n /**\n * Gets the control points on this SplineCurve.\n *\n * Default value is ````[]````.\n *\n * @returns {Number[]} The control points.\n */\n get points() {\n return this._points;\n }\n\n /**\n * Sets the progress along this SplineCurve.\n *\n * Automatically clamps to range ````[0..1]````.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The new progress.\n */\n set t(value) {\n value = value || 0;\n this._t = value < 0.0 ? 0.0 : (value > 1.0 ? 1.0 : value);\n }\n\n /**\n * Gets the progress along this SplineCurve.\n *\n * Automatically clamps to range ````[0..1]````.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The new progress.\n */\n get t() {\n return this._t;\n }\n\n /**\n * Gets the point on this SplineCurve at position {@link SplineCurve#t}.\n *\n * @returns {Number[]} The point at {@link SplineCurve#t}.\n */\n get point() {\n return this.getPoint(this._t);\n }\n\n /**\n * Returns point on this SplineCurve at the given position.\n *\n * @param {Number} t Position to get point at.\n * @returns {Number[]} Point at the given position.\n */\n getPoint(t) {\n\n var points = this.points;\n\n if (points.length < 3) {\n this.error(\"Can't sample point from SplineCurve - not enough points on curve - returning [0,0,0].\");\n return;\n }\n\n var point = (points.length - 1) * t;\n\n var intPoint = Math.floor(point);\n var weight = point - intPoint;\n\n var point0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n var point1 = points[intPoint];\n var point2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n var point3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n\n var vector = math.vec3();\n\n vector[0] = math.catmullRomInterpolate(point0[0], point1[0], point2[0], point3[0], weight);\n vector[1] = math.catmullRomInterpolate(point0[1], point1[1], point2[1], point3[1], weight);\n vector[2] = math.catmullRomInterpolate(point0[2], point1[2], point2[2], point3[2], weight);\n\n return vector;\n }\n\n getJSON() {\n return {\n points: points,\n t: this._t\n };\n }\n}\n\nconst tempVec3a$3 = math.vec3();\n\n/**\n * @desc Defines a sequence of frames along which a {@link CameraPathAnimation} can animate a {@link Camera}.\n *\n * See {@link CameraPathAnimation} for usage.\n */\nclass CameraPath extends Component {\n\n /**\n * Returns \"CameraPath\".\n *\n * @private\n *\n * @returns {string} \"CameraPath\"\n */\n get type() {\n return \"CameraPath\"\n }\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this CameraPath as well.\n * @param [cfg] {*} Configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {{t:Number, eye:Object, look:Object, up: Object}[]} [cfg.frames] Initial sequence of frames.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._frames = [];\n\n this._eyeCurve = new SplineCurve(this);\n this._lookCurve = new SplineCurve(this);\n this._upCurve = new SplineCurve(this);\n\n if (cfg.frames) {\n this.addFrames(cfg.frames);\n this.smoothFrameTimes(1);\n }\n }\n\n /**\n * Gets the camera frames in this CameraPath.\n *\n * @returns {{t:Number, eye:Object, look:Object, up: Object}[]} The frames on this CameraPath.\n */\n get frames() {\n return this._frames;\n }\n\n /**\n * Gets the {@link SplineCurve} along which {@link Camera#eye} travels.\n * @returns {SplineCurve} The SplineCurve for {@link Camera#eye}.\n */\n get eyeCurve() {\n return this._eyeCurve;\n }\n\n /**\n * Gets the {@link SplineCurve} along which {@link Camera#look} travels.\n * @returns {SplineCurve} The SplineCurve for {@link Camera#look}.\n */\n get lookCurve() {\n return this._lookCurve;\n }\n\n /**\n * Gets the {@link SplineCurve} along which {@link Camera#up} travels.\n * @returns {SplineCurve} The SplineCurve for {@link Camera#up}.\n */\n get upCurve() {\n return this._upCurve;\n }\n\n /**\n * Adds a frame to this CameraPath, given as the current position of the {@link Camera}.\n *\n * @param {Number} t Time instant for the new frame.\n */\n saveFrame(t) {\n const camera = this.scene.camera;\n this.addFrame(t, camera.eye, camera.look, camera.up);\n }\n\n /**\n * Adds a frame to this CameraPath, specified as values for eye, look and up vectors at a given time instant.\n *\n * @param {Number} t Time instant for the new frame.\n * @param {Number[]} eye A three-element vector specifying the eye position for the new frame.\n * @param {Number[]} look A three-element vector specifying the look position for the new frame.\n * @param {Number[]} up A three-element vector specifying the up vector for the new frame.\n */\n addFrame(t, eye, look, up) {\n const frame = {\n t: t,\n eye: eye.slice(0),\n look: look.slice(0),\n up: up.slice(0)\n };\n this._frames.push(frame);\n this._eyeCurve.points.push(frame.eye);\n this._lookCurve.points.push(frame.look);\n this._upCurve.points.push(frame.up);\n }\n\n /**\n * Adds multiple frames to this CameraPath, each frame specified as a set of values for eye, look and up vectors at a given time instant.\n *\n * @param {{t:Number, eye:Object, look:Object, up: Object}[]} frames Frames to add to this CameraPath.\n */\n addFrames(frames) {\n let frame;\n for (let i = 0, len = frames.length; i < len; i++) {\n frame = frames[i];\n this.addFrame(frame.t || 0, frame.eye, frame.look, frame.up);\n }\n }\n\n /**\n * Sets the position of the {@link Camera} to a position interpolated within this CameraPath at the given time instant.\n *\n * @param {Number} t Time instant.\n */\n loadFrame(t) {\n\n const camera = this.scene.camera;\n\n t = t / (this._frames[this._frames.length - 1].t - this._frames[0].t);\n t = t < 0.0 ? 0.0 : (t > 1.0 ? 1.0 : t);\n\n camera.eye = this._eyeCurve.getPoint(t, tempVec3a$3);\n camera.look = this._lookCurve.getPoint(t, tempVec3a$3);\n camera.up = this._upCurve.getPoint(t, tempVec3a$3);\n }\n\n /**\n * Gets eye, look and up vectors on this CameraPath at a given instant.\n *\n * @param {Number} t Time instant.\n * @param {Number[]} eye The eye position to update.\n * @param {Number[]} look The look position to update.\n * @param {Number[]} up The up vector to update.\n */\n sampleFrame(t, eye, look, up) {\n t = t < 0.0 ? 0.0 : (t > 1.0 ? 1.0 : t);\n this._eyeCurve.getPoint(t, eye);\n this._lookCurve.getPoint(t, look);\n this._upCurve.getPoint(t, up);\n }\n\n /**\n * Given a total duration (in seconds) for this CameraPath, recomputes the time instant at each frame so that,\n * when animated by {@link CameraPathAnimation}, the {@link Camera} will move along the path at a constant rate.\n *\n * @param {Number} duration The total duration for this CameraPath.\n */\n smoothFrameTimes(duration) {\n const numFrames = this._frames.length;\n if (numFrames === 0) {\n return;\n }\n const vec = math.vec3();\n var totalLen = 0;\n this._frames[0].t = 0;\n const lens = [];\n for (let i = 1, len = this._frames.length; i < len; i++) {\n var lenVec = math.lenVec3(math.subVec3(this._frames[i].eye, this._frames[i - 1].eye, vec));\n lens[i] = lenVec;\n totalLen += lenVec;\n }\n for (let i = 1, len = this._frames.length; i < len; i++) {\n const interFrameRate = (lens[i] / totalLen) * duration;\n this._frames[i].t = this._frames[i-1].t + interFrameRate;\n }\n }\n\n /**\n * Removes all frames from this CameraPath.\n */\n clearFrames() {\n this._frames = [];\n this._eyeCurve.points = [];\n this._lookCurve.points = [];\n this._upCurve.points = [];\n }\n}\n\nconst tempVec3$2 = math.vec3();\nconst newLook = math.vec3();\nconst newEye = math.vec3();\nconst newUp = math.vec3();\nconst newLookEyeVec = math.vec3();\n\n/**\n * @desc Jumps or flies the {@link Scene}'s {@link Camera} to a given target.\n *\n * * Located at {@link Viewer#cameraFlight}\n * * Can fly or jump to its target.\n * * While flying, can be stopped, or redirected to a different target.\n * * Can also smoothly transition between ortho and perspective projections.\n *\n *\n * A CameraFlightAnimation's target can be:\n *\n * * specific ````eye````, ````look```` and ````up```` positions,\n * * an axis-aligned World-space bounding box (AABB), or\n * * an instance or ID of any {@link Component} subtype that provides a World-space AABB.\n *\n * A target can also contain a ````projection```` type to transition into. For example, if your {@link Camera#projection} is\n * currently ````\"perspective\"```` and you supply {@link CameraFlightAnimation#flyTo} with a ````projection```` property\n * equal to \"ortho\", then CameraFlightAnimation will smoothly transition the Camera into an orthographic projection.\n *\n * Configure {@link CameraFlightAnimation#fit} and {@link CameraFlightAnimation#fitFOV} to make it stop at the point\n * where the target occupies a certain amount of the field-of-view.\n *\n * ## Flying to an Entity\n *\n * Flying to an {@link Entity}:\n *\n * ````Javascript\n * var entity = new Mesh(viewer.scene);\n *\n * // Fly to the Entity's World-space AABB\n * viewer.cameraFlight.flyTo(entity);\n * ````\n * ## Flying to a Position\n *\n * Flying the CameraFlightAnimation from the previous example to specified eye, look and up positions:\n *\n * ````Javascript\n * viewer.cameraFlight.flyTo({\n * eye: [-5,-5,-5],\n * look: [0,0,0]\n * up: [0,1,0],\n * duration: 1 // Default, seconds\n * },() => {\n * // Done\n * });\n * ````\n *\n * ## Flying to an AABB\n *\n * Flying the CameraFlightAnimation from the previous two examples explicitly to the {@link Boundary3D\"}}Boundary3D's{{/crossLink}}\n * axis-aligned bounding box:\n *\n * ````Javascript\n * viewer.cameraFlight.flyTo(entity.aabb);\n * ````\n *\n * ## Transitioning Between Projections\n *\n * CameraFlightAnimation also allows us to smoothly transition between Camera projections. We can do that by itself, or\n * in addition to flying the Camera to a target.\n *\n * Let's transition the Camera to orthographic projection:\n *\n * [[Run example](http://xeokit.github.io/xeokit-sdk/examples/#camera_CameraFlightAnimation_projection)]\n *\n * ````Javascript\n * viewer.cameraFlight.flyTo({ projection: \"ortho\", () => {\n * // Done\n * });\n * ````\n *\n * Now let's transition the Camera back to perspective projection:\n *\n * ````Javascript\n * viewer.cameraFlight.flyTo({ projection: \"perspective\"}, () => {\n * // Done\n * });\n * ````\n *\n * Fly Camera to a position, while transitioning to orthographic projection:\n *\n * ````Javascript\n * viewer.cameraFlight.flyTo({\n * eye: [-100,20,2],\n * look: [0,0,-40],\n * up: [0,1,0],\n * projection: \"ortho\", () => {\n * // Done\n * });\n * ````\n */\nclass CameraFlightAnimation extends Component {\n\n /**\n * @private\n */\n get type() {\n return \"CameraFlightAnimation\";\n }\n\n /**\n @constructor\n @private\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._look1 = math.vec3();\n this._eye1 = math.vec3();\n this._up1 = math.vec3();\n this._look2 = math.vec3();\n this._eye2 = math.vec3();\n this._up2 = math.vec3();\n this._orthoScale1 = 1;\n this._orthoScale2 = 1;\n this._flying = false;\n this._flyEyeLookUp = false;\n this._flyingEye = false;\n this._flyingLook = false;\n this._callback = null;\n this._callbackScope = null;\n this._time1 = null;\n this._time2 = null;\n this.easing = cfg.easing !== false;\n\n this.duration = cfg.duration;\n this.fit = cfg.fit;\n this.fitFOV = cfg.fitFOV;\n this.trail = cfg.trail;\n }\n\n /**\n * Flies the {@link Camera} to a target.\n *\n * * When the target is a boundary, the {@link Camera} will fly towards the target and stop when the target fills most of the canvas.\n * * When the target is an explicit {@link Camera} position, given as ````eye````, ````look```` and ````up````, then CameraFlightAnimation will interpolate the {@link Camera} to that target and stop there.\n *\n * @param {Object|Component} [params=Scene] Either a parameters object or a {@link Component} subtype that has\n * an AABB. Defaults to the {@link Scene}, which causes the {@link Camera} to fit the Scene in view.\n * @param {Number} [params.arc=0] Factor in range ````[0..1]```` indicating how much the {@link Camera#eye} position\n * will swing away from its {@link Camera#look} position as it flies to the target.\n * @param {Number|String|Component} [params.component] ID or instance of a component to fly to. Defaults to the entire {@link Scene}.\n * @param {Number[]} [params.aabb] World-space axis-aligned bounding box (AABB) target to fly to.\n * @param {Number[]} [params.eye] Position to fly the eye position to.\n * @param {Number[]} [params.look] Position to fly the look position to.\n * @param {Number[]} [params.up] Position to fly the up vector to.\n * @param {String} [params.projection] Projection type to transition into as we fly. Can be any of the values of {@link Camera.projection}.\n * @param {Boolean} [params.fit=true] Whether to fit the target to the view volume. Overrides {@link CameraFlightAnimation#fit}.\n * @param {Number} [params.fitFOV] How much of field-of-view, in degrees, that a target {@link Entity} or its AABB should\n * fill the canvas on arrival. Overrides {@link CameraFlightAnimation#fitFOV}.\n * @param {Number} [params.duration] Flight duration in seconds. Overrides {@link CameraFlightAnimation#duration}.\n * @param {Number} [params.orthoScale] Animate the Camera's orthographic scale to this target value. See {@link Ortho#scale}.\n * @param {Function} [callback] Callback fired on arrival.\n * @param {Object} [scope] Optional scope for callback.\n */\n flyTo(params, callback, scope) {\n\n params = params || this.scene;\n\n if (this._flying) {\n this.stop();\n }\n\n this._flying = false;\n this._flyingEye = false;\n this._flyingLook = false;\n this._flyingEyeLookUp = false;\n\n this._callback = callback;\n this._callbackScope = scope;\n\n const camera = this.scene.camera;\n const flyToProjection = (!!params.projection) && (params.projection !== camera.projection);\n\n this._eye1[0] = camera.eye[0];\n this._eye1[1] = camera.eye[1];\n this._eye1[2] = camera.eye[2];\n\n this._look1[0] = camera.look[0];\n this._look1[1] = camera.look[1];\n this._look1[2] = camera.look[2];\n\n this._up1[0] = camera.up[0];\n this._up1[1] = camera.up[1];\n this._up1[2] = camera.up[2];\n\n this._orthoScale1 = camera.ortho.scale;\n this._orthoScale2 = params.orthoScale || this._orthoScale1;\n\n let aabb;\n let eye;\n let look;\n let up;\n let componentId;\n\n if (params.aabb) {\n aabb = params.aabb;\n\n } else if (params.length === 6) {\n aabb = params;\n\n } else if ((params.eye && params.look) || params.up) {\n eye = params.eye;\n look = params.look;\n up = params.up;\n\n } else if (params.eye) {\n eye = params.eye;\n\n } else if (params.look) {\n look = params.look;\n\n } else { // Argument must be an instance or ID of a Component (subtype)\n\n let component = params;\n\n if (utils.isNumeric(component) || utils.isString(component)) {\n\n componentId = component;\n component = this.scene.components[componentId];\n\n if (!component) {\n this.error(\"Component not found: \" + utils.inQuotes(componentId));\n if (callback) {\n if (scope) {\n callback.call(scope);\n } else {\n callback();\n }\n }\n return;\n }\n }\n if (!flyToProjection) {\n aabb = component.aabb || this.scene.aabb;\n }\n }\n\n const poi = params.poi;\n\n if (aabb) {\n\n if (aabb[3] < aabb[0] || aabb[4] < aabb[1] || aabb[5] < aabb[2]) { // Don't fly to an inverted boundary\n return;\n }\n\n if (aabb[3] === aabb[0] && aabb[4] === aabb[1] && aabb[5] === aabb[2]) { // Don't fly to an empty boundary\n return;\n }\n\n aabb = aabb.slice();\n const aabbCenter = math.getAABB3Center(aabb);\n\n this._look2 = poi || aabbCenter;\n\n const eyeLookVec = math.subVec3(this._eye1, this._look1, tempVec3$2);\n const eyeLookVecNorm = math.normalizeVec3(eyeLookVec);\n const diag = poi ? math.getAABB3DiagPoint(aabb, poi) : math.getAABB3Diag(aabb);\n const fitFOV = params.fitFOV || this._fitFOV;\n const sca = Math.abs(diag / Math.tan(fitFOV * math.DEGTORAD));\n\n this._orthoScale2 = diag * 1.1;\n\n this._eye2[0] = this._look2[0] + (eyeLookVecNorm[0] * sca);\n this._eye2[1] = this._look2[1] + (eyeLookVecNorm[1] * sca);\n this._eye2[2] = this._look2[2] + (eyeLookVecNorm[2] * sca);\n\n this._up2[0] = this._up1[0];\n this._up2[1] = this._up1[1];\n this._up2[2] = this._up1[2];\n\n this._flyingEyeLookUp = true;\n\n } else if (eye || look || up) {\n\n this._flyingEyeLookUp = !!eye && !!look && !!up;\n this._flyingEye = !!eye && !look;\n this._flyingLook = !!look && !eye;\n\n if (eye) {\n this._eye2[0] = eye[0];\n this._eye2[1] = eye[1];\n this._eye2[2] = eye[2];\n }\n\n if (look) {\n this._look2[0] = look[0];\n this._look2[1] = look[1];\n this._look2[2] = look[2];\n }\n\n if (up) {\n this._up2[0] = up[0];\n this._up2[1] = up[1];\n this._up2[2] = up[2];\n }\n }\n\n if (flyToProjection) {\n\n if (params.projection === \"ortho\" && camera.projection !== \"ortho\") {\n this._projection2 = \"ortho\";\n this._projMatrix1 = camera.projMatrix.slice();\n this._projMatrix2 = camera.ortho.matrix.slice();\n camera.projection = \"customProjection\";\n }\n\n if (params.projection === \"perspective\" && camera.projection !== \"perspective\") {\n this._projection2 = \"perspective\";\n this._projMatrix1 = camera.projMatrix.slice();\n this._projMatrix2 = camera.perspective.matrix.slice();\n camera.projection = \"customProjection\";\n }\n } else {\n this._projection2 = null;\n }\n\n this.fire(\"started\", params, true);\n\n this._time1 = Date.now();\n this._time2 = this._time1 + (params.duration ? params.duration * 1000 : this._duration);\n\n this._flying = true; // False as soon as we stop\n\n core.scheduleTask(this._update, this);\n }\n\n /**\n * Jumps the {@link Scene}'s {@link Camera} to the given target.\n *\n * * When the target is a boundary, this CameraFlightAnimation will position the {@link Camera} at where the target fills most of the canvas.\n * * When the target is an explicit {@link Camera} position, given as ````eye````, ````look```` and ````up```` vectors, then this CameraFlightAnimation will jump the {@link Camera} to that target.\n *\n * @param {*|Component} params Either a parameters object or a {@link Component} subtype that has a World-space AABB.\n * @param {Number} [params.arc=0] Factor in range [0..1] indicating how much the {@link Camera#eye} will swing away from its {@link Camera#look} as it flies to the target.\n * @param {Number|String|Component} [params.component] ID or instance of a component to fly to.\n * @param {Number[]} [params.aabb] World-space axis-aligned bounding box (AABB) target to fly to.\n * @param {Number[]} [params.eye] Position to fly the eye position to.\n * @param {Number[]} [params.look] Position to fly the look position to.\n * @param {Number[]} [params.up] Position to fly the up vector to.\n * @param {String} [params.projection] Projection type to transition into. Can be any of the values of {@link Camera.projection}.\n * @param {Number} [params.fitFOV] How much of field-of-view, in degrees, that a target {@link Entity} or its AABB should fill the canvas on arrival. Overrides {@link CameraFlightAnimation#fitFOV}.\n * @param {Boolean} [params.fit] Whether to fit the target to the view volume. Overrides {@link CameraFlightAnimation#fit}.\n */\n jumpTo(params) {\n this._jumpTo(params);\n }\n\n _jumpTo(params) {\n\n if (this._flying) {\n this.stop();\n }\n\n const camera = this.scene.camera;\n\n var aabb;\n var componentId;\n var newEye;\n var newLook;\n var newUp;\n\n if (params.aabb) { // Boundary3D\n aabb = params.aabb;\n\n } else if (params.length === 6) { // AABB\n aabb = params;\n\n } else if (params.eye || params.look || params.up) { // Camera pose\n newEye = params.eye;\n newLook = params.look;\n newUp = params.up;\n\n } else { // Argument must be an instance or ID of a Component (subtype)\n\n let component = params;\n\n if (utils.isNumeric(component) || utils.isString(component)) {\n componentId = component;\n component = this.scene.components[componentId];\n if (!component) {\n this.error(\"Component not found: \" + utils.inQuotes(componentId));\n return;\n }\n }\n aabb = component.aabb || this.scene.aabb;\n }\n\n const poi = params.poi;\n\n if (aabb) {\n\n if (aabb[3] <= aabb[0] || aabb[4] <= aabb[1] || aabb[5] <= aabb[2]) { // Don't fly to an empty boundary\n return;\n }\n\n var diag = poi ? math.getAABB3DiagPoint(aabb, poi) : math.getAABB3Diag(aabb);\n\n newLook = poi || math.getAABB3Center(aabb, newLook);\n\n if (this._trail) {\n math.subVec3(camera.look, newLook, newLookEyeVec);\n } else {\n math.subVec3(camera.eye, camera.look, newLookEyeVec);\n }\n\n math.normalizeVec3(newLookEyeVec);\n let dist;\n const fit = (params.fit !== undefined) ? params.fit : this._fit;\n\n if (fit) {\n dist = Math.abs((diag) / Math.tan((params.fitFOV || this._fitFOV) * math.DEGTORAD));\n\n } else {\n dist = math.lenVec3(math.subVec3(camera.eye, camera.look, tempVec3$2));\n }\n\n math.mulVec3Scalar(newLookEyeVec, dist);\n\n camera.eye = math.addVec3(newLook, newLookEyeVec, tempVec3$2);\n camera.look = newLook;\n\n this.scene.camera.ortho.scale = diag * 1.1;\n\n } else if (newEye || newLook || newUp) {\n\n if (newEye) {\n camera.eye = newEye;\n }\n if (newLook) {\n camera.look = newLook;\n }\n if (newUp) {\n camera.up = newUp;\n }\n }\n\n if (params.projection) {\n camera.projection = params.projection;\n }\n }\n\n _update() {\n if (!this._flying) {\n return;\n }\n const time = Date.now();\n let t = (time - this._time1) / (this._time2 - this._time1);\n const stopping = (t >= 1);\n\n if (t > 1) {\n t = 1;\n }\n\n const tFlight = this.easing ? CameraFlightAnimation._ease(t, 0, 1, 1) : t;\n const camera = this.scene.camera;\n\n if (this._flyingEye || this._flyingLook) {\n\n if (this._flyingEye) {\n math.subVec3(camera.eye, camera.look, newLookEyeVec);\n camera.eye = math.lerpVec3(tFlight, 0, 1, this._eye1, this._eye2, newEye);\n camera.look = math.subVec3(newEye, newLookEyeVec, newLook);\n } else if (this._flyingLook) {\n camera.look = math.lerpVec3(tFlight, 0, 1, this._look1, this._look2, newLook);\n camera.up = math.lerpVec3(tFlight, 0, 1, this._up1, this._up2, newUp);\n }\n\n } else if (this._flyingEyeLookUp) {\n\n camera.eye = math.lerpVec3(tFlight, 0, 1, this._eye1, this._eye2, newEye);\n camera.look = math.lerpVec3(tFlight, 0, 1, this._look1, this._look2, newLook);\n camera.up = math.lerpVec3(tFlight, 0, 1, this._up1, this._up2, newUp);\n }\n\n if (this._projection2) {\n const tProj = (this._projection2 === \"ortho\") ? CameraFlightAnimation._easeOutExpo(t, 0, 1, 1) : CameraFlightAnimation._easeInCubic(t, 0, 1, 1);\n camera.customProjection.matrix = math.lerpMat4(tProj, 0, 1, this._projMatrix1, this._projMatrix2);\n\n } else {\n camera.ortho.scale = this._orthoScale1 + (t * (this._orthoScale2 - this._orthoScale1));\n }\n\n if (stopping) {\n camera.ortho.scale = this._orthoScale2;\n this.stop();\n return;\n }\n core.scheduleTask(this._update, this); // Keep flying\n }\n\n static _ease(t, b, c, d) { // Quadratic easing out - decelerating to zero velocity http://gizma.com/easing\n t /= d;\n return -c * t * (t - 2) + b;\n }\n\n static _easeInCubic(t, b, c, d) {\n t /= d;\n return c * t * t * t + b;\n }\n\n static _easeOutExpo(t, b, c, d) {\n return c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n\n /**\n * Stops an earlier flyTo, fires arrival callback.\n */\n stop() {\n if (!this._flying) {\n return;\n }\n this._flying = false;\n this._time1 = null;\n this._time2 = null;\n if (this._projection2) {\n this.scene.camera.projection = this._projection2;\n }\n const callback = this._callback;\n if (callback) {\n this._callback = null;\n if (this._callbackScope) {\n callback.call(this._callbackScope);\n } else {\n callback();\n }\n }\n this.fire(\"stopped\", true, true);\n }\n\n /**\n * Cancels an earlier flyTo without calling the arrival callback.\n */\n cancel() {\n if (!this._flying) {\n return;\n }\n this._flying = false;\n this._time1 = null;\n this._time2 = null;\n if (this._callback) {\n this._callback = null;\n }\n this.fire(\"canceled\", true, true);\n }\n\n /**\n * Sets the flight duration, in seconds, when calling {@link CameraFlightAnimation#flyTo}.\n *\n * Stops any flight currently in progress.\n *\n * default value is ````0.5````.\n *\n * @param {Number} value New duration value.\n */\n set duration(value) {\n this._duration = value ? (value * 1000.0) : 500;\n this.stop();\n }\n\n /**\n * Gets the flight duration, in seconds, when calling {@link CameraFlightAnimation#flyTo}.\n *\n * default value is ````0.5````.\n *\n * @returns {Number} New duration value.\n */\n get duration() {\n return this._duration / 1000.0;\n }\n\n /**\n * Sets if, when CameraFlightAnimation is flying to a boundary, it will always adjust the distance between the\n * {@link Camera#eye} and {@link Camera#look} so as to ensure that the target boundary is always filling the view volume.\n *\n * When false, the eye will remain at its current distance from the look position.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} value Set ````true```` to activate this behaviour.\n */\n set fit(value) {\n this._fit = value !== false;\n }\n\n /**\n * Gets if, when CameraFlightAnimation is flying to a boundary, it will always adjust the distance between the\n * {@link Camera#eye} and {@link Camera#look} so as to ensure that the target boundary is always filling the view volume.\n *\n * When false, the eye will remain at its current distance from the look position.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} value Set ````true```` to activate this behaviour.\n */\n get fit() {\n return this._fit;\n }\n\n /**\n * Sets how much of the perspective field-of-view, in degrees, that a target {@link Entity#aabb} should\n * fill the canvas when calling {@link CameraFlightAnimation#flyTo} or {@link CameraFlightAnimation#jumpTo}.\n *\n * Default value is ````45````.\n *\n * @param {Number} value New FOV value.\n */\n set fitFOV(value) {\n this._fitFOV = value || 45;\n }\n\n /**\n * Gets how much of the perspective field-of-view, in degrees, that a target {@link Entity#aabb} should\n * fill the canvas when calling {@link CameraFlightAnimation#flyTo} or {@link CameraFlightAnimation#jumpTo}.\n *\n * Default value is ````45````.\n *\n * @returns {Number} Current FOV value.\n */\n get fitFOV() {\n return this._fitFOV;\n }\n\n /**\n * Sets if this CameraFlightAnimation to point the {@link Camera}\n * in the direction that it is travelling when flying to a target after calling {@link CameraFlightAnimation#flyTo}.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} value Set ````true```` to activate trailing behaviour.\n */\n set trail(value) {\n this._trail = !!value;\n }\n\n /**\n * Gets if this CameraFlightAnimation points the {@link Camera}\n * in the direction that it is travelling when flying to a target after calling {@link CameraFlightAnimation#flyTo}.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} True if trailing behaviour is active.\n */\n get trail() {\n return this._trail;\n }\n\n /**\n * @private\n */\n destroy() {\n this.stop();\n super.destroy();\n }\n}\n\n/**\n * @desc Animates the {@link Scene}'s's {@link Camera} along a {@link CameraPath}.\n *\n * ## Usage\n *\n * In the example below, we'll load a model using a {@link GLTFLoaderPlugin}, then animate a {@link Camera}\n * through the frames in a {@link CameraPath}.\n *\n * * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#camera_CameraPathAnimation)]\n *\n * ````Javascript\n * import {Viewer, GLTFLoaderPlugin, CameraPath, CameraPathAnimation} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [124.86756896972656, -93.50288391113281, 173.2632598876953];\n * viewer.camera.look = [102.14186096191406, -90.24193572998047, 173.4224395751953];\n * viewer.camera.up = [0.23516440391540527, 0.9719591736793518, -0.0016466031083837152];\n *\n * // Load model\n *\n * const gltfLoader = new GLTFLoaderPlugin(viewer);\n *\n * const model = gltfLoader.load({\n * id: \"myModel\",\n * src: \"./models/gltf/modern_office/scene.gltf\",\n * edges: true,\n * edgeThreshold: 20,\n * xrayed: false\n * });\n *\n * // Create a CameraPath\n *\n * var cameraPath = new CameraPath(viewer.scene, {\n * frames: [\n * {\n * t: 0,\n * eye: [124.86, -93.50, 173.26],\n * look: [102.14, -90.24, 173.42],\n * up: [0.23, 0.97, -0.00]\n * },\n * {\n * t: 1,\n * eye: [79.75, -85.98, 226.57],\n * look: [99.24, -84.11, 238.56],\n * up: [-0.14, 0.98, -0.09]\n * },\n * // Rest of the frames omitted for brevity\n * ]\n * });\n *\n * // Create a CameraPathAnimation to play our CameraPath\n *\n * var cameraPathAnimation = new CameraPathAnimation(viewer.scene, {\n * cameraPath: cameraPath,\n * playingRate: 0.2 // Playing 0.2 time units per second\n * });\n *\n * // Once model loaded, start playing after a couple of seconds delay\n *\n * model.on(\"loaded\", function () {\n * setTimeout(function () {\n * cameraPathAnimation.play(0); // Play from the beginning of the CameraPath\n * }, 2000);\n * });\n * ````\n */\nclass CameraPathAnimation extends Component {\n\n /**\n * Returns \"CameraPathAnimation\".\n *\n * @private\n * @returns {string} \"CameraPathAnimation\"\n */\n get type() {\n return \"CameraPathAnimation\"\n }\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this CameraPathAnimation as well.\n * @param {*} [cfg] Configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {CameraPath} [cfg.eyeCurve] A {@link CameraPath} that defines the path of a {@link Camera}.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._cameraFlightAnimation = new CameraFlightAnimation(this);\n this._t = 0;\n this.state = CameraPathAnimation.SCRUBBING;\n this._playingFromT = 0;\n this._playingToT = 0;\n this._playingRate = cfg.playingRate || 1.0;\n this._playingDir = 1.0;\n this._lastTime = null;\n\n this.cameraPath = cfg.cameraPath;\n\n this._tick = this.scene.on(\"tick\", this._updateT, this);\n }\n\n _updateT() {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n let numFrames;\n let t;\n const time = performance.now();\n const elapsedSecs = (this._lastTime) ? (time - this._lastTime) * 0.001 : 0;\n this._lastTime = time;\n if (elapsedSecs === 0) {\n return;\n }\n switch (this.state) {\n case CameraPathAnimation.SCRUBBING:\n return;\n case CameraPathAnimation.PLAYING:\n this._t += this._playingRate * elapsedSecs;\n numFrames = this._cameraPath.frames.length;\n if (numFrames === 0 || (this._playingDir < 0 && this._t <= 0) || (this._playingDir > 0 && this._t >= this._cameraPath.frames[numFrames - 1].t)) {\n this.state = CameraPathAnimation.SCRUBBING;\n this._t = this._cameraPath.frames[numFrames - 1].t;\n this.fire(\"stopped\");\n return;\n }\n cameraPath.loadFrame(this._t);\n break;\n case CameraPathAnimation.PLAYING_TO:\n t = this._t + (this._playingRate * elapsedSecs * this._playingDir);\n if ((this._playingDir < 0 && t <= this._playingToT) || (this._playingDir > 0 && t >= this._playingToT)) {\n t = this._playingToT;\n this.state = CameraPathAnimation.SCRUBBING;\n this.fire(\"stopped\");\n }\n this._t = t;\n cameraPath.loadFrame(this._t);\n break;\n }\n }\n\n /*\n * @private\n */\n _ease(t, b, c, d) {\n t /= d;\n return -c * t * (t - 2) + b;\n }\n\n /**\n * Sets the {@link CameraPath} animated by this CameraPathAnimation.\n *\n @param {CameraPath} value The new CameraPath.\n */\n set cameraPath(value) {\n this._cameraPath = value;\n }\n\n /**\n * Gets the {@link CameraPath} animated by this CameraPathAnimation.\n *\n @returns {CameraPath} The CameraPath.\n */\n get cameraPath() {\n return this._cameraPath;\n }\n\n /**\n * Sets the rate at which the CameraPathAnimation animates the {@link Camera} along the {@link CameraPath}.\n *\n * @param {Number} value The amount of progress per second.\n */\n set rate(value) {\n this._playingRate = value;\n }\n\n /**\n * Gets the rate at which the CameraPathAnimation animates the {@link Camera} along the {@link CameraPath}.\n *\n * @returns {*|number} The current playing rate.\n */\n get rate() {\n return this._playingRate;\n }\n\n /**\n * Begins animating the {@link Camera} along CameraPathAnimation's {@link CameraPath} from the beginning.\n */\n play() {\n if (!this._cameraPath) {\n return;\n }\n this._lastTime = null;\n this.state = CameraPathAnimation.PLAYING;\n }\n\n /**\n * Begins animating the {@link Camera} along CameraPathAnimation's {@link CameraPath} from the given time.\n *\n * @param {Number} t Time instant.\n */\n playToT(t) {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n this._playingFromT = this._t;\n this._playingToT = t;\n this._playingDir = (this._playingToT - this._playingFromT) < 0 ? -1 : 1;\n this._lastTime = null;\n this.state = CameraPathAnimation.PLAYING_TO;\n }\n\n /**\n * Animates the {@link Camera} along CameraPathAnimation's {@link CameraPath} to the given frame.\n *\n * @param {Number} frameIdx Index of the frame to play to.\n */\n playToFrame(frameIdx) {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n const frame = cameraPath.frames[frameIdx];\n if (!frame) {\n this.error(\"playToFrame - frame index out of range: \" + frameIdx);\n return;\n }\n this.playToT(frame.t);\n }\n\n /**\n * Flies the {@link Camera} directly to the given frame on the CameraPathAnimation's {@link CameraPath}.\n *\n * @param {Number} frameIdx Index of the frame to play to.\n * @param {Function} [ok] Callback to fire when playing is complete.\n */\n flyToFrame(frameIdx, ok) {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n const frame = cameraPath.frames[frameIdx];\n if (!frame) {\n this.error(\"flyToFrame - frame index out of range: \" + frameIdx);\n return;\n }\n this.state = CameraPathAnimation.SCRUBBING;\n this._cameraFlightAnimation.flyTo(frame, ok);\n }\n\n /**\n * Scrubs the {@link Camera} to the given time on the CameraPathAnimation's {@link CameraPath}.\n *\n * @param {Number} t Time instant.\n */\n scrubToT(t) {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n const camera = this.scene.camera;\n if (!camera) {\n return;\n }\n this._t = t;\n cameraPath.loadFrame(this._t);\n this.state = CameraPathAnimation.SCRUBBING;\n }\n\n /**\n * Scrubs the {@link Camera} to the given frame on the CameraPathAnimation's {@link CameraPath}.\n *\n * @param {Number} frameIdx Index of the frame to scrub to.\n */\n scrubToFrame(frameIdx) {\n const cameraPath = this._cameraPath;\n if (!cameraPath) {\n return;\n }\n const camera = this.scene.camera;\n if (!camera) {\n return;\n }\n const frame = cameraPath.frames[frameIdx];\n if (!frame) {\n this.error(\"playToFrame - frame index out of range: \" + frameIdx);\n return;\n }\n cameraPath.loadFrame(this._t);\n this.state = CameraPathAnimation.SCRUBBING;\n }\n\n /**\n * Stops playing this CameraPathAnimation.\n */\n stop() {\n this.state = CameraPathAnimation.SCRUBBING;\n this.fire(\"stopped\");\n }\n\n destroy() {\n super.destroy();\n this.scene.off(this._tick);\n }\n}\n\nCameraPathAnimation.STOPPED = 0;\nCameraPathAnimation.SCRUBBING = 1;\nCameraPathAnimation.PLAYING = 2;\nCameraPathAnimation.PLAYING_TO = 3;\n\n/**\n * @private\n */\nvar K3D = {};\n\nK3D.load = function(path, resp)\n{\n var request = new XMLHttpRequest();\n request.open(\"GET\", path, true);\n request.responseType = \"arraybuffer\";\n request.onload = function(e){resp(e.target.response);};\n request.send();\n};\n\nK3D.save = function(buff, path)\n{\n var dataURI = \"data:application/octet-stream;base64,\" + btoa(K3D.parse._buffToStr(buff));\n window.location.href = dataURI;\n};\n\nK3D.clone = function(o)\n{\n return JSON.parse(JSON.stringify(o));\n};\n\n\n\nK3D.bin = {};\n\nK3D.bin.f = new Float32Array(1);\nK3D.bin.fb = new Uint8Array(K3D.bin.f.buffer);\n\nK3D.bin.rf\t\t= function(buff, off) { var f = K3D.bin.f, fb = K3D.bin.fb; for(var i=0; i<4; i++) fb[i] = buff[off+i]; return f[0]; };\nK3D.bin.rsl\t\t= function(buff, off) { return buff[off] | buff[off+1]<<8; };\nK3D.bin.ril\t\t= function(buff, off) { return buff[off] | buff[off+1]<<8 | buff[off+2]<<16 | buff[off+3]<<24; };\nK3D.bin.rASCII0 = function(buff, off) { var s = \"\"; while(buff[off]!=0) s += String.fromCharCode(buff[off++]); return s; };\n\n\nK3D.bin.wf\t\t= function(buff, off, v) { var f=new Float32Array(buff.buffer, off, 1); f[0]=v; };\nK3D.bin.wsl\t\t= function(buff, off, v) { buff[off]=v; buff[off+1]=v>>8; };\nK3D.bin.wil\t\t= function(buff, off, v) { buff[off]=v; buff[off+1]=v>>8; buff[off+2]=v>>16; buff[off+3]>>24; };\nK3D.parse = {};\n\nK3D.parse._buffToStr = function(buff)\n{\n var a = new Uint8Array(buff);\n var s = \"\";\n for(var i=0; imaxx) maxx = vx;\n if(vymaxy) maxy = vy;\n if(vzmaxz) maxz = vz;\n }\n return {min:{x:minx, y:miny, z:minz}, max:{x:maxx, y:maxy, z:maxz}};\n};\n\n/**\n * @desc Loads {@link Geometry} from 3DS.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with {@link PhongMaterial}, {@link Texture} and a {@link ReadableGeometry} loaded from 3DS.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_loaders_3DS)]\n *\n * ````javascript\n * import {Viewer, Mesh, load3DSGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [40.04, 23.46, 79.06];\n * viewer.scene.camera.look = [-6.48, 13.92, -0.56];\n * viewer.scene.camera.up = [-0.04, 0.98, -0.08];\n *\n * load3DSGeometry(viewer.scene, {\n * src: \"models/3ds/lexus.3ds\",\n * compressGeometry: false\n *\n * }).then(function (geometryCfg) {\n *\n * // Success\n *\n * new Mesh(viewer.scene, {\n *\n * geometry: new ReadableGeometry(viewer.scene, geometryCfg),\n *\n * material: new PhongMaterial(viewer.scene, {\n *\n * emissive: [1, 1, 1],\n * emissiveMap: new Texture({ // .3DS has no normals so relies on emissive illumination\n * src: \"models/3ds/lexus.jpg\"\n * })\n * }),\n *\n * rotation: [-90, 0, 0] // +Z is up for this particular 3DS\n * });\n * }, function () {\n * // Error\n * });\n * ````\n *\n * @function load3DSGeometry\n * @param {Scene} scene Scene we're loading the geometry for.\n * @param {*} cfg Configs, also added to the result object.\n * @param {String} [cfg.src] Path to 3DS file.\n * @returns {Object} Configuration to pass into a {@link Geometry} constructor, containing geometry arrays loaded from the OBJ file.\n */\nfunction load3DSGeometry(scene, cfg = {}) {\n\n return new Promise(function (resolve, reject) {\n\n if (!cfg.src) {\n console.error(\"load3DSGeometry: Parameter expected: src\");\n reject();\n }\n\n var spinner = scene.canvas.spinner;\n spinner.processes++;\n\n utils.loadArraybuffer(cfg.src, function (data) {\n\n if (!data.byteLength) {\n console.error(\"load3DSGeometry: no data loaded\");\n spinner.processes--;\n reject();\n }\n\n var m = K3D.parse.from3DS(data);\t// done !\n\n var mesh = m.edit.objects[0].mesh;\n var positions = mesh.vertices;\n var uv = mesh.uvt;\n var indices = mesh.indices;\n\n spinner.processes--;\n\n resolve(utils.apply(cfg, {\n primitive: \"triangles\",\n positions: positions,\n normals: null,\n uv: uv,\n indices: indices\n }));\n },\n\n function (msg) {\n console.error(\"load3DSGeometry: \" + msg);\n spinner.processes--;\n reject();\n });\n });\n}\n\n/**\n * @desc Loads {@link Geometry} from OBJ.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with {@link MetallicMaterial} and {@link ReadableGeometry} loaded from OBJ.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_loaders_OBJ)]\n *\n * ````javascript\n * import {Viewer, Mesh, loadOBJGeometry, ReadableGeometry,\n * MetallicMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0.57, 1.37, 1.14];\n * viewer.scene.camera.look = [0.04, 0.58, 0.00];\n * viewer.scene.camera.up = [-0.22, 0.84, -0.48];\n *\n * loadOBJGeometry(viewer.scene, {\n *\n * src: \"models/obj/fireHydrant/FireHydrantMesh.obj\",\n * compressGeometry: false\n *\n * }).then(function (geometryCfg) {\n *\n * // Success\n *\n * new Mesh(viewer.scene, {\n *\n * geometry: new ReadableGeometry(viewer.scene, geometryCfg),\n *\n * material: new MetallicMaterial(viewer.scene, {\n *\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0,\n * \n * baseColorMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Base_Color.png\",\n * encoding: \"sRGB\"\n * }),\n * normalMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Normal_OpenGL.png\"\n * }),\n * roughnessMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Roughness.png\"\n * }),\n * metallicMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Metallic.png\"\n * }),\n * occlusionMap: new Texture(viewer.scene, {\n * src: \"models/obj/fireHydrant/fire_hydrant_Mixed_AO.png\"\n * }),\n * \n * specularF0: 0.7\n * })\n * });\n * }, function () {\n * // Error\n * });\n * ````\n *\n * @function loadOBJGeometry\n * @param {Scene} scene Scene we're loading the geometry for.\n * @param {*} [cfg] Configs, also added to the result object.\n * @param {String} [cfg.src] Path to OBJ file.\n * @returns {Object} Configuration to pass into a {@link Geometry} constructor, containing geometry arrays loaded from the OBJ file.\n */\nfunction loadOBJGeometry(scene, cfg = {}) {\n\n return new Promise(function (resolve, reject) {\n\n if (!cfg.src) {\n console.error(\"loadOBJGeometry: Parameter expected: src\");\n reject();\n }\n\n var spinner = scene.canvas.spinner;\n spinner.processes++;\n\n utils.loadArraybuffer(cfg.src, function (data) {\n\n if (!data.byteLength) {\n console.error(\"loadOBJGeometry: no data loaded\");\n spinner.processes--;\n reject();\n }\n\n var m = K3D.parse.fromOBJ(data);\t// done !\n\n // unwrap simply duplicates some values, so they can be indexed with indices [0,1,2,3 ... ]\n // In some rendering engines, you can have only one index value for vertices, UVs, normals ...,\n // so \"unwrapping\" is a simple solution.\n\n var positions = K3D.edit.unwrap(m.i_verts, m.c_verts, 3);\n var normals = K3D.edit.unwrap(m.i_norms, m.c_norms, 3);\n var uv = K3D.edit.unwrap(m.i_uvt, m.c_uvt, 2);\n var indices = new Int32Array(m.i_verts.length);\n\n for (var i = 0; i < m.i_verts.length; i++) {\n indices[i] = i;\n }\n\n spinner.processes--;\n\n resolve(utils.apply(cfg, {\n primitive: \"triangles\",\n positions: positions,\n normals: normals.length > 0 ? normals : null,\n autoNormals: normals.length === 0,\n uv: uv,\n indices: indices\n }));\n },\n\n function (msg) {\n console.error(\"loadOBJGeometry: \" + msg);\n spinner.processes--;\n reject();\n });\n });\n}\n\n/**\n * @desc Creates a box-shaped lines {@link Geometry}.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with a box-shaped {@link ReadableGeometry} that has lines primitives.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildBoxLinesGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildBoxLinesGeometry, ReadableGeometry, PhongMaterial} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildBoxLinesGeometry({\n * center: [0,0,0],\n * xSize: 1, // Half-size on each axis\n * ySize: 1,\n * zSize: 1\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * emissive: [0,1,0]\n * })\n * });\n * ````\n *\n * @function buildBoxLinesGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {Number} [cfg.xSize=1.0] Half-size on the X-axis.\n * @param {Number} [cfg.ySize=1.0] Half-size on the Y-axis.\n * @param {Number} [cfg.zSize=1.0] Half-size on the Z-axis.\n * @returns {Object} Configuration for a {@link Geometry} subtype.\n */\nfunction buildBoxLinesGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let ySize = cfg.ySize || 1;\n if (ySize < 0) {\n console.error(\"negative ySize not allowed - will invert\");\n ySize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const xmin = -xSize + centerX;\n const ymin = -ySize + centerY;\n const zmin = -zSize + centerZ;\n const xmax = xSize + centerX;\n const ymax = ySize + centerY;\n const zmax = zSize + centerZ;\n\n return utils.apply(cfg, {\n primitive: \"lines\",\n positions: [\n xmin, ymin, zmin,\n xmin, ymin, zmax,\n xmin, ymax, zmin,\n xmin, ymax, zmax,\n xmax, ymin, zmin,\n xmax, ymin, zmax,\n xmax, ymax, zmin,\n xmax, ymax, zmax\n ],\n indices: [\n 0, 1,\n 1, 3,\n 3, 2,\n 2, 0,\n 4, 5,\n 5, 7,\n 7, 6,\n 6, 4,\n 0, 4,\n 1, 5,\n 2, 6,\n 3, 7\n ]\n });\n}\n\n/**\n * @desc Creates a grid-shaped {@link Geometry}.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a GridGeometry and a {@link PhongMaterial}:\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildGridGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildGridGeometry, VBOGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new VBOGeometry(viewer.scene, buildGridGeometry({\n * size: 1000,\n * divisions: 500\n * })),\n * material: new PhongMaterial(viewer.scene, {\n * color: [0.0, 0.0, 0.0],\n * emissive: [0.4, 0.4, 0.4]\n * }),\n * position: [0, -1.6, 0]\n * });\n * ````\n *\n * @function buildGridGeometry\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for the {@link Geometry}, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number} [cfg.size=1] Dimension on the X and Z-axis.\n * @param {Number} [cfg.divisions=1] Number of divisions on X and Z axis..\n * @returns {Object} Configuration for a {@link Geometry} subtype.\n */\nfunction buildGridGeometry(cfg = {}) {\n\n let size = cfg.size || 1;\n if (size < 0) {\n console.error(\"negative size not allowed - will invert\");\n size *= -1;\n }\n\n let divisions = cfg.divisions || 1;\n if (divisions < 0) {\n console.error(\"negative divisions not allowed - will invert\");\n divisions *= -1;\n }\n if (divisions < 1) {\n divisions = 1;\n }\n\n size = size || 10;\n divisions = divisions || 10;\n\n const step = size / divisions;\n const halfSize = size / 2;\n\n const positions = [];\n const indices = [];\n let l = 0;\n\n for (let i = 0, k = -halfSize; i <= divisions; i++, k += step) {\n\n positions.push(-halfSize);\n positions.push(0);\n positions.push(k);\n\n positions.push(halfSize);\n positions.push(0);\n positions.push(k);\n\n positions.push(k);\n positions.push(0);\n positions.push(-halfSize);\n\n positions.push(k);\n positions.push(0);\n positions.push(halfSize);\n\n indices.push(l++);\n indices.push(l++);\n indices.push(l++);\n indices.push(l++);\n }\n\n return utils.apply(cfg, {\n primitive: \"lines\",\n positions: positions,\n indices: indices\n });\n}\n\n/**\n * @desc Creates a plane-shaped {@link Geometry}.\n *\n * ## Usage\n *\n * Creating a {@link Mesh} with a PlaneGeometry and a {@link PhongMaterial} with diffuse {@link Texture}:\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#geometry_builders_buildPlaneGeometry)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildPlaneGeometry, ReadableGeometry, PhongMaterial, Texture} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.camera.eye = [0, 0, 5];\n * viewer.camera.look = [0, 0, 0];\n * viewer.camera.up = [0, 1, 0];\n\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildPlaneGeometry({\n * center: [0,0,0],\n * xSize: 2,\n * zSize: 2,\n * xSegments: 10,\n * zSegments: 10\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n * ````\n *\n * @function buildPlaneGeometry\n * @param {*} [cfg] Configs\n * @param {Number[]} [cfg.center] 3D point indicating the center position.\n * @param {String} [cfg.id] Optional ID for the {@link Geometry}, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number} [cfg.xSize=1] Dimension on the X-axis.\n * @param {Number} [cfg.zSize=1] Dimension on the Z-axis.\n * @param {Number} [cfg.xSegments=1] Number of segments on the X-axis.\n * @param {Number} [cfg.zSegments=1] Number of segments on the Z-axis.\n * @returns {Object} Configuration for a {@link Geometry} subtype.\n */\nfunction buildPlaneGeometry(cfg = {}) {\n\n let xSize = cfg.xSize || 1;\n if (xSize < 0) {\n console.error(\"negative xSize not allowed - will invert\");\n xSize *= -1;\n }\n\n let zSize = cfg.zSize || 1;\n if (zSize < 0) {\n console.error(\"negative zSize not allowed - will invert\");\n zSize *= -1;\n }\n\n let xSegments = cfg.xSegments || 1;\n if (xSegments < 0) {\n console.error(\"negative xSegments not allowed - will invert\");\n xSegments *= -1;\n }\n if (xSegments < 1) {\n xSegments = 1;\n }\n\n let zSegments = cfg.xSegments || 1;\n if (zSegments < 0) {\n console.error(\"negative zSegments not allowed - will invert\");\n zSegments *= -1;\n }\n if (zSegments < 1) {\n zSegments = 1;\n }\n\n const center = cfg.center;\n const centerX = center ? center[0] : 0;\n const centerY = center ? center[1] : 0;\n const centerZ = center ? center[2] : 0;\n\n const halfWidth = xSize / 2;\n const halfHeight = zSize / 2;\n\n const planeX = Math.floor(xSegments) || 1;\n const planeZ = Math.floor(zSegments) || 1;\n\n const planeX1 = planeX + 1;\n const planeZ1 = planeZ + 1;\n\n const segmentWidth = xSize / planeX;\n const segmentHeight = zSize / planeZ;\n\n const positions = new Float32Array(planeX1 * planeZ1 * 3);\n const normals = new Float32Array(planeX1 * planeZ1 * 3);\n const uvs = new Float32Array(planeX1 * planeZ1 * 2);\n\n let offset = 0;\n let offset2 = 0;\n\n let iz;\n let ix;\n let x;\n let a;\n let b;\n let c;\n let d;\n\n for (iz = 0; iz < planeZ1; iz++) {\n\n const z = iz * segmentHeight - halfHeight;\n\n for (ix = 0; ix < planeX1; ix++) {\n\n x = ix * segmentWidth - halfWidth;\n\n positions[offset] = x + centerX;\n positions[offset + 1] = centerY;\n positions[offset + 2] = -z + centerZ;\n\n normals[offset + 2] = -1;\n\n uvs[offset2] = (ix) / planeX;\n uvs[offset2 + 1] = ((planeZ - iz) / planeZ);\n\n offset += 3;\n offset2 += 2;\n }\n }\n\n offset = 0;\n\n const indices = new ((positions.length / 3) > 65535 ? Uint32Array : Uint16Array)(planeX * planeZ * 6);\n\n for (iz = 0; iz < planeZ; iz++) {\n\n for (ix = 0; ix < planeX; ix++) {\n\n a = ix + planeX1 * iz;\n b = ix + planeX1 * (iz + 1);\n c = (ix + 1) + planeX1 * (iz + 1);\n d = (ix + 1) + planeX1 * iz;\n\n indices[offset] = d;\n indices[offset + 1] = b;\n indices[offset + 2] = a;\n\n indices[offset + 3] = d;\n indices[offset + 4] = c;\n indices[offset + 5] = b;\n\n offset += 6;\n }\n }\n\n return utils.apply(cfg, {\n positions: positions,\n normals: normals,\n uv: uvs,\n indices: indices\n });\n}\n\nconst tempVec3$1 = math.vec3();\nconst tempVec3b$3 = math.vec3();\nmath.vec3();\nconst zeroVec = math.vec3([0, -1, 0]);\nconst tempQuat = math.vec4([0, 0, 0, 1]);\n\n/**\n * @desc A plane-shaped 3D object containing a bitmap image.\n *\n * Use ````ImagePlane```` to embed bitmap images in your scenes.\n *\n * As shown in the examples below, ````ImagePlane```` is useful for creating ground planes from satellite maps and embedding 2D plan\n * view images in cross-section slicing planes.\n *\n * # Example 1: Create a ground plane from a satellite image\n *\n * In our first example, we'll load the Schependomlaan model, then use\n * an ````ImagePlane```` to create a ground plane, which will contain\n * a satellite image sourced from Google Maps.\n *\n * \n *\n * [](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_groundPlane)\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_groundPlane)]\n *\n * ````javascript\n * import {Viewer, ImagePlane, XKTLoaderPlugin} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-8.31, 42.21, 54.30];\n * viewer.camera.look = [-0.86, 15.40, 14.90];\n * viewer.camera.up = [0.10, 0.83, -0.54];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * xktLoader.load({ // Load IFC model\n * id: \"myModel\",\n * src: \"./models/xkt/Schependomlaan.xkt\",\n * edges: true,\n *\n * rotation: [0, 22, 0], // Rotate, position and scale the model to align it correctly with the ImagePlane\n * position: [-8, 0, 15],\n * scale: [1.1, 1.1, 1.1]\n * });\n *\n * new ImagePlane(viewer.scene, {\n * src: \"./images/schependomlaanSatMap.png\", // Google satellite image; accepted file types are PNG and JPEG\n * visible: true, // Show the ImagePlane\n * gridVisible: true, // Show the grid - grid is only visible when ImagePlane is also visible\n * size: 190, // Size of ImagePlane's longest edge\n * position: [0, -1, 0], // World-space position of ImagePlane's center\n * rotation: [0, 0, 0], // Euler angles for X, Y and Z\n * opacity: 1.0, // Fully opaque\n * collidable: false, // ImagePlane does not contribute to Scene boundary\n * clippable: true, // ImagePlane can be clipped by SectionPlanes\n * pickable: true // Allow the ground plane to be picked\n * });\n * ````\n *
    \n *\n * # Example 2: Embed an image in a cross-section plane\n *\n * In our second example, we'll load the Schependomlaan model again, then slice it in half with\n * a {@link SectionPlanesPlugin}, then use an ````ImagePlane```` to embed a 2D plan view image in the slicing plane.\n *\n * \n *\n * [](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_imageInSectionPlane)\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#ImagePlane_imageInSectionPlane)]\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, SectionPlanesPlugin, ImagePlane} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.camera.eye = [-9.11, 20.01, 5.13];\n * viewer.camera.look = [9.07, 0.77, -9.78];\n * viewer.camera.up = [0.47, 0.76, -0.38];\n *\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const sectionPlanes = new SectionPlanesPlugin(viewer, {\n * overviewVisible: false\n * });\n *\n * model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/schependomlaan/schependomlaan.xkt\",\n * metaModelSrc: \"./metaModels/schependomlaan/metaModel.json\",\n * edges: true,\n * });\n *\n * const sectionPlane = sectionPlanes.createSectionPlane({\n * id: \"mySectionPlane\",\n * pos: [10.95, 1.95, -10.35],\n * dir: [0.0, -1.0, 0.0]\n * });\n *\n * const imagePlane = new ImagePlane(viewer.scene, {\n * src: \"./images/schependomlaanPlanView.png\", // Plan view image; accepted file types are PNG and JPEG\n * visible: true,\n * gridVisible: true,\n * size: 23.95,\n * position: sectionPlane.pos,\n * dir: sectionPlane.dir,\n * collidable: false,\n * opacity: 0.75,\n * clippable: false, // Don't allow ImagePlane to be clipped by the SectionPlane\n * pickable: false // Don't allow ImagePlane to be picked\n * });\n * ````\n */\nclass ImagePlane extends Component {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this ````ImagePlane```` as well.\n * @param {*} [cfg] ````ImagePlane```` configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Boolean} [cfg.visible=true] Indicates whether or not this ````ImagePlane```` is visible.\n * @param {Boolean} [cfg.gridVisible=true] Indicates whether or not the grid is visible. Grid is only visible when ````ImagePlane```` is also visible.\n * @param {Number[]} [cfg.position=[0,0,0]] World-space position of the ````ImagePlane````.\n * @param {Number[]} [cfg.size=1] World-space size of the longest edge of the ````ImagePlane````. Note that\n * ````ImagePlane```` sets its aspect ratio to match its image. If we set a value of ````1000````, and the image\n * has size ````400x300````, then the ````ImagePlane```` will then have size ````1000 x 750````.\n * @param {Number[]} [cfg.rotation=[0,0,0]] Local rotation of the ````ImagePlane````, as Euler angles given in degrees, for each of the X, Y and Z axis.\n * @param {Number[]} [cfg.matrix=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]] Modelling transform matrix for the ````ImagePlane````. Overrides the ````position````, ````size```, ````rotation```` and ````dir```` parameters.\n * @param {Boolean} [cfg.collidable=true] Indicates if the ````ImagePlane```` is initially included in boundary calculations.\n * @param {Boolean} [cfg.clippable=true] Indicates if the ````ImagePlane```` is initially clippable.\n * @param {Boolean} [cfg.pickable=true] Indicates if the ````ImagePlane```` is initially pickable.\n * @param {Number} [cfg.opacity=1.0] ````ImagePlane````'s initial opacity factor, multiplies by the rendered fragment alpha.\n * @param {String} [cfg.src] URL of image. Accepted file types are PNG and JPEG.\n * @param {HTMLImageElement} [cfg.image] An ````HTMLImageElement```` to source the image from. Overrides ````src````.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._src = null;\n this._image = null;\n this._pos = math.vec3();\n this._rtcCenter = math.vec3();\n this._rtcPos = math.vec3();\n this._dir = math.vec3();\n this._size = 1.0;\n this._imageSize = math.vec2();\n\n this._texture = new Texture(this);\n\n this._plane = new Mesh(this, {\n\n geometry: new ReadableGeometry(this, buildPlaneGeometry({\n center: [0, 0, 0],\n xSize: 1,\n zSize: 1,\n xSegments: 10,\n zSegments: 10\n })),\n\n material: new PhongMaterial(this, {\n diffuse: [0, 0, 0],\n ambient: [0, 0, 0],\n specular: [0, 0, 0],\n diffuseMap: this._texture,\n emissiveMap: this._texture,\n backfaces: true\n }),\n clippable: cfg.clippable\n });\n\n this._grid = new Mesh(this, {\n geometry: new ReadableGeometry(this, buildGridGeometry({\n size: 1,\n divisions: 10\n })),\n material: new PhongMaterial(this, {\n diffuse: [0.0, 0.0, 0.0],\n ambient: [0.0, 0.0, 0.0],\n emissive: [0.2, 0.8, 0.2]\n }),\n position: [0, 0.001, 0.0],\n clippable: cfg.clippable\n });\n\n this._node = new Node(this, {\n rotation: [0, 0, 0],\n position: [0, 0, 0],\n scale: [1, 1, 1],\n clippable: false,\n children: [\n this._plane,\n this._grid\n ]\n });\n\n this._gridVisible = false;\n\n this.visible = true;\n this.gridVisible = cfg.gridVisible;\n this.position = cfg.position;\n this.rotation = cfg.rotation;\n this.dir = cfg.dir;\n this.size = cfg.size;\n this.collidable = cfg.collidable;\n this.clippable = cfg.clippable;\n this.pickable = cfg.pickable;\n this.opacity = cfg.opacity;\n\n if (cfg.image) {\n this.image = cfg.image;\n } else {\n this.src = cfg.src;\n }\n }\n\n /**\n * Sets if this ````ImagePlane```` is visible or not.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} visible Set ````true```` to make this ````ImagePlane```` visible.\n */\n set visible(visible) {\n this._plane.visible = visible;\n this._grid.visible = (this._gridVisible && visible);\n }\n\n /**\n * Gets if this ````ImagePlane```` is visible or not.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} Returns ````true```` if visible.\n */\n get visible() {\n return this._plane.visible;\n }\n\n /**\n * Sets if this ````ImagePlane````'s grid is visible or not.\n *\n * Default value is ````false````.\n *\n * Grid is only visible when ````ImagePlane```` is also visible.\n *\n * @param {Boolean} visible Set ````true```` to make this ````ImagePlane````'s grid visible.\n */\n set gridVisible(visible) {\n visible = (visible !== false);\n this._gridVisible = visible;\n this._grid.visible = (this._gridVisible && this.visible);\n }\n\n /**\n * Gets if this ````ImagePlane````'s grid is visible or not.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} Returns ````true```` if visible.\n */\n get gridVisible() {\n return this._gridVisible;\n }\n\n /**\n * Sets an ````HTMLImageElement```` to source the image from.\n *\n * Sets {@link Texture#src} null.\n *\n * @type {HTMLImageElement}\n */\n set image(image) {\n this._image = image;\n if (this._image) {\n this._imageSize[0] = image.width;\n this._imageSize[1] = image.height;\n this._updatePlaneSizeFromImage();\n this._src = null;\n this._texture.image = this._image;\n }\n }\n\n /**\n * Gets the ````HTMLImageElement```` the ````ImagePlane````'s image is sourced from, if set.\n *\n * Returns null if not set.\n *\n * @type {HTMLImageElement}\n */\n get image() {\n return this._image;\n }\n\n /**\n * Sets an image file path that the ````ImagePlane````'s image is sourced from.\n *\n * Accepted file types are PNG and JPEG.\n *\n * Sets {@link Texture#image} null.\n *\n * @type {String}\n */\n set src(src) {\n this._src = src;\n if (this._src) {\n this._image = null;\n const image = new Image();\n image.onload = () => {\n this._texture.image = image;\n this._imageSize[0] = image.width;\n this._imageSize[1] = image.height;\n this._updatePlaneSizeFromImage();\n };\n image.src = this._src;\n }\n }\n\n /**\n * Gets the image file path that the ````ImagePlane````'s image is sourced from, if set.\n *\n * Returns null if not set.\n *\n * @type {String}\n */\n get src() {\n return this._src;\n }\n\n /**\n * Sets the World-space position of this ````ImagePlane````.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * @param {Number[]} value New position.\n */\n set position(value) {\n this._pos.set(value || [0, 0, 0]);\n worldToRTCPos(this._pos, this._rtcCenter, this._rtcPos);\n this._node.rtcCenter = this._rtcCenter;\n this._node.position = this._rtcPos;\n }\n\n /**\n * Gets the World-space position of this ````ImagePlane````.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * @returns {Number[]} Current position.\n */\n get position() {\n return this._pos;\n }\n\n /**\n * Sets the direction of this ````ImagePlane```` using Euler angles.\n *\n * Default value is ````[0, 0, 0]````.\n *\n * @param {Number[]} value Euler angles for ````X````, ````Y```` and ````Z```` axis rotations.\n */\n set rotation(value) {\n this._node.rotation = value;\n }\n\n /**\n * Gets the direction of this ````ImagePlane```` as Euler angles.\n *\n * @returns {Number[]} Euler angles for ````X````, ````Y```` and ````Z```` axis rotations.\n */\n get rotation() {\n return this._node.rotation;\n }\n\n /**\n * Sets the World-space size of the longest edge of the ````ImagePlane````.\n *\n * Note that ````ImagePlane```` sets its aspect ratio to match its image. If we set a value of ````1000````, and\n * the image has size ````400x300````, then the ````ImagePlane```` will then have size ````1000 x 750````.\n *\n * Default value is ````1.0````.\n *\n * @param {Number} size New World-space size of the ````ImagePlane````.\n */\n set size(size) {\n this._size = (size === undefined || size === null) ? 1.0 : size;\n if (this._image) {\n this._updatePlaneSizeFromImage();\n }\n }\n\n /**\n * Gets the World-space size of the longest edge of the ````ImagePlane````.\n *\n * Returns {Number} World-space size of the ````ImagePlane````.\n */\n get size() {\n return this._size;\n }\n\n /**\n * Sets the direction of this ````ImagePlane```` as a direction vector.\n *\n * Default value is ````[0, 0, -1]````.\n *\n * @param {Number[]} dir New direction vector.\n */\n set dir(dir) {\n\n this._dir.set(dir || [0, 0, -1]);\n\n if (dir) {\n\n const origin = this.scene.center;\n const negDir = [-this._dir[0], -this._dir[1], -this._dir[2]];\n\n math.subVec3(origin, this.position, tempVec3$1);\n\n const dist = -math.dotVec3(negDir, tempVec3$1);\n\n math.normalizeVec3(negDir);\n math.mulVec3Scalar(negDir, dist, tempVec3b$3);\n math.vec3PairToQuaternion(zeroVec, dir, tempQuat);\n\n this._node.quaternion = tempQuat;\n }\n }\n\n /**\n * Gets the direction of this ````ImagePlane```` as a direction vector.\n *\n * @returns {Number[]} value Current direction.\n */\n get dir() {\n return this._dir;\n }\n\n /**\n * Sets if this ````ImagePlane```` is included in boundary calculations.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set collidable(value) {\n this._node.collidable = (value !== false);\n }\n\n /**\n * Gets if this ````ImagePlane```` is included in boundary calculations.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._node.collidable;\n }\n\n /**\n * Sets if this ````ImagePlane```` is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set clippable(value) {\n this._node.clippable = (value !== false);\n }\n\n /**\n * Gets if this ````ImagePlane```` is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._node.clippable;\n }\n\n /**\n * Sets if this ````ImagePlane```` is pickable.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set pickable(value) {\n this._node.pickable = (value !== false);\n }\n\n /**\n * Gets if this ````ImagePlane```` is pickable.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get pickable() {\n return this._node.pickable;\n }\n\n /**\n * Sets the opacity factor for this ````ImagePlane````.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n this._node.opacity = opacity;\n }\n\n /**\n * Gets this ````ImagePlane````'s opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n return this._node.opacity;\n }\n\n /**\n * @destroy\n */\n destroy() {\n super.destroy();\n }\n\n _updatePlaneSizeFromImage() {\n const size = this._size;\n const width = this._imageSize[0];\n const height = this._imageSize[1];\n const aspect = height / width;\n if (width > height) {\n this._node.scale = [size, 1.0, size * aspect];\n } else {\n this._node.scale = [size * aspect, 1.0, size];\n }\n }\n}\n\n/**\n * A positional light source that originates from a single point and spreads outward in all directions, with optional attenuation over distance.\n *\n * * Has a position in {@link PointLight#pos}, but no direction.\n * * Defined in either *World* or *View* coordinate space. When in World-space, {@link PointLight#pos} is relative to\n * the World coordinate system, and will appear to move as the {@link Camera} moves. When in View-space,\n * {@link PointLight#pos} is relative to the View coordinate system, and will behave as if fixed to the viewer's head.\n * * Has {@link PointLight#constantAttenuation}, {@link PointLight#linearAttenuation} and {@link PointLight#quadraticAttenuation}\n * factors, which indicate how intensity attenuates over distance.\n * * {@link AmbientLight}s, {@link PointLight}s and {@link PointLight}s are registered by their {@link Component#id} on {@link Scene#lights}.\n *\n * ## Usage\n *\n * In the example below we'll replace the {@link Scene}'s default light sources with three World-space PointLights.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#lights_PointLight_world)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry, buildPlaneGeometry,\n * ReadableGeometry, PhongMaterial, Texture, PointLight} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * // Replace the Scene's default lights with three custom world-space PointLights\n *\n * viewer.scene.clearLights();\n *\n * new PointLight(viewer.scene,{\n * id: \"keyLight\",\n * pos: [-80, 60, 80],\n * color: [1.0, 0.3, 0.3],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * new PointLight(viewer.scene,{\n * id: \"fillLight\",\n * pos: [80, 40, 40],\n * color: [0.3, 1.0, 0.3],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * new PointLight(viewer.scene,{\n * id: \"rimLight\",\n * pos: [-20, 80, -80],\n * color: [0.6, 0.6, 0.6],\n * intensity: 1.0,\n * space: \"world\"\n * });\n *\n * // Create a sphere and ground plane\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 1.3\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuse: [0.7, 0.7, 0.7],\n * specular: [1.0, 1.0, 1.0],\n * emissive: [0, 0, 0],\n * alpha: 1.0,\n * ambient: [1, 1, 0],\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * })\n * })\n * });\n *\n * new Mesh(viewer.scene, {\n * geometry: buildPlaneGeometry(ReadableGeometry, viewer.scene, {\n * xSize: 30,\n * zSize: 30\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * backfaces: true\n * }),\n * position: [0, -2.1, 0]\n * });\n * ````\n */\nclass PointLight extends Light {\n\n /**\n @private\n */\n get type() {\n return \"PointLight\";\n }\n\n /**\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this PointLight as well.\n * @param {*} [cfg] The PointLight configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.pos=[ 1.0, 1.0, 1.0 ]] Position, in either World or View space, depending on the value of the **space** parameter.\n * @param {Number[]} [cfg.color=[0.7, 0.7, 0.8 ]] Color of this PointLight.\n * @param {Number} [cfg.intensity=1.0] Intensity of this PointLight, as a factor in range ````[0..1]````.\n * @param {Number} [cfg.constantAttenuation=0] Constant attenuation factor.\n * @param {Number} [cfg.linearAttenuation=0] Linear attenuation factor.\n * @param {Number} [cfg.quadraticAttenuation=0]Quadratic attenuation factor.\n * @param {String} [cfg.space=\"view\"]The coordinate system this PointLight is defined in - \"view\" or \"world\".\n * @param {Boolean} [cfg.castsShadow=false] Flag which indicates if this PointLight casts a castsShadow.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n const self = this;\n\n this._shadowRenderBuf = null;\n this._shadowViewMatrix = null;\n this._shadowProjMatrix = null;\n this._shadowViewMatrixDirty = true;\n this._shadowProjMatrixDirty = true;\n\n const camera = this.scene.camera;\n const canvas = this.scene.canvas;\n\n this._onCameraViewMatrix = camera.on(\"viewMatrix\", () => {\n this._shadowViewMatrixDirty = true;\n });\n\n this._onCameraProjMatrix = camera.on(\"projMatrix\", () => {\n this._shadowProjMatrixDirty = true;\n });\n\n this._onCanvasBoundary = canvas.on(\"boundary\", () => {\n this._shadowProjMatrixDirty = true;\n });\n\n this._state = new RenderState({\n\n type: \"point\",\n pos: math.vec3([1.0, 1.0, 1.0]),\n color: math.vec3([0.7, 0.7, 0.8]),\n intensity: 1.0, attenuation: [0.0, 0.0, 0.0],\n space: cfg.space || \"view\",\n castsShadow: false,\n\n getShadowViewMatrix: () => {\n if (self._shadowViewMatrixDirty) {\n if (!self._shadowViewMatrix) {\n self._shadowViewMatrix = math.identityMat4();\n }\n const eye = self._state.pos;\n const look = camera.look;\n const up = camera.up;\n math.lookAtMat4v(eye, look, up, self._shadowViewMatrix);\n self._shadowViewMatrixDirty = false;\n }\n return self._shadowViewMatrix;\n },\n\n getShadowProjMatrix: () => {\n if (self._shadowProjMatrixDirty) { // TODO: Set when canvas resizes\n if (!self._shadowProjMatrix) {\n self._shadowProjMatrix = math.identityMat4();\n }\n const canvas = self.scene.canvas.canvas;\n math.perspectiveMat4(70 * (Math.PI / 180.0), canvas.clientWidth / canvas.clientHeight, 0.1, 500.0, self._shadowProjMatrix);\n self._shadowProjMatrixDirty = false;\n }\n return self._shadowProjMatrix;\n },\n\n getShadowRenderBuf: () => {\n if (!self._shadowRenderBuf) {\n self._shadowRenderBuf = new RenderBuffer(self.scene.canvas.canvas, self.scene.canvas.gl, {size: [1024, 1024]}); // Super old mobile devices have a limit of 1024x1024 textures\n }\n return self._shadowRenderBuf;\n }\n });\n\n this.pos = cfg.pos;\n this.color = cfg.color;\n this.intensity = cfg.intensity;\n this.constantAttenuation = cfg.constantAttenuation;\n this.linearAttenuation = cfg.linearAttenuation;\n this.quadraticAttenuation = cfg.quadraticAttenuation;\n this.castsShadow = cfg.castsShadow;\n\n this.scene._lightCreated(this);\n }\n\n /**\n * Sets the position of this PointLight.\n *\n * This will be either World- or View-space, depending on the value of {@link PointLight#space}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @param {Number[]} pos The position.\n */\n set pos(pos) {\n this._state.pos.set(pos || [1.0, 1.0, 1.0]);\n this._shadowViewMatrixDirty = true;\n this.glRedraw();\n }\n\n /**\n * Gets the position of this PointLight.\n *\n * This will be either World- or View-space, depending on the value of {@link PointLight#space}.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @returns {Number[]} The position.\n */\n get pos() {\n return this._state.pos;\n }\n\n /**\n * Sets the RGB color of this PointLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @param {Number[]} color The PointLight's RGB color.\n */\n set color(color) {\n this._state.color.set(color || [0.7, 0.7, 0.8]);\n this.glRedraw();\n }\n\n /**\n * Gets the RGB color of this PointLight.\n *\n * Default value is ````[0.7, 0.7, 0.8]````.\n *\n * @returns {Number[]} The PointLight's RGB color.\n */\n get color() {\n return this._state.color;\n }\n\n /**\n * Sets the intensity of this PointLight.\n *\n * Default intensity is ````1.0```` for maximum intensity.\n *\n * @param {Number} intensity The PointLight's intensity\n */\n set intensity(intensity) {\n intensity = intensity !== undefined ? intensity : 1.0;\n this._state.intensity = intensity;\n this.glRedraw();\n }\n\n /**\n * Gets the intensity of this PointLight.\n *\n * Default value is ````1.0```` for maximum intensity.\n *\n * @returns {Number} The PointLight's intensity.\n */\n get intensity() {\n return this._state.intensity;\n }\n\n /**\n * Sets the constant attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The constant attenuation factor.\n */\n set constantAttenuation(value) {\n this._state.attenuation[0] = value || 0.0;\n this.glRedraw();\n }\n\n /**\n * Gets the constant attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The constant attenuation factor.\n */\n get constantAttenuation() {\n return this._state.attenuation[0];\n }\n\n /**\n * Sets the linear attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The linear attenuation factor.\n */\n set linearAttenuation(value) {\n this._state.attenuation[1] = value || 0.0;\n this.glRedraw();\n }\n\n /**\n * Gets the linear attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The linear attenuation factor.\n */\n get linearAttenuation() {\n return this._state.attenuation[1];\n }\n\n /**\n * Sets the quadratic attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The quadratic attenuation factor.\n */\n set quadraticAttenuation(value) {\n this._state.attenuation[2] = value || 0.0;\n this.glRedraw();\n }\n\n /**\n * Gets the quadratic attenuation factor for this PointLight.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The quadratic attenuation factor.\n */\n get quadraticAttenuation() {\n return this._state.attenuation[2];\n }\n\n /**\n * Sets if this PointLight casts a shadow.\n *\n * Default value is ````false````.\n *\n * @param {Boolean} castsShadow Set ````true```` to cast shadows.\n */\n set castsShadow(castsShadow) {\n castsShadow = !!castsShadow;\n if (this._state.castsShadow === castsShadow) {\n return;\n }\n this._state.castsShadow = castsShadow;\n this._shadowViewMatrixDirty = true;\n this.glRedraw();\n }\n\n /**\n * Gets if this PointLight casts a shadow.\n *\n * Default value is ````false````.\n *\n * @returns {Boolean} ````true```` if this PointLight casts shadows.\n */\n get castsShadow() {\n return this._state.castsShadow;\n }\n\n /**\n * Destroys this PointLight.\n */\n destroy() {\n\n const camera = this.scene.camera;\n const canvas = this.scene.canvas;\n camera.off(this._onCameraViewMatrix);\n camera.off(this._onCameraProjMatrix);\n canvas.off(this._onCanvasBoundary);\n\n super.destroy();\n\n this._state.destroy();\n if (this._shadowRenderBuf) {\n this._shadowRenderBuf.destroy();\n }\n this.scene._lightDestroyed(this);\n this.glRedraw();\n }\n}\n\nfunction ensureImageSizePowerOfTwo(image) {\n if (!isPowerOfTwo(image.width) || !isPowerOfTwo(image.height)) {\n const canvas = document.createElement(\"canvas\");\n canvas.width = nextHighestPowerOfTwo(image.width);\n canvas.height = nextHighestPowerOfTwo(image.height);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(image,\n 0, 0, image.width, image.height,\n 0, 0, canvas.width, canvas.height);\n image = canvas;\n }\n return image;\n}\n\nfunction isPowerOfTwo(x) {\n return (x & (x - 1)) === 0;\n}\n\nfunction nextHighestPowerOfTwo(x) {\n --x;\n for (let i = 1; i < 32; i <<= 1) {\n x = x | x >> i;\n }\n return x + 1;\n}\n\n/**\n * @desc A cube texture map.\n */\nclass CubeTexture extends Component {\n\n /**\n @private\n */\n get type() {\n return \"CubeTexture\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for this CubeTexture, unique among all components in the parent scene, generated automatically when omitted.\n * @param {String[]} [cfg.src=null] Paths to six image files to load into this CubeTexture.\n * @param {Boolean} [cfg.flipY=false] Flips this CubeTexture's source data along its vertical axis when true.\n * @param {String} [cfg.encoding=\"linear\"] Encoding format. See the {@link CubeTexture/encoding} property for more info.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n const gl = this.scene.canvas.gl;\n\n this._state = new RenderState({\n texture: new Texture2D(gl, gl.TEXTURE_CUBE_MAP),\n flipY: this._checkFlipY(cfg.minFilter),\n encoding: this._checkEncoding(cfg.encoding),\n minFilter: \"linearMipmapLinear\",\n magFilter: \"linear\",\n wrapS: \"clampToEdge\",\n wrapT: \"clampToEdge\",\n mipmaps: true\n });\n\n this._src = cfg.src;\n this._images = [];\n\n this._loadSrc(cfg.src);\n\n stats.memory.textures++;\n }\n\n _checkFlipY(value) {\n return !!value;\n }\n\n _checkEncoding(value) {\n value = value || \"linear\";\n if (value !== \"linear\" && value !== \"sRGB\" && value !== \"gamma\") {\n this.error(\"Unsupported value for 'encoding': '\" + value + \"' - supported values are 'linear', 'sRGB', 'gamma'. Defaulting to 'linear'.\");\n value = \"linear\";\n }\n return value;\n }\n\n _webglContextRestored() {\n this.scene.canvas.gl;\n this._state.texture = null;\n // if (this._images.length > 0) {\n // this._state.texture = new xeokit.renderer.Texture2D(gl, gl.TEXTURE_CUBE_MAP);\n // this._state.texture.setImage(this._images, this._state);\n // this._state.texture.setProps(this._state);\n // } else\n if (this._src) {\n this._loadSrc(this._src);\n }\n }\n\n _loadSrc(src) {\n const self = this;\n const gl = this.scene.canvas.gl;\n this._images = [];\n let loadFailed = false;\n let numLoaded = 0;\n for (let i = 0; i < src.length; i++) {\n const image = new Image();\n image.onload = (function () {\n let _image = image;\n const index = i;\n return function () {\n if (loadFailed) {\n return;\n }\n _image = ensureImageSizePowerOfTwo(_image);\n self._images[index] = _image;\n numLoaded++;\n if (numLoaded === 6) {\n let texture = self._state.texture;\n if (!texture) {\n texture = new Texture2D(gl, gl.TEXTURE_CUBE_MAP);\n self._state.texture = texture;\n }\n texture.setImage(self._images, self._state);\n texture.setProps(self._state);\n self.fire(\"loaded\", self._src, false);\n self.glRedraw();\n }\n };\n })();\n image.onerror = function () {\n loadFailed = true;\n };\n image.src = src[i];\n }\n }\n\n /**\n * Destroys this CubeTexture\n *\n */\n destroy() {\n super.destroy();\n if (this._state.texture) {\n this._state.texture.destroy();\n }\n stats.memory.textures--;\n this._state.destroy();\n }\n}\n\n/**\n * @desc A reflection cube map.\n *\n * ## Usage\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry,\n * ReadableGeometry, MetallicMaterial, ReflectionMap} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new ReflectionMap(viewer.scene, {\n * src: [\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_PX.png\",\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_NX.png\",\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_PY.png\",\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_NY.png\",\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_PZ.png\",\n * \"textures/reflect/Uffizi_Gallery/Uffizi_Gallery_Radiance_NZ.png\"\n * ]\n * });\n *\n * // Create a sphere and ground plane\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 2.0\n * }),\n * new MetallicMaterial(viewer.scene, {\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0\n * })\n * });\n * ````\n */\nclass ReflectionMap extends CubeTexture {\n\n /**\n @private\n */\n get type() {\n return \"ReflectionMap\";\n }\n\n /**\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for this ReflectionMap, unique among all components in the parent scene, generated automatically when omitted.\n * @param {String[]} [cfg.src=null] Paths to six image files to load into this ReflectionMap.\n * @param {Boolean} [cfg.flipY=false] Flips this ReflectionMap's source data along its vertical axis when true.\n * @param {String} [cfg.encoding=\"linear\"] Encoding format. See the {@link ReflectionMap/encoding} property for more info.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.scene._lightsState.addReflectionMap(this._state);\n this.scene._reflectionMapCreated(this);\n }\n\n /**\n * Destroys this ReflectionMap.\n */\n destroy() {\n super.destroy();\n this.scene._reflectionMapDestroyed(this);\n }\n}\n\n/**\n * @desc A **LightMap** specifies a cube texture light map.\n *\n * ## Usage\n *\n * ````javascript\n * import {Viewer, Mesh, buildSphereGeometry,\n * ReadableGeometry, MetallicMaterial, LightMap} from \"xeokit-sdk.es.js\";\n *\n * // Create a Viewer and arrange the camera\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new LightMap(viewer.scene, {\n * src: [\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_PX.png\",\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_NX.png\",\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_PY.png\",\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_NY.png\",\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_PZ.png\",\n * \"textures/light/Uffizi_Gallery/Uffizi_Gallery_Irradiance_NZ.png\"\n * ]\n * });\n *\n * // Create a sphere and ground plane\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildSphereGeometry({\n * radius: 2.0\n * }),\n * new MetallicMaterial(viewer.scene, {\n * baseColor: [1, 1, 1],\n * metallic: 1.0,\n * roughness: 1.0\n * })\n * });\n * ````\n */\nclass LightMap extends CubeTexture {\n\n /**\n @private\n */\n get type() {\n return \"LightMap\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this component as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for this LightMap, unique among all components in the parent scene, generated automatically when omitted.\n * @param {String:Object} [cfg.meta] Optional map of user-defined metadata to attach to this LightMap.\n * @param {String[]} [cfg.src=null] Paths to six image files to load into this LightMap.\n * @param {Boolean} [cfg.flipY=false] Flips this LightMap's source data along its vertical axis when true.\n * @param {String} [cfg.encoding=\"linear\"] Encoding format. See the {@link LightMap#encoding} property for more info.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.scene._lightMapCreated(this);\n }\n\n destroy() {\n super.destroy();\n this.scene._lightMapDestroyed(this);\n }\n}\n\n/**\n * @desc Configures Fresnel effects for {@link PhongMaterial}s.\n *\n * Fresnels are attached to {@link PhongMaterial}s, which are attached to {@link Mesh}es.\n *\n * ## Usage\n *\n * In the example below we'll create a {@link Mesh} with a {@link PhongMaterial} that applies a Fresnel to its alpha channel to give a glasss-like effect.\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#materials_Fresnel)]\n *\n * ````javascript\n * import {Viewer, Mesh, buildTorusGeometry,\n * ReadableGeometry, PhongMaterial, Texture, Fresnel} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 5];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new Mesh(viewer.scene, {\n * geometry: new ReadableGeometry(viewer.scene, buildTorusGeometry({\n * center: [0, 0, 0],\n * radius: 1.5,\n * tube: 0.5,\n * radialSegments: 32,\n * tubeSegments: 24,\n * arc: Math.PI * 2.0\n * }),\n * material: new PhongMaterial(viewer.scene, {\n * alpha: 0.9,\n * alphaMode: \"blend\",\n * ambient: [0.0, 0.0, 0.0],\n * shininess: 30,\n * diffuseMap: new Texture(viewer.scene, {\n * src: \"textures/diffuse/uvGrid2.jpg\"\n * }),\n * alphaFresnel: new Fresnel(viewer.scene, {\nv edgeBias: 0.2,\n * centerBias: 0.8,\n * edgeColor: [1.0, 1.0, 1.0],\n * centerColor: [0.0, 0.0, 0.0],\n * power: 2\n * })\n * })\n * });\n * ````\n */\nclass Fresnel extends Component {\n\n /**\n * JavaScript class name for this Component.\n *\n * @type {String}\n */\n get type() {\n return \"Fresnel\";\n }\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this Fresnel as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Number[]} [cfg.edgeColor=[ 0.0, 0.0, 0.0 ]] Color used on edges.\n * @param {Number[]} [cfg.centerColor=[ 1.0, 1.0, 1.0 ]] Color used on center.\n * @param {Number} [cfg.edgeBias=0] Bias at the edge.\n * @param {Number} [cfg.centerBias=1] Bias at the center.\n * @param {Number} [cfg.power=0] The power.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n this._state = new RenderState({\n edgeColor: math.vec3([0, 0, 0]),\n centerColor: math.vec3([1, 1, 1]),\n edgeBias: 0,\n centerBias: 1,\n power: 1\n });\n\n this.edgeColor = cfg.edgeColor;\n this.centerColor = cfg.centerColor;\n this.edgeBias = cfg.edgeBias;\n this.centerBias = cfg.centerBias;\n this.power = cfg.power;\n }\n\n /**\n * Sets the Fresnel's edge color.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n set edgeColor(value) {\n this._state.edgeColor.set(value || [0.0, 0.0, 0.0]);\n this.glRedraw();\n }\n\n /**\n * Gets the Fresnel's edge color.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @type {Number[]}\n */\n get edgeColor() {\n return this._state.edgeColor;\n }\n\n /**\n * Sets the Fresnel's center color.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n set centerColor(value) {\n this._state.centerColor.set(value || [1.0, 1.0, 1.0]);\n this.glRedraw();\n }\n\n /**\n * Gets the Fresnel's center color.\n *\n * Default value is ````[1.0, 1.0, 1.0]````.\n *\n * @type {Number[]}\n */\n get centerColor() {\n return this._state.centerColor;\n }\n\n /**\n * Sets the Fresnel's edge bias.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n set edgeBias(value) {\n this._state.edgeBias = value || 0;\n this.glRedraw();\n }\n\n /**\n * Gets the Fresnel's edge bias.\n *\n * Default value is ````0````.\n *\n * @type {Number}\n */\n get edgeBias() {\n return this._state.edgeBias;\n }\n\n /**\n * Sets the Fresnel's center bias.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n set centerBias(value) {\n this._state.centerBias = (value !== undefined && value !== null) ? value : 1;\n this.glRedraw();\n }\n\n /**\n * Gets the Fresnel's center bias.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get centerBias() {\n return this._state.centerBias;\n }\n\n /**\n * Sets the Fresnel's power.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n set power(value) {\n this._state.power = (value !== undefined && value !== null) ? value : 1;\n this.glRedraw();\n }\n\n /**\n * Gets the Fresnel's power.\n *\n * Default value is ````1````.\n *\n * @type {Number}\n */\n get power() {\n return this._state.power;\n }\n\n /**\n * Destroys this Fresnel.\n */\n destroy() {\n super.destroy();\n this._state.destroy();\n }\n}\n\n/**\n * A {@link Marker} with a billboarded and textured quad attached to it.\n *\n * * Extends {@link Marker}\n * * Keeps the quad oriented towards the viewpoint\n * * Auto-fits the quad to the texture\n * * Has a world-space position\n * * Can be configured to hide the quad whenever the position is occluded by some other object\n *\n * ## Usage\n *\n * [[Run this example](http://xeokit.github.io/xeokit-sdk/examples/#markers_SpriteMarker)]\n *\n * ```` javascript\n * import {Viewer, SpriteMarker } from \"../dist/xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\",\n * transparent: true\n * });\n *\n * viewer.scene.camera.eye = [0, 0, 25];\n * viewer.scene.camera.look = [0, 0, 0];\n * viewer.scene.camera.up = [0, 1, 0];\n *\n * new SpriteMarker(viewer.scene, {\n * worldPos: [-10, 0, 0],\n * src: \"../assets/textures/diffuse/uvGrid2_512x1024.jpg\",\n * size: 5,\n * occludable: false\n * });\n *\n * new SpriteMarker(viewer.scene, {\n * worldPos: [+10, 0, 0],\n * src: \"../assets/textures/diffuse/uvGrid2_1024x512.jpg\",\n * size: 4,\n * occludable: false\n * });\n *````\n */\nclass SpriteMarker extends Marker {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this SpriteMarker as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID for this SpriteMarker, unique among all components in the parent scene, generated automatically when omitted.\n * @param {Entity} [cfg.entity] Entity to associate this Marker with. When the SpriteMarker has an Entity, then {@link Marker#visible} will always be ````false```` if {@link Entity#visible} is false.\n * @param {Boolean} [cfg.occludable=false] Indicates whether or not this Marker is hidden (ie. {@link Marker#visible} is ````false```` whenever occluded by {@link Entity}s in the {@link Scene}.\n * @param {Number[]} [cfg.worldPos=[0,0,0]] World-space 3D Marker position.\n * @param {String} [cfg.src=null] Path to image file to load into this SpriteMarker. See the {@link SpriteMarker#src} property for more info.\n * @param {HTMLImageElement} [cfg.image=null] HTML Image object to load into this SpriteMarker. See the {@link SpriteMarker#image} property for more info.\n * @param {Boolean} [cfg.flipY=false] Flips this SpriteMarker's texture image along its vertical axis when true.\n * @param {String} [cfg.encoding=\"linear\"] Texture encoding format. See the {@link Texture#encoding} property for more info.\n */\n constructor(owner, cfg = {}) {\n\n super(owner, {\n entity: cfg.entity,\n occludable: cfg.occludable,\n worldPos: cfg.worldPos\n });\n\n this._occluded = false;\n this._visible = true;\n this._src = null;\n this._image = null;\n this._pos = math.vec3();\n this._rtcCenter = math.vec3();\n this._rtcPos = math.vec3();\n this._dir = math.vec3();\n this._size = 1.0;\n this._imageSize = math.vec2();\n\n this._texture = new Texture(this, {\n src: cfg.src\n });\n\n this._geometry = new ReadableGeometry(this, {\n primitive: \"triangles\",\n positions: [3, 3, 0, -3, 3, 0, -3, -3, 0, 3, -3, 0],\n normals: [-1, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0],\n uv: [1, -1, 0, -1, 0, 0, 1, 0],\n indices: [0, 1, 2, 0, 2, 3] // Ensure these will be front-faces\n });\n\n this._mesh = new Mesh(this, {\n geometry: this._geometry,\n material: new PhongMaterial(this, {\n ambient: [0.9, 0.3, 0.9],\n shininess: 30,\n diffuseMap: this._texture,\n backfaces: true\n }),\n scale: [1, 1, 1], // Note: by design, scale does not work with billboard\n position: cfg.worldPos,\n rotation: [90, 0, 0],\n billboard: \"spherical\",\n occluder: false // Don't occlude SpriteMarkers or Annotations\n });\n\n this.visible = true;\n this.collidable = cfg.collidable;\n this.clippable = cfg.clippable;\n this.pickable = cfg.pickable;\n this.opacity = cfg.opacity;\n this.size = cfg.size;\n\n if (cfg.image) {\n this.image = cfg.image;\n } else {\n this.src = cfg.src;\n }\n }\n\n _setVisible(visible) { // Called by VisibilityTester and this._entity.on(\"destroyed\"..)\n this._occluded = (!visible);\n this._mesh.visible = this._visible && (!this._occluded);\n super._setVisible(visible);\n }\n\n /**\n * Sets if this ````SpriteMarker```` is visible or not.\n *\n * Default value is ````true````.\n *\n * @param {Boolean} visible Set ````true```` to make this ````SpriteMarker```` visible.\n */\n set visible(visible) {\n this._visible = (visible === null || visible === undefined) ? true : visible;\n this._mesh.visible = this._visible && (!this._occluded);\n }\n\n /**\n * Gets if this ````SpriteMarker```` is visible or not.\n *\n * Default value is ````true````.\n *\n * @returns {Boolean} Returns ````true```` if visible.\n */\n get visible() {\n return this._visible;\n }\n\n /**\n * Sets an ````HTMLImageElement```` to source the image from.\n *\n * Sets {@link Texture#src} null.\n *\n * @type {HTMLImageElement}\n */\n set image(image) {\n this._image = image;\n if (this._image) {\n this._imageSize[0] = this._image.width;\n this._imageSize[1] = this._image.height;\n this._updatePlaneSizeFromImage();\n this._src = null;\n this._texture.image = this._image;\n }\n }\n\n /**\n * Gets the ````HTMLImageElement```` the ````SpriteMarker````'s image is sourced from, if set.\n *\n * Returns null if not set.\n *\n * @type {HTMLImageElement}\n */\n get image() {\n return this._image;\n }\n\n /**\n * Sets an image file path that the ````SpriteMarker````'s image is sourced from.\n *\n * Accepted file types are PNG and JPEG.\n *\n * Sets {@link Texture#image} null.\n *\n * @type {String}\n */\n set src(src) {\n this._src = src;\n if (this._src) {\n this._image = null;\n const image = new Image();\n image.onload = () => {\n this._texture.image = image;\n this._imageSize[0] = image.width;\n this._imageSize[1] = image.height;\n this._updatePlaneSizeFromImage();\n };\n image.src = this._src;\n }\n }\n\n /**\n * Gets the image file path that the ````SpriteMarker````'s image is sourced from, if set.\n *\n * Returns null if not set.\n *\n * @type {String}\n */\n get src() {\n return this._src;\n }\n\n /**\n * Sets the World-space size of the longest edge of the ````SpriteMarker````.\n *\n * Note that ````SpriteMarker```` sets its aspect ratio to match its image. If we set a value of ````1000````, and\n * the image has size ````400x300````, then the ````SpriteMarker```` will then have size ````1000 x 750````.\n *\n * Default value is ````1.0````.\n *\n * @param {Number} size New World-space size of the ````SpriteMarker````.\n */\n set size(size) {\n this._size = (size === undefined || size === null) ? 1.0 : size;\n if (this._image) {\n this._updatePlaneSizeFromImage();\n }\n }\n\n /**\n * Gets the World-space size of the longest edge of the ````SpriteMarker````.\n *\n * Returns {Number} World-space size of the ````SpriteMarker````.\n */\n get size() {\n return this._size;\n }\n\n /**\n * Sets if this ````SpriteMarker```` is included in boundary calculations.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set collidable(value) {\n this._mesh.collidable = (value !== false);\n }\n\n /**\n * Gets if this ````SpriteMarker```` is included in boundary calculations.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get collidable() {\n return this._mesh.collidable;\n }\n\n /**\n * Sets if this ````SpriteMarker```` is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set clippable(value) {\n this._mesh.clippable = (value !== false);\n }\n\n /**\n * Gets if this ````SpriteMarker```` is clippable.\n *\n * Clipping is done by the {@link SectionPlane}s in {@link Scene#sectionPlanes}.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get clippable() {\n return this._mesh.clippable;\n }\n\n /**\n * Sets if this ````SpriteMarker```` is pickable.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n set pickable(value) {\n this._mesh.pickable = (value !== false);\n }\n\n /**\n * Gets if this ````SpriteMarker```` is pickable.\n *\n * Default is ````true````.\n *\n * @type {Boolean}\n */\n get pickable() {\n return this._mesh.pickable;\n }\n\n /**\n * Sets the opacity factor for this ````SpriteMarker````.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n set opacity(opacity) {\n this._mesh.opacity = opacity;\n }\n\n /**\n * Gets this ````SpriteMarker````'s opacity factor.\n *\n * This is a factor in range ````[0..1]```` which multiplies by the rendered fragment alphas.\n *\n * @type {Number}\n */\n get opacity() {\n return this._mesh.opacity;\n }\n\n _updatePlaneSizeFromImage() {\n const halfSize = this._size * 0.5;\n const width = this._imageSize[0];\n const height = this._imageSize[1];\n const aspect = height / width;\n if (width > height) {\n this._geometry.positions = [\n halfSize, halfSize * aspect, 0,\n -halfSize, halfSize * aspect, 0,\n -halfSize, -halfSize * aspect, 0,\n halfSize, -halfSize * aspect, 0\n ];\n } else {\n this._geometry.positions = [\n halfSize / aspect, halfSize, 0,\n -halfSize / aspect, halfSize, 0,\n -halfSize / aspect, -halfSize, 0,\n halfSize / aspect, -halfSize, 0\n ];\n }\n }\n}\n\nconst color = math.vec3();\n\n/**\n * @desc Saves and restores a snapshot of the visual state of the {@link Entity}'s of a model within a {@link Scene}.\n *\n * ## Usage\n *\n * In the example below, we'll create a {@link Viewer} and use an {@link XKTLoaderPlugin} to load an ````.xkt```` model. When the model has loaded, we'll hide a couple of {@link Entity}s and save a snapshot of the visual states of all its Entitys in an ModelMemento. Then we'll show all the Entitys\n * again, and then we'll restore the visual states of all the Entitys again from the ModelMemento, which will hide those two Entitys again.\n *\n * ## See Also\n *\n * * {@link CameraMemento} - Saves and restores the state of a {@link Scene}'s {@link Camera}.\n * * {@link ObjectsMemento} - Saves and restores a snapshot of the visual state of the {@link Entity}'s that represent objects within a {@link Scene}.\n *\n * ````javascript\n * import {Viewer, XKTLoaderPlugin, ModelMemento} from \"xeokit-sdk.es.js\";\n *\n * const viewer = new Viewer({\n * canvasId: \"myCanvas\"\n * });\n *\n * // Load a model\n * const xktLoader = new XKTLoaderPlugin(viewer);\n *\n * const model = xktLoader.load({\n * id: \"myModel\",\n * src: \"./models/xkt/schependomlaan/schependomlaan.xkt\"\n * });\n *\n * model.on(\"loaded\", () => {\n *\n * // Model has loaded\n *\n * // Hide a couple of objects\n * viewer.scene.objects[\"0u4wgLe6n0ABVaiXyikbkA\"].visible = false;\n * viewer.scene.objects[\"3u4wgLe3n0AXVaiXyikbYO\"].visible = false;\n *\n * // Save memento of all object states, which includes those two hidden objects\n * const ModelMemento = new ModelMemento();\n *\n * const metaModel = viewer.metaScene.metaModels\n * ModelMemento.saveObjects(viewer.scene);\n *\n * // Show all objects\n * viewer.scene.setObjectsVisible(viewer.scene.objectIds, true);\n *\n * // Restore the objects states again, which involves hiding those two objects again\n * ModelMemento.restoreObjects(viewer.scene);\n * });\n * `````\n *\n * ## Masking Saved State\n *\n * We can optionally supply a mask to focus what state we save and restore.\n *\n * For example, to save and restore only the {@link Entity#visible} and {@link Entity#clippable} states:\n *\n * ````javascript\n * ModelMemento.saveObjects(viewer.scene, {\n * visible: true,\n * clippable: true\n * });\n *\n * //...\n *\n * // Restore the objects states again\n * ModelMemento.restoreObjects(viewer.scene);\n * ````\n */\nclass ModelMemento {\n\n /**\n * Creates a ModelMemento.\n *\n * @param {MetaModel} [metaModel] When given, immediately saves the model's {@link Entity} states to this ModelMemento.\n */\n constructor(metaModel) {\n\n /** @private */\n this.objectsVisible = [];\n\n /** @private */\n this.objectsEdges = [];\n\n /** @private */\n this.objectsXrayed = [];\n\n /** @private */\n this.objectsHighlighted = [];\n\n /** @private */\n this.objectsSelected = [];\n\n /** @private */\n this.objectsClippable = [];\n\n /** @private */\n this.objectsPickable = [];\n\n /** @private */\n this.objectsColorize = [];\n\n /** @private */\n this.objectsOpacity = [];\n\n /** @private */\n this.numObjects = 0;\n\n if (metaModel) {\n const metaScene = metaModel.metaScene;\n const scene = metaScene.scene;\n this.saveObjects(scene, metaModel);\n }\n }\n\n /**\n * Saves a snapshot of the visual state of the {@link Entity}'s that represent objects within a model.\n *\n * @param {Scene} scene The scene.\n * @param {MetaModel} metaModel Represents the model. Corresponds with an {@link Entity} that represents the model in the scene.\n * @param {Object} [mask] Masks what state gets saved. Saves all state when not supplied.\n * @param {boolean} [mask.visible] Saves {@link Entity#visible} values when ````true````.\n * @param {boolean} [mask.visible] Saves {@link Entity#visible} values when ````true````.\n * @param {boolean} [mask.edges] Saves {@link Entity#edges} values when ````true````.\n * @param {boolean} [mask.xrayed] Saves {@link Entity#xrayed} values when ````true````.\n * @param {boolean} [mask.highlighted] Saves {@link Entity#highlighted} values when ````true````.\n * @param {boolean} [mask.selected] Saves {@link Entity#selected} values when ````true````.\n * @param {boolean} [mask.clippable] Saves {@link Entity#clippable} values when ````true````.\n * @param {boolean} [mask.pickable] Saves {@link Entity#pickable} values when ````true````.\n * @param {boolean} [mask.colorize] Saves {@link Entity#colorize} values when ````true````.\n * @param {boolean} [mask.opacity] Saves {@link Entity#opacity} values when ````true````.\n */\n saveObjects(scene, metaModel, mask) {\n\n const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n return;\n }\n\n const objectIds = rootMetaObject.getObjectIDsInSubtree();\n\n this.numObjects = 0;\n\n this._mask = mask ? utils.apply(mask, {}) : null;\n\n const objects = scene.objects;\n const visible = (!mask || mask.visible);\n const edges = (!mask || mask.edges);\n const xrayed = (!mask || mask.xrayed);\n const highlighted = (!mask || mask.highlighted);\n const selected = (!mask || mask.selected);\n const clippable = (!mask || mask.clippable);\n const pickable = (!mask || mask.pickable);\n const colorize = (!mask || mask.colorize);\n const opacity = (!mask || mask.opacity);\n\n for (var i = 0, len = objectIds.length; i < len; i++) {\n const objectId = objectIds[i];\n const object = objects[objectId];\n if (!object) {\n continue;\n }\n if (visible) {\n this.objectsVisible[i] = object.visible;\n }\n if (edges) {\n this.objectsEdges[i] = object.edges;\n }\n if (xrayed) {\n this.objectsXrayed[i] = object.xrayed;\n }\n if (highlighted) {\n this.objectsHighlighted[i] = object.highlighted;\n }\n if (selected) {\n this.objectsSelected[i] = object.selected;\n }\n if (clippable) {\n this.objectsClippable[i] = object.clippable;\n }\n if (pickable) {\n this.objectsPickable[i] = object.pickable;\n }\n if (colorize) {\n const objectColor = object.colorize;\n this.objectsColorize[i * 3 + 0] = objectColor[0];\n this.objectsColorize[i * 3 + 1] = objectColor[1];\n this.objectsColorize[i * 3 + 2] = objectColor[2];\n }\n if (opacity) {\n this.objectsOpacity[i] = object.opacity;\n }\n this.numObjects++;\n }\n }\n\n /**\n * Restores a {@link Scene}'s {@link Entity}'s to their state previously captured with {@link ModelMemento#saveObjects}.\n *\n * Assumes that the model has not been destroyed or modified since saving.\n *\n * @param {Scene} scene The scene that was given to {@link ModelMemento#saveObjects}.\n * @param {MetaModel} metaModel The metamodel that was given to {@link ModelMemento#saveObjects}.\n */\n restoreObjects(scene, metaModel) {\n\n const rootMetaObject = metaModel.rootMetaObject;\n if (!rootMetaObject) {\n return;\n }\n\n const objectIds = rootMetaObject.getObjectIDsInSubtree();\n\n const mask = this._mask;\n\n const visible = (!mask || mask.visible);\n const edges = (!mask || mask.edges);\n const xrayed = (!mask || mask.xrayed);\n const highlighted = (!mask || mask.highlighted);\n const selected = (!mask || mask.selected);\n const clippable = (!mask || mask.clippable);\n const pickable = (!mask || mask.pickable);\n const colorize = (!mask || mask.colorize);\n const opacity = (!mask || mask.opacity);\n\n const objects = scene.objects;\n\n for (var i = 0, len = objectIds.length; i < len; i++) {\n const objectId = objectIds[i];\n const object = objects[objectId];\n if (!object) {\n continue;\n }\n if (visible) {\n object.visible = this.objectsVisible[i];\n }\n if (edges) {\n object.edges = this.objectsEdges[i];\n }\n if (xrayed) {\n object.xrayed = this.objectsXrayed[i];\n }\n if (highlighted) {\n object.highlighted = this.objectsHighlighted[i];\n }\n if (selected) {\n object.selected = this.objectsSelected[i];\n }\n if (clippable) {\n object.clippable = this.objectsClippable[i];\n }\n if (pickable) {\n object.pickable = this.objectsPickable[i];\n }\n if (colorize) {\n color[0] = this.objectsColorize[i * 3 + 0];\n color[1] = this.objectsColorize[i * 3 + 1];\n color[2] = this.objectsColorize[i * 3 + 2];\n object.colorize = color;\n }\n if (opacity) {\n object.opacity = this.objectsOpacity[i];\n }\n }\n }\n}\n\n/**\n * @desc A {@link Curve} along which a 3D position can be animated.\n *\n * * As shown in the diagram below, a CubicBezierCurve is defined by four control points.\n * * You can sample a {@link CubicBezierCurve#point} and a {@link CubicBezierCurve#tangent} vector on a CubicBezierCurve for any given value of {@link CubicBezierCurve#t} in the range [0..1].\n * * When you set {@link CubicBezierCurve#t} on a CubicBezierCurve, its {@link CubicBezierCurve#point} and {@link CubicBezierCurve#tangent} properties will update accordingly.\n * * To build a complex path, you can combine an unlimited combination of CubicBezierCurves, {@link QuadraticBezierCurve}s and {@link SplineCurve}s into a {@link Path}.\n *\n *
    \n * \n *
    \n * [Cubic Bezier Curve from WikiPedia](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)\n */\nclass CubicBezierCurve extends Curve {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this CubicBezierCurve as well.\n * @param {*} [cfg] Configs\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {Number[]} [cfg.v0=[0,0,0]] The starting point.\n * @param {Number[]} [cfg.v1=[0,0,0]] The first control point.\n * @param {Number[]} [cfg.v2=[0,0,0]] The middle control point.\n * @param {Number[]} [cfg.v3=[0,0,0]] The ending point.\n * @param {Number} [cfg.t=0] Current position on this CubicBezierCurve, in range between 0..1.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.v0 = cfg.v0;\n this.v1 = cfg.v1;\n this.v2 = cfg.v2;\n this.v3 = cfg.v3;\n this.t = cfg.t;\n }\n\n /**\n * Sets the starting point on this CubicBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @param {Number[]} value The starting point.\n */\n set v0(value) {\n this._v0 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the starting point on this CubicBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @returns {Number[]} The starting point.\n */\n get v0() {\n return this._v0;\n }\n\n /**\n * Sets the first control point on this CubicBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @param {Number[]} value The first control point.\n */\n set v1(value) {\n this._v1 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the first control point on this CubicBezierCurve.\n *\n * Fires a {@link CubicBezierCurve#v1:event} event on change.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @returns {Number[]} The first control point.\n */\n get v1() {\n return this._v1;\n }\n\n /**\n * Sets the second control point on this CubicBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @param {Number[]} value The second control point.\n */\n set v2(value) {\n this._v2 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the second control point on this CubicBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @returns {Number[]} The second control point.\n */\n get v2() {\n return this._v2;\n }\n\n /**\n * Sets the end point on this CubicBezierCurve.\n *\n * Fires a {@link CubicBezierCurve#v3:event} event on change.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @param {Number[]} value The end point.\n */\n set v3(value) {\n this.fire(\"v3\", this._v3 = value || math.vec3([0, 0, 0]));\n }\n\n /**\n * Gets the end point on this CubicBezierCurve.\n *\n * Fires a {@link CubicBezierCurve#v3:event} event on change.\n *\n * Default value is ````[0.0, 0.0, 0.0]````\n *\n * @returns {Number[]} The end point.\n */\n get v3() {\n return this._v3;\n }\n\n /**\n * Sets the current position of progress along this CubicBezierCurve.\n *\n * Automatically clamps to range ````[0..1]````.\n *\n * @param {Number} value New progress time value.\n */\n set t(value) {\n value = value || 0;\n this._t = value < 0.0 ? 0.0 : (value > 1.0 ? 1.0 : value);\n }\n\n /**\n * Gets the current position of progress along this CubicBezierCurve.\n *\n * @returns {Number} Current progress time value.\n */\n get t() {\n return this._t;\n }\n\n /**\n * Returns point on this CubicBezierCurve at the given position.\n *\n * @param {Number} t Position to get point at.\n *\n * @returns {{Number[]}} The point at the given position.\n */\n get point() {\n return this.getPoint(this._t);\n }\n\n /**\n * Returns point on this CubicBezierCurve at the given position.\n *\n * @param {Number} t Position to get point at.\n *\n * @returns {{Number[]}} The point at the given position.\n */\n getPoint(t) {\n\n var vector = math.vec3();\n\n vector[0] = math.b3(t, this._v0[0], this._v1[0], this._v2[0], this._v3[0]);\n vector[1] = math.b3(t, this._v0[1], this._v1[1], this._v2[1], this._v3[1]);\n vector[2] = math.b3(t, this._v0[2], this._v1[2], this._v2[2], this._v3[2]);\n\n return vector;\n }\n\n getJSON() {\n return {\n v0: this._v0,\n v1: this._v1,\n v2: this._v2,\n v3: this._v3,\n t: this._t\n };\n }\n}\n\n/**\n * @desc A complex curved path constructed from various {@link Curve} subtypes.\n *\n * * A Path can be constructed from these {@link Curve} subtypes: {@link SplineCurve}, {@link CubicBezierCurve} and {@link QuadraticBezierCurve}.\n * * You can sample a {@link Path#point} and a {@link Curve#tangent} vector on a Path for any given value of {@link Path#t} in the range ````[0..1]````.\n * * When you set {@link Path#t} on a Path, its {@link Path#point} and {@link Curve#tangent} properties will update accordingly.\n */\nclass Path extends Curve {\n\n /**\n * @constructor\n * @param {Component} [owner] Owner component. When destroyed, the owner will destroy this SectionPlane as well.\n * @param {*} [cfg] Path configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {@link Scene}, generated automatically when omitted.\n * @param {String []} [cfg.paths=[]] IDs or instances of {{#crossLink \"path\"}}{{/crossLink}} subtypes to add to this Path.\n * @param {Number} [cfg.t=0] Current position on this Path, in range between 0..1.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this._cachedLengths = [];\n this._dirty = true;\n this._curves = []; // Array of child Curve components\n this._t = 0;\n this._dirtySubs = []; // Subscriptions to \"dirty\" events from child Curve components\n this._destroyedSubs = []; // Subscriptions to \"destroyed\" events from child Curve components\n this.curves = cfg.curves || []; // Add initial curves\n this.t = cfg.t; // Set initial progress\n }\n\n /**\n * Adds a {@link Curve} to this Path.\n *\n * @param {Curve} curve The {@link Curve} to add.\n */\n addCurve(curve) {\n this._curves.push(curve);\n this._dirty = true;\n }\n\n /**\n * Sets the {@link Curve}s in this Path.\n *\n * Default value is ````[]````.\n *\n * @param {{Array of Spline, Path, QuadraticBezierCurve or CubicBezierCurve}} value.\n */\n set curves(value) {\n\n value = value || [];\n\n var curve;\n // Unsubscribe from events on old curves\n var i;\n var len;\n for (i = 0, len = this._curves.length; i < len; i++) {\n curve = this._curves[i];\n curve.off(this._dirtySubs[i]);\n curve.off(this._destroyedSubs[i]);\n }\n\n this._curves = [];\n this._dirtySubs = [];\n this._destroyedSubs = [];\n\n var self = this;\n\n function curveDirty() {\n self._dirty = true;\n }\n\n function curveDestroyed() {\n var id = this.id;\n for (i = 0, len = self._curves.length; i < len; i++) {\n if (self._curves[i].id === id) {\n self._curves = self._curves.slice(i, i + 1);\n self._dirtySubs = self._dirtySubs.slice(i, i + 1);\n self._destroyedSubs = self._destroyedSubs.slice(i, i + 1);\n self._dirty = true;\n return;\n }\n }\n }\n\n for (i = 0, len = value.length; i < len; i++) {\n curve = value[i];\n if (utils.isNumeric(curve) || utils.isString(curve)) {\n // ID given for curve - find the curve component\n var id = curve;\n curve = this.scene.components[id];\n if (!curve) {\n this.error(\"Component not found: \" + _inQuotes(id));\n continue;\n }\n }\n\n var type = curve.type;\n\n if (type !== \"xeokit.SplineCurve\" &&\n type !== \"xeokit.Path\" &&\n type !== \"xeokit.CubicBezierCurve\" &&\n type !== \"xeokit.QuadraticBezierCurve\") {\n\n this.error(\"Component \" + _inQuotes(curve.id)\n + \" is not a xeokit.SplineCurve, xeokit.Path or xeokit.QuadraticBezierCurve\");\n\n continue;\n }\n\n this._curves.push(curve);\n this._dirtySubs.push(curve.on(\"dirty\", curveDirty));\n this._destroyedSubs.push(curve.once(\"destroyed\", curveDestroyed));\n }\n\n this._dirty = true;\n }\n\n /**\n * Gets the {@link Curve}s in this Path.\n *\n * @returns {{Array of Spline, Path, QuadraticBezierCurve or CubicBezierCurve}} the {@link Curve}s in this path.\n */\n get curves() {\n return this._curves;\n }\n\n /**\n * Sets the current point of progress along this Path.\n *\n * Automatically clamps to range ````[0..1]````.\n *\n * Default value is ````0````.\n *\n * @param {Number} value The current point of progress.\n */\n set t(value) {\n value = value || 0;\n this._t = value < 0.0 ? 0.0 : (value > 1.0 ? 1.0 : value);\n }\n\n /**\n * Gets the current point of progress along this Path.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The current point of progress.\n */\n get t() {\n return this._t;\n }\n\n /**\n * Gets point on this Path corresponding to the current value of {@link Path#t}.\n *\n * @returns {{Number[]}} The point.\n */\n get point() {\n return this.getPoint(this._t);\n }\n\n /**\n * Length of this Path, which is the cumulative length of all {@link Curve}s currently in {@link Path#curves}.\n *\n * @return {Number} Length of this path.\n */\n get length() {\n var lens = this._getCurveLengths();\n return lens[lens.length - 1];\n }\n\n /**\n * Gets a point on this Path corresponding to the given progress position.\n *\n * @param {Number} t Indicates point of progress along this curve, in the range [0..1].\n * @returns {{Number[]}}\n */\n getPoint(t) {\n var d = t * this.length;\n var curveLengths = this._getCurveLengths();\n var i = 0, diff, curve;\n while (i < curveLengths.length) {\n if (curveLengths[i] >= d) {\n diff = curveLengths[i] - d;\n curve = this._curves[i];\n var u = 1 - diff / curve.length;\n return curve.getPointAt(u);\n }\n i++;\n }\n return null;\n }\n\n _getCurveLengths() {\n if (!this._dirty) {\n return this._cachedLengths;\n }\n var lengths = [];\n var sums = 0;\n var i, il = this._curves.length;\n for (i = 0; i < il; i++) {\n sums += this._curves[i].length;\n lengths.push(sums);\n\n }\n this._cachedLengths = lengths;\n this._dirty = false;\n return lengths;\n }\n\n _getJSON() {\n var curveIds = [];\n for (var i = 0, len = this._curves.length; i < len; i++) {\n curveIds.push(this._curves[i].id);\n }\n return {\n curves: curveIds,\n t: this._t\n };\n }\n\n /**\n * Destroys this Path.\n */\n destroy() {\n super.destroy();\n var i;\n var len;\n var curve;\n for (i = 0, len = this._curves.length; i < len; i++) {\n curve = this._curves[i];\n curve.off(this._dirtySubs[i]);\n curve.off(this._destroyedSubs[i]);\n }\n }\n}\n\n/**\n * A **QuadraticBezierCurve** is a {@link Curve} along which a 3D position can be animated.\n *\n * * As shown in the diagram below, a QuadraticBezierCurve is defined by three control points\n * * You can sample a {@link QuadraticBezierCurve#point} and a {@link Curve#tangent} vector on a QuadraticBezierCurve for any given value of {@link QuadraticBezierCurve#t} in the range ````[0..1]````\n * * When you set {@link QuadraticBezierCurve#t} on a QuadraticBezierCurve, its {@link QuadraticBezierCurve#point} and {@link Curve#tangent} will update accordingly.\n * * To build a complex path, you can combine an unlimited combination of QuadraticBezierCurves, {@link CubicBezierCurve}s and {@link SplineCurve}s into a {@link Path}.
  • \n *
    \n * \n *
    \n * *[Quadratic Bezier Curve from WikiPedia](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)*\n */\nclass QuadraticBezierCurve extends Curve {\n\n /**\n * @constructor\n * @param {Component} owner Owner component. When destroyed, the owner will destroy this MetallicMaterial as well.\n * @param {*} [cfg] Configuration\n * @param {String} [cfg.id] Optional ID, unique among all components in the parent {{#crossLink \"Scene\"}}Scene{{/crossLink}}, generated automatically when omitted.\n * @param {Number[]} [cfg.v0=[0,0,0]] The starting point.\n * @param {Number[]} [cfg.v1=[0,0,0]] The middle control point.\n * @param {Number[]} [cfg.v2=[0,0,0]] The end point.\n * @param {Number[]} [cfg.t=0] Current position on this QuadraticBezierCurve, in range between ````0..1````.\n */\n constructor(owner, cfg = {}) {\n super(owner, cfg);\n this.v0 = cfg.v0;\n this.v1 = cfg.v1;\n this.v2 = cfg.v2;\n this.t = cfg.t;\n }\n\n /**\n * Sets the starting point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @param {Number[]} value New starting point.\n */\n set v0(value) {\n this._v0 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the starting point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @returns {Number[]} The starting point.\n */\n get v0() {\n return this._v0;\n }\n\n /**\n * Sets the middle control point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @param {Number[]} value New middle control point.\n */\n set v1(value) {\n this._v1 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the middle control point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @returns {Number[]} The middle control point.\n */\n get v1() {\n return this._v1;\n }\n\n /**\n * Sets the end point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @param {Number[]} value The new end point.\n */\n set v2(value) {\n this._v2 = value || math.vec3([0, 0, 0]);\n }\n\n /**\n * Gets the end point on this QuadraticBezierCurve.\n *\n * Default value is ````[0.0, 0.0, 0.0]````.\n *\n * @returns {Number[]} The end point.\n */\n get v2() {\n return this._v2;\n }\n\n /**\n * Sets the progress along this QuadraticBezierCurve.\n *\n * Automatically clamps to range [0..1].\n *\n * Default value is ````0````.\n *\n * @param {Number} value The new progress location.\n */\n set t(value) {\n value = value || 0;\n this._t = value < 0.0 ? 0.0 : (value > 1.0 ? 1.0 : value);\n }\n\n /**\n * Gets the progress along this QuadraticBezierCurve.\n *\n * Default value is ````0````.\n *\n * @returns {Number} The current progress location.\n */\n get t() {\n return this._t;\n }\n\n /**\n Point on this QuadraticBezierCurve at position {@link QuadraticBezierCurve/t}.\n\n @property point\n @type {{Number[]}}\n */\n get point() {\n return this.getPoint(this._t);\n }\n\n /**\n * Returns the point on this QuadraticBezierCurve at the given position.\n *\n * @param {Number} t Position to get point at.\n * @returns {Number[]} The point.\n */\n getPoint(t) {\n var vector = math.vec3();\n vector[0] = math.b2(t, this._v0[0], this._v1[0], this._v2[0]);\n vector[1] = math.b2(t, this._v0[1], this._v1[1], this._v2[1]);\n vector[2] = math.b2(t, this._v0[2], this._v1[2], this._v2[2]);\n return vector;\n }\n\n getJSON() {\n return {\n v0: this._v0,\n v1: this._v1,\n v2: this._v2,\n t: this._t\n };\n }\n}\n\nconst screenPos = math.vec4();\nconst viewPos = math.vec4();\n\nconst tempVec3a$2 = math.vec3();\nconst tempVec3b$2 = math.vec3();\nconst tempVec3c$2 = math.vec3();\n\nconst tempVec4a$1 = math.vec4();\nconst tempVec4b$1 = math.vec4();\nconst tempVec4c$1 = math.vec4();\n\n/**\n * @private\n */\nclass PanController {\n\n constructor(scene) {\n this._scene = scene;\n }\n\n /**\n * Dollys the Camera towards the given target 2D canvas position.\n *\n * When the target's corresponding World-space position is also provided, then this function will also test if we've\n * dollied past the target, and will return ````true```` if that's the case.\n *\n * @param [optionalTargetWorldPos] Optional world position of the target\n * @param targetCanvasPos Canvas position of the target\n * @param dollyDelta Amount to dolly\n * @return True if optionalTargetWorldPos was given, and we've dollied past that position.\n */\n dollyToCanvasPos(optionalTargetWorldPos, targetCanvasPos, dollyDelta) {\n\n let dolliedThroughSurface = false;\n\n const camera = this._scene.camera;\n\n if (optionalTargetWorldPos) {\n const eyeToWorldPosVec = math.subVec3(optionalTargetWorldPos, camera.eye, tempVec3a$2);\n const eyeWorldPosDist = math.lenVec3(eyeToWorldPosVec);\n dolliedThroughSurface = (eyeWorldPosDist < dollyDelta);\n }\n\n if (camera.projection === \"perspective\") {\n\n camera.ortho.scale = camera.ortho.scale - dollyDelta;\n\n const unprojectedWorldPos = this._unproject(targetCanvasPos, tempVec4a$1);\n const offset = math.subVec3(unprojectedWorldPos, camera.eye, tempVec4c$1);\n const moveVec = math.mulVec3Scalar(math.normalizeVec3(offset), -dollyDelta, []);\n\n camera.eye = [camera.eye[0] - moveVec[0], camera.eye[1] - moveVec[1], camera.eye[2] - moveVec[2]];\n camera.look = [camera.look[0] - moveVec[0], camera.look[1] - moveVec[1], camera.look[2] - moveVec[2]];\n\n if (optionalTargetWorldPos) {\n\n // Subtle UX tweak - if we have a target World position, then set camera eye->look distance to\n // the same distance as from eye->target. This just gives us a better position for look,\n // if we subsequently orbit eye about look, so that we don't orbit a position that's\n // suddenly a lot closer than the point we pivoted about on the surface of the last object\n // that we click-drag-pivoted on.\n\n const eyeTargetVec = math.subVec3(optionalTargetWorldPos, camera.eye, tempVec3a$2);\n const lenEyeTargetVec = math.lenVec3(eyeTargetVec);\n const eyeLookVec = math.mulVec3Scalar(math.normalizeVec3(math.subVec3(camera.look, camera.eye, tempVec3b$2)), lenEyeTargetVec);\n camera.look = [camera.eye[0] + eyeLookVec[0], camera.eye[1] + eyeLookVec[1], camera.eye[2] + eyeLookVec[2]];\n }\n\n } else if (camera.projection === \"ortho\") {\n\n // - set ortho scale, getting the unprojected targetCanvasPos before and after, get that difference in a vector;\n // - get the vector in which we're dollying;\n // - add both vectors to camera eye and look.\n\n const worldPos1 = this._unproject(targetCanvasPos, tempVec4a$1);\n\n camera.ortho.scale = camera.ortho.scale - dollyDelta;\n camera.ortho._update(); // HACK\n\n const worldPos2 = this._unproject(targetCanvasPos, tempVec4b$1);\n const offset = math.subVec3(worldPos2, worldPos1, tempVec4c$1);\n const eyeLookMoveVec = math.mulVec3Scalar(math.normalizeVec3(math.subVec3(camera.look, camera.eye, tempVec3a$2)), -dollyDelta, tempVec3b$2);\n const moveVec = math.addVec3(offset, eyeLookMoveVec, tempVec3c$2);\n\n camera.eye = [camera.eye[0] - moveVec[0], camera.eye[1] - moveVec[1], camera.eye[2] - moveVec[2]];\n camera.look = [camera.look[0] - moveVec[0], camera.look[1] - moveVec[1], camera.look[2] - moveVec[2]];\n }\n\n return dolliedThroughSurface;\n }\n\n _unproject(canvasPos, worldPos) {\n\n const camera = this._scene.camera;\n const transposedProjectMat = camera.project.transposedMatrix;\n const Pt3 = transposedProjectMat.subarray(8, 12);\n const Pt4 = transposedProjectMat.subarray(12);\n const D = [0, 0, -1.0, 1];\n const screenZ = math.dotVec4(D, Pt3) / math.dotVec4(D, Pt4);\n\n camera.project.unproject(canvasPos, screenZ, screenPos, viewPos, worldPos);\n\n return worldPos;\n }\n\n destroy() {\n }\n}\n\nconst tempVec3a$1 = math.vec3();\nconst tempVec3b$1 = math.vec3();\nconst tempVec3c$1 = math.vec3();\n\nconst tempVec4a = math.vec4();\nconst tempVec4b = math.vec4();\nconst tempVec4c = math.vec4();\n\n\n/** @private */\nclass PivotController {\n\n /**\n * @private\n */\n constructor(scene, configs) {\n\n // Pivot math by: http://www.derschmale.com/\n\n this._scene = scene;\n this._configs = configs;\n this._pivotWorldPos = math.vec3();\n this._cameraOffset = math.vec3();\n this._azimuth = 0;\n this._polar = 0;\n this._radius = 0;\n this._pivotPosSet = false; // Initially false, true as soon as _pivotWorldPos has been set to some value\n this._pivoting = false; // True while pivoting\n this._shown = false;\n\n this._pivotViewPos = math.vec4();\n this._pivotProjPos = math.vec4();\n this._pivotCanvasPos = math.vec2();\n this._cameraDirty = true;\n\n this._onViewMatrix = this._scene.camera.on(\"viewMatrix\", () => {\n this._cameraDirty = true;\n });\n\n this._onProjMatrix = this._scene.camera.on(\"projMatrix\", () => {\n this._cameraDirty = true;\n });\n\n this._onTick = this._scene.on(\"tick\", () => {\n this.updatePivotElement();\n });\n }\n\n updatePivotElement() {\n\n const camera = this._scene.camera;\n const canvas = this._scene.canvas;\n\n if (this._pivoting && this._cameraDirty) {\n\n math.transformPoint3(camera.viewMatrix, this.getPivotPos(), this._pivotViewPos);\n this._pivotViewPos[3] = 1;\n math.transformPoint4(camera.projMatrix, this._pivotViewPos, this._pivotProjPos);\n\n const canvasAABB = canvas.boundary;\n const canvasWidth = canvasAABB[2];\n const canvasHeight = canvasAABB[3];\n\n this._pivotCanvasPos[0] = Math.floor((1 + this._pivotProjPos[0] / this._pivotProjPos[3]) * canvasWidth / 2);\n this._pivotCanvasPos[1] = Math.floor((1 - this._pivotProjPos[1] / this._pivotProjPos[3]) * canvasHeight / 2);\n\n const canvasElem = canvas.canvas;\n const canvasBoundingRect = canvasElem.getBoundingClientRect();\n\n if (this._pivotElement) {\n this._pivotElement.style.left = (Math.floor(canvasBoundingRect.left + this._pivotCanvasPos[0]) - (this._pivotElement.clientWidth / 2) + window.scrollX) + \"px\";\n this._pivotElement.style.top = (Math.floor(canvasBoundingRect.top + this._pivotCanvasPos[1]) - (this._pivotElement.clientHeight / 2) + window.scrollY) + \"px\";\n }\n this._cameraDirty = false;\n }\n }\n\n /**\n * Sets the HTML DOM element that will represent the pivot position.\n *\n * @param pivotElement\n */\n setPivotElement(pivotElement) {\n this._pivotElement = pivotElement;\n }\n\n /**\n * Begins pivoting.\n */\n startPivot() {\n\n if (this._cameraLookingDownwards()) {\n this._pivoting = false;\n return false;\n }\n\n const camera = this._scene.camera;\n\n let lookat = math.lookAtMat4v(camera.eye, camera.look, camera.worldUp);\n math.transformPoint3(lookat, this.getPivotPos(), this._cameraOffset);\n\n const pivotPos = this.getPivotPos();\n this._cameraOffset[2] += math.distVec3(camera.eye, pivotPos);\n\n lookat = math.inverseMat4(lookat);\n\n const offset = math.transformVec3(lookat, this._cameraOffset);\n const diff = math.vec3();\n\n math.subVec3(camera.eye, pivotPos, diff);\n math.addVec3(diff, offset);\n\n if (camera.zUp) {\n const t = diff[1];\n diff[1] = diff[2];\n diff[2] = t;\n }\n\n this._radius = math.lenVec3(diff);\n this._polar = Math.acos(diff[1] / this._radius);\n this._azimuth = Math.atan2(diff[0], diff[2]);\n this._pivoting = true;\n }\n\n _cameraLookingDownwards() { // Returns true if angle between camera viewing direction and World-space \"up\" axis is too small\n const camera = this._scene.camera;\n const forwardAxis = math.normalizeVec3(math.subVec3(camera.look, camera.eye, tempVec3a$1));\n const rightAxis = math.cross3Vec3(forwardAxis, camera.worldUp, tempVec3b$1);\n let rightAxisLen = math.sqLenVec3(rightAxis);\n return (rightAxisLen <= 0.0001);\n }\n\n /**\n * Returns true if we are currently pivoting.\n *\n * @returns {boolean}\n */\n getPivoting() {\n return this._pivoting;\n }\n\n /**\n * Sets a 3D World-space position to pivot about.\n *\n * @param {Number[]} worldPos The new World-space pivot position.\n */\n setPivotPos(worldPos) {\n this._pivotWorldPos.set(worldPos);\n this._pivotPosSet = true;\n }\n\n /**\n * Sets the pivot position to the 3D projection of the given 2D canvas coordinates on a sphere centered\n * at the viewpoint. The radius of the sphere is configured via {@link CameraControl#smartPivot}.\n *\n * @param canvasPos\n */\n setCanvasPivotPos(canvasPos) {\n const camera = this._scene.camera;\n const pivotShereRadius = Math.abs(math.distVec3(this._scene.center, camera.eye));\n const transposedProjectMat = camera.project.transposedMatrix;\n const Pt3 = transposedProjectMat.subarray(8, 12);\n const Pt4 = transposedProjectMat.subarray(12);\n const D = [0, 0, -1.0, 1];\n const screenZ = math.dotVec4(D, Pt3) / math.dotVec4(D, Pt4);\n const worldPos = tempVec4a;\n camera.project.unproject(canvasPos, screenZ, tempVec4b, tempVec4c, worldPos);\n const eyeWorldPosVec = math.normalizeVec3(math.subVec3(worldPos, camera.eye, tempVec3a$1));\n const posOnSphere = math.addVec3(camera.eye, math.mulVec3Scalar(eyeWorldPosVec, pivotShereRadius, tempVec3b$1), tempVec3c$1);\n this.setPivotPos(posOnSphere);\n }\n\n /**\n * Gets the current position we're pivoting about.\n * @returns {Number[]} The current World-space pivot position.\n */\n getPivotPos() {\n return (this._pivotPosSet) ? this._pivotWorldPos : this._scene.camera.look; // Avoid pivoting about [0,0,0] by default\n }\n\n /**\n * Continues to pivot.\n *\n * @param {Number} yawInc Yaw rotation increment.\n * @param {Number} pitchInc Pitch rotation increment.\n */\n continuePivot(yawInc, pitchInc) {\n if (!this._pivoting) {\n return;\n }\n if (yawInc === 0 && pitchInc === 0) {\n return;\n }\n const camera = this._scene.camera;\n var dx = -yawInc;\n const dy = -pitchInc;\n if (camera.worldUp[2] === 1) {\n dx = -dx;\n }\n this._azimuth += -dx * .01;\n this._polar += dy * .01;\n this._polar = math.clamp(this._polar, .001, Math.PI - .001);\n const pos = [\n this._radius * Math.sin(this._polar) * Math.sin(this._azimuth),\n this._radius * Math.cos(this._polar),\n this._radius * Math.sin(this._polar) * Math.cos(this._azimuth)\n ];\n if (camera.worldUp[2] === 1) {\n const t = pos[1];\n pos[1] = pos[2];\n pos[2] = t;\n }\n // Preserve the eye->look distance, since in xeokit \"look\" is the point-of-interest, not the direction vector.\n const eyeLookLen = math.lenVec3(math.subVec3(camera.look, camera.eye, math.vec3()));\n const pivotPos = this.getPivotPos();\n math.addVec3(pos, pivotPos);\n let lookat = math.lookAtMat4v(pos, pivotPos, camera.worldUp);\n lookat = math.inverseMat4(lookat);\n const offset = math.transformVec3(lookat, this._cameraOffset);\n lookat[12] -= offset[0];\n lookat[13] -= offset[1];\n lookat[14] -= offset[2];\n const zAxis = [lookat[8], lookat[9], lookat[10]];\n camera.eye = [lookat[12], lookat[13], lookat[14]];\n math.subVec3(camera.eye, math.mulVec3Scalar(zAxis, eyeLookLen), camera.look);\n camera.up = [lookat[4], lookat[5], lookat[6]];\n this.showPivot();\n }\n\n /**\n * Shows the pivot position.\n *\n * Only works if we set an HTML DOM element to represent the pivot position.\n */\n showPivot() {\n if (this._shown) {\n return;\n }\n if (this._hideTimeout !== null) {\n window.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n }\n if (this._pivotElement) {\n this.updatePivotElement();\n this._pivotElement.style.visibility = \"visible\";\n this._shown = true;\n this._hideTimeout = window.setTimeout(() => {\n this.hidePivot();\n }, 1000);\n }\n }\n\n /**\n * Hides the pivot position.\n *\n * Only works if we set an HTML DOM element to represent the pivot position.\n */\n hidePivot() {\n if (!this._shown) {\n return;\n }\n if (this._hideTimeout !== null) {\n window.clearTimeout(this._hideTimeout);\n this._hideTimeout = null;\n }\n if (this._pivotElement) {\n this._pivotElement.style.visibility = \"hidden\";\n }\n this._shown = false;\n }\n\n /**\n * Finishes pivoting.\n */\n endPivot() {\n this._pivoting = false;\n }\n\n destroy() {\n this._scene.camera.off(this._onViewMatrix);\n this._scene.camera.off(this._onProjMatrix);\n this._scene.off(this._onTick);\n }\n}\n\n/**\n *\n * @private\n */\nclass PickController {\n\n constructor(cameraControl, configs) {\n\n this._scene = cameraControl.scene;\n\n this._cameraControl = cameraControl;\n\n this._scene.canvas.canvas.oncontextmenu = function (e) {\n e.preventDefault();\n };\n\n this._configs = configs;\n\n /**\n * Set true to schedule picking of an Entity.\n * @type {boolean}\n */\n this.schedulePickEntity = false;\n\n /**\n * Set true to schedule picking of a position on teh surface of an Entity.\n * @type {boolean}\n */\n this.schedulePickSurface = false;\n\n /**\n * The canvas position at which to do the next scheduled pick.\n * @type {Number[]}\n */\n this.pickCursorPos = math.vec2();\n\n /**\n * Will be true after picking to indicate that something was picked.\n * @type {boolean}\n */\n this.picked = false;\n\n /**\n * Will be true after picking to indicate that a position on the surface of an Entity was picked.\n * @type {boolean}\n */\n this.pickedSurface = false;\n\n /**\n * Will hold the PickResult after after picking.\n * @type {PickResult}\n */\n this.pickResult = null;\n\n this._lastPickedEntityId = null;\n\n this._needFireEvents = false;\n }\n\n /**\n * Immediately attempts a pick, if scheduled.\n */\n update() {\n\n if (!this._configs.pointerEnabled) {\n return;\n }\n\n if (!this.schedulePickEntity && !this.schedulePickSurface) {\n return;\n }\n\n this.picked = false;\n this.pickedSurface = false;\n this._needFireEvents = false;\n\n const hasHoverSurfaceSubs = this._cameraControl.hasSubs(\"hoverSurface\");\n\n if (this.schedulePickSurface) {\n if (this.pickResult && this.pickResult.worldPos) {\n const pickResultCanvasPos = this.pickResult.canvasPos;\n if (pickResultCanvasPos[0] === this.pickCursorPos[0] && pickResultCanvasPos[1] === this.pickCursorPos[1]) {\n this.picked = true;\n this.pickedSurface = true;\n this._needFireEvents = hasHoverSurfaceSubs;\n this.schedulePickEntity = false;\n this.schedulePickSurface = false;\n return;\n }\n }\n }\n\n if (this.schedulePickEntity) {\n if (this.pickResult) {\n const pickResultCanvasPos = this.pickResult.canvasPos;\n if (pickResultCanvasPos[0] === this.pickCursorPos[0] && pickResultCanvasPos[1] === this.pickCursorPos[1]) {\n this.picked = true;\n this.pickedSurface = false;\n this._needFireEvents = false;\n this.schedulePickEntity = false;\n this.schedulePickSurface = false;\n return;\n }\n }\n }\n\n if (this.schedulePickSurface) {\n\n this.pickResult = this._scene.pick({\n pickSurface: true,\n pickSurfaceNormal: false,\n canvasPos: this.pickCursorPos\n });\n\n if (this.pickResult) {\n this.picked = true;\n this.pickedSurface = true;\n this._needFireEvents = true;\n }\n\n } else { // schedulePickEntity == true\n\n this.pickResult = this._scene.pick({\n canvasPos: this.pickCursorPos\n });\n\n if (this.pickResult) {\n this.picked = true;\n this.pickedSurface = false;\n this._needFireEvents = true;\n }\n }\n\n this.schedulePickEntity = false;\n this.schedulePickSurface = false;\n }\n\n fireEvents() {\n\n if (!this._needFireEvents) {\n return;\n }\n\n if (this.picked && this.pickResult && this.pickResult.entity) {\n\n const pickedEntityId = this.pickResult.entity.id;\n\n if (this._lastPickedEntityId !== pickedEntityId) {\n\n if (this._lastPickedEntityId !== undefined) {\n this._cameraControl.fire(\"hoverOut\", {\n entity: this._scene.objects[this._lastPickedEntityId]\n }, true);\n }\n\n this._cameraControl.fire(\"hoverEnter\", this.pickResult, true);\n this._lastPickedEntityId = pickedEntityId;\n }\n\n this._cameraControl.fire(\"hover\", this.pickResult, true);\n\n if (this.pickResult.worldPos) {\n this.pickedSurface = true;\n this._cameraControl.fire(\"hoverSurface\", this.pickResult, true);\n }\n\n } else {\n\n if (this._lastPickedEntityId !== undefined) {\n this._cameraControl.fire(\"hoverOut\", {\n entity: this._scene.objects[this._lastPickedEntityId]\n }, true);\n this._lastPickedEntityId = undefined;\n }\n\n this._cameraControl.fire(\"hoverOff\", {\n canvasPos: this.pickCursorPos\n }, true);\n }\n\n this.pickResult = null;\n\n this._needFireEvents = false;\n }\n\n destroy() {\n }\n}\n\n/**\n * @private\n */\n\nconst canvasPos = math.vec2();\n\nconst getCanvasPosFromEvent$3 = function (event, canvasPos) {\n if (!event) {\n event = window.event;\n canvasPos[0] = event.x;\n canvasPos[1] = event.y;\n } else {\n let element = event.target;\n let totalOffsetLeft = 0;\n let totalOffsetTop = 0;\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n canvasPos[0] = event.pageX - totalOffsetLeft;\n canvasPos[1] = event.pageY - totalOffsetTop;\n }\n return canvasPos;\n};\n\n/**\n * @private\n */\nclass MousePanRotateDollyHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n\n const pickController = controllers.pickController;\n\n let lastX = 0;\n let lastY = 0;\n let lastXDown = 0;\n let lastYDown = 0;\n\n let mouseDownLeft;\n let mouseDownMiddle;\n let mouseDownRight;\n\n let mouseDownPicked = false;\n const pickedWorldPos = math.vec3();\n\n let mouseMovedOnCanvasSinceLastWheel = true;\n\n const canvas = this._scene.canvas.canvas;\n\n const keyDown = [];\n\n document.addEventListener(\"keydown\", this._documentKeyDownHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n const keyCode = e.keyCode;\n keyDown[keyCode] = true;\n });\n\n document.addEventListener(\"keyup\", this._documentKeyUpHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n const keyCode = e.keyCode;\n keyDown[keyCode] = false;\n });\n\n function setMousedownState(pick = true) {\n canvas.style.cursor = \"move\";\n setMousedownPositions();\n if (pick) {\n setMousedownPick();\n }\n }\n\n function setMousedownPositions() {\n\n lastX = states.pointerCanvasPos[0];\n lastY = states.pointerCanvasPos[1];\n lastXDown = states.pointerCanvasPos[0];\n lastYDown = states.pointerCanvasPos[1];\n }\n\n function setMousedownPick() {\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickSurface = true;\n pickController.update();\n\n if (pickController.picked && pickController.pickedSurface && pickController.pickResult && pickController.pickResult.worldPos) {\n mouseDownPicked = true;\n pickedWorldPos.set(pickController.pickResult.worldPos);\n } else {\n mouseDownPicked = false;\n }\n }\n\n canvas.addEventListener(\"mousedown\", this._mouseDownHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n switch (e.which) {\n\n case 1: // Left button\n\n if (keyDown[scene.input.KEY_SHIFT] || configs.planView) {\n\n mouseDownLeft = true;\n\n setMousedownState();\n\n } else {\n\n mouseDownLeft = true;\n\n setMousedownState(false);\n }\n\n break;\n\n case 2: // Middle/both buttons\n\n mouseDownMiddle = true;\n\n setMousedownState();\n\n break;\n\n case 3: // Right button\n\n mouseDownRight = true;\n\n if (configs.panRightClick) {\n\n setMousedownState();\n }\n\n break;\n }\n });\n\n document.addEventListener(\"mousemove\", this._documentMouseMoveHandler = () => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n if (!mouseDownLeft && !mouseDownMiddle && !mouseDownRight) {\n return;\n }\n\n // Scaling drag-rotate to canvas boundary\n\n const canvasBoundary = scene.canvas.boundary;\n const canvasWidth = canvasBoundary[2] - canvasBoundary[0];\n const canvasHeight = canvasBoundary[3] - canvasBoundary[1];\n const x = states.pointerCanvasPos[0];\n const y = states.pointerCanvasPos[1];\n\n const panning = keyDown[scene.input.KEY_SHIFT] || configs.planView || (!configs.panRightClick && mouseDownMiddle) || (configs.panRightClick && mouseDownRight);\n\n if (panning) {\n\n const xPanDelta = (x - lastX);\n const yPanDelta = (y - lastY);\n\n const camera = scene.camera;\n\n // We use only canvasHeight here so that aspect ratio does not distort speed\n\n if (camera.projection === \"perspective\") {\n\n const depth = Math.abs(mouseDownPicked ? math.lenVec3(math.subVec3(pickedWorldPos, scene.camera.eye, [])) : scene.camera.eyeLookDist);\n const targetDistance = depth * Math.tan((camera.perspective.fov / 2) * Math.PI / 180.0);\n\n updates.panDeltaX += (1.5 * xPanDelta * targetDistance / canvasHeight);\n updates.panDeltaY += (1.5 * yPanDelta * targetDistance / canvasHeight);\n\n } else {\n\n updates.panDeltaX += 0.5 * camera.ortho.scale * (xPanDelta / canvasHeight);\n updates.panDeltaY += 0.5 * camera.ortho.scale * (yPanDelta / canvasHeight);\n }\n\n } else if (mouseDownLeft && !mouseDownMiddle && !mouseDownRight) {\n\n if (!configs.planView) { // No rotating in plan-view mode\n\n if (configs.firstPerson) {\n updates.rotateDeltaY -= ((x - lastX) / canvasWidth) * configs.dragRotationRate / 2;\n updates.rotateDeltaX += ((y - lastY) / canvasHeight) * (configs.dragRotationRate / 4);\n\n } else {\n updates.rotateDeltaY -= ((x - lastX) / canvasWidth) * (configs.dragRotationRate * 1.5);\n updates.rotateDeltaX += ((y - lastY) / canvasHeight) * (configs.dragRotationRate * 1.5);\n }\n }\n }\n\n lastX = x;\n lastY = y;\n });\n\n canvas.addEventListener(\"mousemove\", this._canvasMouseMoveHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n if (!states.mouseover) {\n return;\n }\n\n mouseMovedOnCanvasSinceLastWheel = true;\n });\n\n document.addEventListener(\"mouseup\", this._documentMouseUpHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n switch (e.which) {\n case 1: // Left button\n mouseDownLeft = false;\n mouseDownMiddle = false;\n mouseDownRight = false;\n break;\n case 2: // Middle/both buttons\n mouseDownLeft = false;\n mouseDownMiddle = false;\n mouseDownRight = false;\n break;\n case 3: // Right button\n mouseDownLeft = false;\n mouseDownMiddle = false;\n mouseDownRight = false;\n break;\n }\n });\n\n canvas.addEventListener(\"mouseup\", this._mouseUpHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n switch (e.which) {\n case 3: // Right button\n getCanvasPosFromEvent$3(e, canvasPos);\n const x = canvasPos[0];\n const y = canvasPos[1];\n if (Math.abs(x - lastXDown) < 3 && Math.abs(y - lastYDown) < 3) {\n controllers.cameraControl.fire(\"rightClick\", { // For context menus\n pagePos: [Math.round(e.pageX), Math.round(e.pageY)],\n canvasPos: canvasPos,\n event: e\n }, true);\n }\n break;\n }\n canvas.style.removeProperty(\"cursor\");\n });\n\n canvas.addEventListener(\"mouseenter\", this._mouseEnterHandler = () => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n });\n\n const maxElapsed = 1 / 20;\n const minElapsed = 1 / 60;\n\n let secsNowLast = null;\n\n canvas.addEventListener(\"wheel\", this._mouseWheelHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n const secsNow = performance.now() / 1000.0;\n var secsElapsed = (secsNowLast !== null) ? (secsNow - secsNowLast) : 0;\n secsNowLast = secsNow;\n if (secsElapsed > maxElapsed) {\n secsElapsed = maxElapsed;\n }\n if (secsElapsed < minElapsed) {\n secsElapsed = minElapsed;\n }\n const delta = Math.max(-1, Math.min(1, -e.deltaY * 40));\n if (delta === 0) {\n return;\n }\n const normalizedDelta = delta / Math.abs(delta);\n updates.dollyDelta += -normalizedDelta * secsElapsed * configs.mouseWheelDollyRate;\n\n if (mouseMovedOnCanvasSinceLastWheel) {\n states.followPointerDirty = true;\n mouseMovedOnCanvasSinceLastWheel = false;\n }\n\n e.preventDefault();\n });\n }\n\n reset() {\n }\n\n destroy() {\n\n const canvas = this._scene.canvas.canvas;\n\n document.removeEventListener(\"keydown\", this._documentKeyDownHandler);\n document.removeEventListener(\"keyup\", this._documentKeyUpHandler);\n canvas.removeEventListener(\"mousedown\", this._mouseDownHandler);\n document.removeEventListener(\"mousemove\", this._documentMouseMoveHandler);\n canvas.removeEventListener(\"mousemove\", this._canvasMouseMoveHandler);\n document.removeEventListener(\"mouseup\", this._documentMouseUpHandler);\n canvas.removeEventListener(\"mouseup\", this._mouseUpHandler);\n canvas.removeEventListener(\"mouseenter\", this._mouseEnterHandler);\n canvas.removeEventListener(\"wheel\", this._mouseWheelHandler);\n }\n}\n\nconst center = math.vec3();\nconst tempVec3a = math.vec3();\nconst tempVec3b = math.vec3();\nconst tempVec3c = math.vec3();\nconst tempVec3d = math.vec3();\n\nconst tempCameraTarget = {\n eye: math.vec3(),\n look: math.vec3(),\n up: math.vec3()\n};\n\n/**\n * @private\n */\nclass KeyboardAxisViewHandler {\n\n constructor(scene, controllers, configs, states) {\n\n this._scene = scene;\n const cameraControl = controllers.cameraControl;\n const camera = scene.camera;\n\n this._onSceneKeyDown = scene.input.on(\"keydown\", () => {\n\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n\n if (!states.mouseover) {\n return;\n }\n\n const axisViewRight = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_RIGHT);\n const axisViewBack = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_BACK);\n const axisViewLeft = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_LEFT);\n const axisViewFront = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_FRONT);\n const axisViewTop = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_TOP);\n const axisViewBottom = cameraControl._isKeyDownForAction(cameraControl.AXIS_VIEW_BOTTOM);\n\n if ((!axisViewRight) && (!axisViewBack) && (!axisViewLeft) && (!axisViewFront) && (!axisViewTop) && (!axisViewBottom)) {\n return;\n }\n\n const aabb = scene.aabb;\n const diag = math.getAABB3Diag(aabb);\n\n math.getAABB3Center(aabb, center);\n\n const perspectiveDist = Math.abs(diag / Math.tan(controllers.cameraFlight.fitFOV * math.DEGTORAD));\n const orthoScale = diag * 1.1;\n\n tempCameraTarget.orthoScale = orthoScale;\n\n if (axisViewRight) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldRight, perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(camera.worldUp);\n\n } else if (axisViewBack) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldForward, perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(camera.worldUp);\n\n } else if (axisViewLeft) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldRight, -perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(camera.worldUp);\n\n } else if (axisViewFront) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldForward, -perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(camera.worldUp);\n\n } else if (axisViewTop) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldUp, perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(math.normalizeVec3(math.mulVec3Scalar(camera.worldForward, 1, tempVec3b), tempVec3c));\n\n } else if (axisViewBottom) {\n\n tempCameraTarget.eye.set(math.addVec3(center, math.mulVec3Scalar(camera.worldUp, -perspectiveDist, tempVec3a), tempVec3d));\n tempCameraTarget.look.set(center);\n tempCameraTarget.up.set(math.normalizeVec3(math.mulVec3Scalar(camera.worldForward, -1, tempVec3b)));\n }\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.setPivotPos(center);\n }\n\n if (controllers.cameraFlight.duration > 0) {\n controllers.cameraFlight.flyTo(tempCameraTarget, () => {\n if (controllers.pivotController.getPivoting() && configs.followPointer) {\n controllers.pivotController.showPivot();\n }\n });\n\n } else {\n controllers.cameraFlight.jumpTo(tempCameraTarget);\n if (controllers.pivotController.getPivoting() && configs.followPointer) {\n controllers.pivotController.showPivot();\n }\n }\n });\n }\n\n reset() {\n }\n\n destroy() {\n this._scene.input.off(this._onSceneKeyDown);\n }\n}\n\n/**\n * @private\n */\nclass MousePickHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n\n const pickController = controllers.pickController;\n const pivotController = controllers.pivotController;\n const cameraControl = controllers.cameraControl;\n\n this._clicks = 0;\n this._timeout = null;\n this._lastPickedEntityId = null;\n\n let leftDown = false;\n let rightDown = false;\n\n const canvas = this._scene.canvas.canvas;\n\n const flyCameraTo = (pickResult) => {\n let pos;\n if (pickResult && pickResult.worldPos) {\n pos = pickResult.worldPos;\n }\n const aabb = pickResult && pickResult.entity ? pickResult.entity.aabb : scene.aabb;\n if (pos) { // Fly to look at point, don't change eye->look dist\n const camera = scene.camera;\n math.subVec3(camera.eye, camera.look, []);\n controllers.cameraFlight.flyTo({\n // look: pos,\n // eye: xeokit.math.addVec3(pos, diff, []),\n // up: camera.up,\n aabb: aabb\n });\n // TODO: Option to back off to fit AABB in view\n } else {// Fly to fit target boundary in view\n controllers.cameraFlight.flyTo({\n aabb: aabb\n });\n }\n };\n\n canvas.addEventListener(\"mousemove\", this._canvasMouseMoveHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n if (leftDown || rightDown) {\n return;\n }\n\n const hoverSubs = cameraControl.hasSubs(\"hover\");\n const hoverOutSubs = cameraControl.hasSubs(\"hoverOut\");\n const hoverOffSubs = cameraControl.hasSubs(\"hoverOff\");\n const hoverSurfaceSubs = cameraControl.hasSubs(\"hoverSurface\");\n\n if (hoverSubs || hoverOutSubs || hoverOffSubs || hoverSurfaceSubs) {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = hoverSurfaceSubs;\n\n pickController.update();\n\n if (pickController.pickResult) {\n\n const pickedEntityId = pickController.pickResult.entity.id;\n\n if (this._lastPickedEntityId !== pickedEntityId) {\n\n if (this._lastPickedEntityId !== undefined) {\n\n cameraControl.fire(\"hoverOut\", { // Hovered off an entity\n entity: scene.objects[this._lastPickedEntityId]\n }, true);\n }\n\n cameraControl.fire(\"hoverEnter\", pickController.pickResult, true); // Hovering over a new entity\n\n this._lastPickedEntityId = pickedEntityId;\n }\n\n cameraControl.fire(\"hover\", pickController.pickResult, true);\n\n if (pickController.pickResult.worldPos) { // Hovering the surface of an entity\n cameraControl.fire(\"hoverSurface\", pickController.pickResult, true);\n }\n\n } else {\n\n if (this._lastPickedEntityId !== undefined) {\n\n cameraControl.fire(\"hoverOut\", { // Hovered off an entity\n entity: scene.objects[this._lastPickedEntityId]\n }, true);\n\n this._lastPickedEntityId = undefined;\n }\n\n cameraControl.fire(\"hoverOff\", { // Not hovering on any entity\n canvasPos: pickController.pickCursorPos\n }, true);\n }\n }\n });\n\n canvas.addEventListener('mousedown', this._canvasMouseDownHandler = (e) => {\n\n if (e.which === 1) {\n leftDown = true;\n }\n\n if (e.which === 3) {\n rightDown = true;\n }\n\n const leftButtonDown = (e.which === 1);\n\n if (!leftButtonDown) {\n return;\n }\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n // Left mouse button down to start pivoting\n\n states.mouseDownClientX = e.clientX;\n states.mouseDownClientY = e.clientY;\n states.mouseDownCursorX = states.pointerCanvasPos[0];\n states.mouseDownCursorY = states.pointerCanvasPos[1];\n\n if ((!configs.firstPerson) && configs.followPointer) {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickSurface = true;\n\n pickController.update();\n\n if (e.which === 1) {// Left button\n const pickResult = pickController.pickResult;\n if (pickResult && pickResult.worldPos) {\n pivotController.setPivotPos(pickResult.worldPos);\n pivotController.startPivot();\n } else {\n if (configs.smartPivot) {\n pivotController.setCanvasPivotPos(states.pointerCanvasPos);\n } else {\n pivotController.setPivotPos(scene.camera.look);\n }\n pivotController.startPivot();\n }\n }\n }\n });\n\n document.addEventListener('mouseup', this._documentMouseUpHandler = (e) => {\n\n if (e.which === 1) {\n leftDown = false;\n }\n\n if (e.which === 3) {\n rightDown = false;\n }\n });\n\n canvas.addEventListener('mouseup', this._canvasMouseUpHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n const leftButtonUp = (e.which === 1);\n\n if (!leftButtonUp) {\n return;\n }\n\n // Left mouse button up to possibly pick or double-pick\n\n pivotController.hidePivot();\n\n if (Math.abs(e.clientX - states.mouseDownClientX) > 3 || Math.abs(e.clientY - states.mouseDownClientY) > 3) {\n return;\n }\n\n const pickedSubs = cameraControl.hasSubs(\"picked\");\n const pickedNothingSubs = cameraControl.hasSubs(\"pickedNothing\");\n const pickedSurfaceSubs = cameraControl.hasSubs(\"pickedSurface\");\n const doublePickedSubs = cameraControl.hasSubs(\"doublePicked\");\n const doublePickedSurfaceSubs = cameraControl.hasSubs(\"doublePickedSurface\");\n const doublePickedNothingSubs = cameraControl.hasSubs(\"doublePickedNothing\");\n\n if ((!configs.doublePickFlyTo) &&\n (!doublePickedSubs) &&\n (!doublePickedSurfaceSubs) &&\n (!doublePickedNothingSubs)) {\n\n // Avoid the single/double click differentiation timeout\n\n if (pickedSubs || pickedNothingSubs || pickedSurfaceSubs) {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = pickedSurfaceSubs;\n pickController.update();\n\n if (pickController.pickResult) {\n\n cameraControl.fire(\"picked\", pickController.pickResult, true);\n\n if (pickController.pickedSurface) {\n cameraControl.fire(\"pickedSurface\", pickController.pickResult, true);\n }\n } else {\n cameraControl.fire(\"pickedNothing\", {\n canvasPos: states.pointerCanvasPos\n }, true);\n }\n }\n\n this._clicks = 0;\n\n return;\n }\n\n this._clicks++;\n\n if (this._clicks === 1) { // First click\n\n this._timeout = setTimeout(() => {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = configs.doublePickFlyTo;\n pickController.schedulePickSurface = pickedSurfaceSubs;\n pickController.update();\n\n if (pickController.pickResult) {\n\n cameraControl.fire(\"picked\", pickController.pickResult, true);\n\n if (pickController.pickedSurface) {\n\n cameraControl.fire(\"pickedSurface\", pickController.pickResult, true);\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.setPivotPos(pickController.pickResult.worldPos);\n if (controllers.pivotController.startPivot()) {\n controllers.pivotController.showPivot();\n }\n }\n }\n } else {\n cameraControl.fire(\"pickedNothing\", {\n canvasPos: states.pointerCanvasPos\n }, true);\n }\n\n this._clicks = 0;\n\n }, 250); // FIXME: Too short for track pads\n\n } else { // Second click\n\n if (this._timeout !== null) {\n window.clearTimeout(this._timeout);\n this._timeout = null;\n }\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickEntity = configs.doublePickFlyTo || doublePickedSubs || doublePickedSurfaceSubs;\n pickController.schedulePickSurface = pickController.schedulePickEntity && doublePickedSurfaceSubs;\n pickController.update();\n\n if (pickController.pickResult) {\n\n cameraControl.fire(\"doublePicked\", pickController.pickResult, true);\n\n if (pickController.pickedSurface) {\n cameraControl.fire(\"doublePickedSurface\", pickController.pickResult, true);\n }\n\n if (configs.doublePickFlyTo) {\n\n flyCameraTo(pickController.pickResult);\n\n if ((!configs.firstPerson) && configs.followPointer) {\n\n const pickedEntityAABB = pickController.pickResult.entity.aabb;\n const pickedEntityCenterPos = math.getAABB3Center(pickedEntityAABB);\n\n controllers.pivotController.setPivotPos(pickedEntityCenterPos);\n\n if (controllers.pivotController.startPivot()) {\n controllers.pivotController.showPivot();\n }\n }\n }\n\n } else {\n\n cameraControl.fire(\"doublePickedNothing\", {\n canvasPos: states.pointerCanvasPos\n }, true);\n\n if (configs.doublePickFlyTo) {\n\n flyCameraTo();\n\n if ((!configs.firstPerson) && configs.followPointer) {\n\n const sceneAABB = scene.aabb;\n const sceneCenterPos = math.getAABB3Center(sceneAABB);\n\n controllers.pivotController.setPivotPos(sceneCenterPos);\n\n if (controllers.pivotController.startPivot()) {\n controllers.pivotController.showPivot();\n }\n }\n }\n }\n\n this._clicks = 0;\n }\n }, false);\n }\n\n reset() {\n this._clicks = 0;\n this._lastPickedEntityId = null;\n if (this._timeout) {\n window.clearTimeout(this._timeout);\n this._timeout = null;\n }\n }\n\n destroy() {\n const canvas = this._scene.canvas.canvas;\n canvas.removeEventListener(\"mousemove\", this._canvasMouseMoveHandler);\n canvas.removeEventListener(\"mousedown\", this._canvasMouseDownHandler);\n document.removeEventListener(\"mouseup\", this._documentMouseUpHandler);\n canvas.removeEventListener(\"mouseup\", this._canvasMouseUpHandler);\n if (this._timeout) {\n window.clearTimeout(this._timeout);\n this._timeout = null;\n }\n }\n}\n\n/**\n * @private\n */\nclass KeyboardPanRotateDollyHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n const input = scene.input;\n\n const keyDownMap = [];\n\n const canvas = scene.canvas.canvas;\n\n let mouseMovedSinceLastKeyboardDolly = true;\n\n this._onSceneMouseMove = input.on(\"mousemove\", () => {\n mouseMovedSinceLastKeyboardDolly = true;\n });\n\n this._onSceneKeyDown = input.on(\"keydown\", (keyCode) => {\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n if (!states.mouseover) {\n return;\n }\n keyDownMap[keyCode] = true;\n\n if (keyCode === input.KEY_SHIFT) {\n canvas.style.cursor = \"move\";\n }\n });\n\n this._onSceneKeyUp = input.on(\"keyup\", (keyCode) => {\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n if (!states.mouseover) {\n return;\n }\n keyDownMap[keyCode] = false;\n\n if (keyCode === input.KEY_SHIFT) {\n canvas.style.cursor = null;\n }\n });\n\n this._onTick = scene.on(\"tick\", (e) => {\n\n if (!(configs.active && configs.pointerEnabled) || (!scene.input.keyboardEnabled)) {\n return;\n }\n\n if (!states.mouseover) {\n return;\n }\n\n const cameraControl = controllers.cameraControl;\n const elapsedSecs = (e.deltaTime / 1000.0);\n\n //-------------------------------------------------------------------------------------------------\n // Keyboard rotation\n //-------------------------------------------------------------------------------------------------\n\n if (!configs.planView) {\n\n const rotateYPos = cameraControl._isKeyDownForAction(cameraControl.ROTATE_Y_POS, keyDownMap);\n const rotateYNeg = cameraControl._isKeyDownForAction(cameraControl.ROTATE_Y_NEG, keyDownMap);\n const rotateXPos = cameraControl._isKeyDownForAction(cameraControl.ROTATE_X_POS, keyDownMap);\n const rotateXNeg = cameraControl._isKeyDownForAction(cameraControl.ROTATE_X_NEG, keyDownMap);\n\n const orbitDelta = elapsedSecs * configs.keyboardRotationRate;\n\n if (rotateYPos || rotateYNeg || rotateXPos || rotateXNeg) {\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.startPivot();\n }\n\n if (rotateYPos) {\n updates.rotateDeltaY += orbitDelta;\n\n } else if (rotateYNeg) {\n updates.rotateDeltaY -= orbitDelta;\n }\n\n if (rotateXPos) {\n updates.rotateDeltaX += orbitDelta;\n\n } else if (rotateXNeg) {\n updates.rotateDeltaX -= orbitDelta;\n }\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.startPivot();\n }\n }\n }\n\n //-------------------------------------------------------------------------------------------------\n // Keyboard panning\n //-------------------------------------------------------------------------------------------------\n\n if (!keyDownMap[input.KEY_CTRL] && !keyDownMap[input.KEY_ALT]) {\n\n const dollyBackwards = cameraControl._isKeyDownForAction(cameraControl.DOLLY_BACKWARDS, keyDownMap);\n const dollyForwards = cameraControl._isKeyDownForAction(cameraControl.DOLLY_FORWARDS, keyDownMap);\n\n if (dollyBackwards || dollyForwards) {\n\n const dollyDelta = elapsedSecs * configs.keyboardDollyRate;\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.startPivot();\n }\n if (dollyForwards) {\n updates.dollyDelta -= dollyDelta;\n } else if (dollyBackwards) {\n updates.dollyDelta += dollyDelta;\n }\n\n if (mouseMovedSinceLastKeyboardDolly) {\n states.followPointerDirty = true;\n mouseMovedSinceLastKeyboardDolly = false;\n }\n }\n }\n\n const panForwards = cameraControl._isKeyDownForAction(cameraControl.PAN_FORWARDS, keyDownMap);\n const panBackwards = cameraControl._isKeyDownForAction(cameraControl.PAN_BACKWARDS, keyDownMap);\n const panLeft = cameraControl._isKeyDownForAction(cameraControl.PAN_LEFT, keyDownMap);\n const panRight = cameraControl._isKeyDownForAction(cameraControl.PAN_RIGHT, keyDownMap);\n const panUp = cameraControl._isKeyDownForAction(cameraControl.PAN_UP, keyDownMap);\n const panDown = cameraControl._isKeyDownForAction(cameraControl.PAN_DOWN, keyDownMap);\n\n const panDelta = (keyDownMap[input.KEY_ALT] ? 0.3 : 1.0) * elapsedSecs * configs.keyboardPanRate; // ALT for slower pan rate\n\n if (panForwards || panBackwards || panLeft || panRight || panUp || panDown) {\n\n if ((!configs.firstPerson) && configs.followPointer) {\n controllers.pivotController.startPivot();\n }\n\n if (panDown) {\n updates.panDeltaY += panDelta;\n\n } else if (panUp) {\n updates.panDeltaY += -panDelta;\n }\n\n if (panRight) {\n updates.panDeltaX += -panDelta;\n\n } else if (panLeft) {\n updates.panDeltaX += panDelta;\n }\n\n if (panBackwards) {\n updates.panDeltaZ += panDelta;\n\n } else if (panForwards) {\n updates.panDeltaZ += -panDelta;\n }\n }\n });\n }\n\n reset() {\n }\n\n destroy() {\n\n this._scene.off(this._onTick);\n\n this._scene.input.off(this._onSceneMouseMove);\n this._scene.input.off(this._onSceneKeyDown);\n this._scene.input.off(this._onSceneKeyUp);\n }\n}\n\nconst SCALE_DOLLY_EACH_FRAME = 1; // Recalculate dolly speed for eye->target distance on each Nth frame\nconst EPSILON = 0.001;\nconst tempVec3 = math.vec3();\n\n/**\n * Handles camera updates on each \"tick\" that were scheduled by the various controllers.\n *\n * @private\n */\nclass CameraUpdater {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n const camera = scene.camera;\n const pickController = controllers.pickController;\n const pivotController = controllers.pivotController;\n const panController = controllers.panController;\n\n let countDown = SCALE_DOLLY_EACH_FRAME; // Decrements on each tick\n let dollyDistFactor = 1.0; // Calculated when countDown is zero\n let followPointerWorldPos = null; // Holds the pointer's World position when configs.followPointer is true\n \n this._onTick = scene.on(\"tick\", () => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n let cursorType = \"default\";\n\n //----------------------------------------------------------------------------------------------------------\n // Dolly decay\n //------------------------------------------------------------------------------------ ----------------------\n\n if (Math.abs(updates.dollyDelta) < EPSILON) {\n updates.dollyDelta = 0;\n }\n\n //----------------------------------------------------------------------------------------------------------\n // Rotation decay\n //----------------------------------------------------------------------------------------------------------\n\n if (Math.abs(updates.rotateDeltaX) < EPSILON) {\n updates.rotateDeltaX = 0;\n }\n\n if (Math.abs(updates.rotateDeltaY) < EPSILON) {\n updates.rotateDeltaY = 0;\n }\n\n if (updates.rotateDeltaX !== 0 || updates.rotateDeltaY !== 0) {\n updates.dollyDelta = 0;\n }\n\n //----------------------------------------------------------------------------------------------------------\n // Dolly speed eye->look scaling\n //\n // If pointer is over an object, then dolly speed is proportional to the distance to that object.\n //\n // If pointer is not over an object, then dolly speed is proportional to the distance to the last\n // object the pointer was over. This is so that we can dolly to structures that may have gaps through\n // which empty background shows, that the pointer may inadvertently be over. In these cases, we don't\n // want dolly speed wildly varying depending on how accurately the user avoids the gaps with the pointer.\n //----------------------------------------------------------------------------------------------------------\n\n if (configs.followPointer) {\n\n if (--countDown <= 0) {\n\n countDown = SCALE_DOLLY_EACH_FRAME;\n\n if (updates.dollyDelta !== 0) {\n if (updates.rotateDeltaY === 0 && updates.rotateDeltaX === 0) {\n\n if (configs.followPointer && states.followPointerDirty) {\n\n pickController.pickCursorPos = states.pointerCanvasPos;\n pickController.schedulePickSurface = true;\n pickController.update();\n\n if (pickController.pickResult && pickController.pickResult.worldPos) {\n followPointerWorldPos = pickController.pickResult.worldPos;\n \n } else {\n dollyDistFactor = 1.0;\n followPointerWorldPos = null;\n }\n\n states.followPointerDirty = false;\n }\n }\n\n if (followPointerWorldPos) {\n const dist = Math.abs(math.lenVec3(math.subVec3(followPointerWorldPos, scene.camera.eye, tempVec3)));\n dollyDistFactor = dist / configs.dollyProximityThreshold;\n }\n\n if (dollyDistFactor < configs.dollyMinSpeed) {\n dollyDistFactor = configs.dollyMinSpeed;\n }\n }\n }\n }\n\n const dollyDeltaForDist = (updates.dollyDelta * dollyDistFactor);\n\n //----------------------------------------------------------------------------------------------------------\n // Rotation\n //----------------------------------------------------------------------------------------------------------\n\n if (updates.rotateDeltaY !== 0 || updates.rotateDeltaX !== 0) {\n\n if ((!configs.firstPerson) && configs.followPointer && pivotController.getPivoting()) {\n pivotController.continuePivot(updates.rotateDeltaY, updates.rotateDeltaX);\n pivotController.showPivot();\n\n } else {\n\n if (updates.rotateDeltaX !== 0) {\n if (configs.firstPerson) {\n camera.pitch(-updates.rotateDeltaX);\n } else {\n camera.orbitPitch(updates.rotateDeltaX);\n }\n }\n\n if (updates.rotateDeltaY !== 0) {\n if (configs.firstPerson) {\n camera.yaw(updates.rotateDeltaY);\n } else {\n camera.orbitYaw(updates.rotateDeltaY);\n }\n }\n }\n\n updates.rotateDeltaX *= configs.rotationInertia;\n updates.rotateDeltaY *= configs.rotationInertia;\n\n cursorType = \"grabbing\";\n }\n\n //----------------------------------------------------------------------------------------------------------\n // Panning\n //----------------------------------------------------------------------------------------------------------\n\n if (Math.abs(updates.panDeltaX) < EPSILON) {\n updates.panDeltaX = 0;\n }\n\n if (Math.abs(updates.panDeltaY) < EPSILON) {\n updates.panDeltaY = 0;\n }\n\n if (Math.abs(updates.panDeltaZ) < EPSILON) {\n updates.panDeltaZ = 0;\n }\n\n if (updates.panDeltaX !== 0 || updates.panDeltaY !== 0 || updates.panDeltaZ !== 0) {\n\n const vec = math.vec3();\n\n vec[0] = updates.panDeltaX;\n vec[1] = updates.panDeltaY;\n vec[2] = updates.panDeltaZ;\n\n let verticalEye;\n let verticalLook;\n\n if (configs.constrainVertical) {\n\n if (camera.xUp) {\n verticalEye = camera.eye[0];\n verticalLook = camera.look[0];\n } else if (camera.yUp) {\n verticalEye = camera.eye[1];\n verticalLook = camera.look[1];\n } else if (camera.zUp) {\n verticalEye = camera.eye[2];\n verticalLook = camera.look[2];\n }\n\n camera.pan(vec);\n\n const eye = camera.eye;\n const look = camera.look;\n\n if (camera.xUp) {\n eye[0] = verticalEye;\n look[0] = verticalLook;\n } else if (camera.yUp) {\n eye[1] = verticalEye;\n look[1] = verticalLook;\n } else if (camera.zUp) {\n eye[2] = verticalEye;\n look[2] = verticalLook;\n }\n\n camera.eye = eye;\n camera.look = look;\n\n } else {\n camera.pan(vec);\n }\n\n cursorType = \"grabbing\";\n }\n\n updates.panDeltaX *= configs.panInertia;\n updates.panDeltaY *= configs.panInertia;\n updates.panDeltaZ *= configs.panInertia;\n\n //----------------------------------------------------------------------------------------------------------\n // Dollying\n //----------------------------------------------------------------------------------------------------------\n\n if (dollyDeltaForDist !== 0) {\n\n if (dollyDeltaForDist < 0) {\n cursorType = \"zoom-in\";\n } else {\n cursorType = \"zoom-out\";\n }\n\n if (configs.firstPerson) {\n\n let verticalEye;\n let verticalLook;\n\n if (configs.constrainVertical) {\n if (camera.xUp) {\n verticalEye = camera.eye[0];\n verticalLook = camera.look[0];\n } else if (camera.yUp) {\n verticalEye = camera.eye[1];\n verticalLook = camera.look[1];\n } else if (camera.zUp) {\n verticalEye = camera.eye[2];\n verticalLook = camera.look[2];\n }\n }\n\n if (configs.followPointer) {\n const dolliedThroughSurface = panController.dollyToCanvasPos(followPointerWorldPos, states.pointerCanvasPos, -dollyDeltaForDist);\n if (dolliedThroughSurface) {\n states.followPointerDirty = true;\n }\n } else {\n camera.pan([0, 0, dollyDeltaForDist]);\n camera.ortho.scale = camera.ortho.scale - dollyDeltaForDist;\n }\n\n if (configs.constrainVertical) {\n const eye = camera.eye;\n const look = camera.look;\n if (camera.xUp) {\n eye[0] = verticalEye;\n look[0] = verticalLook;\n } else if (camera.yUp) {\n eye[1] = verticalEye;\n look[1] = verticalLook;\n } else if (camera.zUp) {\n eye[2] = verticalEye;\n look[2] = verticalLook;\n }\n camera.eye = eye;\n camera.look = look;\n }\n\n } else if (configs.planView) {\n\n if (configs.followPointer) {\n const dolliedThroughSurface = panController.dollyToCanvasPos(followPointerWorldPos, states.pointerCanvasPos, -dollyDeltaForDist);\n if (dolliedThroughSurface) {\n states.followPointerDirty = true;\n }\n } else {\n camera.ortho.scale = camera.ortho.scale + dollyDeltaForDist;\n camera.zoom(dollyDeltaForDist);\n }\n\n } else { // Orbiting\n\n if (configs.followPointer) {\n const dolliedThroughSurface = panController.dollyToCanvasPos(followPointerWorldPos, states.pointerCanvasPos, -dollyDeltaForDist);\n if (dolliedThroughSurface) {\n states.followPointerDirty = true;\n }\n } else {\n camera.ortho.scale = camera.ortho.scale + dollyDeltaForDist;\n camera.zoom(dollyDeltaForDist);\n }\n }\n\n updates.dollyDelta *= configs.dollyInertia;\n }\n\n pickController.fireEvents();\n\n document.body.style.cursor = cursorType;\n });\n }\n\n\n destroy() {\n this._scene.off(this._onTick);\n }\n}\n\n/**\n * @private\n */\nclass MouseMiscHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n\n const canvas = this._scene.canvas.canvas;\n\n canvas.addEventListener(\"mouseenter\", this._mouseEnterHandler = () => {\n states.mouseover = true;\n });\n\n canvas.addEventListener(\"mouseleave\", this._mouseLeaveHandler = () => {\n states.mouseover = false;\n canvas.style.cursor = null;\n });\n\n document.addEventListener(\"mousemove\", this._mouseMoveHandler = (e) => {\n getCanvasPosFromEvent$2(e, canvas, states.pointerCanvasPos);\n });\n\n canvas.addEventListener(\"mousedown\", this._mouseDownHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n getCanvasPosFromEvent$2(e, canvas, states.pointerCanvasPos);\n states.mouseover = true;\n });\n\n canvas.addEventListener(\"mouseup\", this._mouseUpHandler = (e) => {\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n });\n }\n\n reset() {\n }\n\n destroy() {\n\n const canvas = this._scene.canvas.canvas;\n\n document.removeEventListener(\"mousemove\", this._mouseMoveHandler);\n canvas.removeEventListener(\"mouseenter\", this._mouseEnterHandler);\n canvas.removeEventListener(\"mouseleave\", this._mouseLeaveHandler);\n canvas.removeEventListener(\"mousedown\", this._mouseDownHandler);\n canvas.removeEventListener(\"mouseup\", this._mouseUpHandler);\n }\n}\n\nfunction getCanvasPosFromEvent$2(event, canvas, canvasPos) {\n if (!event) {\n event = window.event;\n canvasPos[0] = event.x;\n canvasPos[1] = event.y;\n } else {\n const { x, y } = canvas.getBoundingClientRect();\n canvasPos[0] = event.clientX - x;\n canvasPos[1] = event.clientY - y;\n }\n return canvasPos;\n}\n\nconst getCanvasPosFromEvent$1 = function (event, canvasPos) {\n if (!event) {\n event = window.event;\n canvasPos[0] = event.x;\n canvasPos[1] = event.y;\n } else {\n let element = event.target;\n let totalOffsetLeft = 0;\n let totalOffsetTop = 0;\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n canvasPos[0] = event.pageX - totalOffsetLeft;\n canvasPos[1] = event.pageY - totalOffsetTop;\n }\n return canvasPos;\n};\n\n/**\n * @private\n */\nclass TouchPanRotateAndDollyHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n\n const pickController = controllers.pickController;\n const pivotController = controllers.pivotController;\n\n const tapStartCanvasPos = math.vec2();\n const tapCanvasPos0 = math.vec2();\n const tapCanvasPos1 = math.vec2();\n const touch0Vec = math.vec2();\n\n const lastCanvasTouchPosList = [];\n const canvas = this._scene.canvas.canvas;\n\n let numTouches = 0;\n let waitForTick = false;\n\n this._onTick = scene.on(\"tick\", () => {\n waitForTick = false;\n });\n\n canvas.addEventListener(\"touchstart\", this._canvasTouchStartHandler = (event) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n event.preventDefault();\n\n const touches = event.touches;\n const changedTouches = event.changedTouches;\n\n states.touchStartTime = Date.now();\n\n if (touches.length === 1 && changedTouches.length === 1) {\n\n states.touchStartTime;\n\n getCanvasPosFromEvent$1(touches[0], tapStartCanvasPos);\n\n if (configs.followPointer) {\n\n pickController.pickCursorPos = tapStartCanvasPos;\n pickController.schedulePickSurface = true;\n pickController.update();\n\n if (!configs.planView) {\n\n if (pickController.picked && pickController.pickedSurface && pickController.pickResult && pickController.pickResult.worldPos) {\n\n pivotController.setPivotPos(pickController.pickResult.worldPos);\n\n if (!configs.firstPerson && pivotController.startPivot()) {\n pivotController.showPivot();\n }\n\n } else {\n\n if (configs.smartPivot) {\n pivotController.setCanvasPivotPos(states.pointerCanvasPos);\n } else {\n pivotController.setPivotPos(scene.camera.look);\n }\n\n if (!configs.firstPerson && pivotController.startPivot()) {\n pivotController.showPivot();\n }\n }\n }\n }\n\n }\n\n while (lastCanvasTouchPosList.length < touches.length) {\n lastCanvasTouchPosList.push(math.vec2());\n }\n\n for (let i = 0, len = touches.length; i < len; ++i) {\n getCanvasPosFromEvent$1(touches[i], lastCanvasTouchPosList[i]);\n }\n\n numTouches = touches.length;\n });\n\n canvas.addEventListener(\"touchmove\", this._canvasTouchMoveHandler = (event) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n\n if (waitForTick) {\n // Limit changes detection to one per frame\n return;\n }\n\n waitForTick = true;\n\n // Scaling drag-rotate to canvas boundary\n\n const canvasBoundary = scene.canvas.boundary;\n const canvasWidth = canvasBoundary[2] - canvasBoundary[0];\n const canvasHeight = canvasBoundary[3] - canvasBoundary[1];\n\n const touches = event.touches;\n\n if (event.touches.length !== numTouches) {\n // Two fingers were pressed, then one of them is removed\n // We don't want to rotate in this case (weird behavior)\n return;\n }\n\n if (numTouches === 1) {\n\n getCanvasPosFromEvent$1(touches[0], tapCanvasPos0);\n\n //-----------------------------------------------------------------------------------------------\n // Drag rotation\n //-----------------------------------------------------------------------------------------------\n\n math.subVec2(tapCanvasPos0, lastCanvasTouchPosList[0], touch0Vec);\n\n const xPanDelta = touch0Vec[0];\n const yPanDelta = touch0Vec[1];\n\n if (states.longTouchTimeout !== null && (Math.abs(xPanDelta) > configs.longTapRadius || Math.abs(yPanDelta) > configs.longTapRadius)) {\n clearTimeout(states.longTouchTimeout);\n states.longTouchTimeout = null;\n }\n\n if (configs.planView) { // No rotating in plan-view mode\n\n const camera = scene.camera;\n\n // We use only canvasHeight here so that aspect ratio does not distort speed\n\n if (camera.projection === \"perspective\") {\n\n const depth = Math.abs(scene.camera.eyeLookDist);\n const targetDistance = depth * Math.tan((camera.perspective.fov / 2) * Math.PI / 180.0);\n\n updates.panDeltaX += (xPanDelta * targetDistance / canvasHeight) * configs.touchPanRate;\n updates.panDeltaY += (yPanDelta * targetDistance / canvasHeight) * configs.touchPanRate;\n\n } else {\n\n updates.panDeltaX += 0.5 * camera.ortho.scale * (xPanDelta / canvasHeight) * configs.touchPanRate;\n updates.panDeltaY += 0.5 * camera.ortho.scale * (yPanDelta / canvasHeight) * configs.touchPanRate;\n }\n\n } else {\n updates.rotateDeltaY -= (xPanDelta / canvasWidth) * (configs.dragRotationRate * 1.0); // Full horizontal rotation\n updates.rotateDeltaX += (yPanDelta / canvasHeight) * (configs.dragRotationRate * 1.5); // Half vertical rotation\n }\n\n } else if (numTouches === 2) {\n\n const touch0 = touches[0];\n const touch1 = touches[1];\n\n getCanvasPosFromEvent$1(touch0, tapCanvasPos0);\n getCanvasPosFromEvent$1(touch1, tapCanvasPos1);\n\n const lastMiddleTouch = math.geometricMeanVec2(lastCanvasTouchPosList[0], lastCanvasTouchPosList[1]);\n const currentMiddleTouch = math.geometricMeanVec2(tapCanvasPos0, tapCanvasPos1);\n\n const touchDelta = math.vec2();\n\n math.subVec2(lastMiddleTouch, currentMiddleTouch, touchDelta);\n\n const xPanDelta = touchDelta[0];\n const yPanDelta = touchDelta[1];\n\n const camera = scene.camera;\n\n // Dollying\n\n const d1 = math.distVec2([touch0.pageX, touch0.pageY], [touch1.pageX, touch1.pageY]);\n const d2 = math.distVec2(lastCanvasTouchPosList[0], lastCanvasTouchPosList[1]);\n\n const dollyDelta = (d2 - d1) * configs.touchDollyRate;\n\n updates.dollyDelta = dollyDelta;\n\n if (Math.abs(dollyDelta) < 1.0) {\n\n // We use only canvasHeight here so that aspect ratio does not distort speed\n\n if (camera.projection === \"perspective\") {\n const pickedWorldPos = pickController.pickResult ? pickController.pickResult.worldPos : scene.center;\n\n const depth = Math.abs(math.lenVec3(math.subVec3(pickedWorldPos, scene.camera.eye, [])));\n const targetDistance = depth * Math.tan((camera.perspective.fov / 2) * Math.PI / 180.0);\n\n updates.panDeltaX -= (xPanDelta * targetDistance / canvasHeight) * configs.touchPanRate;\n updates.panDeltaY -= (yPanDelta * targetDistance / canvasHeight) * configs.touchPanRate;\n\n } else {\n\n updates.panDeltaX -= 0.5 * camera.ortho.scale * (xPanDelta / canvasHeight) * configs.touchPanRate;\n updates.panDeltaY -= 0.5 * camera.ortho.scale * (yPanDelta / canvasHeight) * configs.touchPanRate;\n }\n }\n\n\n states.pointerCanvasPos = currentMiddleTouch;\n }\n\n for (let i = 0; i < numTouches; ++i) {\n getCanvasPosFromEvent$1(touches[i], lastCanvasTouchPosList[i]);\n }\n });\n }\n\n reset() {\n }\n\n destroy() {\n const canvas = this._scene.canvas.canvas;\n canvas.removeEventListener(\"touchstart\", this._canvasTouchStartHandler);\n canvas.removeEventListener(\"touchmove\", this._canvasTouchMoveHandler);\n this._scene.off(this._onTick);\n }\n}\n\nconst TAP_INTERVAL = 150;\nconst DBL_TAP_INTERVAL = 325;\nconst TAP_DISTANCE_THRESHOLD = 4;\n\nconst getCanvasPosFromEvent = function (event, canvasPos) {\n if (!event) {\n event = window.event;\n canvasPos[0] = event.x;\n canvasPos[1] = event.y;\n } else {\n let element = event.target;\n let totalOffsetLeft = 0;\n let totalOffsetTop = 0;\n while (element.offsetParent) {\n totalOffsetLeft += element.offsetLeft;\n totalOffsetTop += element.offsetTop;\n element = element.offsetParent;\n }\n canvasPos[0] = event.pageX - totalOffsetLeft;\n canvasPos[1] = event.pageY - totalOffsetTop;\n }\n return canvasPos;\n};\n\n/**\n * @private\n */\nclass TouchPickHandler {\n\n constructor(scene, controllers, configs, states, updates) {\n\n this._scene = scene;\n\n const pickController = controllers.pickController;\n const cameraControl = controllers.cameraControl;\n\n let touchStartTime;\n const activeTouches = [];\n const tapStartPos = new Float32Array(2);\n let tapStartTime = -1;\n let lastTapTime = -1;\n\n const canvas = this._scene.canvas.canvas;\n\n const flyCameraTo = (pickResult) => {\n let pos;\n if (pickResult && pickResult.worldPos) {\n pos = pickResult.worldPos;\n }\n const aabb = pickResult ? pickResult.entity.aabb : scene.aabb;\n if (pos) { // Fly to look at point, don't change eye->look dist\n const camera = scene.camera;\n math.subVec3(camera.eye, camera.look, []);\n controllers.cameraFlight.flyTo({\n aabb: aabb\n });\n // TODO: Option to back off to fit AABB in view\n } else {// Fly to fit target boundary in view\n controllers.cameraFlight.flyTo({\n aabb: aabb\n });\n }\n };\n\n canvas.addEventListener(\"touchstart\", this._canvasTouchStartHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n if (states.longTouchTimeout !== null) {\n clearTimeout(states.longTouchTimeout);\n states.longTouchTimeout = null;\n }\n\n const touches = e.touches;\n const changedTouches = e.changedTouches;\n\n touchStartTime = Date.now();\n\n if (touches.length === 1 && changedTouches.length === 1) {\n tapStartTime = touchStartTime;\n\n getCanvasPosFromEvent(touches[0], tapStartPos);\n\n const rightClickClientX = tapStartPos[0];\n const rightClickClientY = tapStartPos[1];\n\n const rightClickPageX = touches[0].pageX;\n const rightClickPageY = touches[0].pageY;\n\n states.longTouchTimeout = setTimeout(() => {\n controllers.cameraControl.fire(\"rightClick\", { // For context menus\n pagePos: [Math.round(rightClickPageX), Math.round(rightClickPageY)],\n canvasPos: [Math.round(rightClickClientX), Math.round(rightClickClientY)],\n event: e\n }, true);\n\n states.longTouchTimeout = null;\n }, configs.longTapTimeout);\n\n } else {\n tapStartTime = -1;\n }\n\n while (activeTouches.length < touches.length) {\n activeTouches.push(new Float32Array(2));\n }\n\n for (let i = 0, len = touches.length; i < len; ++i) {\n getCanvasPosFromEvent(touches[i], activeTouches[i]);\n }\n\n activeTouches.length = touches.length;\n\n }, {passive: true});\n\n\n canvas.addEventListener(\"touchend\", this._canvasTouchEndHandler = (e) => {\n\n if (!(configs.active && configs.pointerEnabled)) {\n return;\n }\n\n const currentTime = Date.now();\n const touches = e.touches;\n const changedTouches = e.changedTouches;\n\n const pickedSurfaceSubs = cameraControl.hasSubs(\"pickedSurface\");\n\n if (states.longTouchTimeout !== null) {\n clearTimeout(states.longTouchTimeout);\n states.longTouchTimeout = null;\n }\n\n // process tap\n\n if (touches.length === 0 && changedTouches.length === 1) {\n\n if (tapStartTime > -1 && currentTime - tapStartTime < TAP_INTERVAL) {\n\n if (lastTapTime > -1 && tapStartTime - lastTapTime < DBL_TAP_INTERVAL) {\n\n // Double-tap\n\n getCanvasPosFromEvent(changedTouches[0], pickController.pickCursorPos);\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = pickedSurfaceSubs;\n\n pickController.update();\n\n if (pickController.pickResult) {\n\n cameraControl.fire(\"doublePicked\", pickController.pickResult);\n\n if (pickController.pickedSurface) {\n cameraControl.fire(\"doublePickedSurface\", pickController.pickResult);\n }\n\n if (configs.doublePickFlyTo) {\n flyCameraTo(pickController.pickResult);\n }\n } else {\n cameraControl.fire(\"doublePickedNothing\");\n if (configs.doublePickFlyTo) {\n flyCameraTo();\n }\n }\n\n lastTapTime = -1;\n\n } else if (math.distVec2(activeTouches[0], tapStartPos) < TAP_DISTANCE_THRESHOLD) {\n\n // Single-tap\n\n getCanvasPosFromEvent(changedTouches[0], pickController.pickCursorPos);\n pickController.schedulePickEntity = true;\n pickController.schedulePickSurface = pickedSurfaceSubs;\n\n pickController.update();\n\n if (pickController.pickResult) {\n\n cameraControl.fire(\"picked\", pickController.pickResult);\n\n if (pickController.pickedSurface) {\n cameraControl.fire(\"pickedSurface\", pickController.pickResult);\n }\n\n } else {\n cameraControl.fire(\"pickedNothing\");\n }\n\n lastTapTime = currentTime;\n }\n\n tapStartTime = -1;\n }\n }\n\n activeTouches.length = touches.length;\n\n for (let i = 0, len = touches.length; i < len; ++i) {\n activeTouches[i][0] = touches[i].pageX;\n activeTouches[i][1] = touches[i].pageY;\n }\n\n e.stopPropagation();\n\n }, {passive: true});\n\n }\n\n reset() {\n // TODO\n // tapStartTime = -1;\n // lastTapTime = -1;\n\n }\n\n destroy() {\n const canvas = this._scene.canvas.canvas;\n canvas.removeEventListener(\"touchstart\", this._canvasTouchStartHandler);\n canvas.removeEventListener(\"touchend\", this._canvasTouchEndHandler);\n }\n}\n\n/**\n * @desc Controls the {@link Camera} with user input, and fires events when the user interacts with pickable {@link Entity}s.\n *\n * # Contents\n *\n * * [Overview](#overview)\n * * [Examples](#examples)\n * * [Orbit Mode](#orbit-mode)\n * + [Following the Pointer in Orbit Mode](#--following-the-pointer-in-orbit-mode--)\n * + [Showing the Pivot Position](#--showing-the-pivot-position--)\n * + [Axis-Aligned Views in Orbit Mode](#--axis-aligned-views-in-orbit-mode--)\n * + [View-Fitting Entitys in Orbit Mode](#--view-fitting-entitys-in-orbit-mode--)\n * * [First-Person Mode](#first-person-mode)\n * + [Following the Pointer in First-Person Mode](#--following-the-pointer-in-first-person-mode--)\n * + [Constraining Vertical Position in First-Person Mode](#--constraining-vertical-position-in-first-person-mode--)\n * + [Axis-Aligned Views in First-Person Mode](#--axis-aligned-views-in-first-person-mode--)\n * + [View-Fitting Entitys in First-Person Mode](#--view-fitting-entitys-in-first-person-mode--)\n * * [Plan-View Mode](#plan-view-mode)\n * + [Following the Pointer in Plan-View Mode](#--following-the-pointer-in-plan-view-mode--)\n * + [Axis-Aligned Views in Plan-View Mode](#--axis-aligned-views-in-plan-view-mode--)\n * * [CameraControl Events](#cameracontrol-events)\n * + [\"hover\"](#---hover---)\n * + [\"hoverOff\"](#---hoveroff---)\n * + [\"hoverEnter\"](#---hoverenter---)\n * + [\"hoverOut\"](#---hoverout---)\n * + [\"picked\"](#---picked---)\n * + [\"pickedSurface\"](#---pickedsurface---)\n * + [\"pickedNothing\"](#---pickednothing---)\n * + [\"doublePicked\"](#---doublepicked---)\n * + [\"doublePickedSurface\"](#---doublepickedsurface---)\n * + [\"doublePickedNothing\"](#---doublepickednothing---)\n * + [\"rightClick\"](#---rightclick---)\n * * [Custom Keyboard Mappings](#custom-keyboard-mappings)\n *\n *

    \n *\n * # Overview\n *\n * * Each {@link Viewer} has a ````CameraControl````, located at {@link Viewer#cameraControl}.\n * * {@link CameraControl#navMode} selects the navigation mode:\n * * ````\"orbit\"```` rotates the {@link Camera} position about the target.\n * * ````\"firstPerson\"```` rotates the World about the Camera position.\n * * ````\"planView\"```` never rotates, but still allows to pan and dolly, typically for an axis-aligned view.\n * * {@link CameraControl#followPointer} makes the Camera follow the mouse or touch pointer.\n * * {@link CameraControl#constrainVertical} locks the Camera to its current height when in first-person mode.\n * * ````CameraControl```` fires pick events when we hover, click or tap on an {@link Entity}.\n *

    \n *\n * # Examples\n *\n * * [Orbit Navigation - Duplex Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_orbit_Duplex)\n * * [Orbit Navigation - Holter Tower Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_orbit_HolterTower)\n * * [First-Person Navigation - Duplex Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_firstPerson_Duplex)\n * * [First-Person Navigation - Holter Tower Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_firstPerson_HolterTower)\n * * [Plan-view Navigation - Schependomlaan Model](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_planView_Schependomlaan)\n * * [Custom Keyboard Mapping](https://xeokit.github.io/xeokit-sdk/examples/#CameraControl_keyMap)\n *

    \n *\n * # Orbit Mode\n *\n * In orbit mode, ````CameraControl```` orbits the {@link Camera} about the target.\n *\n * To enable orbit mode:\n *\n * ````javascript\n * const cameraControl = myViewer.cameraControl;\n * cameraControl.navMode = \"orbit\";\n * ````\n *\n * Then orbit by:\n *\n * * left-dragging the mouse,\n * * tap-dragging the touch pad, and\n * * pressing arrow keys, or ````Q```` and ````E```` on a QWERTY keyboard, or ````A```` and ````E```` on an AZERTY keyboard.\n *

    \n *\n * Dolly forwards and backwards by:\n *\n * * spinning the mouse wheel,\n * * pinching on the touch pad, and\n * * pressing the ````+```` and ````-```` keys, or ````W```` and ````S```` on a QWERTY keyboard, or ````Z```` and ````S```` for AZERTY.\n *

    \n *\n * Pan horizontally and vertically by:\n *\n * * right-dragging the mouse,\n * * left-dragging the mouse with the SHIFT key down,\n * * tap-dragging the touch pad with SHIFT down,\n * * pressing the ````A````, ````D````, ````Z```` and ````X```` keys on a QWERTY keyboard, and\n * * pressing the ````Q````, ````D````, ````W```` and ````X```` keys on an AZERTY keyboard,\n *

    \n *\n * ## Following the Pointer in Orbit Mode\n *\n * When {@link CameraControl#followPointer} is ````true````in orbiting mode, the mouse or touch pointer will dynamically\n * indicate the target that the {@link Camera} will orbit, as well as dolly to and from.\n *\n * Lets ensure that we're in orbit mode, then enable the {@link Camera} to follow the pointer:\n *\n * ````javascript\n * cameraControl.navMode = \"orbit\";\n * cameraControl.followPointer = true;\n * ````\n *\n * ## Smart Pivoting\n *\n * TODO\n *\n * ## Showing the Pivot Position\n *\n * We can configure {@link CameraControl#pivotElement} with an HTML element to indicate the current\n * pivot position. The indicator will appear momentarily each time we move the {@link Camera} while in orbit mode with\n * {@link CameraControl#followPointer} set ````true````.\n *\n * First we'll define some CSS to style our pivot indicator as a black dot with a white border:\n *\n * ````css\n * .camera-pivot-marker {\n * color: #ffffff;\n * position: absolute;\n * width: 25px;\n * height: 25px;\n * border-radius: 15px;\n * border: 2px solid #ebebeb;\n * background: black;\n * visibility: hidden;\n * box-shadow: 5px 5px 15px 1px #000000;\n * z-index: 10000;\n * pointer-events: none;\n * }\n * ````\n *\n * Then we'll attach our pivot indicator's HTML element to the ````CameraControl````:\n *\n * ````javascript\n * const pivotElement = document.createRange().createContextualFragment(\"
    \").firstChild;\n *\n * document.body.appendChild(pivotElement);\n *\n * cameraControl.pivotElement = pivotElement;\n * ````\n *\n * ## Axis-Aligned Views in Orbit Mode\n *\n * In orbit mode, we can use keys 1-6 to position the {@link Camera} to look at the center of the {@link Scene} from along each of the\n * six World-space axis. Pressing one of these keys will fly the {@link Camera} to the corresponding axis-aligned view.\n *\n * ## View-Fitting Entitys in Orbit Mode\n *\n * When {@link CameraControl#doublePickFlyTo} is ````true````, we can left-double-click or\n * double-tap (ie. \"double-pick\") an {@link Entity} to fit it to view. This will cause the {@link Camera}\n * to fly to that Entity. Our target then becomes the center of that Entity. If we are currently pivoting,\n * then our pivot position is then also set to the Entity center.\n *\n * Disable that behaviour by setting {@link CameraControl#doublePickFlyTo} ````false````.\n *\n * # First-Person Mode\n *\n * In first-person mode, ````CameraControl```` rotates the World about the {@link Camera} position.\n *\n * To enable first-person mode:\n *\n * ````javascript\n * cameraControl.navMode = \"firstPerson\";\n * ````\n *\n * Then rotate by:\n *\n * * left-dragging the mouse,\n * * tap-dragging the touch pad,\n * * pressing arrow keys, or ````Q```` and ````E```` on a QWERTY keyboard, or ````A```` and ````E```` on an AZERTY keyboard.\n *

    \n *\n * Dolly forwards and backwards by:\n *\n * * spinning the mouse wheel,\n * * pinching on the touch pad, and\n * * pressing the ````+```` and ````-```` keys, or ````W```` and ````S```` on a QWERTY keyboard, or ````Z```` and ````S```` for AZERTY.\n *

    \n *\n * Pan left, right, up and down by:\n *\n * * left-dragging or right-dragging the mouse, and\n * * tap-dragging the touch pad with SHIFT down.\n *\n * Pan forwards, backwards, left, right, up and down by pressing the ````WSADZX```` keys on a QWERTY keyboard,\n * or ````WSQDWX```` keys on an AZERTY keyboard.\n *

    \n *\n * ## Following the Pointer in First-Person Mode\n *\n * When {@link CameraControl#followPointer} is ````true```` in first-person mode, the mouse or touch pointer will dynamically\n * indicate the target to which the {@link Camera} will dolly to and from. In first-person mode, however, the World will always rotate\n * about the {@link Camera} position.\n *\n * Lets ensure that we're in first-person mode, then enable the {@link Camera} to follow the pointer:\n *\n * ````javascript\n * cameraControl.navMode = \"firstPerson\";\n * cameraControl.followPointer = true;\n * ````\n *\n * When the pointer is over empty space, the target will remain the last object that the pointer was over.\n *\n * ## Constraining Vertical Position in First-Person Mode\n *\n * In first-person mode, we can lock the {@link Camera} to its current position on the vertical World axis, which is useful for walk-through navigation:\n *\n * ````javascript\n * cameraControl.constrainVertical = true;\n * ````\n *\n * ## Axis-Aligned Views in First-Person Mode\n *\n * In first-person mode we can use keys 1-6 to position the {@link Camera} to look at the center of\n * the {@link Scene} from along each of the six World-space axis. Pressing one of these keys will fly the {@link Camera} to the\n * corresponding axis-aligned view.\n *\n * ## View-Fitting Entitys in First-Person Mode\n *\n * As in orbit mode, when in first-person mode and {@link CameraControl#doublePickFlyTo} is ````true````, we can double-click\n * or double-tap an {@link Entity} (ie. \"double-picking\") to fit it in view. This will cause the {@link Camera} to fly to\n * that Entity. Our target then becomes the center of that Entity.\n *\n * Disable that behaviour by setting {@link CameraControl#doublePickFlyTo} ````false````.\n *\n * # Plan-View Mode\n *\n * In plan-view mode, ````CameraControl```` pans and rotates the {@link Camera}, without rotating it.\n *\n * To enable plan-view mode:\n *\n * ````javascript\n * cameraControl.navMode = \"planView\";\n * ````\n *\n * Dolly forwards and backwards by:\n *\n * * spinning the mouse wheel,\n * * pinching on the touch pad, and\n * * pressing the ````+```` and ````-```` keys.\n *\n *
    \n * Pan left, right, up and down by:\n *\n * * left-dragging or right-dragging the mouse, and\n * * tap-dragging the touch pad with SHIFT down.\n *\n * Pan forwards, backwards, left, right, up and down by pressing the ````WSADZX```` keys on a QWERTY keyboard,\n * or ````WSQDWX```` keys on an AZERTY keyboard.\n *

    \n *\n * ## Following the Pointer in Plan-View Mode\n *\n * When {@link CameraControl#followPointer} is ````true```` in plan-view mode, the mouse or touch pointer will dynamically\n * indicate the target to which the {@link Camera} will dolly to and from. In plan-view mode, however, the {@link Camera} cannot rotate.\n *\n * Lets ensure that we're in plan-view mode, then enable the {@link Camera} to follow the pointer:\n *\n * ````javascript\n * cameraControl.navMode = \"planView\";\n * cameraControl.followPointer = true; // Default\n * ````\n *\n * When the pointer is over empty space, the target will remain the last object that the pointer was over.\n *\n * ## Axis-Aligned Views in Plan-View Mode\n *\n * As in orbit and first-person modes, in plan-view mode we can use keys 1-6 to position the {@link Camera} to look at the center of\n * the {@link Scene} from along each of the six World-space axis. Pressing one of these keys will fly the {@link Camera} to the\n * corresponding axis-aligned view.\n *\n * # CameraControl Events\n *\n * ````CameraControl```` fires events as we interact with {@link Entity}s using mouse or touch input.\n *\n * The following examples demonstrate how to subscribe to those events.\n *\n * The first example shows how to save a handle to a subscription, which we can later use to unsubscribe.\n *\n * ## \"hover\"\n *\n * Event fired when the pointer moves while hovering over an Entity.\n *\n * ````javascript\n * const onHover = cameraControl.on(\"hover\", (e) => {\n * const entity = e.entity; // Entity\n * const canvasPos = e.canvasPos; // 2D canvas position\n * });\n * ````\n *\n * To unsubscribe from the event:\n *\n * ````javascript\n * cameraControl.off(onHover);\n * ````\n *\n * ## \"hoverOff\"\n *\n * Event fired when the pointer moves while hovering over empty space.\n *\n * ````javascript\n * cameraControl.on(\"hoverOff\", (e) => {\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"hoverEnter\"\n *\n * Event fired when the pointer moves onto an Entity.\n *\n * ````javascript\n * cameraControl.on(\"hoverEnter\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"hoverOut\"\n *\n * Event fired when the pointer moves off an Entity.\n *\n * ````javascript\n * cameraControl.on(\"hoverOut\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"picked\"\n *\n * Event fired when we left-click or tap on an Entity.\n *\n * ````javascript\n * cameraControl.on(\"picked\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"pickedSurface\"\n *\n * Event fired when we left-click or tap on the surface of an Entity.\n *\n * ````javascript\n * cameraControl.on(\"picked\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * const worldPos = e.worldPos; // 3D World-space position\n * const viewPos = e.viewPos; // 3D View-space position\n * const worldNormal = e.worldNormal; // 3D World-space normal vector\n * });\n * ````\n *\n * ## \"pickedNothing\"\n *\n * Event fired when we left-click or tap on empty space.\n *\n * ````javascript\n * cameraControl.on(\"pickedNothing\", (e) => {\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"doublePicked\"\n *\n * Event fired wwhen we left-double-click or double-tap on an Entity.\n *\n * ````javascript\n * cameraControl.on(\"doublePicked\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"doublePickedSurface\"\n *\n * Event fired when we left-double-click or double-tap on the surface of an Entity.\n *\n * ````javascript\n * cameraControl.on(\"doublePickedSurface\", (e) => {\n * const entity = e.entity;\n * const canvasPos = e.canvasPos;\n * const worldPos = e.worldPos;\n * const viewPos = e.viewPos;\n * const worldNormal = e.worldNormal;\n * });\n * ````\n *\n * ## \"doublePickedNothing\"\n *\n * Event fired when we left-double-click or double-tap on empty space.\n *\n * ````javascript\n * cameraControl.on(\"doublePickedNothing\", (e) => {\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## \"rightClick\"\n *\n * Event fired when we right-click on the canvas.\n *\n * ````javascript\n * cameraControl.on(\"rightClick\", (e) => {\n * const event = e.event; // Mouse event\n * const canvasPos = e.canvasPos;\n * });\n * ````\n *\n * ## Custom Keyboard Mappings\n *\n * We can customize````CameraControl```` key bindings as shown below.\n *\n * In this example, we'll just set the default bindings for a QWERTY keyboard.\n *\n * ````javascript\n * const input = myViewer.scene.input;\n *\n * cameraControl.navMode = \"orbit\";\n * cameraControl.followPointer = true;\n *\n * const keyMap = {};\n *\n * keyMap[cameraControl.PAN_LEFT] = [input.KEY_A];\n * keyMap[cameraControl.PAN_RIGHT] = [input.KEY_D];\n * keyMap[cameraControl.PAN_UP] = [input.KEY_Z];\n * keyMap[cameraControl.PAN_DOWN] = [input.KEY_X];\n * keyMap[cameraControl.DOLLY_FORWARDS] = [input.KEY_W, input.KEY_ADD];\n * keyMap[cameraControl.DOLLY_BACKWARDS] = [input.KEY_S, input.KEY_SUBTRACT];\n * keyMap[cameraControl.ROTATE_X_POS] = [input.KEY_DOWN_ARROW];\n * keyMap[cameraControl.ROTATE_X_NEG] = [input.KEY_UP_ARROW];\n * keyMap[cameraControl.ROTATE_Y_POS] = [input.KEY_LEFT_ARROW];\n * keyMap[cameraControl.ROTATE_Y_NEG] = [input.KEY_RIGHT_ARROW];\n * keyMap[cameraControl.AXIS_VIEW_RIGHT] = [input.KEY_NUM_1];\n * keyMap[cameraControl.AXIS_VIEW_BACK] = [input.KEY_NUM_2];\n * keyMap[cameraControl.AXIS_VIEW_LEFT] = [input.KEY_NUM_3];\n * keyMap[cameraControl.AXIS_VIEW_FRONT] = [input.KEY_NUM_4];\n * keyMap[cameraControl.AXIS_VIEW_TOP] = [input.KEY_NUM_5];\n * keyMap[cameraControl.AXIS_VIEW_BOTTOM] = [input.KEY_NUM_6];\n *\n * cameraControl.keyMap = keyMap;\n * ````\n *\n * We can also just configure default bindings for a specified keyboard layout, like this:\n *\n * ````javascript\n * cameraControl.keyMap = \"qwerty\";\n * ````\n *\n * Then, ````CameraControl```` will internally set {@link CameraControl#keyMap} to the default key map for the QWERTY\n * layout (which is the same set of mappings we set in the previous example). In other words, if we subsequently\n * read {@link CameraControl#keyMap}, it will now be a key map, instead of the \"qwerty\" string value we set it to.\n *\n * Supported layouts are, so far:\n *\n * * ````\"qwerty\"````\n * * ````\"azerty\"````\n */\nclass CameraControl extends Component {\n\n /**\n * @private\n * @constructor\n */\n constructor(owner, cfg = {}) {\n\n super(owner, cfg);\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_LEFT = 0;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_RIGHT = 1;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_UP = 2;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_DOWN = 3;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_FORWARDS = 4;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.PAN_BACKWARDS = 5;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.ROTATE_X_POS = 6;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.ROTATE_X_NEG = 7;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.ROTATE_Y_POS = 8;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.ROTATE_Y_NEG = 9;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.DOLLY_FORWARDS = 10;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.DOLLY_BACKWARDS = 11;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_RIGHT = 12;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_BACK = 13;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_LEFT = 14;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_FRONT = 15;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_TOP = 16;\n\n /**\n * Identifies the XX action.\n * @final\n * @type {Number}\n */\n this.AXIS_VIEW_BOTTOM = 17;\n\n this._keyMap = {}; // Maps key codes to the above actions\n\n this.scene.canvas.canvas.oncontextmenu = (e) => {\n e.preventDefault();\n };\n\n // User-settable CameraControl configurations\n\n this._configs = {\n\n // Private\n\n longTapTimeout: 600, // Millisecs\n longTapRadius: 5, // Pixels\n\n // General\n\n active: true,\n keyboardLayout: \"qwerty\",\n navMode: \"orbit\",\n planView: false,\n firstPerson: false,\n followPointer: true,\n doublePickFlyTo: true,\n panRightClick: true,\n showPivot: false,\n pointerEnabled: true,\n constrainVertical: false,\n smartPivot: false,\n\n // Rotation\n\n dragRotationRate: 360.0,\n keyboardRotationRate: 90.0,\n rotationInertia: 0.0,\n\n // Panning\n\n keyboardPanRate: 1.0,\n touchPanRate: 1.0,\n panInertia: 0.5,\n\n // Dollying\n\n keyboardDollyRate: 10,\n mouseWheelDollyRate: 100,\n touchDollyRate: 0.2,\n dollyInertia: 0,\n dollyProximityThreshold: 30.0,\n dollyMinSpeed: 0.04\n };\n\n // Current runtime state of the CameraControl\n\n this._states = {\n pointerCanvasPos: math.vec2(),\n mouseover: false,\n followPointerDirty: true,\n mouseDownClientX: 0,\n mouseDownClientY: 0,\n mouseDownCursorX: 0,\n mouseDownCursorY: 0,\n touchStartTime: null,\n activeTouches: [],\n tapStartPos: math.vec2(),\n tapStartTime: -1,\n lastTapTime: -1,\n longTouchTimeout: null\n };\n\n // Updates for CameraUpdater to process on next Scene \"tick\" event\n\n this._updates = {\n rotateDeltaX: 0,\n rotateDeltaY: 0,\n panDeltaX: 0,\n panDeltaY: 0,\n panDeltaZ: 0,\n dollyDelta: 0\n };\n\n // Controllers to assist input event handlers with controlling the Camera\n\n const scene = this.scene;\n\n this._controllers = {\n cameraControl: this,\n pickController: new PickController(this, this._configs),\n pivotController: new PivotController(scene, this._configs),\n panController: new PanController(scene),\n cameraFlight: new CameraFlightAnimation(this, {\n duration: 0.5\n })\n };\n\n // Input event handlers\n\n this._handlers = [\n new MouseMiscHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new TouchPanRotateAndDollyHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new MousePanRotateDollyHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new KeyboardAxisViewHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new MousePickHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new TouchPickHandler(this.scene, this._controllers, this._configs, this._states, this._updates),\n new KeyboardPanRotateDollyHandler(this.scene, this._controllers, this._configs, this._states, this._updates)\n ];\n\n // Applies scheduled updates to the Camera on each Scene \"tick\" event\n\n this._cameraUpdater = new CameraUpdater(this.scene, this._controllers, this._configs, this._states, this._updates);\n\n // Set initial user configurations\n\n this.navMode = cfg.navMode;\n if (cfg.planView) {\n this.planView = cfg.planView;\n }\n this.constrainVertical = cfg.constrainVertical;\n if (cfg.keyboardLayout) {\n this.keyboardLayout = cfg.keyboardLayout; // Deprecated\n } else {\n this.keyMap = cfg.keyMap;\n }\n this.doublePickFlyTo = cfg.doublePickFlyTo;\n this.panRightClick = cfg.panRightClick;\n this.active = cfg.active;\n this.followPointer = cfg.followPointer;\n this.rotationInertia = cfg.rotationInertia;\n this.keyboardPanRate = cfg.keyboardPanRate;\n this.touchPanRate = cfg.touchPanRate;\n this.keyboardRotationRate = cfg.keyboardRotationRate;\n this.dragRotationRate = cfg.dragRotationRate;\n this.touchDollyRate = cfg.touchDollyRate;\n this.dollyInertia = cfg.dollyInertia;\n this.dollyProximityThreshold = cfg.dollyProximityThreshold;\n this.dollyMinSpeed = cfg.dollyMinSpeed;\n this.panInertia = cfg.panInertia;\n this.pointerEnabled = true;\n this.keyboardDollyRate = cfg.keyboardDollyRate;\n this.mouseWheelDollyRate = cfg.mouseWheelDollyRate;\n }\n\n /**\n * Sets custom mappings of keys to ````CameraControl```` actions.\n *\n * See class docs for usage.\n *\n * @param {{Number:Number}|String} value Either a set of new key mappings, or a string to select a keyboard layout,\n * which causes ````CameraControl```` to use the default key mappings for that layout.\n */\n set keyMap(value) {\n value = value || \"qwerty\";\n if (utils.isString(value)) {\n const input = this.scene.input;\n const keyMap = {};\n\n switch (value) {\n\n default:\n this.error(\"Unsupported value for 'keyMap': \" + value + \" defaulting to 'qwerty'\");\n // Intentional fall-through to \"qwerty\"\n case \"qwerty\":\n keyMap[this.PAN_LEFT] = [input.KEY_A];\n keyMap[this.PAN_RIGHT] = [input.KEY_D];\n keyMap[this.PAN_UP] = [input.KEY_Z];\n keyMap[this.PAN_DOWN] = [input.KEY_X];\n keyMap[this.PAN_BACKWARDS] = [];\n keyMap[this.PAN_FORWARDS] = [];\n keyMap[this.DOLLY_FORWARDS] = [input.KEY_W, input.KEY_ADD];\n keyMap[this.DOLLY_BACKWARDS] = [input.KEY_S, input.KEY_SUBTRACT];\n keyMap[this.ROTATE_X_POS] = [input.KEY_DOWN_ARROW];\n keyMap[this.ROTATE_X_NEG] = [input.KEY_UP_ARROW];\n keyMap[this.ROTATE_Y_POS] = [input.KEY_Q, input.KEY_LEFT_ARROW];\n keyMap[this.ROTATE_Y_NEG] = [input.KEY_E, input.KEY_RIGHT_ARROW];\n keyMap[this.AXIS_VIEW_RIGHT] = [input.KEY_NUM_1];\n keyMap[this.AXIS_VIEW_BACK] = [input.KEY_NUM_2];\n keyMap[this.AXIS_VIEW_LEFT] = [input.KEY_NUM_3];\n keyMap[this.AXIS_VIEW_FRONT] = [input.KEY_NUM_4];\n keyMap[this.AXIS_VIEW_TOP] = [input.KEY_NUM_5];\n keyMap[this.AXIS_VIEW_BOTTOM] = [input.KEY_NUM_6];\n break;\n\n case \"azerty\":\n keyMap[this.PAN_LEFT] = [input.KEY_Q];\n keyMap[this.PAN_RIGHT] = [input.KEY_D];\n keyMap[this.PAN_UP] = [input.KEY_W];\n keyMap[this.PAN_DOWN] = [input.KEY_X];\n keyMap[this.PAN_BACKWARDS] = [];\n keyMap[this.PAN_FORWARDS] = [];\n keyMap[this.DOLLY_FORWARDS] = [input.KEY_Z, input.KEY_ADD];\n keyMap[this.DOLLY_BACKWARDS] = [input.KEY_S, input.KEY_SUBTRACT];\n keyMap[this.ROTATE_X_POS] = [input.KEY_DOWN_ARROW];\n keyMap[this.ROTATE_X_NEG] = [input.KEY_UP_ARROW];\n keyMap[this.ROTATE_Y_POS] = [input.KEY_A, input.KEY_LEFT_ARROW];\n keyMap[this.ROTATE_Y_NEG] = [input.KEY_E, input.KEY_RIGHT_ARROW];\n keyMap[this.AXIS_VIEW_RIGHT] = [input.KEY_NUM_1];\n keyMap[this.AXIS_VIEW_BACK] = [input.KEY_NUM_2];\n keyMap[this.AXIS_VIEW_LEFT] = [input.KEY_NUM_3];\n keyMap[this.AXIS_VIEW_FRONT] = [input.KEY_NUM_4];\n keyMap[this.AXIS_VIEW_TOP] = [input.KEY_NUM_5];\n keyMap[this.AXIS_VIEW_BOTTOM] = [input.KEY_NUM_6];\n break;\n }\n\n this._keyMap = keyMap;\n } else {\n const keyMap = value;\n this._keyMap = keyMap;\n }\n }\n\n /**\n * Gets custom mappings of keys to {@link CameraControl} actions.\n *\n * @returns {{Number:Number}} Current key mappings.\n */\n get keyMap() {\n return this._keyMap;\n }\n\n /**\n * Returns true if any keys configured for the given action are down.\n * @param action\n * @param keyDownMap\n * @private\n */\n _isKeyDownForAction(action, keyDownMap) {\n const keys = this._keyMap[action];\n if (!keys) {\n return false;\n }\n if (!keyDownMap) {\n keyDownMap = this.scene.input.keyDown;\n }\n for (let i = 0, len = keys.length; i < len; i++) {\n const key = keys[i];\n if (keyDownMap[key]) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Sets the HTMl element to represent the pivot point when {@link CameraControl#followPointer} is true.\n *\n * See class comments for an example.\n *\n * @param {HTMLElement} element HTML element representing the pivot point.\n */\n set pivotElement(element) {\n this._controllers.pivotController.setPivotElement(element);\n }\n\n /**\n * Sets if this ````CameraControl```` is active or not.\n *\n * When inactive, the ````CameraControl```` will not react to input.\n *\n * Default is ````true````.\n *\n * @param {Boolean} value Set ````true```` to activate this ````CameraControl````.\n */\n set active(value) {\n this._configs.active = value !== false;\n }\n\n /**\n * Gets if this ````CameraControl```` is active or not.\n *\n * When inactive, the ````CameraControl```` will not react to input.\n *\n * Default is ````true````.\n *\n * @returns {Boolean} Returns ````true```` if this ````CameraControl```` is active.\n */\n get active() {\n return this._configs.active;\n }\n\n /**\n * Sets the current navigation mode.\n *\n * Accepted values are:\n *\n * * \"orbit\" - rotation orbits about the current target or pivot point,\n * * \"firstPerson\" - rotation is about the current eye position,\n * * \"planView\" - rotation is disabled.\n *\n * See class comments for more info.\n *\n * @param {String} navMode The navigation mode: \"orbit\", \"firstPerson\" or \"planView\".\n */\n set navMode(navMode) {\n navMode = navMode || \"orbit\";\n if (navMode !== \"firstPerson\" && navMode !== \"orbit\" && navMode !== \"planView\") {\n this.error(\"Unsupported value for navMode: \" + navMode + \" - supported values are 'orbit', 'firstPerson' and 'planView' - defaulting to 'orbit'\");\n navMode = \"orbit\";\n }\n this._configs.firstPerson = (navMode === \"firstPerson\");\n this._configs.planView = (navMode === \"planView\");\n if (this._configs.firstPerson || this._configs.planView) {\n this._controllers.pivotController.hidePivot();\n this._controllers.pivotController.endPivot();\n }\n this._configs.navMode = navMode;\n }\n\n /**\n * Gets the current navigation mode.\n *\n * @returns {String} The navigation mode: \"orbit\", \"firstPerson\" or \"planView\".\n */\n get navMode() {\n return this._configs.navMode;\n }\n\n /**\n * Sets whether mouse and touch input is enabled.\n *\n * Default is ````true````.\n *\n * Disabling mouse and touch input on ````CameraControl```` is useful when we want to temporarily use mouse or\n * touch input to interact with some other 3D control, without disturbing the {@link Camera}.\n *\n * @param {Boolean} value Set ````true```` to enable mouse and touch input.\n */\n set pointerEnabled(value) {\n this._reset();\n this._configs.pointerEnabled = !!value;\n }\n\n _reset() {\n for (let i = 0, len = this._handlers.length; i < len; i++) {\n const handler = this._handlers[i];\n if (handler.reset) {\n handler.reset();\n }\n }\n\n this._updates.panDeltaX = 0;\n this._updates.panDeltaY = 0;\n this._updates.rotateDeltaX = 0;\n this._updates.rotateDeltaY = 0;\n this._updates.dolyDelta = 0;\n }\n\n /**\n * Gets whether mouse and touch input is enabled.\n *\n * Default is ````true````.\n *\n * Disabling mouse and touch input on ````CameraControl```` is desirable when we want to temporarily use mouse or\n * touch input to interact with some other 3D control, without interfering with the {@link Camera}.\n *\n * @returns {Boolean} Returns ````true```` if mouse and touch input is enabled.\n */\n get pointerEnabled() {\n return this._configs.pointerEnabled;\n }\n\n /**\n * Sets whether the {@link Camera} follows the mouse/touch pointer.\n *\n * In orbiting mode, the Camera will orbit about the pointer, and will dolly to and from the pointer.\n *\n * In fly-to mode, the Camera will dolly to and from the pointer, however the World will always rotate about the Camera position.\n *\n * In plan-view mode, the Camera will dolly to and from the pointer, however the Camera will not rotate.\n *\n * Default is ````true````.\n *\n * See class comments for more info.\n *\n * @param {Boolean} value Set ````true```` to enable the Camera to follow the pointer.\n */\n set followPointer(value) {\n this._configs.followPointer = (value !== false);\n }\n\n /**\n * Sets whether the {@link Camera} follows the mouse/touch pointer.\n *\n * In orbiting mode, the Camera will orbit about the pointer, and will dolly to and from the pointer.\n *\n * In fly-to mode, the Camera will dolly to and from the pointer, however the World will always rotate about the Camera position.\n *\n * In plan-view mode, the Camera will dolly to and from the pointer, however the Camera will not rotate.\n *\n * Default is ````true````.\n *\n * See class comments for more info.\n *\n * @returns {Boolean} Returns ````true```` if the Camera follows the pointer.\n */\n get followPointer() {\n return this._configs.followPointer;\n }\n\n /**\n * Sets the current World-space 3D target position.\n *\n * Only applies when {@link CameraControl#followPointer} is ````true````.\n *\n * @param {Number[]} worldPos The new World-space 3D target position.\n */\n set pivotPos(worldPos) {\n this._controllers.pivotController.setPivotPos(worldPos);\n }\n\n /**\n * Gets the current World-space 3D pivot position.\n *\n * Only applies when {@link CameraControl#followPointer} is ````true````.\n *\n * @return {Number[]} worldPos The current World-space 3D pivot position.\n */\n get pivotPos() {\n return this._controllers.pivotController.getPivotPos();\n }\n\n /**\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n */\n set dollyToPointer(value) {\n this.warn(\"dollyToPointer property is deprecated - replaced with followPointer\");\n this.followPointer = value;\n }\n\n /**\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n */\n get dollyToPointer() {\n this.warn(\"dollyToPointer property is deprecated - replaced with followPointer\");\n return this.followPointer;\n }\n\n /**\n * @deprecated\n * @param {Boolean} value Set ````true```` to enable dolly-to-pointer behaviour.\n */\n set panToPointer(value) {\n this.warn(\"panToPointer property is deprecated - replaced with followPointer\");\n }\n\n /**\n * @deprecated\n * @returns {Boolean} Returns ````true```` if dolly-to-pointer behaviour is enabled.\n */\n get panToPointer() {\n this.warn(\"panToPointer property is deprecated - replaced with followPointer\");\n return false;\n }\n\n /**\n * Sets whether this ````CameraControl```` is in plan-view mode.\n *\n * When in plan-view mode, rotation is disabled.\n *\n * Default is ````false````.\n *\n * Deprecated - use {@link CameraControl#navMode} instead.\n *\n * @param {Boolean} value Set ````true```` to enable plan-view mode.\n * @deprecated\n */\n set planView(value) {\n this._configs.planView = !!value;\n this._configs.firstPerson = false;\n if (this._configs.planView) {\n this._controllers.pivotController.hidePivot();\n this._controllers.pivotController.endPivot();\n }\n this.warn(\"planView property is deprecated - replaced with navMode\");\n }\n\n /**\n * Gets whether this ````CameraControl```` is in plan-view mode.\n *\n * When in plan-view mode, rotation is disabled.\n *\n * Default is ````false````.\n *\n * Deprecated - use {@link CameraControl#navMode} instead.\n *\n * @returns {Boolean} Returns ````true```` if plan-view mode is enabled.\n * @deprecated\n */\n get planView() {\n this.warn(\"planView property is deprecated - replaced with navMode\");\n return this._configs.planView;\n }\n\n /**\n * Sets whether this ````CameraControl```` is in first-person mode.\n *\n * In \"first person\" mode (disabled by default) the look position rotates about the eye position. Otherwise, {@link Camera#eye} rotates about {@link Camera#look}.\n *\n * Default is ````false````.\n *\n * Deprecated - use {@link CameraControl#navMode} instead.\n *\n * @param {Boolean} value Set ````true```` to enable first-person mode.\n * @deprecated\n */\n set firstPerson(value) {\n this.warn(\"firstPerson property is deprecated - replaced with navMode\");\n this._configs.firstPerson = !!value;\n this._configs.planView = false;\n if (this._configs.firstPerson) {\n this._controllers.pivotController.hidePivot();\n this._controllers.pivotController.endPivot();\n }\n }\n\n /**\n * Gets whether this ````CameraControl```` is in first-person mode.\n *\n * In \"first person\" mode (disabled by default) the look position rotates about the eye position. Otherwise, {@link Camera#eye} rotates about {@link Camera#look}.\n *\n * Default is ````false````.\n *\n * Deprecated - use {@link CameraControl#navMode} instead.\n *\n * @returns {Boolean} Returns ````true```` if first-person mode is enabled.\n * @deprecated\n */\n get firstPerson() {\n this.warn(\"firstPerson property is deprecated - replaced with navMode\");\n return this._configs.firstPerson;\n }\n\n /**\n * Sets whether to vertically constrain the {@link Camera} position for first-person navigation.\n *\n * When set ````true````, this constrains {@link Camera#eye} to its current vertical position.\n *\n * Only applies when {@link CameraControl#navMode} is ````\"firstPerson\"````.\n *\n * Default is ````false````.\n *\n * @param {Boolean} value Set ````true```` to vertically constrain the Camera.\n */\n set constrainVertical(value) {\n this._configs.constrainVertical = !!value;\n }\n\n /**\n * Gets whether to vertically constrain the {@link Camera} position for first-person navigation.\n *\n * When set ````true````, this constrains {@link Camera#eye} to its current vertical position.\n *\n * Only applies when {@link CameraControl#navMode} is ````\"firstPerson\"````.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} ````true```` when Camera is vertically constrained.\n */\n get constrainVertical() {\n return this._configs.constrainVertical;\n }\n\n /**\n * Sets whether double-picking an {@link Entity} causes the {@link Camera} to fly to its boundary.\n *\n * Default is ````false````.\n *\n * @param {Boolean} value Set ````true```` to enable double-pick-fly-to mode.\n */\n set doublePickFlyTo(value) {\n this._configs.doublePickFlyTo = value !== false;\n }\n\n /**\n * Gets whether double-picking an {@link Entity} causes the {@link Camera} to fly to its boundary.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} Returns ````true```` when double-pick-fly-to mode is enabled.\n */\n get doublePickFlyTo() {\n return this._configs.doublePickFlyTo;\n }\n\n /**\n * Sets whether either right-clicking (true) or middle-clicking (false) pans the {@link Camera}.\n *\n * Default is ````true````.\n *\n * @param {Boolean} value Set ````false```` to disable pan on right-click.\n */\n set panRightClick(value) {\n this._configs.panRightClick = value !== false;\n }\n\n /**\n * Gets whether right-clicking pans the {@link Camera}.\n *\n * Default is ````true````.\n *\n * @returns {Boolean} Returns ````false```` when pan on right-click is disabled.\n */\n get panRightClick() {\n return this._configs.panRightClick;\n }\n\n /**\n * Sets a factor in range ````[0..1]```` indicating how much the {@link Camera} keeps moving after you finish rotating it.\n *\n * A value of ````0.0```` causes it to immediately stop, ````0.5```` causes its movement to decay 50% on each tick,\n * while ````1.0```` causes no decay, allowing it continue moving, by the current rate of rotation.\n *\n * You may choose an inertia of zero when you want be able to precisely rotate the Camera,\n * without interference from inertia. Zero inertia can also mean that less frames are rendered while\n * you are rotating the Camera.\n *\n * Default is ````0.0````.\n *\n * Does not apply when {@link CameraControl#navMode} is ````\"planView\"````, which disallows rotation.\n *\n * @param {Number} rotationInertia New inertial factor.\n */\n set rotationInertia(rotationInertia) {\n this._configs.rotationInertia = (rotationInertia !== undefined && rotationInertia !== null) ? rotationInertia : 0.0;\n }\n\n /**\n * Gets the rotation inertia factor.\n *\n * Default is ````0.0````.\n *\n * Does not apply when {@link CameraControl#navMode} is ````\"planView\"````, which disallows rotation.\n *\n * @returns {Number} The inertia factor.\n */\n get rotationInertia() {\n return this._configs.rotationInertia;\n }\n\n /**\n * Sets how much the {@link Camera} pans each second with keyboard input.\n *\n * Default is ````5.0````, to pan the Camera ````5.0```` World-space units every second that\n * a panning key is depressed. See the ````CameraControl```` class documentation for which keys control\n * panning.\n *\n * Panning direction is aligned to our Camera's orientation. When we pan horizontally, we pan\n * to our left and right, when we pan vertically, we pan upwards and downwards, and when we pan forwards\n * and backwards, we pan along the direction the Camera is pointing.\n *\n * Unlike dollying when {@link followPointer} is ````true````, panning does not follow the pointer.\n *\n * @param {Number} keyboardPanRate The new keyboard pan rate.\n */\n set keyboardPanRate(keyboardPanRate) {\n this._configs.keyboardPanRate = (keyboardPanRate !== null && keyboardPanRate !== undefined) ? keyboardPanRate : 5.0;\n }\n\n\n /**\n * Sets how fast the camera pans on touch panning\n *\n * @param {Number} touchPanRate The new touch pan rate.\n */\n set touchPanRate(touchPanRate) {\n this._configs.touchPanRate = (touchPanRate !== null && touchPanRate !== undefined) ? touchPanRate : 1.0;\n }\n\n /**\n * Gets how fast the {@link Camera} pans on touch panning\n *\n * Default is ````1.0````.\n *\n * @returns {Number} The current touch pan rate.\n */\n get touchPanRate() {\n return this._configs.touchPanRate;\n }\n\n /**\n * Gets how much the {@link Camera} pans each second with keyboard input.\n *\n * Default is ````5.0````.\n *\n * @returns {Number} The current keyboard pan rate.\n */\n get keyboardPanRate() {\n return this._configs.keyboardPanRate;\n }\n\n /**\n * Sets how many degrees per second the {@link Camera} rotates/orbits with keyboard input.\n *\n * Default is ````90.0````, to rotate/orbit the Camera ````90.0```` degrees every second that\n * a rotation key is depressed. See the ````CameraControl```` class documentation for which keys control\n * rotation/orbit.\n *\n * @param {Number} keyboardRotationRate The new keyboard rotation rate.\n */\n set keyboardRotationRate(keyboardRotationRate) {\n this._configs.keyboardRotationRate = (keyboardRotationRate !== null && keyboardRotationRate !== undefined) ? keyboardRotationRate : 90.0;\n }\n\n /**\n * Sets how many degrees per second the {@link Camera} rotates/orbits with keyboard input.\n *\n * Default is ````90.0````.\n *\n * @returns {Number} The current keyboard rotation rate.\n */\n get keyboardRotationRate() {\n return this._configs.keyboardRotationRate;\n }\n\n /**\n * Sets the current drag rotation rate.\n *\n * This configures how many degrees the {@link Camera} rotates/orbits for a full sweep of the canvas by mouse or touch dragging.\n *\n * For example, a value of ````360.0```` indicates that the ````Camera```` rotates/orbits ````360.0```` degrees horizontally\n * when we sweep the entire width of the canvas.\n *\n * ````CameraControl```` makes vertical rotation half as sensitive as horizontal rotation, so that we don't tend to\n * flip upside-down. Therefore, a value of ````360.0```` rotates/orbits the ````Camera```` through ````180.0```` degrees\n * vertically when we sweep the entire height of the canvas.\n *\n * Default is ````360.0````.\n *\n * @param {Number} dragRotationRate The new drag rotation rate.\n */\n set dragRotationRate(dragRotationRate) {\n this._configs.dragRotationRate = (dragRotationRate !== null && dragRotationRate !== undefined) ? dragRotationRate : 360.0;\n }\n\n /**\n * Gets the current drag rotation rate.\n *\n * Default is ````360.0````.\n *\n * @returns {Number} The current drag rotation rate.\n */\n get dragRotationRate() {\n return this._configs.dragRotationRate;\n }\n\n /**\n * Sets how much the {@link Camera} dollys each second with keyboard input.\n *\n * Default is ````15.0````, to dolly the {@link Camera} ````15.0```` World-space units per second while we hold down\n * the ````+```` and ````-```` keys.\n *\n * @param {Number} keyboardDollyRate The new keyboard dolly rate.\n */\n set keyboardDollyRate(keyboardDollyRate) {\n this._configs.keyboardDollyRate = (keyboardDollyRate !== null && keyboardDollyRate !== undefined) ? keyboardDollyRate : 15.0;\n }\n\n /**\n * Gets how much the {@link Camera} dollys each second with keyboard input.\n *\n * Default is ````15.0````.\n *\n * @returns {Number} The current keyboard dolly rate.\n */\n get keyboardDollyRate() {\n return this._configs.keyboardDollyRate;\n }\n\n /**\n * Sets how much the {@link Camera} dollys with touch input.\n *\n * Default is ````0.2````\n *\n * @param {Number} touchDollyRate The new touch dolly rate.\n */\n set touchDollyRate(touchDollyRate) {\n this._configs.touchDollyRate = (touchDollyRate !== null && touchDollyRate !== undefined) ? touchDollyRate : 0.2;\n }\n\n /**\n * Gets how much the {@link Camera} dollys each second with touch input.\n *\n * Default is ````0.2````.\n *\n * @returns {Number} The current touch dolly rate.\n */\n get touchDollyRate() {\n return this._configs.touchDollyRate;\n }\n\n /**\n * Sets how much the {@link Camera} dollys each second while the mouse wheel is spinning.\n *\n * Default is ````100.0````, to dolly the {@link Camera} ````10.0```` World-space units per second as we spin\n * the mouse wheel.\n *\n * @param {Number} mouseWheelDollyRate The new mouse wheel dolly rate.\n */\n set mouseWheelDollyRate(mouseWheelDollyRate) {\n this._configs.mouseWheelDollyRate = (mouseWheelDollyRate !== null && mouseWheelDollyRate !== undefined) ? mouseWheelDollyRate : 100.0;\n }\n\n /**\n * Gets how much the {@link Camera} dollys each second while the mouse wheel is spinning.\n *\n * Default is ````100.0````.\n *\n * @returns {Number} The current mouseWheel dolly rate.\n */\n get mouseWheelDollyRate() {\n return this._configs.mouseWheelDollyRate;\n }\n\n /**\n * Sets the dolly inertia factor.\n *\n * This factor configures how much the {@link Camera} keeps moving after you finish dollying it.\n *\n * This factor is a value in range ````[0..1]````. A value of ````0.0```` causes dollying to immediately stop,\n * ````0.5```` causes dollying to decay 50% on each animation frame, while ````1.0```` causes no decay, which allows dollying\n * to continue until further input stops it.\n *\n * You might set ````dollyInertia```` to zero when you want be able to precisely position or rotate the Camera,\n * without interference from inertia. This also means that xeokit renders less frames while dollying the Camera,\n * which can improve rendering performance.\n *\n * Default is ````0````.\n *\n * @param {Number} dollyInertia New dolly inertia factor.\n */\n set dollyInertia(dollyInertia) {\n this._configs.dollyInertia = (dollyInertia !== undefined && dollyInertia !== null) ? dollyInertia : 0;\n }\n\n /**\n * Gets the dolly inertia factor.\n *\n * Default is ````0````.\n *\n * @returns {Number} The current dolly inertia factor.\n */\n get dollyInertia() {\n return this._configs.dollyInertia;\n }\n\n /**\n * Sets the proximity to the closest object below which dolly speed decreases, and above which dolly speed increases.\n *\n * Default is ````35.0````.\n *\n * @param {Number} dollyProximityThreshold New dolly proximity threshold.\n */\n set dollyProximityThreshold(dollyProximityThreshold) {\n this._configs.dollyProximityThreshold = (dollyProximityThreshold !== undefined && dollyProximityThreshold !== null) ? dollyProximityThreshold : 35.0;\n }\n\n /**\n * Gets the proximity to the closest object below which dolly speed decreases, and above which dolly speed increases.\n *\n * Default is ````35.0````.\n *\n * @returns {Number} The current dolly proximity threshold.\n */\n get dollyProximityThreshold() {\n return this._configs.dollyProximityThreshold;\n }\n\n /**\n * Sets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @param {Number} dollyMinSpeed New dolly minimum speed.\n */\n set dollyMinSpeed(dollyMinSpeed) {\n this._configs.dollyMinSpeed = (dollyMinSpeed !== undefined && dollyMinSpeed !== null) ? dollyMinSpeed : 0.04;\n }\n\n /**\n * Gets the minimum dolly speed.\n *\n * Default is ````0.04````.\n *\n * @returns {Number} The current minimum dolly speed.\n */\n get dollyMinSpeed() {\n return this._configs.dollyMinSpeed;\n }\n\n /**\n * Sets the pan inertia factor.\n *\n * This factor configures how much the {@link Camera} keeps moving after you finish panning it.\n *\n * This factor is a value in range ````[0..1]````. A value of ````0.0```` causes panning to immediately stop,\n * ````0.5```` causes panning to decay 50% on each animation frame, while ````1.0```` causes no decay, which allows panning\n * to continue until further input stops it.\n *\n * You might set ````panInertia```` to zero when you want be able to precisely position or rotate the Camera,\n * without interference from inertia. This also means that xeokit renders less frames while panning the Camera,\n * wich can improve rendering performance.\n *\n * Default is ````0.5````.\n *\n * @param {Number} panInertia New pan inertia factor.\n */\n set panInertia(panInertia) {\n this._configs.panInertia = (panInertia !== undefined && panInertia !== null) ? panInertia : 0.5;\n }\n\n /**\n * Gets the pan inertia factor.\n *\n * Default is ````0.5````.\n *\n * @returns {Number} The current pan inertia factor.\n */\n get panInertia() {\n return this._configs.panInertia;\n }\n\n /**\n * Sets the keyboard layout.\n *\n * Supported layouts are:\n *\n * * ````\"qwerty\"```` (default)\n * * ````\"azerty\"````\n *\n * @deprecated\n * @param {String} value Selects the keyboard layout.\n */\n set keyboardLayout(value) {\n // this.warn(\"keyboardLayout property is deprecated - use keyMap property instead\");\n value = value || \"qwerty\";\n if (value !== \"qwerty\" && value !== \"azerty\") {\n this.error(\"Unsupported value for keyboardLayout - defaulting to 'qwerty'\");\n value = \"qwerty\";\n }\n this._configs.keyboardLayout = value;\n this.keyMap = this._configs.keyboardLayout;\n }\n\n /**\n * Gets the keyboard layout.\n *\n * Supported layouts are:\n *\n * * ````\"qwerty\"```` (default)\n * * ````\"azerty\"````\n *\n * @deprecated\n * @returns {String} The current keyboard layout.\n */\n get keyboardLayout() {\n return this._configs.keyboardLayout;\n }\n\n /**\n * Sets whether smart default pivoting is enabled.\n *\n * When ````true````, we'll pivot by default about the 3D position of the mouse/touch pointer on an\n * imaginary sphere that's centered at {@link Camera#eye} and sized to the {@link Scene} boundary.\n *\n * When ````false````, we'll pivot by default about {@link Camera#look}.\n *\n * Default is ````false````.\n *\n * @param {Boolean} enabled Set ````true```` to pivot by default about the selected point on the virtual sphere, or ````false```` to pivot by default about {@link Camera#look}.\n */\n set smartPivot(enabled) {\n this._configs.smartPivot = (enabled !== false);\n }\n\n /**\n * Gets whether smart default pivoting is enabled.\n *\n * When ````true````, we'll pivot by default about the 3D position of the mouse/touch pointer on an\n * imaginary sphere that's centered at {@link Camera#eye} and sized to the {@link Scene} boundary.\n *\n * When ````false````, we'll pivot by default about {@link Camera#look}.\n *\n * Default is ````false````.\n *\n * @returns {Boolean} Returns ````true```` when pivoting by default about the selected point on the virtual sphere, or ````false```` when pivoting by default about {@link Camera#look}.\n */\n get smartPivot() {\n return this._configs.smartPivot;\n }\n\n /**\n * Destroys this ````CameraControl````.\n * @private\n */\n destroy() {\n this._destroyHandlers();\n this._destroyControllers();\n this._cameraUpdater.destroy();\n super.destroy();\n }\n\n _destroyHandlers() {\n for (let i = 0, len = this._handlers.length; i < len; i++) {\n const handler = this._handlers[i];\n if (handler.destroy) {\n handler.destroy();\n }\n }\n }\n\n _destroyControllers() {\n for (let i = 0, len = this._controllers.length; i < len; i++) {\n const controller = this._controllers[i];\n if (controller.destroy) {\n controller.destroy();\n }\n }\n }\n}\n\n/**\n * @desc Metadata corresponding to an {@link Entity} that represents a model.\n *\n * An {@link Entity} represents a model when {@link Entity#isModel} is ````true````\n *\n * A MetaModel corresponds to an {@link Entity} by having the same {@link MetaModel#id} as the {@link Entity#id}.\n *\n * A MetaModel is created by {@link MetaScene#createMetaModel} and belongs to a {@link MetaScene}.\n *\n * Each MetaModel is registered by {@link MetaModel#id} in {@link MetaScene#metaModels}.\n *\n * A {@link MetaModel} represents its object structure with a tree of {@link MetaObject}s, with {@link MetaModel#rootMetaObject} referencing the root {@link MetaObject}.\n *\n * @class MetaModel\n */\nclass MetaModel {\n\n /**\n * @private\n */\n constructor(metaScene, id, projectId, revisionId, author, createdAt, creatingApplication, schema, propertySets, rootMetaObject) {\n\n /**\n * Globally-unique ID.\n *\n * MetaModels are registered by ID in {@link MetaScene#metaModels}.\n *\n * When this MetaModel corresponds to an {@link Entity} then this ID will match the {@link Entity#id}.\n *\n * @property id\n * @type {String|Number}\n */\n this.id = id;\n\n /**\n * The project ID\n * @property projectId\n * @type {String|Number}\n */\n this.projectId = projectId;\n\n /**\n * The revision ID, if available.\n *\n * Will be undefined if not available.\n *\n * @property revisionId\n * @type {String|Number}\n */\n this.revisionId = revisionId;\n\n /**\n * The model author, if available.\n *\n * Will be undefined if not available.\n *\n * @property author\n * @type {String}\n */\n this.author = author;\n\n /**\n * The date the model was created, if available.\n *\n * Will be undefined if not available.\n *\n * @property createdAt\n * @type {String}\n */\n this.createdAt = createdAt;\n\n /**\n * The application that created the model, if available.\n *\n * Will be undefined if not available.\n *\n * @property creatingApplication\n * @type {String}\n */\n this.creatingApplication = creatingApplication;\n\n /**\n * The model schema version, if available.\n *\n * Will be undefined if not available.\n *\n * @property schema\n * @type {String}\n */\n this.schema = schema;\n\n /**\n * Metadata on the {@link Scene}.\n *\n * @property metaScene\n * @type {MetaScene}\n */\n this.metaScene = metaScene;\n\n /**\n * The {@link PropertySet}s in this MetaModel.\n *\n * @property propertySets\n * @type {{String:PropertySet}}\n */\n this.propertySets = propertySets;\n\n /**\n * The root {@link MetaObject} in this MetaModel's composition structure hierarchy.\n *\n * @property rootMetaObject\n * @type {MetaObject}\n */\n this.rootMetaObject = rootMetaObject;\n }\n\n getJSON() {\n\n const metaObjects = [];\n\n function visit(metaObject) {\n const metaObjectCfg = {\n id: metaObject.id,\n extId: metaObject.extId,\n type: metaObject.type,\n name: metaObject.name\n };\n if (metaObject.parent) {\n metaObjectCfg.parent = metaObject.parent.id;\n }\n metaObjects.push(metaObjectCfg);\n const children = metaObject.children;\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n visit(children[i]);\n }\n }\n }\n\n visit(this.rootMetaObject);\n\n const json = {\n id: this.id,\n projectId: this.projectId,\n revisionId: this.revisionId,\n metaObjects: metaObjects\n };\n return json;\n }\n}\n\n/**\n * @desc Metadata corresponding to an {@link Entity} that represents an object.\n *\n * An {@link Entity} represents an object when {@link Entity#isObject} is ````true````\n *\n * A MetaObject corresponds to an {@link Entity} by having the same {@link MetaObject#id} as the {@link Entity#id}.\n *\n * A MetaObject is created within {@link MetaScene#createMetaModel} and belongs to a {@link MetaModel}.\n *\n * Each MetaObject is registered by {@link MetaObject#id} in {@link MetaScene#metaObjects}.\n *\n * A {@link MetaModel} represents its object structure with a tree of MetaObjects, with {@link MetaModel#rootMetaObject} referencing\n * the root MetaObject.\n *\n * @class MetaObject\n */\nclass MetaObject {\n\n /**\n * @private\n */\n constructor(metaModel, id, originalSystemId, name, type, propertySets, parent, children, external) {\n\n /**\n * Model metadata.\n *\n * @property metaModel\n * @type {MetaModel}\n */\n this.metaModel = metaModel;\n\n /**\n * Globally-unique ID.\n *\n * MetaObject instances are registered by this ID in {@link MetaScene#metaObjects}.\n *\n * @property id\n * @type {String|Number}\n */\n this.id = id;\n\n /**\n * ID of the corresponding object within the originating system, if any.\n *\n * @type {String}\n * @abstract\n */\n this.originalSystemId = originalSystemId;\n\n /**\n * Human-readable name.\n *\n * @property name\n * @type {String}\n */\n this.name = name;\n\n /**\n * Type - often an IFC product type.\n *\n * @property type\n * @type {String}\n */\n this.type = type;\n\n /**\n * Optional {@link PropertySet}s used by this MetaObject.\n *\n * @property propertySets\n * @type {PropertySet[]}\n */\n this.propertySets = propertySets;\n\n if (parent !== undefined && parent !== null) {\n\n /**\n * The parent MetaObject within the structure hierarchy.\n *\n * Undefined when this is the root of its structure.\n *\n * @property parent\n * @type {MetaObject}\n */\n this.parent = parent;\n }\n\n if (children !== undefined && children !== null) {\n\n /**\n * Child ObjectMeta instances within the structure hierarchy.\n *\n * Undefined when there are no children.\n *\n * @property children\n * @type {Array}\n */\n this.children = children;\n }\n\n if (external !== undefined && external !== null) {\n\n /**\n * External application-specific metadata\n *\n * Undefined when there are is no external application-specific metadata.\n *\n * @property external\n * @type {*}\n */\n this.external = external;\n }\n }\n\n /**\n * Gets the {@link MetaObject#id}s of the {@link MetaObject}s within the subtree.\n *\n * @returns {String[]} Array of {@link MetaObject#id}s.\n */\n getObjectIDsInSubtree() {\n const objectIds = [];\n\n function visit(metaObject) {\n if (!metaObject) {\n return;\n }\n objectIds.push(metaObject.id);\n const children = metaObject.children;\n if (children) {\n for (var i = 0, len = children.length; i < len; i++) {\n visit(children[i]);\n }\n }\n }\n\n visit(this);\n return objectIds;\n }\n\n\n /**\n * Iterates over the {@link MetaObject}s within the subtree.\n *\n * @param {Function} callback Callback fired at each {@link MetaObject}.\n */\n withMetaObjectsInSubtree(callback) {\n\n function visit(metaObject) {\n if (!metaObject) {\n return;\n }\n callback(metaObject);\n const children = metaObject.children;\n if (children) {\n for (var i = 0, len = children.length; i < len; i++) {\n visit(children[i]);\n }\n }\n }\n\n visit(this);\n }\n\n /**\n * Gets the {@link MetaObject#id}s of the {@link MetaObject}s within the subtree that have the given {@link MetaObject#type}s.\n *\n * @param {String[]} types {@link MetaObject#type} values.\n * @returns {String[]} Array of {@link MetaObject#id}s.\n */\n getObjectIDsInSubtreeByType(types) {\n const mask = {};\n for (var i = 0, len = types.length; i < len; i++) {\n mask[types[i]] = types[i];\n }\n const objectIds = [];\n\n function visit(metaObject) {\n if (!metaObject) {\n return;\n }\n if (mask[metaObject.type]) {\n objectIds.push(metaObject.id);\n }\n const children = metaObject.children;\n if (children) {\n for (var i = 0, len = children.length; i < len; i++) {\n visit(children[i]);\n }\n }\n }\n\n visit(this);\n return objectIds;\n }\n\n /**\n * Returns properties of this MeteObject as JSON.\n *\n * @returns {{id: (String|Number), type: String, name: String, parent: (String|Number|Undefined)}}\n */\n getJSON() {\n var json = {\n id: this.id,\n type: this.type,\n name: this.name\n };\n if (this.parent) {\n json.parent = this.parent.id;\n }\n return json;\n }\n}\n\n/**\n * @desc A property within a {@link PropertySet}.\n *\n * @class Property\n */\nclass Property {\n\n /**\n * @private\n */\n constructor(name, value, type, valueType, description) {\n\n /**\n * The name of this property.\n *\n * @property name\n * @type {String}\n */\n this.name = name;\n\n /**\n * The type of this property.\n *\n * @property type\n * @type {Number|String}\n */\n this.type = type;\n\n /**\n * The value of this property.\n *\n * @property value\n * @type {*}\n */\n this.value = value;\n\n /**\n * The type of this property's value.\n *\n * @property valueType\n * @type {Number|String}\n */\n this.valueType = valueType;\n\n /**\n * Informative text to explain the property.\n *\n * @property name\n * @type {String}\n */\n this.description = description;\n }\n}\n\n/**\n * @desc A set of properties associated with one or more {@link MetaObject}s.\n *\n * A PropertySet is created within {@link MetaScene#createMetaModel} and belongs to a {@link MetaModel}.\n *\n * Each PropertySet is registered by {@link PropertySet#id} in {@link MetaScene#propertySets} and {@link MetaModel#propertySets}.\n *\n * @class PropertySet\n */\nclass PropertySet {\n\n /**\n * @private\n */\n constructor(id, originalSystemId, name, type, properties) {\n\n /**\n * Globally-unique ID for this PropertySet.\n *\n * PropertySet instances are registered by this ID in {@link MetaScene#propertySets} and {@link MetaModel#propertySets}.\n *\n * @property id\n * @type {String}\n */\n this.id = id;\n\n /**\n * ID of the corresponding object within the originating system, if any.\n *\n * @type {String}\n * @abstract\n */\n this.originalSystemId = originalSystemId;\n\n /**\n * Human-readable name of this PropertySet.\n *\n * @property name\n * @type {String}\n */\n this.name = name;\n\n /**\n * Type of this PropertySet.\n *\n * @property type\n * @type {String}\n */\n this.type = type;\n\n /**\n * Properties within this PropertySet.\n *\n * @property properties\n * @type {Property[]}\n */\n this.properties = [];\n\n if (properties) {\n for (let i = 0, len = properties.length; i < len; i++) {\n const property = properties[i];\n this.properties.push(new Property(property.name, property.value, property.type, property.valueType, property.description));\n }\n }\n }\n}\n\n/**\n * @desc Metadata corresponding to a {@link Scene}.\n *\n * * Located in {@link Viewer#metaScene}.\n * * Contains {@link MetaModel}s and {@link MetaObject}s.\n * * [Scene Graphs user guide](https://github.com/xeokit/xeokit-sdk/wiki/Scene-Graphs)\n * * [Scene graph example with metadata](http://xeokit.github.io/xeokit-sdk/examples/#sceneRepresentation_SceneGraph_metadata)\n */\nclass MetaScene {\n\n /**\n * @private\n */\n constructor(viewer, scene) {\n\n /**\n * The {@link Viewer}.\n * @property viewer\n * @type {Viewer}\n */\n this.viewer = viewer;\n\n /**\n * The {@link Scene}.\n * @property scene\n * @type {Scene}\n */\n this.scene = scene;\n\n /**\n * The {@link MetaModel}s belonging to this MetaScene, each mapped to its {@link MetaModel#modelId}.\n *\n * @type {{String:MetaModel}}\n */\n this.metaModels = {};\n\n /**\n * The {@link PropertySet}s belonging to this MetaScene, each mapped to its {@link PropertySet#id}.\n *\n * @type {{String:PropertySet}}\n */\n this.propertySets = {};\n\n /**\n * The {@link MetaObject}s belonging to this MetaScene, each mapped to its {@link MetaObject#id}.\n *\n * @type {{String:MetaObject}}\n */\n this.metaObjects = {};\n\n /**\n * The {@link MetaObject}s belonging to this MetaScene, each mapped to its {@link MetaObject#type}.\n *\n * @type {{String:MetaObject}}\n */\n this.metaObjectsByType = {};\n\n /**\n * Tracks number of MetaObjects of each type.\n * @private\n */\n this._typeCounts = {};\n\n /**\n * Subscriptions to events sent with {@link fire}.\n * @private\n */\n this._eventSubs = {};\n }\n\n /**\n * Subscribes to an event fired at this Viewer.\n *\n * @param {String} event The event\n * @param {Function} callback Callback fired on the event\n */\n on(event, callback) {\n let subs = this._eventSubs[event];\n if (!subs) {\n subs = [];\n this._eventSubs[event] = subs;\n }\n subs.push(callback);\n }\n\n /**\n * Fires an event at this Viewer.\n *\n * @param {String} event Event name\n * @param {Object} value Event parameters\n */\n fire(event, value) {\n const subs = this._eventSubs[event];\n if (subs) {\n for (let i = 0, len = subs.length; i < len; i++) {\n subs[i](value);\n }\n }\n }\n\n /**\n * Unsubscribes from an event fired at this Viewer.\n * @param event\n */\n off(event) { // TODO\n\n }\n\n /**\n * Creates a {@link MetaModel} in this MetaScene.\n *\n * The MetaModel will contain a hierarchy of {@link MetaObject}s, created from the\n * meta objects in ````metaModelData````.\n *\n * The meta object hierarchy in ````metaModelData```` is expected to be non-cyclic, with a single root. If the meta\n * objects are cyclic, then this method will log an error and attempt to recover by creating a dummy root MetaObject\n * of type \"Model\" and connecting all other MetaObjects as its direct children. If the meta objects contain multiple\n * roots, then this method similarly attempts to recover by creating a dummy root MetaObject of type \"Model\" and\n * connecting all the root MetaObjects as its children.\n *\n * @param {String} modelId ID for the new {@link MetaModel}, which will have {@link MetaModel#id} set to this value.\n * @param {Object} metaModelData Data for the {@link MetaModel}.\n * @param {Object} [options] Options for creating the {@link MetaModel}.\n * @param {Object} [options.includeTypes] When provided, only create {@link MetaObject}s with types in this list.\n * @param {Object} [options.excludeTypes] When provided, never create {@link MetaObject}s with types in this list.\n * @param {Boolean} [options.globalizeObjectIds=false] Whether to globalize each {@link MetaObject#id}. Set this ````true```` when you need to load multiple instances of the same meta model, to avoid ID clashes between the meta objects in the different instances.\n * @returns {MetaModel} The new MetaModel.\n */\n createMetaModel(modelId, metaModelData, options = {}) {\n\n const projectId = metaModelData.projectId || \"none\";\n const revisionId = metaModelData.revisionId || \"none\";\n const newPropertySets = metaModelData.propertySets || [];\n const newObjects = metaModelData.metaObjects || [];\n const author = metaModelData.author;\n const createdAt = metaModelData.createdAt;\n const creatingApplication = metaModelData.creatingApplication;\n const schema = metaModelData.schema;\n // if (options.excludeTypes) {\n // excludeTypes = {};\n // for (let i = 0, len = options.excludeTypes.length; i < len; i++) {\n // includeTypes[options.excludeTypes[i]] = true;\n // }\n // }\n\n const metaModel = new MetaModel(this, modelId, projectId, revisionId, author, createdAt, creatingApplication, schema, [], null);\n\n this.metaModels[modelId] = metaModel;\n\n for (let i = 0, len = newPropertySets.length; i < len; i++) {\n const propertySetCfg = newPropertySets[i];\n const propertySetId = propertySetCfg.id;\n const propertySet = new PropertySet(propertySetId, propertySetCfg.originalSystemId, propertySetCfg.name, propertySetCfg.type, propertySetCfg.properties);\n metaModel.propertySets[propertySetId] = propertySet;\n this.propertySets[propertySetId] = propertySet;\n }\n\n const rootMetaObjects = [];\n\n for (let i = 0, len = newObjects.length; i < len; i++) {\n const newObject = newObjects[i];\n if (newObject.parent === undefined || newObject.parent === null) {\n rootMetaObjects.push(newObject);\n }\n }\n\n if (rootMetaObjects.length === 0) {\n this.scene.error(\"Cyclic containment hierarchy found in metamodel - will flatten the hierarchy and insert fake 'Model' root\");\n const fakeRoot = {\n \"id\": modelId + \".fakeRoot\",\n \"name\": modelId,\n \"type\": \"Model\",\n \"parent\": null\n };\n for (let i = 0, len = newObjects.length; i < len; i++) {\n newObjects[i].parent = fakeRoot.id;\n }\n newObjects.push(fakeRoot);\n }\n\n if (rootMetaObjects.length > 1) {\n this.scene.error(\"Multiple containment hierarchy root found in metamodel - will insert fake 'Model' root\");\n const fakeRoot = {\n \"id\": modelId + \".fakeRoot\",\n \"name\": modelId,\n \"type\": \"Model\",\n \"parent\": null\n };\n newObjects.push(fakeRoot);\n for (let i = 0, len = rootMetaObjects.length; i < len; i++) {\n rootMetaObjects[i].parent = fakeRoot.id;\n }\n }\n\n for (let i = 0, len = newObjects.length; i < len; i++) {\n const newObject = newObjects[i];\n const type = newObject.type;\n const objectId = options.globalizeObjectIds ? math.globalizeObjectId(modelId, newObject.id) : newObject.id;\n const originalSystemId = newObject.id;\n const name = newObject.name;\n const propertySets = [];\n if (newObject.propertySetIds && newObject.propertySetIds.length > 0) {\n for (let j = 0, lenj = newObject.propertySetIds.length; j < lenj; j++) {\n const propertySetId = newObject.propertySetIds[j];\n const propertySet = metaModel.propertySets[propertySetId];\n if (propertySet) {\n propertySets.push(propertySet);\n }\n }\n }\n const parent = null;\n const children = null;\n const external = newObject.external;\n const metaObject = new MetaObject(metaModel, objectId, originalSystemId, name, type, propertySets, parent, children, external);\n this.metaObjects[objectId] = metaObject;\n (this.metaObjectsByType[type] || (this.metaObjectsByType[type] = {}))[objectId] = metaObject;\n if (this._typeCounts[type] === undefined) {\n this._typeCounts[type] = 1;\n } else {\n this._typeCounts[type]++;\n }\n }\n\n for (let i = 0, len = newObjects.length; i < len; i++) {\n const newObject = newObjects[i];\n const objectId = options.globalizeObjectIds ? math.globalizeObjectId(modelId, newObject.id) : newObject.id;\n const metaObject = this.metaObjects[objectId];\n if (!metaObject) {\n continue;\n }\n if (newObject.parent === undefined || newObject.parent === null) {\n metaModel.rootMetaObject = metaObject;\n } else if (newObject.parent) {\n const parentId = options.globalizeObjectIds ? math.globalizeObjectId(modelId, newObject.parent) : newObject.parent;\n let parentMetaObject = this.metaObjects[parentId];\n if (parentMetaObject) {\n metaObject.parent = parentMetaObject;\n parentMetaObject.children = parentMetaObject.children || [];\n parentMetaObject.children.push(metaObject);\n }\n }\n }\n\n this.fire(\"metaModelCreated\", modelId);\n return metaModel;\n }\n\n /**\n * Removes a {@link MetaModel} from this MetaScene.\n *\n * Fires a \"metaModelDestroyed\" event with the value of the {@link MetaModel#id}.\n *\n * @param {String} id ID of the target {@link MetaModel}.\n */\n destroyMetaModel(id) {\n const metaModel = this.metaModels[id];\n if (!metaModel) {\n return;\n }\n this._removeMetaModel(metaModel);\n this.fire(\"metaModelDestroyed\", id);\n }\n\n _removeMetaModel(metaModel) {\n const metaObjects = this.metaObjects;\n const metaObjectsByType = this.metaObjectsByType;\n let visit = (metaObject) => {\n delete metaObjects[metaObject.id];\n const types = metaObjectsByType[metaObject.type];\n if (types && types[metaObject.id]) {\n delete types[metaObject.id];\n if (--this._typeCounts[metaObject.type] === 0) {\n delete this._typeCounts[metaObject.type];\n delete metaObjectsByType[metaObject.type];\n }\n }\n const children = metaObject.children;\n if (children) {\n for (let i = 0, len = children.length; i < len; i++) {\n const childMetaObject = children[i];\n visit(childMetaObject);\n }\n }\n };\n visit(metaModel.rootMetaObject);\n for (let propertySetId in metaModel.propertySets) {\n if (metaModel.propertySets.hasOwnProperty(propertySetId)) {\n delete this.propertySets[propertySetId];\n }\n }\n delete this.metaModels[metaModel.id];\n }\n\n /**\n * Gets the {@link MetaObject#id}s of the {@link MetaObject}s that have the given {@link MetaObject#type}.\n *\n * @param {String} type The type.\n * @returns {String[]} Array of {@link MetaObject#id}s.\n */\n getObjectIDsByType(type) {\n const metaObjects = this.metaObjectsByType[type];\n return metaObjects ? Object.keys(metaObjects) : [];\n }\n\n /**\n * Gets the {@link MetaObject#id}s of the {@link MetaObject}s within the given subtree.\n *\n * @param {String} id ID of the root {@link MetaObject} of the given subtree.\n * @param {String[]} [includeTypes] Optional list of types to include.\n * @param {String[]} [excludeTypes] Optional list of types to exclude.\n * @returns {String[]} Array of {@link MetaObject#id}s.\n */\n getObjectIDsInSubtree(id, includeTypes, excludeTypes) {\n const list = [];\n const metaObject = this.metaObjects[id];\n const includeMask = (includeTypes && includeTypes.length > 0) ? arrayToMap(includeTypes) : null;\n const excludeMask = (excludeTypes && excludeTypes.length > 0) ? arrayToMap(excludeTypes) : null;\n\n function visit(metaObject) {\n if (!metaObject) {\n return;\n }\n var include = true;\n if (excludeMask && excludeMask[metaObject.type]) {\n include = false;\n } else if (includeMask && (!includeMask[metaObject.type])) {\n include = false;\n }\n if (include) {\n list.push(metaObject.id);\n }\n const children = metaObject.children;\n if (children) {\n for (var i = 0, len = children.length; i < len; i++) {\n visit(children[i]);\n }\n }\n }\n\n visit(metaObject);\n return list;\n }\n\n /**\n * Iterates over the {@link MetaObject}s within the subtree.\n *\n * @param {String} id ID of root {@link MetaObject}.\n * @param {Function} callback Callback fired at each {@link MetaObject}.\n */\n withMetaObjectsInSubtree(id, callback) {\n const metaObject = this.metaObjects[id];\n if (!metaObject) {\n return;\n }\n metaObject.withMetaObjectsInSubtree(callback);\n }\n}\n\nfunction arrayToMap(array) {\n const map = {};\n for (var i = 0, len = array.length; i < len; i++) {\n map[array[i]] = true;\n }\n return map;\n}\n\n/**\n * The 3D Viewer at the heart of the xeokit SDK.\n *\n * * A Viewer wraps a single {@link Scene}\n * * Add {@link Plugin}s to a Viewer to extend its functionality.\n * * {@link Viewer#metaScene} holds metadata about models in the\n * Viewer's {@link MetaScene}.\n * * Use {@link Viewer#cameraFlight} to fly or jump the {@link Scene}'s\n * {@link Camera} to target positions, boundaries or {@link Entity}s.\n *\n * @public\n */\nclass Viewer {\n\n /**\n * @constructor\n * @param {Object} cfg Viewer configuration.\n * @param {String} [cfg.id] Optional ID for this Viewer, defaults to the ID of {@link Viewer#scene}, which xeokit automatically generates.\n * @param {String} [cfg.canvasId] ID of an existing HTML canvas for the {@link Viewer#scene} - either this or canvasElement is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLCanvasElement} [cfg.canvasElement] Reference of an existing HTML canvas for the {@link Viewer#scene} - either this or canvasId is mandatory. When both values are given, the element reference is always preferred to the ID.\n * @param {HTMLElement} [cfg.keyboardEventsElement] Optional reference to HTML element on which key events should be handled. Defaults to the HTML Document.\n * @param {String} [cfg.spinnerElementId] ID of existing HTML element to show the {@link Spinner} - internally creates a default element automatically if this is omitted.\n * @param {Number} [cfg.passes=1] The number of times the {@link Viewer#scene} renders per frame.\n * @param {Boolean} [cfg.clearEachPass=false] When doing multiple passes per frame, specifies if to clear the canvas before each pass (true) or just before the first pass (false).\n * @param {Boolean} [cfg.preserveDrawingBuffer=true] Whether or not to preserve the WebGL drawing buffer. This needs to be ````true```` for {@link Viewer#getSnapshot} to work.\n * @param {Boolean} [cfg.transparent=true] Whether or not the canvas is transparent.\n * @param {Boolean} [cfg.premultipliedAlpha=false] Whether or not you want alpha composition with premultiplied alpha. Highlighting and selection works best when this is ````false````.\n * @param {Boolean} [cfg.gammaInput=true] When true, expects that all textures and colors are premultiplied gamma.\n * @param {Boolean} [cfg.gammaOutput=false] Whether or not to render with pre-multiplied gama.\n * @param {Number} [cfg.gammaFactor=2.2] The gamma factor to use when rendering with pre-multiplied gamma.\n * @param {Number[]} [cfg.backgroundColor=[1,1,1]] Sets the canvas background color to use when ````transparent```` is false.\n * @param {Boolean} [cfg.backgroundColorFromAmbientLight=true] When ````transparent```` is false, set this ````true````\n * to derive the canvas background color from {@link AmbientLight#color}, or ````false```` to set the canvas background to ````backgroundColor````.\n * @param {String} [cfg.units=\"meters\"] The measurement unit type. Accepted values are ````\"meters\"````, ````\"metres\"````, , ````\"centimeters\"````, ````\"centimetres\"````, ````\"millimeters\"````, ````\"millimetres\"````, ````\"yards\"````, ````\"feet\"```` and ````\"inches\"````.\n * @param {Number} [cfg.scale=1] The number of Real-space units in each World-space coordinate system unit.\n * @param {Number[]} [cfg.origin=[0,0,0]] The Real-space 3D origin, in current measurement units, at which the World-space coordinate origin ````[0,0,0]```` sits.\n * @param {Boolean} [cfg.saoEnabled=false] Whether to enable Scalable Ambient Obscurance (SAO) effect. See {@link SAO} for more info.\n * @param {Boolean} [cfg.antialias=true] Whether to enable anti-aliasing.\n * @throws {String} Throws an exception when both canvasId or canvasElement are missing or they aren't pointing to a valid HTMLCanvasElement.\n * @param {Boolean} [cfg.alphaDepthMask=true] Whether writing into the depth buffer is enabled or disabled when rendering transparent objects.\n * @param {Boolean} [cfg.entityOffsetsEnabled=false] Whether to enable {@link Entity#offset}. For best performance, only set this ````true```` when you need to use {@link Entity#offset}.\n * @param {Boolean} [cfg.pickSurfacePrecisionEnabled=false] Whether to enable full-precision accuracy when surface picking with {@link Scene#pick}. Note that when ````true````, this configuration will increase the amount of browser memory used by the Viewer. The ````pickSurfacePrecision```` option for ````Scene#pick```` only works if this is set ````true````.\n * @param {Boolean} [cfg.logarithmicDepthBufferEnabled=false] Whether to enable logarithmic depth buffer. When this is true,\n * you can set huge values for {@link Perspective#far} and {@link Ortho#far}, to push the far clipping plane back so\n * that it does not clip huge models.\n * @param {Boolean} [cfg.pbrEnabled=false] Whether to enable physically-based rendering.\n * @param {LocaleService} [cfg.localeService=null] Optional locale-based translation service.\n */\n constructor(cfg) {\n\n /**\n * The Viewer's current language setting.\n * @property language\n * @deprecated\n * @type {String}\n */\n this.language = \"en\";\n\n /**\n * The viewer's locale service.\n *\n * This is configured via the Viewer's constructor.\n *\n * By default, this service will be an instance of {@link LocaleService}, which will just return\n * null translations for all given strings and phrases.\n *\n * @property localeService\n * @type {LocaleService}\n * @since 2.0\n */\n this.localeService = cfg.localeService || new LocaleService();\n\n /**\n * The Viewer's {@link Scene}.\n * @property scene\n * @type {Scene}\n */\n this.scene = new Scene(this, {\n canvasId: cfg.canvasId,\n canvasElement: cfg.canvasElement,\n keyboardEventsElement: cfg.keyboardEventsElement,\n webgl2: false,\n contextAttr: {\n preserveDrawingBuffer: cfg.preserveDrawingBuffer !== false,\n premultipliedAlpha: (!!cfg.premultipliedAlpha),\n antialias: (cfg.antialias !== false)\n },\n spinnerElementId: cfg.spinnerElementId,\n transparent: (cfg.transparent !== false),\n gammaInput: true,\n gammaOutput: false,\n backgroundColor: cfg.backgroundColor,\n backgroundColorFromAmbientLight: cfg.backgroundColorFromAmbientLight,\n ticksPerRender: 1,\n ticksPerOcclusionTest: 20,\n units: cfg.units,\n scale: cfg.scale,\n origin: cfg.origin,\n saoEnabled: cfg.saoEnabled,\n alphaDepthMask: (cfg.alphaDepthMask !== false),\n entityOffsetsEnabled: (!!cfg.entityOffsetsEnabled),\n pickSurfacePrecisionEnabled: (!!cfg.pickSurfacePrecisionEnabled),\n logarithmicDepthBufferEnabled: (!!cfg.logarithmicDepthBufferEnabled),\n pbrEnabled: (!!cfg.pbrEnabled)\n });\n\n /**\n * Metadata about the {@link Scene} and the models and objects within it.\n * @property metaScene\n * @type {MetaScene}\n * @readonly\n */\n this.metaScene = new MetaScene(this, this.scene);\n\n /**\n * The Viewer's ID.\n * @property id\n *\n * @type {String|Number}\n */\n this.id = cfg.id || this.scene.id;\n\n /**\n * The Viewer's {@link Camera}. This is also found on {@link Scene#camera}.\n * @property camera\n * @type {Camera}\n */\n this.camera = this.scene.camera;\n\n /**\n * The Viewer's {@link CameraFlightAnimation}, which\n * is used to fly the {@link Scene}'s {@link Camera} to given targets.\n * @property cameraFlight\n * @type {CameraFlightAnimation}\n */\n this.cameraFlight = new CameraFlightAnimation(this.scene, {\n duration: 0.5\n });\n\n /**\n * The Viewer's {@link CameraControl}, which\n * controls the {@link Scene}'s {@link Camera} with mouse, touch and keyboard input.\n * @property cameraControl\n * @type {CameraControl}\n */\n this.cameraControl = new CameraControl(this.scene, {\n // panToPointer: true,\n doublePickFlyTo: true\n });\n\n this._plugins = [];\n\n /**\n * Subscriptions to events sent with {@link fire}.\n * @private\n */\n this._eventSubs = {};\n }\n\n /**\n * Subscribes to an event fired at this Viewer.\n *\n * @param {String} event The event\n * @param {Function} callback Callback fired on the event\n */\n on(event, callback) {\n let subs = this._eventSubs[event];\n if (!subs) {\n subs = [];\n this._eventSubs[event] = subs;\n }\n subs.push(callback);\n }\n\n /**\n * Fires an event at this Viewer.\n *\n * @param {String} event Event name\n * @param {Object} value Event parameters\n */\n fire(event, value) {\n const subs = this._eventSubs[event];\n if (subs) {\n for (let i = 0, len = subs.length; i < len; i++) {\n subs[i](value);\n }\n }\n }\n\n /**\n * Unsubscribes from an event fired at this Viewer.\n * @param event\n */\n off(event) { // TODO\n\n }\n\n /**\n * Logs a message to the JavaScript developer console, prefixed with the ID of this Viewer.\n *\n * @param {String} msg The message\n */\n log(msg) {\n console.log(`[xeokit viewer ${this.id}]: ${msg}`);\n }\n\n /**\n * Logs an error message to the JavaScript developer console, prefixed with the ID of this Viewer.\n *\n * @param {String} msg The error message\n */\n error(msg) {\n console.error(`[xeokit viewer ${this.id}]: ${msg}`);\n }\n\n /**\n * Installs a Plugin.\n *\n * @private\n */\n addPlugin(plugin) {\n this._plugins.push(plugin);\n }\n\n /**\n * Uninstalls a Plugin, clearing content from it first.\n *\n * @private\n */\n removePlugin(plugin) {\n for (let i = 0, len = this._plugins.length; i < len; i++) {\n const p = this._plugins[i];\n if (p === plugin) {\n if (p.clear) {\n p.clear();\n }\n this._plugins.splice(i, 1);\n return;\n }\n }\n }\n\n /**\n * Sends a message to installed Plugins.\n *\n * The message can optionally be accompanied by a value.\n * @private\n */\n sendToPlugins(name, value) {\n for (let i = 0, len = this._plugins.length; i < len; i++) {\n const p = this._plugins[i];\n if (p.send) {\n p.send(name, value);\n }\n }\n }\n\n /**\n * @private\n * @deprecated\n */\n clear() {\n throw \"Viewer#clear() no longer implemented - use '#sendToPlugins(\\\"clear\\\") instead\";\n }\n\n /**\n * @private\n * @deprecated\n */\n resetView() {\n throw \"Viewer#resetView() no longer implemented - use CameraMemento & ObjectsMemento classes instead\";\n }\n\n /**\n * Enter snapshot mode.\n *\n * Switches rendering to a hidden snapshot canvas.\n *\n * Exit snapshot mode using {@link Viewer#endSnapshot}.\n */\n beginSnapshot() {\n if (this._snapshotBegun) {\n return;\n }\n this.scene._renderer.beginSnapshot();\n this._snapshotBegun = true;\n }\n\n /**\n * Gets a snapshot of this Viewer's {@link Scene} as a Base64-encoded image.\n *\n * #### Usage:\n *\n * ````javascript\n * const imageData = viewer.getSnapshot({\n * width: 500,\n * height: 500,\n * format: \"png\"\n * });\n * ````\n * @param {*} [params] Capture options.\n * @param {Number} [params.width] Desired width of result in pixels - defaults to width of canvas.\n * @param {Number} [params.height] Desired height of result in pixels - defaults to height of canvas.\n * @param {String} [params.format=\"jpeg\"] Desired format; \"jpeg\", \"png\" or \"bmp\".\n * @param {Boolean} [params.includeGizmos=false] When true, will include gizmos like {@link SectionPlane} in the snapshot.\n * @returns {String} String-encoded image data URI.\n */\n getSnapshot(params = {}) {\n\n const needFinishSnapshot = (!this._snapshotBegun);\n\n if (!this._snapshotBegun) {\n this.beginSnapshot();\n }\n\n if (!params.includeGizmos) {\n this.sendToPlugins(\"snapshotStarting\"); // Tells plugins to hide things that shouldn't be in snapshot\n }\n\n const resize = (params.width !== undefined && params.height !== undefined);\n const canvas = this.scene.canvas.canvas;\n const saveWidth = canvas.clientWidth;\n const saveHeight = canvas.clientHeight;\n const saveCssWidth = canvas.style.width;\n const saveCssHeight = canvas.style.height;\n\n const width = params.width ? Math.floor(params.width) : canvas.width;\n const height = params.height ? Math.floor(params.height) : canvas.height;\n\n if (resize) {\n canvas.style.width = width + \"px\";\n canvas.style.height = height + \"px\";\n }\n\n this.scene._renderer.renderSnapshot();\n\n const imageDataURI = this.scene._renderer.readSnapshot(params);\n\n if (resize) {\n canvas.style.width = saveCssWidth;\n canvas.style.height = saveCssHeight;\n canvas.width = saveWidth;\n canvas.height = saveHeight;\n\n this.scene.glRedraw();\n }\n\n if (!params.includeGizmos) {\n this.sendToPlugins(\"snapshotFinished\");\n }\n\n if (needFinishSnapshot) {\n this.endSnapshot();\n }\n\n return imageDataURI;\n }\n\n /**\n * Exits snapshot mode.\n *\n * Switches rendering back to the main canvas.\n *\n */\n endSnapshot() {\n if (!this._snapshotBegun) {\n return;\n }\n this.scene._renderer.endSnapshot();\n this.scene._renderer.render({force: true});\n this._snapshotBegun = false;\n }\n\n /** Destroys this Viewer.\n */\n destroy() {\n const plugins = this._plugins.slice(); // Array will modify as we delete plugins\n for (let i = 0, len = plugins.length; i < len; i++) {\n const plugin = plugins[i];\n plugin.destroy();\n }\n this.scene.destroy();\n }\n}\n\nexport { AmbientLight, AngleMeasurementsPlugin, AnnotationsPlugin, AxisGizmoPlugin, BCFViewpointsPlugin, CameraMemento, CameraPath, CameraPathAnimation, Component, ContextMenu, CubicBezierCurve, Curve, DirLight, DistanceMeasurementsPlugin, EdgeMaterial, EmphasisMaterial, FastNavPlugin, Fresnel, GLTFDefaultDataSource, GLTFLoaderPlugin, ImagePlane, LambertMaterial, LightMap, LocaleService, Map, Marker, Mesh, MetallicMaterial, ModelMemento, NavCubePlugin, Node, OBJLoaderPlugin, ObjectsMemento, Path, PerformanceModel, PhongMaterial, Plugin, PointLight, QuadraticBezierCurve, Queue, ReadableGeometry, ReflectionMap, STLDefaultDataSource, STLLoaderPlugin, SectionPlane, SectionPlanesPlugin, Skybox, SkyboxesPlugin, SpecularMaterial, SplineCurve, SpriteMarker, StoreyViewsPlugin, Texture, TreeViewPlugin, VBOGeometry, ViewCullPlugin, Viewer, XKTDefaultDataSource, XKTLoaderPlugin, XML3DLoaderPlugin, buildBoxGeometry, buildBoxLinesGeometry, buildCylinderGeometry, buildGridGeometry, buildPlaneGeometry, buildSphereGeometry, buildTorusGeometry, buildVectorTextGeometry, load3DSGeometry, loadOBJGeometry, math, utils };\n","module.exports = function atoa (a, n) { return Array.prototype.slice.call(a, n); }\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.bytesToBase64 = bytesToBase64;\nexports.base64ToBytes = base64ToBytes;\nexports.base64encode = base64encode;\nexports.base64decode = base64decode;\n\n/*\r\nMIT License\r\n\r\nCopyright (c) 2020 Egor Nepomnyaschih\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n*/\n\n/*\r\n// This constant can also be computed with the following algorithm:\r\nconst base64abc = [],\r\n A = \"A\".charCodeAt(0),\r\n a = \"a\".charCodeAt(0),\r\n n = \"0\".charCodeAt(0);\r\nfor (let i = 0; i < 26; ++i) {\r\n base64abc.push(String.fromCharCode(A + i));\r\n}\r\nfor (let i = 0; i < 26; ++i) {\r\n base64abc.push(String.fromCharCode(a + i));\r\n}\r\nfor (let i = 0; i < 10; ++i) {\r\n base64abc.push(String.fromCharCode(n + i));\r\n}\r\nbase64abc.push(\"+\");\r\nbase64abc.push(\"/\");\r\n*/\nvar base64abc = [\"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"+\", \"/\"];\n/*\r\n// This constant can also be computed with the following algorithm:\r\nconst l = 256, base64codes = new Uint8Array(l);\r\nfor (let i = 0; i < l; ++i) {\r\n base64codes[i] = 255; // invalid character\r\n}\r\nbase64abc.forEach((char, index) => {\r\n base64codes[char.charCodeAt(0)] = index;\r\n});\r\nbase64codes[\"=\".charCodeAt(0)] = 0; // ignored anyway, so we just need to prevent an error\r\n*/\n\nvar base64codes = [255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, 255, 0, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, 255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51];\n\nfunction getBase64Code(charCode) {\n if (charCode >= base64codes.length) {\n throw new Error(\"Unable to parse base64 string.\");\n }\n\n var code = base64codes[charCode];\n\n if (code === 255) {\n throw new Error(\"Unable to parse base64 string.\");\n }\n\n return code;\n}\n\nfunction bytesToBase64(bytes) {\n var result = '',\n i,\n l = bytes.length;\n\n for (i = 2; i < l; i += 3) {\n result += base64abc[bytes[i - 2] >> 2];\n result += base64abc[(bytes[i - 2] & 0x03) << 4 | bytes[i - 1] >> 4];\n result += base64abc[(bytes[i - 1] & 0x0F) << 2 | bytes[i] >> 6];\n result += base64abc[bytes[i] & 0x3F];\n }\n\n if (i === l + 1) {\n // 1 octet yet to write\n result += base64abc[bytes[i - 2] >> 2];\n result += base64abc[(bytes[i - 2] & 0x03) << 4];\n result += \"==\";\n }\n\n if (i === l) {\n // 2 octets yet to write\n result += base64abc[bytes[i - 2] >> 2];\n result += base64abc[(bytes[i - 2] & 0x03) << 4 | bytes[i - 1] >> 4];\n result += base64abc[(bytes[i - 1] & 0x0F) << 2];\n result += \"=\";\n }\n\n return result;\n}\n\nfunction base64ToBytes(str) {\n if (str.length % 4 !== 0) {\n throw new Error(\"Unable to parse base64 string.\");\n }\n\n var index = str.indexOf(\"=\");\n\n if (index !== -1 && index < str.length - 2) {\n throw new Error(\"Unable to parse base64 string.\");\n }\n\n var missingOctets = str.endsWith(\"==\") ? 2 : str.endsWith(\"=\") ? 1 : 0,\n n = str.length,\n result = new Uint8Array(3 * (n / 4)),\n buffer;\n\n for (var i = 0, j = 0; i < n; i += 4, j += 3) {\n buffer = getBase64Code(str.charCodeAt(i)) << 18 | getBase64Code(str.charCodeAt(i + 1)) << 12 | getBase64Code(str.charCodeAt(i + 2)) << 6 | getBase64Code(str.charCodeAt(i + 3));\n result[j] = buffer >> 16;\n result[j + 1] = buffer >> 8 & 0xFF;\n result[j + 2] = buffer & 0xFF;\n }\n\n return result.subarray(0, result.length - missingOctets);\n}\n\nfunction base64encode(str) {\n var encoder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new TextEncoder();\n return bytesToBase64(encoder.encode(str));\n}\n\nfunction base64decode(str) {\n var decoder = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new TextDecoder();\n return decoder.decode(base64ToBytes(str));\n}\n","/*!\n * Chart.js v2.9.4\n * https://www.chartjs.org\n * (c) 2020 Chart.js Contributors\n * Released under the MIT License\n */\n(function (global, factory) {\ntypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(function() { try { return require('moment'); } catch(e) { } }()) :\ntypeof define === 'function' && define.amd ? define(['require'], function(require) { return factory(function() { try { return require('moment'); } catch(e) { } }()); }) :\n(global = global || self, global.Chart = factory(global.moment));\n}(this, (function (moment) { 'use strict';\n\nmoment = moment && moment.hasOwnProperty('default') ? moment['default'] : moment;\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nfunction getCjsExportFromNamespace (n) {\n\treturn n && n['default'] || n;\n}\n\nvar colorName = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\nvar conversions = createCommonjsModule(function (module) {\n/* MIT license */\n\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in colorName) {\n\tif (colorName.hasOwnProperty(key)) {\n\t\treverseKeywords[colorName[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in colorName) {\n\t\tif (colorName.hasOwnProperty(keyword)) {\n\t\t\tvar value = colorName[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn colorName[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n});\nvar conversions_1 = conversions.rgb;\nvar conversions_2 = conversions.hsl;\nvar conversions_3 = conversions.hsv;\nvar conversions_4 = conversions.hwb;\nvar conversions_5 = conversions.cmyk;\nvar conversions_6 = conversions.xyz;\nvar conversions_7 = conversions.lab;\nvar conversions_8 = conversions.lch;\nvar conversions_9 = conversions.hex;\nvar conversions_10 = conversions.keyword;\nvar conversions_11 = conversions.ansi16;\nvar conversions_12 = conversions.ansi256;\nvar conversions_13 = conversions.hcg;\nvar conversions_14 = conversions.apple;\nvar conversions_15 = conversions.gray;\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nvar route = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nvar colorConvert = convert;\n\nvar colorName$1 = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\n\n/* MIT license */\n\n\nvar colorString = {\n getRgba: getRgba,\n getHsla: getHsla,\n getRgb: getRgb,\n getHsl: getHsl,\n getHwb: getHwb,\n getAlpha: getAlpha,\n\n hexString: hexString,\n rgbString: rgbString,\n rgbaString: rgbaString,\n percentString: percentString,\n percentaString: percentaString,\n hslString: hslString,\n hslaString: hslaString,\n hwbString: hwbString,\n keyword: keyword\n};\n\nfunction getRgba(string) {\n if (!string) {\n return;\n }\n var abbr = /^#([a-fA-F0-9]{3,4})$/i,\n hex = /^#([a-fA-F0-9]{6}([a-fA-F0-9]{2})?)$/i,\n rgba = /^rgba?\\(\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*,\\s*([+-]?\\d+)\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*,\\s*([+-]?[\\d\\.]+)\\%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)$/i,\n keyword = /(\\w+)/;\n\n var rgb = [0, 0, 0],\n a = 1,\n match = string.match(abbr),\n hexAlpha = \"\";\n if (match) {\n match = match[1];\n hexAlpha = match[3];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i] + match[i], 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha + hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(hex)) {\n hexAlpha = match[2];\n match = match[1];\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match.slice(i * 2, i * 2 + 2), 16);\n }\n if (hexAlpha) {\n a = Math.round((parseInt(hexAlpha, 16) / 255) * 100) / 100;\n }\n }\n else if (match = string.match(rgba)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = parseInt(match[i + 1]);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(per)) {\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n }\n a = parseFloat(match[4]);\n }\n else if (match = string.match(keyword)) {\n if (match[1] == \"transparent\") {\n return [0, 0, 0, 0];\n }\n rgb = colorName$1[match[1]];\n if (!rgb) {\n return;\n }\n }\n\n for (var i = 0; i < rgb.length; i++) {\n rgb[i] = scale(rgb[i], 0, 255);\n }\n if (!a && a != 0) {\n a = 1;\n }\n else {\n a = scale(a, 0, 1);\n }\n rgb[3] = a;\n return rgb;\n}\n\nfunction getHsla(string) {\n if (!string) {\n return;\n }\n var hsl = /^hsla?\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hsl);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n s = scale(parseFloat(match[2]), 0, 100),\n l = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, s, l, a];\n }\n}\n\nfunction getHwb(string) {\n if (!string) {\n return;\n }\n var hwb = /^hwb\\(\\s*([+-]?\\d+)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?[\\d\\.]+)\\s*)?\\)/;\n var match = string.match(hwb);\n if (match) {\n var alpha = parseFloat(match[4]);\n var h = scale(parseInt(match[1]), 0, 360),\n w = scale(parseFloat(match[2]), 0, 100),\n b = scale(parseFloat(match[3]), 0, 100),\n a = scale(isNaN(alpha) ? 1 : alpha, 0, 1);\n return [h, w, b, a];\n }\n}\n\nfunction getRgb(string) {\n var rgba = getRgba(string);\n return rgba && rgba.slice(0, 3);\n}\n\nfunction getHsl(string) {\n var hsla = getHsla(string);\n return hsla && hsla.slice(0, 3);\n}\n\nfunction getAlpha(string) {\n var vals = getRgba(string);\n if (vals) {\n return vals[3];\n }\n else if (vals = getHsla(string)) {\n return vals[3];\n }\n else if (vals = getHwb(string)) {\n return vals[3];\n }\n}\n\n// generators\nfunction hexString(rgba, a) {\n var a = (a !== undefined && rgba.length === 3) ? a : rgba[3];\n return \"#\" + hexDouble(rgba[0]) \n + hexDouble(rgba[1])\n + hexDouble(rgba[2])\n + (\n (a >= 0 && a < 1)\n ? hexDouble(Math.round(a * 255))\n : \"\"\n );\n}\n\nfunction rgbString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return rgbaString(rgba, alpha);\n }\n return \"rgb(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2] + \")\";\n}\n\nfunction rgbaString(rgba, alpha) {\n if (alpha === undefined) {\n alpha = (rgba[3] !== undefined ? rgba[3] : 1);\n }\n return \"rgba(\" + rgba[0] + \", \" + rgba[1] + \", \" + rgba[2]\n + \", \" + alpha + \")\";\n}\n\nfunction percentString(rgba, alpha) {\n if (alpha < 1 || (rgba[3] && rgba[3] < 1)) {\n return percentaString(rgba, alpha);\n }\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n\n return \"rgb(\" + r + \"%, \" + g + \"%, \" + b + \"%)\";\n}\n\nfunction percentaString(rgba, alpha) {\n var r = Math.round(rgba[0]/255 * 100),\n g = Math.round(rgba[1]/255 * 100),\n b = Math.round(rgba[2]/255 * 100);\n return \"rgba(\" + r + \"%, \" + g + \"%, \" + b + \"%, \" + (alpha || rgba[3] || 1) + \")\";\n}\n\nfunction hslString(hsla, alpha) {\n if (alpha < 1 || (hsla[3] && hsla[3] < 1)) {\n return hslaString(hsla, alpha);\n }\n return \"hsl(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%)\";\n}\n\nfunction hslaString(hsla, alpha) {\n if (alpha === undefined) {\n alpha = (hsla[3] !== undefined ? hsla[3] : 1);\n }\n return \"hsla(\" + hsla[0] + \", \" + hsla[1] + \"%, \" + hsla[2] + \"%, \"\n + alpha + \")\";\n}\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\nfunction hwbString(hwb, alpha) {\n if (alpha === undefined) {\n alpha = (hwb[3] !== undefined ? hwb[3] : 1);\n }\n return \"hwb(\" + hwb[0] + \", \" + hwb[1] + \"%, \" + hwb[2] + \"%\"\n + (alpha !== undefined && alpha !== 1 ? \", \" + alpha : \"\") + \")\";\n}\n\nfunction keyword(rgb) {\n return reverseNames[rgb.slice(0, 3)];\n}\n\n// helpers\nfunction scale(num, min, max) {\n return Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n var str = num.toString(16).toUpperCase();\n return (str.length < 2) ? \"0\" + str : str;\n}\n\n\n//create a list of reverse color names\nvar reverseNames = {};\nfor (var name in colorName$1) {\n reverseNames[colorName$1[name]] = name;\n}\n\n/* MIT license */\n\n\n\nvar Color = function (obj) {\n\tif (obj instanceof Color) {\n\t\treturn obj;\n\t}\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(obj);\n\t}\n\n\tthis.valid = false;\n\tthis.values = {\n\t\trgb: [0, 0, 0],\n\t\thsl: [0, 0, 0],\n\t\thsv: [0, 0, 0],\n\t\thwb: [0, 0, 0],\n\t\tcmyk: [0, 0, 0, 0],\n\t\talpha: 1\n\t};\n\n\t// parse Color() argument\n\tvar vals;\n\tif (typeof obj === 'string') {\n\t\tvals = colorString.getRgba(obj);\n\t\tif (vals) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals = colorString.getHsla(obj)) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals = colorString.getHwb(obj)) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t}\n\t} else if (typeof obj === 'object') {\n\t\tvals = obj;\n\t\tif (vals.r !== undefined || vals.red !== undefined) {\n\t\t\tthis.setValues('rgb', vals);\n\t\t} else if (vals.l !== undefined || vals.lightness !== undefined) {\n\t\t\tthis.setValues('hsl', vals);\n\t\t} else if (vals.v !== undefined || vals.value !== undefined) {\n\t\t\tthis.setValues('hsv', vals);\n\t\t} else if (vals.w !== undefined || vals.whiteness !== undefined) {\n\t\t\tthis.setValues('hwb', vals);\n\t\t} else if (vals.c !== undefined || vals.cyan !== undefined) {\n\t\t\tthis.setValues('cmyk', vals);\n\t\t}\n\t}\n};\n\nColor.prototype = {\n\tisValid: function () {\n\t\treturn this.valid;\n\t},\n\trgb: function () {\n\t\treturn this.setSpace('rgb', arguments);\n\t},\n\thsl: function () {\n\t\treturn this.setSpace('hsl', arguments);\n\t},\n\thsv: function () {\n\t\treturn this.setSpace('hsv', arguments);\n\t},\n\thwb: function () {\n\t\treturn this.setSpace('hwb', arguments);\n\t},\n\tcmyk: function () {\n\t\treturn this.setSpace('cmyk', arguments);\n\t},\n\n\trgbArray: function () {\n\t\treturn this.values.rgb;\n\t},\n\thslArray: function () {\n\t\treturn this.values.hsl;\n\t},\n\thsvArray: function () {\n\t\treturn this.values.hsv;\n\t},\n\thwbArray: function () {\n\t\tvar values = this.values;\n\t\tif (values.alpha !== 1) {\n\t\t\treturn values.hwb.concat([values.alpha]);\n\t\t}\n\t\treturn values.hwb;\n\t},\n\tcmykArray: function () {\n\t\treturn this.values.cmyk;\n\t},\n\trgbaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.rgb.concat([values.alpha]);\n\t},\n\thslaArray: function () {\n\t\tvar values = this.values;\n\t\treturn values.hsl.concat([values.alpha]);\n\t},\n\talpha: function (val) {\n\t\tif (val === undefined) {\n\t\t\treturn this.values.alpha;\n\t\t}\n\t\tthis.setValues('alpha', val);\n\t\treturn this;\n\t},\n\n\tred: function (val) {\n\t\treturn this.setChannel('rgb', 0, val);\n\t},\n\tgreen: function (val) {\n\t\treturn this.setChannel('rgb', 1, val);\n\t},\n\tblue: function (val) {\n\t\treturn this.setChannel('rgb', 2, val);\n\t},\n\thue: function (val) {\n\t\tif (val) {\n\t\t\tval %= 360;\n\t\t\tval = val < 0 ? 360 + val : val;\n\t\t}\n\t\treturn this.setChannel('hsl', 0, val);\n\t},\n\tsaturation: function (val) {\n\t\treturn this.setChannel('hsl', 1, val);\n\t},\n\tlightness: function (val) {\n\t\treturn this.setChannel('hsl', 2, val);\n\t},\n\tsaturationv: function (val) {\n\t\treturn this.setChannel('hsv', 1, val);\n\t},\n\twhiteness: function (val) {\n\t\treturn this.setChannel('hwb', 1, val);\n\t},\n\tblackness: function (val) {\n\t\treturn this.setChannel('hwb', 2, val);\n\t},\n\tvalue: function (val) {\n\t\treturn this.setChannel('hsv', 2, val);\n\t},\n\tcyan: function (val) {\n\t\treturn this.setChannel('cmyk', 0, val);\n\t},\n\tmagenta: function (val) {\n\t\treturn this.setChannel('cmyk', 1, val);\n\t},\n\tyellow: function (val) {\n\t\treturn this.setChannel('cmyk', 2, val);\n\t},\n\tblack: function (val) {\n\t\treturn this.setChannel('cmyk', 3, val);\n\t},\n\n\thexString: function () {\n\t\treturn colorString.hexString(this.values.rgb);\n\t},\n\trgbString: function () {\n\t\treturn colorString.rgbString(this.values.rgb, this.values.alpha);\n\t},\n\trgbaString: function () {\n\t\treturn colorString.rgbaString(this.values.rgb, this.values.alpha);\n\t},\n\tpercentString: function () {\n\t\treturn colorString.percentString(this.values.rgb, this.values.alpha);\n\t},\n\thslString: function () {\n\t\treturn colorString.hslString(this.values.hsl, this.values.alpha);\n\t},\n\thslaString: function () {\n\t\treturn colorString.hslaString(this.values.hsl, this.values.alpha);\n\t},\n\thwbString: function () {\n\t\treturn colorString.hwbString(this.values.hwb, this.values.alpha);\n\t},\n\tkeyword: function () {\n\t\treturn colorString.keyword(this.values.rgb, this.values.alpha);\n\t},\n\n\trgbNumber: function () {\n\t\tvar rgb = this.values.rgb;\n\t\treturn (rgb[0] << 16) | (rgb[1] << 8) | rgb[2];\n\t},\n\n\tluminosity: function () {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tvar rgb = this.values.rgb;\n\t\tvar lum = [];\n\t\tfor (var i = 0; i < rgb.length; i++) {\n\t\t\tvar chan = rgb[i] / 255;\n\t\t\tlum[i] = (chan <= 0.03928) ? chan / 12.92 : Math.pow(((chan + 0.055) / 1.055), 2.4);\n\t\t}\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast: function (color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tvar lum1 = this.luminosity();\n\t\tvar lum2 = color2.luminosity();\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel: function (color2) {\n\t\tvar contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7.1) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tdark: function () {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tvar rgb = this.values.rgb;\n\t\tvar yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n\t\treturn yiq < 128;\n\t},\n\n\tlight: function () {\n\t\treturn !this.dark();\n\t},\n\n\tnegate: function () {\n\t\tvar rgb = [];\n\t\tfor (var i = 0; i < 3; i++) {\n\t\t\trgb[i] = 255 - this.values.rgb[i];\n\t\t}\n\t\tthis.setValues('rgb', rgb);\n\t\treturn this;\n\t},\n\n\tlighten: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] += hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdarken: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[2] -= hsl[2] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tsaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] += hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\tdesaturate: function (ratio) {\n\t\tvar hsl = this.values.hsl;\n\t\thsl[1] -= hsl[1] * ratio;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\twhiten: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[1] += hwb[1] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tblacken: function (ratio) {\n\t\tvar hwb = this.values.hwb;\n\t\thwb[2] += hwb[2] * ratio;\n\t\tthis.setValues('hwb', hwb);\n\t\treturn this;\n\t},\n\n\tgreyscale: function () {\n\t\tvar rgb = this.values.rgb;\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tvar val = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\tthis.setValues('rgb', [val, val, val]);\n\t\treturn this;\n\t},\n\n\tclearer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha - (alpha * ratio));\n\t\treturn this;\n\t},\n\n\topaquer: function (ratio) {\n\t\tvar alpha = this.values.alpha;\n\t\tthis.setValues('alpha', alpha + (alpha * ratio));\n\t\treturn this;\n\t},\n\n\trotate: function (degrees) {\n\t\tvar hsl = this.values.hsl;\n\t\tvar hue = (hsl[0] + degrees) % 360;\n\t\thsl[0] = hue < 0 ? 360 + hue : hue;\n\t\tthis.setValues('hsl', hsl);\n\t\treturn this;\n\t},\n\n\t/**\n\t * Ported from sass implementation in C\n\t * https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t */\n\tmix: function (mixinColor, weight) {\n\t\tvar color1 = this;\n\t\tvar color2 = mixinColor;\n\t\tvar p = weight === undefined ? 0.5 : weight;\n\n\t\tvar w = 2 * p - 1;\n\t\tvar a = color1.alpha() - color2.alpha();\n\n\t\tvar w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\tvar w2 = 1 - w1;\n\n\t\treturn this\n\t\t\t.rgb(\n\t\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\t\tw1 * color1.blue() + w2 * color2.blue()\n\t\t\t)\n\t\t\t.alpha(color1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n\n\ttoJSON: function () {\n\t\treturn this.rgb();\n\t},\n\n\tclone: function () {\n\t\t// NOTE(SB): using node-clone creates a dependency to Buffer when using browserify,\n\t\t// making the final build way to big to embed in Chart.js. So let's do it manually,\n\t\t// assuming that values to clone are 1 dimension arrays containing only numbers,\n\t\t// except 'alpha' which is a number.\n\t\tvar result = new Color();\n\t\tvar source = this.values;\n\t\tvar target = result.values;\n\t\tvar value, type;\n\n\t\tfor (var prop in source) {\n\t\t\tif (source.hasOwnProperty(prop)) {\n\t\t\t\tvalue = source[prop];\n\t\t\t\ttype = ({}).toString.call(value);\n\t\t\t\tif (type === '[object Array]') {\n\t\t\t\t\ttarget[prop] = value.slice(0);\n\t\t\t\t} else if (type === '[object Number]') {\n\t\t\t\t\ttarget[prop] = value;\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('unexpected color value:', value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n};\n\nColor.prototype.spaces = {\n\trgb: ['red', 'green', 'blue'],\n\thsl: ['hue', 'saturation', 'lightness'],\n\thsv: ['hue', 'saturation', 'value'],\n\thwb: ['hue', 'whiteness', 'blackness'],\n\tcmyk: ['cyan', 'magenta', 'yellow', 'black']\n};\n\nColor.prototype.maxes = {\n\trgb: [255, 255, 255],\n\thsl: [360, 100, 100],\n\thsv: [360, 100, 100],\n\thwb: [360, 100, 100],\n\tcmyk: [100, 100, 100, 100]\n};\n\nColor.prototype.getValues = function (space) {\n\tvar values = this.values;\n\tvar vals = {};\n\n\tfor (var i = 0; i < space.length; i++) {\n\t\tvals[space.charAt(i)] = values[space][i];\n\t}\n\n\tif (values.alpha !== 1) {\n\t\tvals.a = values.alpha;\n\t}\n\n\t// {r: 255, g: 255, b: 255, a: 0.4}\n\treturn vals;\n};\n\nColor.prototype.setValues = function (space, vals) {\n\tvar values = this.values;\n\tvar spaces = this.spaces;\n\tvar maxes = this.maxes;\n\tvar alpha = 1;\n\tvar i;\n\n\tthis.valid = true;\n\n\tif (space === 'alpha') {\n\t\talpha = vals;\n\t} else if (vals.length) {\n\t\t// [10, 10, 10]\n\t\tvalues[space] = vals.slice(0, space.length);\n\t\talpha = vals[space.length];\n\t} else if (vals[space.charAt(0)] !== undefined) {\n\t\t// {r: 10, g: 10, b: 10}\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[space.charAt(i)];\n\t\t}\n\n\t\talpha = vals.a;\n\t} else if (vals[spaces[space][0]] !== undefined) {\n\t\t// {red: 10, green: 10, blue: 10}\n\t\tvar chans = spaces[space];\n\n\t\tfor (i = 0; i < space.length; i++) {\n\t\t\tvalues[space][i] = vals[chans[i]];\n\t\t}\n\n\t\talpha = vals.alpha;\n\t}\n\n\tvalues.alpha = Math.max(0, Math.min(1, (alpha === undefined ? values.alpha : alpha)));\n\n\tif (space === 'alpha') {\n\t\treturn false;\n\t}\n\n\tvar capped;\n\n\t// cap values of the space prior converting all values\n\tfor (i = 0; i < space.length; i++) {\n\t\tcapped = Math.max(0, Math.min(maxes[space][i], values[space][i]));\n\t\tvalues[space][i] = Math.round(capped);\n\t}\n\n\t// convert to all the other color spaces\n\tfor (var sname in spaces) {\n\t\tif (sname !== space) {\n\t\t\tvalues[sname] = colorConvert[space][sname](values[space]);\n\t\t}\n\t}\n\n\treturn true;\n};\n\nColor.prototype.setSpace = function (space, args) {\n\tvar vals = args[0];\n\n\tif (vals === undefined) {\n\t\t// color.rgb()\n\t\treturn this.getValues(space);\n\t}\n\n\t// color.rgb(10, 10, 10)\n\tif (typeof vals === 'number') {\n\t\tvals = Array.prototype.slice.call(args);\n\t}\n\n\tthis.setValues(space, vals);\n\treturn this;\n};\n\nColor.prototype.setChannel = function (space, index, val) {\n\tvar svalues = this.values[space];\n\tif (val === undefined) {\n\t\t// color.red()\n\t\treturn svalues[index];\n\t} else if (val === svalues[index]) {\n\t\t// color.red(color.red())\n\t\treturn this;\n\t}\n\n\t// color.red(100)\n\tsvalues[index] = val;\n\tthis.setValues(space, svalues);\n\n\treturn this;\n};\n\nif (typeof window !== 'undefined') {\n\twindow.Color = Color;\n}\n\nvar chartjsColor = Color;\n\nfunction isValidKey(key) {\r\n\treturn ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\r\n}\r\n\r\n/**\r\n * @namespace Chart.helpers\r\n */\r\nvar helpers = {\r\n\t/**\r\n\t * An empty function that can be used, for example, for optional callback.\r\n\t */\r\n\tnoop: function() {},\r\n\r\n\t/**\r\n\t * Returns a unique id, sequentially generated from a global variable.\r\n\t * @returns {number}\r\n\t * @function\r\n\t */\r\n\tuid: (function() {\r\n\t\tvar id = 0;\r\n\t\treturn function() {\r\n\t\t\treturn id++;\r\n\t\t};\r\n\t}()),\r\n\r\n\t/**\r\n\t * Returns true if `value` is neither null nor undefined, else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisNullOrUndef: function(value) {\r\n\t\treturn value === null || typeof value === 'undefined';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an array (including typed arrays), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @function\r\n\t */\r\n\tisArray: function(value) {\r\n\t\tif (Array.isArray && Array.isArray(value)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tvar type = Object.prototype.toString.call(value);\r\n\t\tif (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is an object (excluding null), else returns false.\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t * @since 2.7.0\r\n\t */\r\n\tisObject: function(value) {\r\n\t\treturn value !== null && Object.prototype.toString.call(value) === '[object Object]';\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if `value` is a finite number, else returns false\r\n\t * @param {*} value - The value to test.\r\n\t * @returns {boolean}\r\n\t */\r\n\tisFinite: function(value) {\r\n\t\treturn (typeof value === 'number' || value instanceof Number) && isFinite(value);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns `value` if defined, else returns `defaultValue`.\r\n\t * @param {*} value - The value to return if defined.\r\n\t * @param {*} defaultValue - The value to return if `value` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueOrDefault: function(value, defaultValue) {\r\n\t\treturn typeof value === 'undefined' ? defaultValue : value;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns value at the given `index` in array if defined, else returns `defaultValue`.\r\n\t * @param {Array} value - The array to lookup for value at `index`.\r\n\t * @param {number} index - The index in `value` to lookup for value.\r\n\t * @param {*} defaultValue - The value to return if `value[index]` is undefined.\r\n\t * @returns {*}\r\n\t */\r\n\tvalueAtIndexOrDefault: function(value, index, defaultValue) {\r\n\t\treturn helpers.valueOrDefault(helpers.isArray(value) ? value[index] : value, defaultValue);\r\n\t},\r\n\r\n\t/**\r\n\t * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\r\n\t * value returned by `fn`. If `fn` is not a function, this method returns undefined.\r\n\t * @param {function} fn - The function to call.\r\n\t * @param {Array|undefined|null} args - The arguments with which `fn` should be called.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @returns {*}\r\n\t */\r\n\tcallback: function(fn, args, thisArg) {\r\n\t\tif (fn && typeof fn.call === 'function') {\r\n\t\t\treturn fn.apply(thisArg, args);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Note(SB) for performance sake, this method should only be used when loopable type\r\n\t * is unknown or in none intensive code (not called often and small loopable). Else\r\n\t * it's preferable to use a regular for() loop and save extra function calls.\r\n\t * @param {object|Array} loopable - The object or array to be iterated.\r\n\t * @param {function} fn - The function to call for each item.\r\n\t * @param {object} [thisArg] - The value of `this` provided for the call to `fn`.\r\n\t * @param {boolean} [reverse] - If true, iterates backward on the loopable.\r\n\t */\r\n\teach: function(loopable, fn, thisArg, reverse) {\r\n\t\tvar i, len, keys;\r\n\t\tif (helpers.isArray(loopable)) {\r\n\t\t\tlen = loopable.length;\r\n\t\t\tif (reverse) {\r\n\t\t\t\tfor (i = len - 1; i >= 0; i--) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\t\tfn.call(thisArg, loopable[i], i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else if (helpers.isObject(loopable)) {\r\n\t\t\tkeys = Object.keys(loopable);\r\n\t\t\tlen = keys.length;\r\n\t\t\tfor (i = 0; i < len; i++) {\r\n\t\t\t\tfn.call(thisArg, loopable[keys[i]], keys[i]);\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\r\n\t * @see https://stackoverflow.com/a/14853974\r\n\t * @param {Array} a0 - The array to compare\r\n\t * @param {Array} a1 - The array to compare\r\n\t * @returns {boolean}\r\n\t */\r\n\tarrayEquals: function(a0, a1) {\r\n\t\tvar i, ilen, v0, v1;\r\n\r\n\t\tif (!a0 || !a1 || a0.length !== a1.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = a0.length; i < ilen; ++i) {\r\n\t\t\tv0 = a0[i];\r\n\t\t\tv1 = a1[i];\r\n\r\n\t\t\tif (v0 instanceof Array && v1 instanceof Array) {\r\n\t\t\t\tif (!helpers.arrayEquals(v0, v1)) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t} else if (v0 !== v1) {\r\n\t\t\t\t// NOTE: two different object instances will never be equal: {x:20} != {x:20}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a deep copy of `source` without keeping references on objects and arrays.\r\n\t * @param {*} source - The value to clone.\r\n\t * @returns {*}\r\n\t */\r\n\tclone: function(source) {\r\n\t\tif (helpers.isArray(source)) {\r\n\t\t\treturn source.map(helpers.clone);\r\n\t\t}\r\n\r\n\t\tif (helpers.isObject(source)) {\r\n\t\t\tvar target = Object.create(source);\r\n\t\t\tvar keys = Object.keys(source);\r\n\t\t\tvar klen = keys.length;\r\n\t\t\tvar k = 0;\r\n\r\n\t\t\tfor (; k < klen; ++k) {\r\n\t\t\t\ttarget[keys[k]] = helpers.clone(source[keys[k]]);\r\n\t\t\t}\r\n\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\treturn source;\r\n\t},\r\n\r\n\t/**\r\n\t * The default merger when Chart.helpers.merge is called without merger option.\r\n\t * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\r\n\t * @private\r\n\t */\r\n\t_merger: function(key, target, source, options) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.merge(tval, sval, options);\r\n\t\t} else {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Merges source[key] in target[key] only if target[key] is undefined.\r\n\t * @private\r\n\t */\r\n\t_mergerIf: function(key, target, source) {\r\n\t\tif (!isValidKey(key)) {\r\n\t\t\t// We want to ensure we do not copy prototypes over\r\n\t\t\t// as this can pollute global namespaces\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar tval = target[key];\r\n\t\tvar sval = source[key];\r\n\r\n\t\tif (helpers.isObject(tval) && helpers.isObject(sval)) {\r\n\t\t\thelpers.mergeIf(tval, sval);\r\n\t\t} else if (!target.hasOwnProperty(key)) {\r\n\t\t\ttarget[key] = helpers.clone(sval);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` with the given `options`.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @param {object} [options] - Merging options:\r\n\t * @param {function} [options.merger] - The merge method (key, target, source, options)\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmerge: function(target, source, options) {\r\n\t\tvar sources = helpers.isArray(source) ? source : [source];\r\n\t\tvar ilen = sources.length;\r\n\t\tvar merge, i, keys, klen, k;\r\n\r\n\t\tif (!helpers.isObject(target)) {\r\n\t\t\treturn target;\r\n\t\t}\r\n\r\n\t\toptions = options || {};\r\n\t\tmerge = options.merger || helpers._merger;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tsource = sources[i];\r\n\t\t\tif (!helpers.isObject(source)) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tkeys = Object.keys(source);\r\n\t\t\tfor (k = 0, klen = keys.length; k < klen; ++k) {\r\n\t\t\t\tmerge(keys[k], target, source, options);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\t},\r\n\r\n\t/**\r\n\t * Recursively deep copies `source` properties into `target` *only* if not defined in target.\r\n\t * IMPORTANT: `target` is not cloned and will be updated with `source` properties.\r\n\t * @param {object} target - The target object in which all sources are merged into.\r\n\t * @param {object|object[]} source - Object(s) to merge into `target`.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\tmergeIf: function(target, source) {\r\n\t\treturn helpers.merge(target, source, {merger: helpers._mergerIf});\r\n\t},\r\n\r\n\t/**\r\n\t * Applies the contents of two or more objects together into the first object.\r\n\t * @param {object} target - The target object in which all objects are merged into.\r\n\t * @param {object} arg1 - Object containing additional properties to merge in target.\r\n\t * @param {object} argN - Additional objects containing properties to merge in target.\r\n\t * @returns {object} The `target` object.\r\n\t */\r\n\textend: Object.assign || function(target) {\r\n\t\treturn helpers.merge(target, [].slice.call(arguments, 1), {\r\n\t\t\tmerger: function(key, dst, src) {\r\n\t\t\t\tdst[key] = src[key];\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * Basic javascript inheritance based on the model created in Backbone.js\r\n\t */\r\n\tinherits: function(extensions) {\r\n\t\tvar me = this;\r\n\t\tvar ChartElement = (extensions && extensions.hasOwnProperty('constructor')) ? extensions.constructor : function() {\r\n\t\t\treturn me.apply(this, arguments);\r\n\t\t};\r\n\r\n\t\tvar Surrogate = function() {\r\n\t\t\tthis.constructor = ChartElement;\r\n\t\t};\r\n\r\n\t\tSurrogate.prototype = me.prototype;\r\n\t\tChartElement.prototype = new Surrogate();\r\n\t\tChartElement.extend = helpers.inherits;\r\n\r\n\t\tif (extensions) {\r\n\t\t\thelpers.extend(ChartElement.prototype, extensions);\r\n\t\t}\r\n\r\n\t\tChartElement.__super__ = me.prototype;\r\n\t\treturn ChartElement;\r\n\t},\r\n\r\n\t_deprecated: function(scope, value, previous, current) {\r\n\t\tif (value !== undefined) {\r\n\t\t\tconsole.warn(scope + ': \"' + previous +\r\n\t\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\r\n\t\t}\r\n\t}\r\n};\r\n\r\nvar helpers_core = helpers;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.callback instead.\r\n * @function Chart.helpers.callCallback\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.callCallback = helpers.callback;\r\n\r\n/**\r\n * Provided for backward compatibility, use Array.prototype.indexOf instead.\r\n * Array.prototype.indexOf compatibility: Chrome, Opera, Safari, FF1.5+, IE9+\r\n * @function Chart.helpers.indexOf\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.indexOf = function(array, item, fromIndex) {\r\n\treturn Array.prototype.indexOf.call(array, item, fromIndex);\r\n};\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueOrDefault instead.\r\n * @function Chart.helpers.getValueOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueOrDefault = helpers.valueOrDefault;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.valueAtIndexOrDefault instead.\r\n * @function Chart.helpers.getValueAtIndexOrDefault\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers.getValueAtIndexOrDefault = helpers.valueAtIndexOrDefault;\n\n/**\r\n * Easing functions adapted from Robert Penner's easing equations.\r\n * @namespace Chart.helpers.easingEffects\r\n * @see http://www.robertpenner.com/easing/\r\n */\r\nvar effects = {\r\n\tlinear: function(t) {\r\n\t\treturn t;\r\n\t},\r\n\r\n\teaseInQuad: function(t) {\r\n\t\treturn t * t;\r\n\t},\r\n\r\n\teaseOutQuad: function(t) {\r\n\t\treturn -t * (t - 2);\r\n\t},\r\n\r\n\teaseInOutQuad: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((--t) * (t - 2) - 1);\r\n\t},\r\n\r\n\teaseInCubic: function(t) {\r\n\t\treturn t * t * t;\r\n\t},\r\n\r\n\teaseOutCubic: function(t) {\r\n\t\treturn (t = t - 1) * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutCubic: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t + 2);\r\n\t},\r\n\r\n\teaseInQuart: function(t) {\r\n\t\treturn t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuart: function(t) {\r\n\t\treturn -((t = t - 1) * t * t * t - 1);\r\n\t},\r\n\r\n\teaseInOutQuart: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t;\r\n\t\t}\r\n\t\treturn -0.5 * ((t -= 2) * t * t * t - 2);\r\n\t},\r\n\r\n\teaseInQuint: function(t) {\r\n\t\treturn t * t * t * t * t;\r\n\t},\r\n\r\n\teaseOutQuint: function(t) {\r\n\t\treturn (t = t - 1) * t * t * t * t + 1;\r\n\t},\r\n\r\n\teaseInOutQuint: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * t * t * t * t * t;\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * t * t * t + 2);\r\n\t},\r\n\r\n\teaseInSine: function(t) {\r\n\t\treturn -Math.cos(t * (Math.PI / 2)) + 1;\r\n\t},\r\n\r\n\teaseOutSine: function(t) {\r\n\t\treturn Math.sin(t * (Math.PI / 2));\r\n\t},\r\n\r\n\teaseInOutSine: function(t) {\r\n\t\treturn -0.5 * (Math.cos(Math.PI * t) - 1);\r\n\t},\r\n\r\n\teaseInExpo: function(t) {\r\n\t\treturn (t === 0) ? 0 : Math.pow(2, 10 * (t - 1));\r\n\t},\r\n\r\n\teaseOutExpo: function(t) {\r\n\t\treturn (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1;\r\n\t},\r\n\r\n\teaseInOutExpo: function(t) {\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * Math.pow(2, 10 * (t - 1));\r\n\t\t}\r\n\t\treturn 0.5 * (-Math.pow(2, -10 * --t) + 2);\r\n\t},\r\n\r\n\teaseInCirc: function(t) {\r\n\t\tif (t >= 1) {\r\n\t\t\treturn t;\r\n\t\t}\r\n\t\treturn -(Math.sqrt(1 - t * t) - 1);\r\n\t},\r\n\r\n\teaseOutCirc: function(t) {\r\n\t\treturn Math.sqrt(1 - (t = t - 1) * t);\r\n\t},\r\n\r\n\teaseInOutCirc: function(t) {\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn -0.5 * (Math.sqrt(1 - t * t) - 1);\r\n\t\t}\r\n\t\treturn 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\r\n\t},\r\n\r\n\teaseInElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t},\r\n\r\n\teaseOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (t === 1) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.3;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * t) * Math.sin((t - s) * (2 * Math.PI) / p) + 1;\r\n\t},\r\n\r\n\teaseInOutElastic: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tvar p = 0;\r\n\t\tvar a = 1;\r\n\t\tif (t === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif ((t /= 0.5) === 2) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (!p) {\r\n\t\t\tp = 0.45;\r\n\t\t}\r\n\t\tif (a < 1) {\r\n\t\t\ta = 1;\r\n\t\t\ts = p / 4;\r\n\t\t} else {\r\n\t\t\ts = p / (2 * Math.PI) * Math.asin(1 / a);\r\n\t\t}\r\n\t\tif (t < 1) {\r\n\t\t\treturn -0.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p));\r\n\t\t}\r\n\t\treturn a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t - s) * (2 * Math.PI) / p) * 0.5 + 1;\r\n\t},\r\n\teaseInBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn t * t * ((s + 1) * t - s);\r\n\t},\r\n\r\n\teaseOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\treturn (t = t - 1) * t * ((s + 1) * t + s) + 1;\r\n\t},\r\n\r\n\teaseInOutBack: function(t) {\r\n\t\tvar s = 1.70158;\r\n\t\tif ((t /= 0.5) < 1) {\r\n\t\t\treturn 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\r\n\t\t}\r\n\t\treturn 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\r\n\t},\r\n\r\n\teaseInBounce: function(t) {\r\n\t\treturn 1 - effects.easeOutBounce(1 - t);\r\n\t},\r\n\r\n\teaseOutBounce: function(t) {\r\n\t\tif (t < (1 / 2.75)) {\r\n\t\t\treturn 7.5625 * t * t;\r\n\t\t}\r\n\t\tif (t < (2 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (1.5 / 2.75)) * t + 0.75;\r\n\t\t}\r\n\t\tif (t < (2.5 / 2.75)) {\r\n\t\t\treturn 7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375;\r\n\t\t}\r\n\t\treturn 7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375;\r\n\t},\r\n\r\n\teaseInOutBounce: function(t) {\r\n\t\tif (t < 0.5) {\r\n\t\t\treturn effects.easeInBounce(t * 2) * 0.5;\r\n\t\t}\r\n\t\treturn effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5;\r\n\t}\r\n};\r\n\r\nvar helpers_easing = {\r\n\teffects: effects\r\n};\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.easing.effects instead.\r\n * @function Chart.helpers.easingEffects\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.easingEffects = effects;\n\nvar PI = Math.PI;\r\nvar RAD_PER_DEG = PI / 180;\r\nvar DOUBLE_PI = PI * 2;\r\nvar HALF_PI = PI / 2;\r\nvar QUARTER_PI = PI / 4;\r\nvar TWO_THIRDS_PI = PI * 2 / 3;\r\n\r\n/**\r\n * @namespace Chart.helpers.canvas\r\n */\r\nvar exports$1 = {\r\n\t/**\r\n\t * Clears the entire canvas associated to the given `chart`.\r\n\t * @param {Chart} chart - The chart for which to clear the canvas.\r\n\t */\r\n\tclear: function(chart) {\r\n\t\tchart.ctx.clearRect(0, 0, chart.width, chart.height);\r\n\t},\r\n\r\n\t/**\r\n\t * Creates a \"path\" for a rectangle with rounded corners at position (x, y) with a\r\n\t * given size (width, height) and the same `radius` for all corners.\r\n\t * @param {CanvasRenderingContext2D} ctx - The canvas 2D Context.\r\n\t * @param {number} x - The x axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} y - The y axis of the coordinate for the rectangle starting point.\r\n\t * @param {number} width - The rectangle's width.\r\n\t * @param {number} height - The rectangle's height.\r\n\t * @param {number} radius - The rounded amount (in pixels) for the four corners.\r\n\t * @todo handle `radius` as top-left, top-right, bottom-right, bottom-left array/object?\r\n\t */\r\n\troundedRect: function(ctx, x, y, width, height, radius) {\r\n\t\tif (radius) {\r\n\t\t\tvar r = Math.min(radius, height / 2, width / 2);\r\n\t\t\tvar left = x + r;\r\n\t\t\tvar top = y + r;\r\n\t\t\tvar right = x + width - r;\r\n\t\t\tvar bottom = y + height - r;\r\n\r\n\t\t\tctx.moveTo(x, top);\r\n\t\t\tif (left < right && top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, -HALF_PI);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, 0);\r\n\t\t\t\tctx.arc(right, bottom, r, 0, HALF_PI);\r\n\t\t\t\tctx.arc(left, bottom, r, HALF_PI, PI);\r\n\t\t\t} else if (left < right) {\r\n\t\t\t\tctx.moveTo(left, y);\r\n\t\t\t\tctx.arc(right, top, r, -HALF_PI, HALF_PI);\r\n\t\t\t\tctx.arc(left, top, r, HALF_PI, PI + HALF_PI);\r\n\t\t\t} else if (top < bottom) {\r\n\t\t\t\tctx.arc(left, top, r, -PI, 0);\r\n\t\t\t\tctx.arc(left, bottom, r, 0, PI);\r\n\t\t\t} else {\r\n\t\t\t\tctx.arc(left, top, r, -PI, PI);\r\n\t\t\t}\r\n\t\t\tctx.closePath();\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t} else {\r\n\t\t\tctx.rect(x, y, width, height);\r\n\t\t}\r\n\t},\r\n\r\n\tdrawPoint: function(ctx, style, radius, x, y, rotation) {\r\n\t\tvar type, xOffset, yOffset, size, cornerRadius;\r\n\t\tvar rad = (rotation || 0) * RAD_PER_DEG;\r\n\r\n\t\tif (style && typeof style === 'object') {\r\n\t\t\ttype = style.toString();\r\n\t\t\tif (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\r\n\t\t\t\tctx.save();\r\n\t\t\t\tctx.translate(x, y);\r\n\t\t\t\tctx.rotate(rad);\r\n\t\t\t\tctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\r\n\t\t\t\tctx.restore();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (isNaN(radius) || radius <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\r\n\t\tswitch (style) {\r\n\t\t// Default includes circle\r\n\t\tdefault:\r\n\t\t\tctx.arc(x, y, radius, 0, DOUBLE_PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'triangle':\r\n\t\t\tctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\trad += TWO_THIRDS_PI;\r\n\t\t\tctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rectRounded':\r\n\t\t\t// NOTE: the rounded rect implementation changed to use `arc` instead of\r\n\t\t\t// `quadraticCurveTo` since it generates better results when rect is\r\n\t\t\t// almost a circle. 0.516 (instead of 0.5) produces results with visually\r\n\t\t\t// closer proportion to the previous impl and it is inscribed in the\r\n\t\t\t// circle with `radius`. For more details, see the following PRs:\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5597\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/5858\r\n\t\t\tcornerRadius = radius * 0.516;\r\n\t\t\tsize = radius - cornerRadius;\r\n\t\t\txOffset = Math.cos(rad + QUARTER_PI) * size;\r\n\t\t\tyOffset = Math.sin(rad + QUARTER_PI) * size;\r\n\t\t\tctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\r\n\t\t\tctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\r\n\t\t\tctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\r\n\t\t\tctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'rect':\r\n\t\t\tif (!rotation) {\r\n\t\t\t\tsize = Math.SQRT1_2 * radius;\r\n\t\t\t\tctx.rect(x - size, y - size, 2 * size, 2 * size);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'rectRot':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tctx.closePath();\r\n\t\t\tbreak;\r\n\t\tcase 'crossRot':\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\t/* falls through */\r\n\t\tcase 'cross':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'star':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\trad += QUARTER_PI;\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tctx.moveTo(x + yOffset, y - xOffset);\r\n\t\t\tctx.lineTo(x - yOffset, y + xOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'line':\r\n\t\t\txOffset = Math.cos(rad) * radius;\r\n\t\t\tyOffset = Math.sin(rad) * radius;\r\n\t\t\tctx.moveTo(x - xOffset, y - yOffset);\r\n\t\t\tctx.lineTo(x + xOffset, y + yOffset);\r\n\t\t\tbreak;\r\n\t\tcase 'dash':\r\n\t\t\tctx.moveTo(x, y);\r\n\t\t\tctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns true if the point is inside the rectangle\r\n\t * @param {object} point - The point to test\r\n\t * @param {object} area - The rectangle\r\n\t * @returns {boolean}\r\n\t * @private\r\n\t */\r\n\t_isPointInArea: function(point, area) {\r\n\t\tvar epsilon = 1e-6; // 1e-6 is margin in pixels for accumulated error.\r\n\r\n\t\treturn point.x > area.left - epsilon && point.x < area.right + epsilon &&\r\n\t\t\tpoint.y > area.top - epsilon && point.y < area.bottom + epsilon;\r\n\t},\r\n\r\n\tclipArea: function(ctx, area) {\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\r\n\t\tctx.clip();\r\n\t},\r\n\r\n\tunclipArea: function(ctx) {\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\tlineTo: function(ctx, previous, target, flip) {\r\n\t\tvar stepped = target.steppedLine;\r\n\t\tif (stepped) {\r\n\t\t\tif (stepped === 'middle') {\r\n\t\t\t\tvar midpoint = (previous.x + target.x) / 2.0;\r\n\t\t\t\tctx.lineTo(midpoint, flip ? target.y : previous.y);\r\n\t\t\t\tctx.lineTo(midpoint, flip ? previous.y : target.y);\r\n\t\t\t} else if ((stepped === 'after' && !flip) || (stepped !== 'after' && flip)) {\r\n\t\t\t\tctx.lineTo(previous.x, target.y);\r\n\t\t\t} else {\r\n\t\t\t\tctx.lineTo(target.x, previous.y);\r\n\t\t\t}\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!target.tension) {\r\n\t\t\tctx.lineTo(target.x, target.y);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.bezierCurveTo(\r\n\t\t\tflip ? previous.controlPointPreviousX : previous.controlPointNextX,\r\n\t\t\tflip ? previous.controlPointPreviousY : previous.controlPointNextY,\r\n\t\t\tflip ? target.controlPointNextX : target.controlPointPreviousX,\r\n\t\t\tflip ? target.controlPointNextY : target.controlPointPreviousY,\r\n\t\t\ttarget.x,\r\n\t\t\ttarget.y);\r\n\t}\r\n};\r\n\r\nvar helpers_canvas = exports$1;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.clear instead.\r\n * @namespace Chart.helpers.clear\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.clear = exports$1.clear;\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.canvas.roundedRect instead.\r\n * @namespace Chart.helpers.drawRoundedRectangle\r\n * @deprecated since version 2.7.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.drawRoundedRectangle = function(ctx) {\r\n\tctx.beginPath();\r\n\texports$1.roundedRect.apply(exports$1, arguments);\r\n};\n\nvar defaults = {\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_set: function(scope, values) {\r\n\t\treturn helpers_core.merge(this[scope] || (this[scope] = {}), values);\r\n\t}\r\n};\r\n\r\n// TODO(v3): remove 'global' from namespace. all default are global and\r\n// there's inconsistency around which options are under 'global'\r\ndefaults._set('global', {\r\n\tdefaultColor: 'rgba(0,0,0,0.1)',\r\n\tdefaultFontColor: '#666',\r\n\tdefaultFontFamily: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\r\n\tdefaultFontSize: 12,\r\n\tdefaultFontStyle: 'normal',\r\n\tdefaultLineHeight: 1.2,\r\n\tshowLines: true\r\n});\r\n\r\nvar core_defaults = defaults;\n\nvar valueOrDefault = helpers_core.valueOrDefault;\r\n\r\n/**\r\n * Converts the given font object into a CSS font string.\r\n * @param {object} font - A font object.\r\n * @return {string} The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\r\n * @private\r\n */\r\nfunction toFontString(font) {\r\n\tif (!font || helpers_core.isNullOrUndef(font.size) || helpers_core.isNullOrUndef(font.family)) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\treturn (font.style ? font.style + ' ' : '')\r\n\t\t+ (font.weight ? font.weight + ' ' : '')\r\n\t\t+ font.size + 'px '\r\n\t\t+ font.family;\r\n}\r\n\r\n/**\r\n * @alias Chart.helpers.options\r\n * @namespace\r\n */\r\nvar helpers_options = {\r\n\t/**\r\n\t * Converts the given line height `value` in pixels for a specific font `size`.\r\n\t * @param {number|string} value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\r\n\t * @param {number} size - The font size (in pixels) used to resolve relative `value`.\r\n\t * @returns {number} The effective line height in pixels (size * 1.2 if value is invalid).\r\n\t * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoLineHeight: function(value, size) {\r\n\t\tvar matches = ('' + value).match(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\r\n\t\tif (!matches || matches[1] === 'normal') {\r\n\t\t\treturn size * 1.2;\r\n\t\t}\r\n\r\n\t\tvalue = +matches[2];\r\n\r\n\t\tswitch (matches[3]) {\r\n\t\tcase 'px':\r\n\t\t\treturn value;\r\n\t\tcase '%':\r\n\t\t\tvalue /= 100;\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn size * value;\r\n\t},\r\n\r\n\t/**\r\n\t * Converts the given value into a padding object with pre-computed width/height.\r\n\t * @param {number|object} value - If a number, set the value to all TRBL component,\r\n\t * else, if and object, use defined properties and sets undefined ones to 0.\r\n\t * @returns {object} The padding values (top, right, bottom, left, width, height)\r\n\t * @since 2.7.0\r\n\t */\r\n\ttoPadding: function(value) {\r\n\t\tvar t, r, b, l;\r\n\r\n\t\tif (helpers_core.isObject(value)) {\r\n\t\t\tt = +value.top || 0;\r\n\t\t\tr = +value.right || 0;\r\n\t\t\tb = +value.bottom || 0;\r\n\t\t\tl = +value.left || 0;\r\n\t\t} else {\r\n\t\t\tt = r = b = l = +value || 0;\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttop: t,\r\n\t\t\tright: r,\r\n\t\t\tbottom: b,\r\n\t\t\tleft: l,\r\n\t\t\theight: t + b,\r\n\t\t\twidth: l + r\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Parses font options and returns the font object.\r\n\t * @param {object} options - A object that contains font options to be parsed.\r\n\t * @return {object} The font object.\r\n\t * @todo Support font.* options and renamed to toFont().\r\n\t * @private\r\n\t */\r\n\t_parseFont: function(options) {\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar size = valueOrDefault(options.fontSize, globalDefaults.defaultFontSize);\r\n\t\tvar font = {\r\n\t\t\tfamily: valueOrDefault(options.fontFamily, globalDefaults.defaultFontFamily),\r\n\t\t\tlineHeight: helpers_core.options.toLineHeight(valueOrDefault(options.lineHeight, globalDefaults.defaultLineHeight), size),\r\n\t\t\tsize: size,\r\n\t\t\tstyle: valueOrDefault(options.fontStyle, globalDefaults.defaultFontStyle),\r\n\t\t\tweight: null,\r\n\t\t\tstring: ''\r\n\t\t};\r\n\r\n\t\tfont.string = toFontString(font);\r\n\t\treturn font;\r\n\t},\r\n\r\n\t/**\r\n\t * Evaluates the given `inputs` sequentially and returns the first defined value.\r\n\t * @param {Array} inputs - An array of values, falling back to the last value.\r\n\t * @param {object} [context] - If defined and the current value is a function, the value\r\n\t * is called with `context` as first argument and the result becomes the new input.\r\n\t * @param {number} [index] - If defined and the current value is an array, the value\r\n\t * at `index` become the new input.\r\n\t * @param {object} [info] - object to return information about resolution in\r\n\t * @param {boolean} [info.cacheable] - Will be set to `false` if option is not cacheable.\r\n\t * @since 2.7.0\r\n\t */\r\n\tresolve: function(inputs, context, index, info) {\r\n\t\tvar cacheable = true;\r\n\t\tvar i, ilen, value;\r\n\r\n\t\tfor (i = 0, ilen = inputs.length; i < ilen; ++i) {\r\n\t\t\tvalue = inputs[i];\r\n\t\t\tif (value === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\tif (context !== undefined && typeof value === 'function') {\r\n\t\t\t\tvalue = value(context);\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (index !== undefined && helpers_core.isArray(value)) {\r\n\t\t\t\tvalue = value[index];\r\n\t\t\t\tcacheable = false;\r\n\t\t\t}\r\n\t\t\tif (value !== undefined) {\r\n\t\t\t\tif (info && !cacheable) {\r\n\t\t\t\t\tinfo.cacheable = false;\r\n\t\t\t\t}\r\n\t\t\t\treturn value;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\n/**\r\n * @alias Chart.helpers.math\r\n * @namespace\r\n */\r\nvar exports$2 = {\r\n\t/**\r\n\t * Returns an array of factors sorted from 1 to sqrt(value)\r\n\t * @private\r\n\t */\r\n\t_factorize: function(value) {\r\n\t\tvar result = [];\r\n\t\tvar sqrt = Math.sqrt(value);\r\n\t\tvar i;\r\n\r\n\t\tfor (i = 1; i < sqrt; i++) {\r\n\t\t\tif (value % i === 0) {\r\n\t\t\t\tresult.push(i);\r\n\t\t\t\tresult.push(value / i);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (sqrt === (sqrt | 0)) { // if value is a square number\r\n\t\t\tresult.push(sqrt);\r\n\t\t}\r\n\r\n\t\tresult.sort(function(a, b) {\r\n\t\t\treturn a - b;\r\n\t\t}).pop();\r\n\t\treturn result;\r\n\t},\r\n\r\n\tlog10: Math.log10 || function(x) {\r\n\t\tvar exponent = Math.log(x) * Math.LOG10E; // Math.LOG10E = 1 / Math.LN10.\r\n\t\t// Check for whole powers of 10,\r\n\t\t// which due to floating point rounding error should be corrected.\r\n\t\tvar powerOf10 = Math.round(exponent);\r\n\t\tvar isPowerOf10 = x === Math.pow(10, powerOf10);\r\n\r\n\t\treturn isPowerOf10 ? powerOf10 : exponent;\r\n\t}\r\n};\r\n\r\nvar helpers_math = exports$2;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.helpers.math.log10 instead.\r\n * @namespace Chart.helpers.log10\r\n * @deprecated since version 2.9.0\r\n * @todo remove at version 3\r\n * @private\r\n */\r\nhelpers_core.log10 = exports$2.log10;\n\nvar getRtlAdapter = function(rectX, width) {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn rectX + rectX + width - x;\r\n\t\t},\r\n\t\tsetWidth: function(w) {\r\n\t\t\twidth = w;\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\tif (align === 'center') {\r\n\t\t\t\treturn align;\r\n\t\t\t}\r\n\t\t\treturn align === 'right' ? 'left' : 'right';\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x - value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, itemWidth) {\r\n\t\t\treturn x - itemWidth;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getLtrAdapter = function() {\r\n\treturn {\r\n\t\tx: function(x) {\r\n\t\t\treturn x;\r\n\t\t},\r\n\t\tsetWidth: function(w) { // eslint-disable-line no-unused-vars\r\n\t\t},\r\n\t\ttextAlign: function(align) {\r\n\t\t\treturn align;\r\n\t\t},\r\n\t\txPlus: function(x, value) {\r\n\t\t\treturn x + value;\r\n\t\t},\r\n\t\tleftForLtr: function(x, _itemWidth) { // eslint-disable-line no-unused-vars\r\n\t\t\treturn x;\r\n\t\t},\r\n\t};\r\n};\r\n\r\nvar getAdapter = function(rtl, rectX, width) {\r\n\treturn rtl ? getRtlAdapter(rectX, width) : getLtrAdapter();\r\n};\r\n\r\nvar overrideTextDirection = function(ctx, direction) {\r\n\tvar style, original;\r\n\tif (direction === 'ltr' || direction === 'rtl') {\r\n\t\tstyle = ctx.canvas.style;\r\n\t\toriginal = [\r\n\t\t\tstyle.getPropertyValue('direction'),\r\n\t\t\tstyle.getPropertyPriority('direction'),\r\n\t\t];\r\n\r\n\t\tstyle.setProperty('direction', direction, 'important');\r\n\t\tctx.prevTextDirection = original;\r\n\t}\r\n};\r\n\r\nvar restoreTextDirection = function(ctx) {\r\n\tvar original = ctx.prevTextDirection;\r\n\tif (original !== undefined) {\r\n\t\tdelete ctx.prevTextDirection;\r\n\t\tctx.canvas.style.setProperty('direction', original[0], original[1]);\r\n\t}\r\n};\r\n\r\nvar helpers_rtl = {\r\n\tgetRtlAdapter: getAdapter,\r\n\toverrideTextDirection: overrideTextDirection,\r\n\trestoreTextDirection: restoreTextDirection,\r\n};\n\nvar helpers$1 = helpers_core;\r\nvar easing = helpers_easing;\r\nvar canvas = helpers_canvas;\r\nvar options = helpers_options;\r\nvar math = helpers_math;\r\nvar rtl = helpers_rtl;\nhelpers$1.easing = easing;\nhelpers$1.canvas = canvas;\nhelpers$1.options = options;\nhelpers$1.math = math;\nhelpers$1.rtl = rtl;\n\nfunction interpolate(start, view, model, ease) {\r\n\tvar keys = Object.keys(model);\r\n\tvar i, ilen, key, actual, origin, target, type, c0, c1;\r\n\r\n\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\tkey = keys[i];\r\n\r\n\t\ttarget = model[key];\r\n\r\n\t\t// if a value is added to the model after pivot() has been called, the view\r\n\t\t// doesn't contain it, so let's initialize the view to the target value.\r\n\t\tif (!view.hasOwnProperty(key)) {\r\n\t\t\tview[key] = target;\r\n\t\t}\r\n\r\n\t\tactual = view[key];\r\n\r\n\t\tif (actual === target || key[0] === '_') {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tif (!start.hasOwnProperty(key)) {\r\n\t\t\tstart[key] = actual;\r\n\t\t}\r\n\r\n\t\torigin = start[key];\r\n\r\n\t\ttype = typeof target;\r\n\r\n\t\tif (type === typeof origin) {\r\n\t\t\tif (type === 'string') {\r\n\t\t\t\tc0 = chartjsColor(origin);\r\n\t\t\t\tif (c0.valid) {\r\n\t\t\t\t\tc1 = chartjsColor(target);\r\n\t\t\t\t\tif (c1.valid) {\r\n\t\t\t\t\t\tview[key] = c1.mix(c0, ease).rgbString();\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (helpers$1.isFinite(origin) && helpers$1.isFinite(target)) {\r\n\t\t\t\tview[key] = origin + (target - origin) * ease;\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tview[key] = target;\r\n\t}\r\n}\r\n\r\nvar Element = function(configuration) {\r\n\thelpers$1.extend(this, configuration);\r\n\tthis.initialize.apply(this, arguments);\r\n};\r\n\r\nhelpers$1.extend(Element.prototype, {\r\n\t_type: undefined,\r\n\r\n\tinitialize: function() {\r\n\t\tthis.hidden = false;\r\n\t},\r\n\r\n\tpivot: function() {\r\n\t\tvar me = this;\r\n\t\tif (!me._view) {\r\n\t\t\tme._view = helpers$1.extend({}, me._model);\r\n\t\t}\r\n\t\tme._start = {};\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttransition: function(ease) {\r\n\t\tvar me = this;\r\n\t\tvar model = me._model;\r\n\t\tvar start = me._start;\r\n\t\tvar view = me._view;\r\n\r\n\t\t// No animation -> No Transition\r\n\t\tif (!model || ease === 1) {\r\n\t\t\tme._view = helpers$1.extend({}, model);\r\n\t\t\tme._start = null;\r\n\t\t\treturn me;\r\n\t\t}\r\n\r\n\t\tif (!view) {\r\n\t\t\tview = me._view = {};\r\n\t\t}\r\n\r\n\t\tif (!start) {\r\n\t\t\tstart = me._start = {};\r\n\t\t}\r\n\r\n\t\tinterpolate(start, view, model, ease);\r\n\r\n\t\treturn me;\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\treturn {\r\n\t\t\tx: this._model.x,\r\n\t\t\ty: this._model.y\r\n\t\t};\r\n\t},\r\n\r\n\thasValue: function() {\r\n\t\treturn helpers$1.isNumber(this._model.x) && helpers$1.isNumber(this._model.y);\r\n\t}\r\n});\r\n\r\nElement.extend = helpers$1.inherits;\r\n\r\nvar core_element = Element;\n\nvar exports$3 = core_element.extend({\r\n\tchart: null, // the animation associated chart instance\r\n\tcurrentStep: 0, // the current animation step\r\n\tnumSteps: 60, // default number of steps\r\n\teasing: '', // the easing to use for this animation\r\n\trender: null, // render function used by the animation service\r\n\r\n\tonAnimationProgress: null, // user specified callback to fire on each step of the animation\r\n\tonAnimationComplete: null, // user specified callback to fire when the animation finishes\r\n});\r\n\r\nvar core_animation = exports$3;\r\n\r\n// DEPRECATIONS\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation instead\r\n * @prop Chart.Animation#animationObject\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'animationObject', {\r\n\tget: function() {\r\n\t\treturn this;\r\n\t}\r\n});\r\n\r\n/**\r\n * Provided for backward compatibility, use Chart.Animation#chart instead\r\n * @prop Chart.Animation#chartInstance\r\n * @deprecated since version 2.6.0\r\n * @todo remove at version 3\r\n */\r\nObject.defineProperty(exports$3.prototype, 'chartInstance', {\r\n\tget: function() {\r\n\t\treturn this.chart;\r\n\t},\r\n\tset: function(value) {\r\n\t\tthis.chart = value;\r\n\t}\r\n});\n\ncore_defaults._set('global', {\r\n\tanimation: {\r\n\t\tduration: 1000,\r\n\t\teasing: 'easeOutQuart',\r\n\t\tonProgress: helpers$1.noop,\r\n\t\tonComplete: helpers$1.noop\r\n\t}\r\n});\r\n\r\nvar core_animations = {\r\n\tanimations: [],\r\n\trequest: null,\r\n\r\n\t/**\r\n\t * @param {Chart} chart - The chart to animate.\r\n\t * @param {Chart.Animation} animation - The animation that we will animate.\r\n\t * @param {number} duration - The animation duration in ms.\r\n\t * @param {boolean} lazy - if true, the chart is not marked as animating to enable more responsive interactions\r\n\t */\r\n\taddAnimation: function(chart, animation, duration, lazy) {\r\n\t\tvar animations = this.animations;\r\n\t\tvar i, ilen;\r\n\r\n\t\tanimation.chart = chart;\r\n\t\tanimation.startTime = Date.now();\r\n\t\tanimation.duration = duration;\r\n\r\n\t\tif (!lazy) {\r\n\t\t\tchart.animating = true;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = animations.length; i < ilen; ++i) {\r\n\t\t\tif (animations[i].chart === chart) {\r\n\t\t\t\tanimations[i] = animation;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tanimations.push(animation);\r\n\r\n\t\t// If there are no animations queued, manually kickstart a digest, for lack of a better word\r\n\t\tif (animations.length === 1) {\r\n\t\t\tthis.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\tcancelAnimation: function(chart) {\r\n\t\tvar index = helpers$1.findIndex(this.animations, function(animation) {\r\n\t\t\treturn animation.chart === chart;\r\n\t\t});\r\n\r\n\t\tif (index !== -1) {\r\n\t\t\tthis.animations.splice(index, 1);\r\n\t\t\tchart.animating = false;\r\n\t\t}\r\n\t},\r\n\r\n\trequestAnimationFrame: function() {\r\n\t\tvar me = this;\r\n\t\tif (me.request === null) {\r\n\t\t\t// Skip animation frame requests until the active one is executed.\r\n\t\t\t// This can happen when processing mouse events, e.g. 'mousemove'\r\n\t\t\t// and 'mouseout' events will trigger multiple renders.\r\n\t\t\tme.request = helpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tme.request = null;\r\n\t\t\t\tme.startDigest();\r\n\t\t\t});\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tstartDigest: function() {\r\n\t\tvar me = this;\r\n\r\n\t\tme.advance();\r\n\r\n\t\t// Do we have more stuff to animate?\r\n\t\tif (me.animations.length > 0) {\r\n\t\t\tme.requestAnimationFrame();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tadvance: function() {\r\n\t\tvar animations = this.animations;\r\n\t\tvar animation, chart, numSteps, nextStep;\r\n\t\tvar i = 0;\r\n\r\n\t\t// 1 animation per chart, so we are looping charts here\r\n\t\twhile (i < animations.length) {\r\n\t\t\tanimation = animations[i];\r\n\t\t\tchart = animation.chart;\r\n\t\t\tnumSteps = animation.numSteps;\r\n\r\n\t\t\t// Make sure that currentStep starts at 1\r\n\t\t\t// https://github.com/chartjs/Chart.js/issues/6104\r\n\t\t\tnextStep = Math.floor((Date.now() - animation.startTime) / animation.duration * numSteps) + 1;\r\n\t\t\tanimation.currentStep = Math.min(nextStep, numSteps);\r\n\r\n\t\t\thelpers$1.callback(animation.render, [chart, animation], chart);\r\n\t\t\thelpers$1.callback(animation.onAnimationProgress, [animation], chart);\r\n\r\n\t\t\tif (animation.currentStep >= numSteps) {\r\n\t\t\t\thelpers$1.callback(animation.onAnimationComplete, [animation], chart);\r\n\t\t\t\tchart.animating = false;\r\n\t\t\t\tanimations.splice(i, 1);\r\n\t\t\t} else {\r\n\t\t\t\t++i;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\n\nvar resolve = helpers$1.options.resolve;\r\n\r\nvar arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\r\n\r\n/**\r\n * Hooks the array methods that add or remove values ('push', pop', 'shift', 'splice',\r\n * 'unshift') and notify the listener AFTER the array has been altered. Listeners are\r\n * called on the 'onData*' callbacks (e.g. onDataPush, etc.) with same arguments.\r\n */\r\nfunction listenArrayEvents(array, listener) {\r\n\tif (array._chartjs) {\r\n\t\tarray._chartjs.listeners.push(listener);\r\n\t\treturn;\r\n\t}\r\n\r\n\tObject.defineProperty(array, '_chartjs', {\r\n\t\tconfigurable: true,\r\n\t\tenumerable: false,\r\n\t\tvalue: {\r\n\t\t\tlisteners: [listener]\r\n\t\t}\r\n\t});\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tvar method = 'onData' + key.charAt(0).toUpperCase() + key.slice(1);\r\n\t\tvar base = array[key];\r\n\r\n\t\tObject.defineProperty(array, key, {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: false,\r\n\t\t\tvalue: function() {\r\n\t\t\t\tvar args = Array.prototype.slice.call(arguments);\r\n\t\t\t\tvar res = base.apply(this, args);\r\n\r\n\t\t\t\thelpers$1.each(array._chartjs.listeners, function(object) {\r\n\t\t\t\t\tif (typeof object[method] === 'function') {\r\n\t\t\t\t\t\tobject[method].apply(object, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\treturn res;\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Removes the given array event listener and cleanup extra attached properties (such as\r\n * the _chartjs stub and overridden methods) if array doesn't have any more listeners.\r\n */\r\nfunction unlistenArrayEvents(array, listener) {\r\n\tvar stub = array._chartjs;\r\n\tif (!stub) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tvar listeners = stub.listeners;\r\n\tvar index = listeners.indexOf(listener);\r\n\tif (index !== -1) {\r\n\t\tlisteners.splice(index, 1);\r\n\t}\r\n\r\n\tif (listeners.length > 0) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tarrayEvents.forEach(function(key) {\r\n\t\tdelete array[key];\r\n\t});\r\n\r\n\tdelete array._chartjs;\r\n}\r\n\r\n// Base class for all dataset controllers (line, bar, etc)\r\nvar DatasetController = function(chart, datasetIndex) {\r\n\tthis.initialize(chart, datasetIndex);\r\n};\r\n\r\nhelpers$1.extend(DatasetController.prototype, {\r\n\r\n\t/**\r\n\t * Element type used to generate a meta dataset (e.g. Chart.element.Line).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdatasetElementType: null,\r\n\r\n\t/**\r\n\t * Element type used to generate a meta data (e.g. Chart.element.Point).\r\n\t * @type {Chart.core.element}\r\n\t */\r\n\tdataElementType: null,\r\n\r\n\t/**\r\n\t * Dataset element option keys to be resolved in _resolveDatasetElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth'\r\n\t],\r\n\r\n\t/**\r\n\t * Data element option keys to be resolved in _resolveDataElementOptions.\r\n\t * A derived controller may override this to resolve controller-specific options.\r\n\t * The keys defined here are for backward compatibility for legend styles.\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'pointStyle'\r\n\t],\r\n\r\n\tinitialize: function(chart, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tme.chart = chart;\r\n\t\tme.index = datasetIndex;\r\n\t\tme.linkScales();\r\n\t\tme.addElements();\r\n\t\tme._type = me.getMeta().type;\r\n\t},\r\n\r\n\tupdateIndex: function(datasetIndex) {\r\n\t\tthis.index = datasetIndex;\r\n\t},\r\n\r\n\tlinkScales: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar chart = me.chart;\r\n\t\tvar scales = chart.scales;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scalesOpts = chart.options.scales;\r\n\r\n\t\tif (meta.xAxisID === null || !(meta.xAxisID in scales) || dataset.xAxisID) {\r\n\t\t\tmeta.xAxisID = dataset.xAxisID || scalesOpts.xAxes[0].id;\r\n\t\t}\r\n\t\tif (meta.yAxisID === null || !(meta.yAxisID in scales) || dataset.yAxisID) {\r\n\t\t\tmeta.yAxisID = dataset.yAxisID || scalesOpts.yAxes[0].id;\r\n\t\t}\r\n\t},\r\n\r\n\tgetDataset: function() {\r\n\t\treturn this.chart.data.datasets[this.index];\r\n\t},\r\n\r\n\tgetMeta: function() {\r\n\t\treturn this.chart.getDatasetMeta(this.index);\r\n\t},\r\n\r\n\tgetScaleForId: function(scaleID) {\r\n\t\treturn this.chart.scales[scaleID];\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScale: function() {\r\n\t\treturn this.getScaleForId(this._getValueScaleId());\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScale: function() {\r\n\t\treturn this.getScaleForId(this._getIndexScaleId());\r\n\t},\r\n\r\n\treset: function() {\r\n\t\tthis._update(true);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tdestroy: function() {\r\n\t\tif (this._data) {\r\n\t\t\tunlistenArrayEvents(this._data, this);\r\n\t\t}\r\n\t},\r\n\r\n\tcreateMetaDataset: function() {\r\n\t\tvar me = this;\r\n\t\tvar type = me.datasetElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index\r\n\t\t});\r\n\t},\r\n\r\n\tcreateMetaData: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar type = me.dataElementType;\r\n\t\treturn type && new type({\r\n\t\t\t_chart: me.chart,\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index\r\n\t\t});\r\n\t},\r\n\r\n\taddElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data || [];\r\n\t\tvar metaData = meta.data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = data.length; i < ilen; ++i) {\r\n\t\t\tmetaData[i] = metaData[i] || me.createMetaData(i);\r\n\t\t}\r\n\r\n\t\tmeta.dataset = meta.dataset || me.createMetaDataset();\r\n\t},\r\n\r\n\taddElementAndReset: function(index) {\r\n\t\tvar element = this.createMetaData(index);\r\n\t\tthis.getMeta().data.splice(index, 0, element);\r\n\t\tthis.updateElement(element, index, true);\r\n\t},\r\n\r\n\tbuildOrUpdateElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar data = dataset.data || (dataset.data = []);\r\n\r\n\t\t// In order to correctly handle data addition/deletion animation (an thus simulate\r\n\t\t// real-time charts), we need to monitor these data modifications and synchronize\r\n\t\t// the internal meta data accordingly.\r\n\t\tif (me._data !== data) {\r\n\t\t\tif (me._data) {\r\n\t\t\t\t// This case happens when the user replaced the data array instance.\r\n\t\t\t\tunlistenArrayEvents(me._data, me);\r\n\t\t\t}\r\n\r\n\t\t\tif (data && Object.isExtensible(data)) {\r\n\t\t\t\tlistenArrayEvents(data, me);\r\n\t\t\t}\r\n\t\t\tme._data = data;\r\n\t\t}\r\n\r\n\t\t// Re-sync meta data in case the user replaced the data array or if we missed\r\n\t\t// any updates and so make sure that we handle number of datapoints changing.\r\n\t\tme.resyncElements();\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the merged user-supplied and default dataset-level options\r\n\t * @private\r\n\t */\r\n\t_configure: function() {\r\n\t\tvar me = this;\r\n\t\tme._config = helpers$1.merge(Object.create(null), [\r\n\t\t\tme.chart.options.datasets[me._type],\r\n\t\t\tme.getDataset(),\r\n\t\t], {\r\n\t\t\tmerger: function(key, target, source) {\r\n\t\t\t\tif (key !== '_meta' && key !== 'data') {\r\n\t\t\t\t\thelpers$1._merger(key, target, source);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_update: function(reset) {\r\n\t\tvar me = this;\r\n\t\tme._configure();\r\n\t\tme._cachedDataOpts = null;\r\n\t\tme.update(reset);\r\n\t},\r\n\r\n\tupdate: helpers$1.noop,\r\n\r\n\ttransition: function(easingValue) {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].transition(easingValue);\r\n\t\t}\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.transition(easingValue);\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar elements = meta.data || [];\r\n\t\tvar ilen = elements.length;\r\n\t\tvar i = 0;\r\n\r\n\t\tif (meta.dataset) {\r\n\t\t\tmeta.dataset.draw();\r\n\t\t}\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\telements[i].draw();\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Returns a set of predefined style properties that should be used to represent the dataset\r\n\t * or the data if the index is specified\r\n\t * @param {number} index - data index\r\n\t * @return {IStyleInterface} style object\r\n\t */\r\n\tgetStyle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = meta.dataset;\r\n\t\tvar style;\r\n\r\n\t\tme._configure();\r\n\t\tif (dataset && index === undefined) {\r\n\t\t\tstyle = me._resolveDatasetElementOptions(dataset || {});\r\n\t\t} else {\r\n\t\t\tindex = index || 0;\r\n\t\t\tstyle = me._resolveDataElementOptions(meta.data[index] || {}, index);\r\n\t\t}\r\n\r\n\t\tif (style.fill === false || style.fill === null) {\r\n\t\t\tstyle.backgroundColor = style.borderColor;\r\n\t\t}\r\n\r\n\t\treturn style;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element, hover) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = chart.options.elements[me.datasetElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._datasetElementOptions;\r\n\t\tvar values = {};\r\n\t\tvar i, ilen, key, readKey;\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index,\r\n\t\t\thover: hover\r\n\t\t};\r\n\r\n\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\tkey = elementOptions[i];\r\n\t\t\treadKey = hover ? 'hover' + key.charAt(0).toUpperCase() + key.slice(1) : key;\r\n\t\t\tvalues[key] = resolve([\r\n\t\t\t\tcustom[readKey],\r\n\t\t\t\tdatasetOpts[readKey],\r\n\t\t\t\toptions[readKey]\r\n\t\t\t], context);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(element, index) {\r\n\t\tvar me = this;\r\n\t\tvar custom = element && element.custom;\r\n\t\tvar cached = me._cachedDataOpts;\r\n\t\tif (cached && !custom) {\r\n\t\t\treturn cached;\r\n\t\t}\r\n\t\tvar chart = me.chart;\r\n\t\tvar datasetOpts = me._config;\r\n\t\tvar options = chart.options.elements[me.dataElementType.prototype._type] || {};\r\n\t\tvar elementOptions = me._dataElementOptions;\r\n\t\tvar values = {};\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: me.getDataset(),\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// `resolve` sets cacheable to `false` if any option is indexed or scripted\r\n\t\tvar info = {cacheable: !custom};\r\n\r\n\t\tvar keys, i, ilen, key;\r\n\r\n\t\tcustom = custom || {};\r\n\r\n\t\tif (helpers$1.isArray(elementOptions)) {\r\n\t\t\tfor (i = 0, ilen = elementOptions.length; i < ilen; ++i) {\r\n\t\t\t\tkey = elementOptions[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tkeys = Object.keys(elementOptions);\r\n\t\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\t\tkey = keys[i];\r\n\t\t\t\tvalues[key] = resolve([\r\n\t\t\t\t\tcustom[key],\r\n\t\t\t\t\tdatasetOpts[elementOptions[key]],\r\n\t\t\t\t\tdatasetOpts[key],\r\n\t\t\t\t\toptions[key]\r\n\t\t\t\t], context, index, info);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (info.cacheable) {\r\n\t\t\tme._cachedDataOpts = Object.freeze(values);\r\n\t\t}\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tremoveHoverStyle: function(element) {\r\n\t\thelpers$1.merge(element._model, element.$previousStyle || {});\r\n\t\tdelete element.$previousStyle;\r\n\t},\r\n\r\n\tsetHoverStyle: function(element) {\r\n\t\tvar dataset = this.chart.data.datasets[element._datasetIndex];\r\n\t\tvar index = element._index;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar model = element._model;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\telement.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = resolve([custom.hoverBackgroundColor, dataset.hoverBackgroundColor, getHoverColor(model.backgroundColor)], undefined, index);\r\n\t\tmodel.borderColor = resolve([custom.hoverBorderColor, dataset.hoverBorderColor, getHoverColor(model.borderColor)], undefined, index);\r\n\t\tmodel.borderWidth = resolve([custom.hoverBorderWidth, dataset.hoverBorderWidth, model.borderWidth], undefined, index);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_removeDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\r\n\t\tif (element) {\r\n\t\t\tthis.removeHoverStyle(element);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_setDatasetHoverStyle: function() {\r\n\t\tvar element = this.getMeta().dataset;\r\n\t\tvar prev = {};\r\n\t\tvar i, ilen, key, keys, hoverOptions, model;\r\n\r\n\t\tif (!element) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tmodel = element._model;\r\n\t\thoverOptions = this._resolveDatasetElementOptions(element, true);\r\n\r\n\t\tkeys = Object.keys(hoverOptions);\r\n\t\tfor (i = 0, ilen = keys.length; i < ilen; ++i) {\r\n\t\t\tkey = keys[i];\r\n\t\t\tprev[key] = model[key];\r\n\t\t\tmodel[key] = hoverOptions[key];\r\n\t\t}\r\n\r\n\t\telement.$previousStyle = prev;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tresyncElements: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar data = me.getDataset().data;\r\n\t\tvar numMeta = meta.data.length;\r\n\t\tvar numData = data.length;\r\n\r\n\t\tif (numData < numMeta) {\r\n\t\t\tmeta.data.splice(numData, numMeta - numData);\r\n\t\t} else if (numData > numMeta) {\r\n\t\t\tme.insertElements(numMeta, numData - numMeta);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tinsertElements: function(start, count) {\r\n\t\tfor (var i = 0; i < count; ++i) {\r\n\t\t\tthis.addElementAndReset(start + i);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPush: function() {\r\n\t\tvar count = arguments.length;\r\n\t\tthis.insertElements(this.getDataset().data.length - count, count);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataPop: function() {\r\n\t\tthis.getMeta().data.pop();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataShift: function() {\r\n\t\tthis.getMeta().data.shift();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataSplice: function(start, count) {\r\n\t\tthis.getMeta().data.splice(start, count);\r\n\t\tthis.insertElements(start, arguments.length - 2);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tonDataUnshift: function() {\r\n\t\tthis.insertElements(0, arguments.length);\r\n\t}\r\n});\r\n\r\nDatasetController.extend = helpers$1.inherits;\r\n\r\nvar core_datasetController = DatasetController;\n\nvar TAU = Math.PI * 2;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tarc: {\r\n\t\t\tbackgroundColor: core_defaults.global.defaultColor,\r\n\t\t\tborderColor: '#fff',\r\n\t\t\tborderWidth: 2,\r\n\t\t\tborderAlign: 'center'\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction clipArc(ctx, arc) {\r\n\tvar startAngle = arc.startAngle;\r\n\tvar endAngle = arc.endAngle;\r\n\tvar pixelMargin = arc.pixelMargin;\r\n\tvar angleMargin = pixelMargin / arc.outerRadius;\r\n\tvar x = arc.x;\r\n\tvar y = arc.y;\r\n\r\n\t// Draw an inner border by cliping the arc and drawing a double-width border\r\n\t// Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\r\n\tctx.beginPath();\r\n\tctx.arc(x, y, arc.outerRadius, startAngle - angleMargin, endAngle + angleMargin);\r\n\tif (arc.innerRadius > pixelMargin) {\r\n\t\tangleMargin = pixelMargin / arc.innerRadius;\r\n\t\tctx.arc(x, y, arc.innerRadius - pixelMargin, endAngle + angleMargin, startAngle - angleMargin, true);\r\n\t} else {\r\n\t\tctx.arc(x, y, pixelMargin, endAngle + Math.PI / 2, startAngle - Math.PI / 2);\r\n\t}\r\n\tctx.closePath();\r\n\tctx.clip();\r\n}\r\n\r\nfunction drawFullCircleBorders(ctx, vm, arc, inner) {\r\n\tvar endAngle = arc.endAngle;\r\n\tvar i;\r\n\r\n\tif (inner) {\r\n\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\tclipArc(ctx, arc);\r\n\t\tarc.endAngle = endAngle;\r\n\t\tif (arc.endAngle === arc.startAngle && arc.fullCircles) {\r\n\t\t\tarc.endAngle += TAU;\r\n\t\t\tarc.fullCircles--;\r\n\t\t}\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.startAngle + TAU, arc.startAngle, true);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.startAngle + TAU);\r\n\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\tctx.stroke();\r\n\t}\r\n}\r\n\r\nfunction drawBorder(ctx, vm, arc) {\r\n\tvar inner = vm.borderAlign === 'inner';\r\n\r\n\tif (inner) {\r\n\t\tctx.lineWidth = vm.borderWidth * 2;\r\n\t\tctx.lineJoin = 'round';\r\n\t} else {\r\n\t\tctx.lineWidth = vm.borderWidth;\r\n\t\tctx.lineJoin = 'bevel';\r\n\t}\r\n\r\n\tif (arc.fullCircles) {\r\n\t\tdrawFullCircleBorders(ctx, vm, arc, inner);\r\n\t}\r\n\r\n\tif (inner) {\r\n\t\tclipArc(ctx, arc);\r\n\t}\r\n\r\n\tctx.beginPath();\r\n\tctx.arc(arc.x, arc.y, vm.outerRadius, arc.startAngle, arc.endAngle);\r\n\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\tctx.closePath();\r\n\tctx.stroke();\r\n}\r\n\r\nvar element_arc = core_element.extend({\r\n\t_type: 'arc',\r\n\r\n\tinLabelRange: function(mouseX) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\treturn (Math.pow(mouseX - vm.x, 2) < Math.pow(vm.radius + vm.hoverRadius, 2));\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tinRange: function(chartX, chartY) {\r\n\t\tvar vm = this._view;\r\n\r\n\t\tif (vm) {\r\n\t\t\tvar pointRelativePosition = helpers$1.getAngleFromPoint(vm, {x: chartX, y: chartY});\r\n\t\t\tvar angle = pointRelativePosition.angle;\r\n\t\t\tvar distance = pointRelativePosition.distance;\r\n\r\n\t\t\t// Sanitise angle range\r\n\t\t\tvar startAngle = vm.startAngle;\r\n\t\t\tvar endAngle = vm.endAngle;\r\n\t\t\twhile (endAngle < startAngle) {\r\n\t\t\t\tendAngle += TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle > endAngle) {\r\n\t\t\t\tangle -= TAU;\r\n\t\t\t}\r\n\t\t\twhile (angle < startAngle) {\r\n\t\t\t\tangle += TAU;\r\n\t\t\t}\r\n\r\n\t\t\t// Check if within the range of the open/close angle\r\n\t\t\tvar betweenAngles = (angle >= startAngle && angle <= endAngle);\r\n\t\t\tvar withinRadius = (distance >= vm.innerRadius && distance <= vm.outerRadius);\r\n\r\n\t\t\treturn (betweenAngles && withinRadius);\r\n\t\t}\r\n\t\treturn false;\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar halfAngle = (vm.startAngle + vm.endAngle) / 2;\r\n\t\tvar halfRadius = (vm.innerRadius + vm.outerRadius) / 2;\r\n\t\treturn {\r\n\t\t\tx: vm.x + Math.cos(halfAngle) * halfRadius,\r\n\t\t\ty: vm.y + Math.sin(halfAngle) * halfRadius\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn Math.PI * ((vm.endAngle - vm.startAngle) / (2 * Math.PI)) * (Math.pow(vm.outerRadius, 2) - Math.pow(vm.innerRadius, 2));\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar centreAngle = vm.startAngle + ((vm.endAngle - vm.startAngle) / 2);\r\n\t\tvar rangeFromCentre = (vm.outerRadius - vm.innerRadius) / 2 + vm.innerRadius;\r\n\r\n\t\treturn {\r\n\t\t\tx: vm.x + (Math.cos(centreAngle) * rangeFromCentre),\r\n\t\t\ty: vm.y + (Math.sin(centreAngle) * rangeFromCentre)\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar pixelMargin = (vm.borderAlign === 'inner') ? 0.33 : 0;\r\n\t\tvar arc = {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tinnerRadius: vm.innerRadius,\r\n\t\t\touterRadius: Math.max(vm.outerRadius - pixelMargin, 0),\r\n\t\t\tpixelMargin: pixelMargin,\r\n\t\t\tstartAngle: vm.startAngle,\r\n\t\t\tendAngle: vm.endAngle,\r\n\t\t\tfullCircles: Math.floor(vm.circumference / TAU)\r\n\t\t};\r\n\t\tvar i;\r\n\r\n\t\tctx.save();\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.strokeStyle = vm.borderColor;\r\n\r\n\t\tif (arc.fullCircles) {\r\n\t\t\tarc.endAngle = arc.startAngle + TAU;\r\n\t\t\tctx.beginPath();\r\n\t\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\t\tctx.closePath();\r\n\t\t\tfor (i = 0; i < arc.fullCircles; ++i) {\r\n\t\t\t\tctx.fill();\r\n\t\t\t}\r\n\t\t\tarc.endAngle = arc.startAngle + vm.circumference % TAU;\r\n\t\t}\r\n\r\n\t\tctx.beginPath();\r\n\t\tctx.arc(arc.x, arc.y, arc.outerRadius, arc.startAngle, arc.endAngle);\r\n\t\tctx.arc(arc.x, arc.y, arc.innerRadius, arc.endAngle, arc.startAngle, true);\r\n\t\tctx.closePath();\r\n\t\tctx.fill();\r\n\r\n\t\tif (vm.borderWidth) {\r\n\t\t\tdrawBorder(ctx, vm, arc);\r\n\t\t}\r\n\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$1 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tline: {\r\n\t\t\ttension: 0.4,\r\n\t\t\tbackgroundColor: defaultColor,\r\n\t\t\tborderWidth: 3,\r\n\t\t\tborderColor: defaultColor,\r\n\t\t\tborderCapStyle: 'butt',\r\n\t\t\tborderDash: [],\r\n\t\t\tborderDashOffset: 0.0,\r\n\t\t\tborderJoinStyle: 'miter',\r\n\t\t\tcapBezierPoints: true,\r\n\t\t\tfill: true, // do we fill in the area between the line and its base axis\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar element_line = core_element.extend({\r\n\t_type: 'line',\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar vm = me._view;\r\n\t\tvar ctx = me._chart.ctx;\r\n\t\tvar spanGaps = vm.spanGaps;\r\n\t\tvar points = me._children.slice(); // clone array\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar globalOptionLineElements = globalDefaults.elements.line;\r\n\t\tvar lastDrawnIndex = -1;\r\n\t\tvar closePath = me._loop;\r\n\t\tvar index, previous, currentVM;\r\n\r\n\t\tif (!points.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (me._loop) {\r\n\t\t\tfor (index = 0; index < points.length; ++index) {\r\n\t\t\t\tprevious = helpers$1.previousItem(points, index);\r\n\t\t\t\t// If the line has an open path, shift the point array\r\n\t\t\t\tif (!points[index]._view.skip && previous._view.skip) {\r\n\t\t\t\t\tpoints = points.slice(index).concat(points.slice(0, index));\r\n\t\t\t\t\tclosePath = spanGaps;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If the line has a close path, add the first point again\r\n\t\t\tif (closePath) {\r\n\t\t\t\tpoints.push(points[0]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\r\n\t\t// Stroke Line Options\r\n\t\tctx.lineCap = vm.borderCapStyle || globalOptionLineElements.borderCapStyle;\r\n\r\n\t\t// IE 9 and 10 do not support line dash\r\n\t\tif (ctx.setLineDash) {\r\n\t\t\tctx.setLineDash(vm.borderDash || globalOptionLineElements.borderDash);\r\n\t\t}\r\n\r\n\t\tctx.lineDashOffset = valueOrDefault$1(vm.borderDashOffset, globalOptionLineElements.borderDashOffset);\r\n\t\tctx.lineJoin = vm.borderJoinStyle || globalOptionLineElements.borderJoinStyle;\r\n\t\tctx.lineWidth = valueOrDefault$1(vm.borderWidth, globalOptionLineElements.borderWidth);\r\n\t\tctx.strokeStyle = vm.borderColor || globalDefaults.defaultColor;\r\n\r\n\t\t// Stroke Line\r\n\t\tctx.beginPath();\r\n\r\n\t\t// First point moves to it's starting position no matter what\r\n\t\tcurrentVM = points[0]._view;\r\n\t\tif (!currentVM.skip) {\r\n\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\tlastDrawnIndex = 0;\r\n\t\t}\r\n\r\n\t\tfor (index = 1; index < points.length; ++index) {\r\n\t\t\tcurrentVM = points[index]._view;\r\n\t\t\tprevious = lastDrawnIndex === -1 ? helpers$1.previousItem(points, index) : points[lastDrawnIndex];\r\n\r\n\t\t\tif (!currentVM.skip) {\r\n\t\t\t\tif ((lastDrawnIndex !== (index - 1) && !spanGaps) || lastDrawnIndex === -1) {\r\n\t\t\t\t\t// There was a gap and this is the first point after the gap\r\n\t\t\t\t\tctx.moveTo(currentVM.x, currentVM.y);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Line to next point\r\n\t\t\t\t\thelpers$1.canvas.lineTo(ctx, previous._view, currentVM);\r\n\t\t\t\t}\r\n\t\t\t\tlastDrawnIndex = index;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (closePath) {\r\n\t\t\tctx.closePath();\r\n\t\t}\r\n\r\n\t\tctx.stroke();\r\n\t\tctx.restore();\r\n\t}\r\n});\n\nvar valueOrDefault$2 = helpers$1.valueOrDefault;\r\n\r\nvar defaultColor$1 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\tpoint: {\r\n\t\t\tradius: 3,\r\n\t\t\tpointStyle: 'circle',\r\n\t\t\tbackgroundColor: defaultColor$1,\r\n\t\t\tborderColor: defaultColor$1,\r\n\t\t\tborderWidth: 1,\r\n\t\t\t// Hover\r\n\t\t\thitRadius: 1,\r\n\t\t\thoverRadius: 4,\r\n\t\t\thoverBorderWidth: 1\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction xRange(mouseX) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseX - vm.x) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nfunction yRange(mouseY) {\r\n\tvar vm = this._view;\r\n\treturn vm ? (Math.abs(mouseY - vm.y) < vm.radius + vm.hitRadius) : false;\r\n}\r\n\r\nvar element_point = core_element.extend({\r\n\t_type: 'point',\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm ? ((Math.pow(mouseX - vm.x, 2) + Math.pow(mouseY - vm.y, 2)) < Math.pow(vm.hitRadius + vm.radius, 2)) : false;\r\n\t},\r\n\r\n\tinLabelRange: xRange,\r\n\tinXRange: xRange,\r\n\tinYRange: yRange,\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\treturn Math.PI * Math.pow(this._view.radius, 2);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y,\r\n\t\t\tpadding: vm.radius + vm.borderWidth\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function(chartArea) {\r\n\t\tvar vm = this._view;\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar pointStyle = vm.pointStyle;\r\n\t\tvar rotation = vm.rotation;\r\n\t\tvar radius = vm.radius;\r\n\t\tvar x = vm.x;\r\n\t\tvar y = vm.y;\r\n\t\tvar globalDefaults = core_defaults.global;\r\n\t\tvar defaultColor = globalDefaults.defaultColor; // eslint-disable-line no-shadow\r\n\r\n\t\tif (vm.skip) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Clipping for Points.\r\n\t\tif (chartArea === undefined || helpers$1.canvas._isPointInArea(vm, chartArea)) {\r\n\t\t\tctx.strokeStyle = vm.borderColor || defaultColor;\r\n\t\t\tctx.lineWidth = valueOrDefault$2(vm.borderWidth, globalDefaults.elements.point.borderWidth);\r\n\t\t\tctx.fillStyle = vm.backgroundColor || defaultColor;\r\n\t\t\thelpers$1.canvas.drawPoint(ctx, pointStyle, radius, x, y, rotation);\r\n\t\t}\r\n\t}\r\n});\n\nvar defaultColor$2 = core_defaults.global.defaultColor;\r\n\r\ncore_defaults._set('global', {\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tbackgroundColor: defaultColor$2,\r\n\t\t\tborderColor: defaultColor$2,\r\n\t\t\tborderSkipped: 'bottom',\r\n\t\t\tborderWidth: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\nfunction isVertical(vm) {\r\n\treturn vm && vm.width !== undefined;\r\n}\r\n\r\n/**\r\n * Helper function to get the bounds of the bar regardless of the orientation\r\n * @param bar {Chart.Element.Rectangle} the bar\r\n * @return {Bounds} bounds of the bar\r\n * @private\r\n */\r\nfunction getBarBounds(vm) {\r\n\tvar x1, x2, y1, y2, half;\r\n\r\n\tif (isVertical(vm)) {\r\n\t\thalf = vm.width / 2;\r\n\t\tx1 = vm.x - half;\r\n\t\tx2 = vm.x + half;\r\n\t\ty1 = Math.min(vm.y, vm.base);\r\n\t\ty2 = Math.max(vm.y, vm.base);\r\n\t} else {\r\n\t\thalf = vm.height / 2;\r\n\t\tx1 = Math.min(vm.x, vm.base);\r\n\t\tx2 = Math.max(vm.x, vm.base);\r\n\t\ty1 = vm.y - half;\r\n\t\ty2 = vm.y + half;\r\n\t}\r\n\r\n\treturn {\r\n\t\tleft: x1,\r\n\t\ttop: y1,\r\n\t\tright: x2,\r\n\t\tbottom: y2\r\n\t};\r\n}\r\n\r\nfunction swap(orig, v1, v2) {\r\n\treturn orig === v1 ? v2 : orig === v2 ? v1 : orig;\r\n}\r\n\r\nfunction parseBorderSkipped(vm) {\r\n\tvar edge = vm.borderSkipped;\r\n\tvar res = {};\r\n\r\n\tif (!edge) {\r\n\t\treturn res;\r\n\t}\r\n\r\n\tif (vm.horizontal) {\r\n\t\tif (vm.base > vm.x) {\r\n\t\t\tedge = swap(edge, 'left', 'right');\r\n\t\t}\r\n\t} else if (vm.base < vm.y) {\r\n\t\tedge = swap(edge, 'bottom', 'top');\r\n\t}\r\n\r\n\tres[edge] = true;\r\n\treturn res;\r\n}\r\n\r\nfunction parseBorderWidth(vm, maxW, maxH) {\r\n\tvar value = vm.borderWidth;\r\n\tvar skip = parseBorderSkipped(vm);\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = +value.top || 0;\r\n\t\tr = +value.right || 0;\r\n\t\tb = +value.bottom || 0;\r\n\t\tl = +value.left || 0;\r\n\t} else {\r\n\t\tt = r = b = l = +value || 0;\r\n\t}\r\n\r\n\treturn {\r\n\t\tt: skip.top || (t < 0) ? 0 : t > maxH ? maxH : t,\r\n\t\tr: skip.right || (r < 0) ? 0 : r > maxW ? maxW : r,\r\n\t\tb: skip.bottom || (b < 0) ? 0 : b > maxH ? maxH : b,\r\n\t\tl: skip.left || (l < 0) ? 0 : l > maxW ? maxW : l\r\n\t};\r\n}\r\n\r\nfunction boundingRects(vm) {\r\n\tvar bounds = getBarBounds(vm);\r\n\tvar width = bounds.right - bounds.left;\r\n\tvar height = bounds.bottom - bounds.top;\r\n\tvar border = parseBorderWidth(vm, width / 2, height / 2);\r\n\r\n\treturn {\r\n\t\touter: {\r\n\t\t\tx: bounds.left,\r\n\t\t\ty: bounds.top,\r\n\t\t\tw: width,\r\n\t\t\th: height\r\n\t\t},\r\n\t\tinner: {\r\n\t\t\tx: bounds.left + border.l,\r\n\t\t\ty: bounds.top + border.t,\r\n\t\t\tw: width - border.l - border.r,\r\n\t\t\th: height - border.t - border.b\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction inRange(vm, x, y) {\r\n\tvar skipX = x === null;\r\n\tvar skipY = y === null;\r\n\tvar bounds = !vm || (skipX && skipY) ? false : getBarBounds(vm);\r\n\r\n\treturn bounds\r\n\t\t&& (skipX || x >= bounds.left && x <= bounds.right)\r\n\t\t&& (skipY || y >= bounds.top && y <= bounds.bottom);\r\n}\r\n\r\nvar element_rectangle = core_element.extend({\r\n\t_type: 'rectangle',\r\n\r\n\tdraw: function() {\r\n\t\tvar ctx = this._chart.ctx;\r\n\t\tvar vm = this._view;\r\n\t\tvar rects = boundingRects(vm);\r\n\t\tvar outer = rects.outer;\r\n\t\tvar inner = rects.inner;\r\n\r\n\t\tctx.fillStyle = vm.backgroundColor;\r\n\t\tctx.fillRect(outer.x, outer.y, outer.w, outer.h);\r\n\r\n\t\tif (outer.w === inner.w && outer.h === inner.h) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tctx.save();\r\n\t\tctx.beginPath();\r\n\t\tctx.rect(outer.x, outer.y, outer.w, outer.h);\r\n\t\tctx.clip();\r\n\t\tctx.fillStyle = vm.borderColor;\r\n\t\tctx.rect(inner.x, inner.y, inner.w, inner.h);\r\n\t\tctx.fill('evenodd');\r\n\t\tctx.restore();\r\n\t},\r\n\r\n\theight: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn vm.base - vm.y;\r\n\t},\r\n\r\n\tinRange: function(mouseX, mouseY) {\r\n\t\treturn inRange(this._view, mouseX, mouseY);\r\n\t},\r\n\r\n\tinLabelRange: function(mouseX, mouseY) {\r\n\t\tvar vm = this._view;\r\n\t\treturn isVertical(vm)\r\n\t\t\t? inRange(vm, mouseX, null)\r\n\t\t\t: inRange(vm, null, mouseY);\r\n\t},\r\n\r\n\tinXRange: function(mouseX) {\r\n\t\treturn inRange(this._view, mouseX, null);\r\n\t},\r\n\r\n\tinYRange: function(mouseY) {\r\n\t\treturn inRange(this._view, null, mouseY);\r\n\t},\r\n\r\n\tgetCenterPoint: function() {\r\n\t\tvar vm = this._view;\r\n\t\tvar x, y;\r\n\t\tif (isVertical(vm)) {\r\n\t\t\tx = vm.x;\r\n\t\t\ty = (vm.y + vm.base) / 2;\r\n\t\t} else {\r\n\t\t\tx = (vm.x + vm.base) / 2;\r\n\t\t\ty = vm.y;\r\n\t\t}\r\n\r\n\t\treturn {x: x, y: y};\r\n\t},\r\n\r\n\tgetArea: function() {\r\n\t\tvar vm = this._view;\r\n\r\n\t\treturn isVertical(vm)\r\n\t\t\t? vm.width * Math.abs(vm.y - vm.base)\r\n\t\t\t: vm.height * Math.abs(vm.x - vm.base);\r\n\t},\r\n\r\n\ttooltipPosition: function() {\r\n\t\tvar vm = this._view;\r\n\t\treturn {\r\n\t\t\tx: vm.x,\r\n\t\t\ty: vm.y\r\n\t\t};\r\n\t}\r\n});\n\nvar elements = {};\r\nvar Arc = element_arc;\r\nvar Line = element_line;\r\nvar Point = element_point;\r\nvar Rectangle = element_rectangle;\nelements.Arc = Arc;\nelements.Line = Line;\nelements.Point = Point;\nelements.Rectangle = Rectangle;\n\nvar deprecated = helpers$1._deprecated;\r\nvar valueOrDefault$3 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('bar', {\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tbar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * Computes the \"optimal\" sample size to maintain bars equally sized while preventing overlap.\r\n * @private\r\n */\r\nfunction computeMinSampleSize(scale, pixels) {\r\n\tvar min = scale._length;\r\n\tvar prev, curr, i, ilen;\r\n\r\n\tfor (i = 1, ilen = pixels.length; i < ilen; ++i) {\r\n\t\tmin = Math.min(min, Math.abs(pixels[i] - pixels[i - 1]));\r\n\t}\r\n\r\n\tfor (i = 0, ilen = scale.getTicks().length; i < ilen; ++i) {\r\n\t\tcurr = scale.getPixelForTick(i);\r\n\t\tmin = i > 0 ? Math.min(min, Math.abs(curr - prev)) : min;\r\n\t\tprev = curr;\r\n\t}\r\n\r\n\treturn min;\r\n}\r\n\r\n/**\r\n * Computes an \"ideal\" category based on the absolute bar thickness or, if undefined or null,\r\n * uses the smallest interval (see computeMinSampleSize) that prevents bar overlapping. This\r\n * mode currently always generates bars equally sized (until we introduce scriptable options?).\r\n * @private\r\n */\r\nfunction computeFitCategoryTraits(index, ruler, options) {\r\n\tvar thickness = options.barThickness;\r\n\tvar count = ruler.stackCount;\r\n\tvar curr = ruler.pixels[index];\r\n\tvar min = helpers$1.isNullOrUndef(thickness)\r\n\t\t? computeMinSampleSize(ruler.scale, ruler.pixels)\r\n\t\t: -1;\r\n\tvar size, ratio;\r\n\r\n\tif (helpers$1.isNullOrUndef(thickness)) {\r\n\t\tsize = min * options.categoryPercentage;\r\n\t\tratio = options.barPercentage;\r\n\t} else {\r\n\t\t// When bar thickness is enforced, category and bar percentages are ignored.\r\n\t\t// Note(SB): we could add support for relative bar thickness (e.g. barThickness: '50%')\r\n\t\t// and deprecate barPercentage since this value is ignored when thickness is absolute.\r\n\t\tsize = thickness * count;\r\n\t\tratio = 1;\r\n\t}\r\n\r\n\treturn {\r\n\t\tchunk: size / count,\r\n\t\tratio: ratio,\r\n\t\tstart: curr - (size / 2)\r\n\t};\r\n}\r\n\r\n/**\r\n * Computes an \"optimal\" category that globally arranges bars side by side (no gap when\r\n * percentage options are 1), based on the previous and following categories. This mode\r\n * generates bars with different widths when data are not evenly spaced.\r\n * @private\r\n */\r\nfunction computeFlexCategoryTraits(index, ruler, options) {\r\n\tvar pixels = ruler.pixels;\r\n\tvar curr = pixels[index];\r\n\tvar prev = index > 0 ? pixels[index - 1] : null;\r\n\tvar next = index < pixels.length - 1 ? pixels[index + 1] : null;\r\n\tvar percent = options.categoryPercentage;\r\n\tvar start, size;\r\n\r\n\tif (prev === null) {\r\n\t\t// first data: its size is double based on the next point or,\r\n\t\t// if it's also the last data, we use the scale size.\r\n\t\tprev = curr - (next === null ? ruler.end - ruler.start : next - curr);\r\n\t}\r\n\r\n\tif (next === null) {\r\n\t\t// last data: its size is also double based on the previous point.\r\n\t\tnext = curr + curr - prev;\r\n\t}\r\n\r\n\tstart = curr - (curr - Math.min(prev, next)) / 2 * percent;\r\n\tsize = Math.abs(next - prev) / 2 * percent;\r\n\r\n\treturn {\r\n\t\tchunk: size / ruler.stackCount,\r\n\t\tratio: options.barPercentage,\r\n\t\tstart: start\r\n\t};\r\n}\r\n\r\nvar controller_bar = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Rectangle,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderSkipped',\r\n\t\t'borderWidth',\r\n\t\t'barPercentage',\r\n\t\t'barThickness',\r\n\t\t'categoryPercentage',\r\n\t\t'maxBarThickness',\r\n\t\t'minBarLength'\r\n\t],\r\n\r\n\tinitialize: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta, scaleOpts;\r\n\r\n\t\tcore_datasetController.prototype.initialize.apply(me, arguments);\r\n\r\n\t\tmeta = me.getMeta();\r\n\t\tmeta.stack = me.getDataset().stack;\r\n\t\tmeta.bar = true;\r\n\r\n\t\tscaleOpts = me._getIndexScale().options;\r\n\t\tdeprecated('bar chart', scaleOpts.barPercentage, 'scales.[x/y]Axes.barPercentage', 'dataset.barPercentage');\r\n\t\tdeprecated('bar chart', scaleOpts.barThickness, 'scales.[x/y]Axes.barThickness', 'dataset.barThickness');\r\n\t\tdeprecated('bar chart', scaleOpts.categoryPercentage, 'scales.[x/y]Axes.categoryPercentage', 'dataset.categoryPercentage');\r\n\t\tdeprecated('bar chart', me._getValueScale().options.minBarLength, 'scales.[x/y]Axes.minBarLength', 'dataset.minBarLength');\r\n\t\tdeprecated('bar chart', scaleOpts.maxBarThickness, 'scales.[x/y]Axes.maxBarThickness', 'dataset.maxBarThickness');\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._ruler = me.getRuler();\r\n\r\n\t\tfor (i = 0, ilen = rects.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(rects[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(rectangle, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar options = me._resolveDataElementOptions(rectangle, index);\r\n\r\n\t\trectangle._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\trectangle._yScale = me.getScaleForId(meta.yAxisID);\r\n\t\trectangle._datasetIndex = me.index;\r\n\t\trectangle._index = index;\r\n\t\trectangle._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderSkipped: options.borderSkipped,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\tdatasetLabel: dataset.label,\r\n\t\t\tlabel: me.chart.data.labels[index]\r\n\t\t};\r\n\r\n\t\tif (helpers$1.isArray(dataset.data[index])) {\r\n\t\t\trectangle._model.borderSkipped = null;\r\n\t\t}\r\n\r\n\t\tme._updateElementGeometry(rectangle, index, reset, options);\r\n\r\n\t\trectangle.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateElementGeometry: function(rectangle, index, reset, options) {\r\n\t\tvar me = this;\r\n\t\tvar model = rectangle._model;\r\n\t\tvar vscale = me._getValueScale();\r\n\t\tvar base = vscale.getBasePixel();\r\n\t\tvar horizontal = vscale.isHorizontal();\r\n\t\tvar ruler = me._ruler || me.getRuler();\r\n\t\tvar vpixels = me.calculateBarValuePixels(me.index, index, options);\r\n\t\tvar ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);\r\n\r\n\t\tmodel.horizontal = horizontal;\r\n\t\tmodel.base = reset ? base : vpixels.base;\r\n\t\tmodel.x = horizontal ? reset ? base : vpixels.head : ipixels.center;\r\n\t\tmodel.y = horizontal ? ipixels.center : reset ? base : vpixels.head;\r\n\t\tmodel.height = horizontal ? ipixels.size : undefined;\r\n\t\tmodel.width = horizontal ? undefined : ipixels.size;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stacks based on groups and bar visibility.\r\n\t * @param {number} [last] - The dataset index\r\n\t * @returns {string[]} The list of stack IDs\r\n\t * @private\r\n\t */\r\n\t_getStacks: function(last) {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar stacks = [];\r\n\t\tvar i, meta;\r\n\r\n\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\tmeta = metasets[i];\r\n\t\t\t// stacked | meta.stack\r\n\t\t\t// | found | not found | undefined\r\n\t\t\t// false | x | x | x\r\n\t\t\t// true | | x |\r\n\t\t\t// undefined | | x | x\r\n\t\t\tif (stacked === false || stacks.indexOf(meta.stack) === -1 ||\r\n\t\t\t\t(stacked === undefined && meta.stack === undefined)) {\r\n\t\t\t\tstacks.push(meta.stack);\r\n\t\t\t}\r\n\t\t\tif (meta.index === last) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn stacks;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the effective number of stacks based on groups and bar visibility.\r\n\t * @private\r\n\t */\r\n\tgetStackCount: function() {\r\n\t\treturn this._getStacks().length;\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the stack index for the given dataset based on groups and bar visibility.\r\n\t * @param {number} [datasetIndex] - The dataset index\r\n\t * @param {string} [name] - The stack name to find\r\n\t * @returns {number} The stack index\r\n\t * @private\r\n\t */\r\n\tgetStackIndex: function(datasetIndex, name) {\r\n\t\tvar stacks = this._getStacks(datasetIndex);\r\n\t\tvar index = (name !== undefined)\r\n\t\t\t? stacks.indexOf(name)\r\n\t\t\t: -1; // indexOf returns -1 if element is not present\r\n\r\n\t\treturn (index === -1)\r\n\t\t\t? stacks.length - 1\r\n\t\t\t: index;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tgetRuler: function() {\r\n\t\tvar me = this;\r\n\t\tvar scale = me._getIndexScale();\r\n\t\tvar pixels = [];\r\n\t\tvar i, ilen;\r\n\r\n\t\tfor (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {\r\n\t\t\tpixels.push(scale.getPixelForValue(null, i, me.index));\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tpixels: pixels,\r\n\t\t\tstart: scale._startPixel,\r\n\t\t\tend: scale._endPixel,\r\n\t\t\tstackCount: me.getStackCount(),\r\n\t\t\tscale: scale\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * Note: pixel values are not clamped to the scale area.\r\n\t * @private\r\n\t */\r\n\tcalculateBarValuePixels: function(datasetIndex, index, options) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar isHorizontal = scale.isHorizontal();\r\n\t\tvar datasets = chart.data.datasets;\r\n\t\tvar metasets = scale._getMatchingVisibleMetas(me._type);\r\n\t\tvar value = scale._parseValue(datasets[datasetIndex].data[index]);\r\n\t\tvar minBarLength = options.minBarLength;\r\n\t\tvar stacked = scale.options.stacked;\r\n\t\tvar stack = me.getMeta().stack;\r\n\t\tvar start = value.start === undefined ? 0 : value.max >= 0 && value.min >= 0 ? value.min : value.max;\r\n\t\tvar length = value.start === undefined ? value.end : value.max >= 0 && value.min >= 0 ? value.max - value.min : value.min - value.max;\r\n\t\tvar ilen = metasets.length;\r\n\t\tvar i, imeta, ivalue, base, head, size, stackLength;\r\n\r\n\t\tif (stacked || (stacked === undefined && stack !== undefined)) {\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\timeta = metasets[i];\r\n\r\n\t\t\t\tif (imeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (imeta.stack === stack) {\r\n\t\t\t\t\tstackLength = scale._parseValue(datasets[imeta.index].data[index]);\r\n\t\t\t\t\tivalue = stackLength.start === undefined ? stackLength.end : stackLength.min >= 0 && stackLength.max >= 0 ? stackLength.max : stackLength.min;\r\n\r\n\t\t\t\t\tif ((value.min < 0 && ivalue < 0) || (value.max >= 0 && ivalue > 0)) {\r\n\t\t\t\t\t\tstart += ivalue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tbase = scale.getPixelForValue(start);\r\n\t\thead = scale.getPixelForValue(start + length);\r\n\t\tsize = head - base;\r\n\r\n\t\tif (minBarLength !== undefined && Math.abs(size) < minBarLength) {\r\n\t\t\tsize = minBarLength;\r\n\t\t\tif (length >= 0 && !isHorizontal || length < 0 && isHorizontal) {\r\n\t\t\t\thead = base - minBarLength;\r\n\t\t\t} else {\r\n\t\t\t\thead = base + minBarLength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tsize: size,\r\n\t\t\tbase: base,\r\n\t\t\thead: head,\r\n\t\t\tcenter: head + size / 2\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\tcalculateBarIndexPixels: function(datasetIndex, index, ruler, options) {\r\n\t\tvar me = this;\r\n\t\tvar range = options.barThickness === 'flex'\r\n\t\t\t? computeFlexCategoryTraits(index, ruler, options)\r\n\t\t\t: computeFitCategoryTraits(index, ruler, options);\r\n\r\n\t\tvar stackIndex = me.getStackIndex(datasetIndex, me.getMeta().stack);\r\n\t\tvar center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\r\n\t\tvar size = Math.min(\r\n\t\t\tvalueOrDefault$3(options.maxBarThickness, Infinity),\r\n\t\t\trange.chunk * range.ratio);\r\n\r\n\t\treturn {\r\n\t\t\tbase: center - size / 2,\r\n\t\t\thead: center + size / 2,\r\n\t\t\tcenter: center,\r\n\t\t\tsize: size\r\n\t\t};\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar scale = me._getValueScale();\r\n\t\tvar rects = me.getMeta().data;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar ilen = rects.length;\r\n\t\tvar i = 0;\r\n\r\n\t\thelpers$1.canvas.clipArea(chart.ctx, chart.chartArea);\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tvar val = scale._parseValue(dataset.data[i]);\r\n\t\t\tif (!isNaN(val.min) && !isNaN(val.max)) {\r\n\t\t\t\trects[i].draw();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar values = helpers$1.extend({}, core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments));\r\n\t\tvar indexOpts = me._getIndexScale().options;\r\n\t\tvar valueOpts = me._getValueScale().options;\r\n\r\n\t\tvalues.barPercentage = valueOrDefault$3(indexOpts.barPercentage, values.barPercentage);\r\n\t\tvalues.barThickness = valueOrDefault$3(indexOpts.barThickness, values.barThickness);\r\n\t\tvalues.categoryPercentage = valueOrDefault$3(indexOpts.categoryPercentage, values.categoryPercentage);\r\n\t\tvalues.maxBarThickness = valueOrDefault$3(indexOpts.maxBarThickness, values.maxBarThickness);\r\n\t\tvalues.minBarLength = valueOrDefault$3(valueOpts.minBarLength, values.minBarLength);\r\n\r\n\t\treturn values;\r\n\t}\r\n\r\n});\n\nvar valueOrDefault$4 = helpers$1.valueOrDefault;\r\nvar resolve$1 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('bubble', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear', // bubble should probably use a linear scale by default\r\n\t\t\tposition: 'bottom',\r\n\t\t\tid: 'x-axis-0' // need an ID so datasets can reference the scale\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\t// Title doesn't make sense for scatter since we format the data as a point\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\tvar datasetLabel = data.datasets[item.datasetIndex].label || '';\r\n\t\t\t\tvar dataPoint = data.datasets[item.datasetIndex].data[item.index];\r\n\t\t\t\treturn datasetLabel + ': (' + item.xLabel + ', ' + item.yLabel + ', ' + dataPoint.r + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_bubble = core_datasetController.extend({\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t\t'hoverRadius',\r\n\t\t'hitRadius',\r\n\t\t'pointStyle',\r\n\t\t'rotation'\r\n\t],\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data;\r\n\r\n\t\t// Update Points\r\n\t\thelpers$1.each(points, function(point, index) {\r\n\t\t\tme.updateElement(point, index, reset);\r\n\t\t});\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tvar yScale = me.getScaleForId(meta.yAxisID);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar data = me.getDataset().data[index];\r\n\t\tvar dsIndex = me.index;\r\n\r\n\t\tvar x = reset ? xScale.getPixelForDecimal(0.5) : xScale.getPixelForValue(typeof data === 'object' ? data : NaN, index, dsIndex);\r\n\t\tvar y = reset ? yScale.getBasePixel() : yScale.getPixelForValue(data, index, dsIndex);\r\n\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = dsIndex;\r\n\t\tpoint._index = index;\r\n\t\tpoint._model = {\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\thitRadius: options.hitRadius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tradius: reset ? 0 : options.radius,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t};\r\n\r\n\t\tpoint.pivot();\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$4(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$4(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$4(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = options.radius + options.hoverRadius;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDataElementOptions: function(point, index) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar data = dataset.data[index] || {};\r\n\t\tvar values = core_datasetController.prototype._resolveDataElementOptions.apply(me, arguments);\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\t// In case values were cached (and thus frozen), we need to clone the values\r\n\t\tif (me._cachedDataOpts === values) {\r\n\t\t\tvalues = helpers$1.extend({}, values);\r\n\t\t}\r\n\r\n\t\t// Custom radius resolution\r\n\t\tvalues.radius = resolve$1([\r\n\t\t\tcustom.radius,\r\n\t\t\tdata.r,\r\n\t\t\tme._config.radius,\r\n\t\t\tchart.options.elements.point.radius\r\n\t\t], context, index);\r\n\r\n\t\treturn values;\r\n\t}\r\n});\n\nvar valueOrDefault$5 = helpers$1.valueOrDefault;\r\n\r\nvar PI$1 = Math.PI;\r\nvar DOUBLE_PI$1 = PI$1 * 2;\r\nvar HALF_PI$1 = PI$1 / 2;\r\n\r\ncore_defaults._set('doughnut', {\r\n\tanimation: {\r\n\t\t// Boolean - Whether we animate the rotation of the Doughnut\r\n\t\tanimateRotate: true,\r\n\t\t// Boolean - Whether we animate scaling the Doughnut from the centre\r\n\t\tanimateScale: false\r\n\t},\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t// toggle visibility of index if exists\r\n\t\t\t\tif (meta.data[index]) {\r\n\t\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// The percentage of the chart that we cut out of the middle.\r\n\tcutoutPercentage: 50,\r\n\r\n\t// The rotation of the chart, where the first data arc begins.\r\n\trotation: -HALF_PI$1,\r\n\r\n\t// The total circumference of the chart.\r\n\tcircumference: DOUBLE_PI$1,\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(tooltipItem, data) {\r\n\t\t\t\tvar dataLabel = data.labels[tooltipItem.index];\r\n\t\t\t\tvar value = ': ' + data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];\r\n\r\n\t\t\t\tif (helpers$1.isArray(dataLabel)) {\r\n\t\t\t\t\t// show value on first line of multiline label\r\n\t\t\t\t\t// need to clone because we are changing the value\r\n\t\t\t\t\tdataLabel = dataLabel.slice();\r\n\t\t\t\t\tdataLabel[0] += value;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataLabel += value;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn dataLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_doughnut = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t// Get index of the dataset in relation to the visible datasets. This allows determining the inner and outer radius correctly\r\n\tgetRingIndex: function(datasetIndex) {\r\n\t\tvar ringIndex = 0;\r\n\r\n\t\tfor (var j = 0; j < datasetIndex; ++j) {\r\n\t\t\tif (this.chart.isDatasetVisible(j)) {\r\n\t\t\t\t++ringIndex;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringIndex;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar ratioX = 1;\r\n\t\tvar ratioY = 1;\r\n\t\tvar offsetX = 0;\r\n\t\tvar offsetY = 0;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar arcs = meta.data;\r\n\t\tvar cutout = opts.cutoutPercentage / 100 || 0;\r\n\t\tvar circumference = opts.circumference;\r\n\t\tvar chartWeight = me._getRingWeight(me.index);\r\n\t\tvar maxWidth, maxHeight, i, ilen;\r\n\r\n\t\t// If the chart's circumference isn't a full circle, calculate size as a ratio of the width/height of the arc\r\n\t\tif (circumference < DOUBLE_PI$1) {\r\n\t\t\tvar startAngle = opts.rotation % DOUBLE_PI$1;\r\n\t\t\tstartAngle += startAngle >= PI$1 ? -DOUBLE_PI$1 : startAngle < -PI$1 ? DOUBLE_PI$1 : 0;\r\n\t\t\tvar endAngle = startAngle + circumference;\r\n\t\t\tvar startX = Math.cos(startAngle);\r\n\t\t\tvar startY = Math.sin(startAngle);\r\n\t\t\tvar endX = Math.cos(endAngle);\r\n\t\t\tvar endY = Math.sin(endAngle);\r\n\t\t\tvar contains0 = (startAngle <= 0 && endAngle >= 0) || endAngle >= DOUBLE_PI$1;\r\n\t\t\tvar contains90 = (startAngle <= HALF_PI$1 && endAngle >= HALF_PI$1) || endAngle >= DOUBLE_PI$1 + HALF_PI$1;\r\n\t\t\tvar contains180 = startAngle === -PI$1 || endAngle >= PI$1;\r\n\t\t\tvar contains270 = (startAngle <= -HALF_PI$1 && endAngle >= -HALF_PI$1) || endAngle >= PI$1 + HALF_PI$1;\r\n\t\t\tvar minX = contains180 ? -1 : Math.min(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar minY = contains270 ? -1 : Math.min(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tvar maxX = contains0 ? 1 : Math.max(startX, startX * cutout, endX, endX * cutout);\r\n\t\t\tvar maxY = contains90 ? 1 : Math.max(startY, startY * cutout, endY, endY * cutout);\r\n\t\t\tratioX = (maxX - minX) / 2;\r\n\t\t\tratioY = (maxY - minY) / 2;\r\n\t\t\toffsetX = -(maxX + minX) / 2;\r\n\t\t\toffsetY = -(maxY + minY) / 2;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t}\r\n\r\n\t\tchart.borderWidth = me.getMaxBorderWidth();\r\n\t\tmaxWidth = (chartArea.right - chartArea.left - chart.borderWidth) / ratioX;\r\n\t\tmaxHeight = (chartArea.bottom - chartArea.top - chart.borderWidth) / ratioY;\r\n\t\tchart.outerRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\r\n\t\tchart.innerRadius = Math.max(chart.outerRadius * cutout, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / (me._getVisibleDatasetWeightTotal() || 1);\r\n\t\tchart.offsetX = offsetX * chart.outerRadius;\r\n\t\tchart.offsetY = offsetY * chart.outerRadius;\r\n\r\n\t\tmeta.total = me.calculateTotal();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - chart.radiusLength * me._getRingWeightOffset(me.index);\r\n\t\tme.innerRadius = Math.max(me.outerRadius - chart.radiusLength * chartWeight, 0);\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar centerX = (chartArea.left + chartArea.right) / 2;\r\n\t\tvar centerY = (chartArea.top + chartArea.bottom) / 2;\r\n\t\tvar startAngle = opts.rotation; // non reset case handled later\r\n\t\tvar endAngle = opts.rotation; // non reset case handled later\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar circumference = reset && animationOpts.animateRotate ? 0 : arc.hidden ? 0 : me.calculateCircumference(dataset.data[index]) * (opts.circumference / DOUBLE_PI$1);\r\n\t\tvar innerRadius = reset && animationOpts.animateScale ? 0 : me.innerRadius;\r\n\t\tvar outerRadius = reset && animationOpts.animateScale ? 0 : me.outerRadius;\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX + chart.offsetX,\r\n\t\t\t\ty: centerY + chart.offsetY,\r\n\t\t\t\tstartAngle: startAngle,\r\n\t\t\t\tendAngle: endAngle,\r\n\t\t\t\tcircumference: circumference,\r\n\t\t\t\touterRadius: outerRadius,\r\n\t\t\t\tinnerRadius: innerRadius,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(dataset.label, index, chart.data.labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar model = arc._model;\r\n\r\n\t\t// Set correct angles if not resetting\r\n\t\tif (!reset || !animationOpts.animateRotate) {\r\n\t\t\tif (index === 0) {\r\n\t\t\t\tmodel.startAngle = opts.rotation;\r\n\t\t\t} else {\r\n\t\t\t\tmodel.startAngle = me.getMeta().data[index - 1]._model.endAngle;\r\n\t\t\t}\r\n\r\n\t\t\tmodel.endAngle = model.startAngle + model.circumference;\r\n\t\t}\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcalculateTotal: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar total = 0;\r\n\t\tvar value;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tvalue = dataset.data[index];\r\n\t\t\tif (!isNaN(value) && !element.hidden) {\r\n\t\t\t\ttotal += Math.abs(value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t/* if (total === 0) {\r\n\t\t\ttotal = NaN;\r\n\t\t}*/\r\n\r\n\t\treturn total;\r\n\t},\r\n\r\n\tcalculateCircumference: function(value) {\r\n\t\tvar total = this.getMeta().total;\r\n\t\tif (total > 0 && !isNaN(value)) {\r\n\t\t\treturn DOUBLE_PI$1 * (Math.abs(value) / total);\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// gets the max border or hover width to properly scale pie charts\r\n\tgetMaxBorderWidth: function(arcs) {\r\n\t\tvar me = this;\r\n\t\tvar max = 0;\r\n\t\tvar chart = me.chart;\r\n\t\tvar i, ilen, meta, arc, controller, options, borderWidth, hoverWidth;\r\n\r\n\t\tif (!arcs) {\r\n\t\t\t// Find the outmost visible dataset\r\n\t\t\tfor (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\r\n\t\t\t\tif (chart.isDatasetVisible(i)) {\r\n\t\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\t\tarcs = meta.data;\r\n\t\t\t\t\tif (i !== me.index) {\r\n\t\t\t\t\t\tcontroller = meta.controller;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!arcs) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarc = arcs[i];\r\n\t\t\tif (controller) {\r\n\t\t\t\tcontroller._configure();\r\n\t\t\t\toptions = controller._resolveDataElementOptions(arc, i);\r\n\t\t\t} else {\r\n\t\t\t\toptions = arc._options;\r\n\t\t\t}\r\n\t\t\tif (options.borderAlign !== 'inner') {\r\n\t\t\t\tborderWidth = options.borderWidth;\r\n\t\t\t\thoverWidth = options.hoverBorderWidth;\r\n\r\n\t\t\t\tmax = borderWidth > max ? borderWidth : max;\r\n\t\t\t\tmax = hoverWidth > max ? hoverWidth : max;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn max;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$5(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$5(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$5(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * Get radius length offset of the dataset in relation to the visible datasets weights. This allows determining the inner and outer radius correctly\r\n\t * @private\r\n\t */\r\n\t_getRingWeightOffset: function(datasetIndex) {\r\n\t\tvar ringWeightOffset = 0;\r\n\r\n\t\tfor (var i = 0; i < datasetIndex; ++i) {\r\n\t\t\tif (this.chart.isDatasetVisible(i)) {\r\n\t\t\t\tringWeightOffset += this._getRingWeight(i);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ringWeightOffset;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getRingWeight: function(dataSetIndex) {\r\n\t\treturn Math.max(valueOrDefault$5(this.chart.data.datasets[dataSetIndex].weight, 1), 0);\r\n\t},\r\n\r\n\t/**\r\n\t * Returns the sum of all visibile data set weights. This value can be 0.\r\n\t * @private\r\n\t */\r\n\t_getVisibleDatasetWeightTotal: function() {\r\n\t\treturn this._getRingWeightOffset(this.chart.data.datasets.length);\r\n\t}\r\n});\n\ncore_defaults._set('horizontalBar', {\r\n\thover: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tposition: 'left',\r\n\t\t\toffset: true,\r\n\t\t\tgridLines: {\r\n\t\t\t\toffsetGridLines: true\r\n\t\t\t}\r\n\t\t}]\r\n\t},\r\n\r\n\telements: {\r\n\t\trectangle: {\r\n\t\t\tborderSkipped: 'left'\r\n\t\t}\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tmode: 'index',\r\n\t\taxis: 'y'\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\thorizontalBar: {\r\n\t\t\tcategoryPercentage: 0.8,\r\n\t\t\tbarPercentage: 0.9\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_horizontalBar = controller_bar.extend({\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.getMeta().xAxisID;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.getMeta().yAxisID;\r\n\t}\r\n});\n\nvar valueOrDefault$6 = helpers$1.valueOrDefault;\r\nvar resolve$2 = helpers$1.options.resolve;\r\nvar isPointInArea = helpers$1.canvas._isPointInArea;\r\n\r\ncore_defaults._set('line', {\r\n\tshowLines: true,\r\n\tspanGaps: false,\r\n\r\n\thover: {\r\n\t\tmode: 'label'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\ttype: 'category',\r\n\t\t\tid: 'x-axis-0'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\ttype: 'linear',\r\n\t\t\tid: 'y-axis-0'\r\n\t\t}]\r\n\t}\r\n});\r\n\r\nfunction scaleClip(scale, halfBorderWidth) {\r\n\tvar tickOpts = scale && scale.options.ticks || {};\r\n\tvar reverse = tickOpts.reverse;\r\n\tvar min = tickOpts.min === undefined ? halfBorderWidth : 0;\r\n\tvar max = tickOpts.max === undefined ? halfBorderWidth : 0;\r\n\treturn {\r\n\t\tstart: reverse ? max : min,\r\n\t\tend: reverse ? min : max\r\n\t};\r\n}\r\n\r\nfunction defaultClip(xScale, yScale, borderWidth) {\r\n\tvar halfBorderWidth = borderWidth / 2;\r\n\tvar x = scaleClip(xScale, halfBorderWidth);\r\n\tvar y = scaleClip(yScale, halfBorderWidth);\r\n\r\n\treturn {\r\n\t\ttop: y.end,\r\n\t\tright: x.end,\r\n\t\tbottom: y.start,\r\n\t\tleft: x.start\r\n\t};\r\n}\r\n\r\nfunction toClip(value) {\r\n\tvar t, r, b, l;\r\n\r\n\tif (helpers$1.isObject(value)) {\r\n\t\tt = value.top;\r\n\t\tr = value.right;\r\n\t\tb = value.bottom;\r\n\t\tl = value.left;\r\n\t} else {\r\n\t\tt = r = b = l = value;\r\n\t}\r\n\r\n\treturn {\r\n\t\ttop: t,\r\n\t\tright: r,\r\n\t\tbottom: b,\r\n\t\tleft: l\r\n\t};\r\n}\r\n\r\n\r\nvar controller_line = core_datasetController.extend({\r\n\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderColor',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'borderWidth',\r\n\t\t'cubicInterpolationMode',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar options = me.chart.options;\r\n\t\tvar config = me._config;\r\n\t\tvar showLine = me._showLine = valueOrDefault$6(config.showLine, options.showLines);\r\n\t\tvar i, ilen;\r\n\r\n\t\tme._xScale = me.getScaleForId(meta.xAxisID);\r\n\t\tme._yScale = me.getScaleForId(meta.yAxisID);\r\n\r\n\t\t// Update Line\r\n\t\tif (showLine) {\r\n\t\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\t\tconfig.lineTension = config.tension;\r\n\t\t\t}\r\n\r\n\t\t\t// Utility\r\n\t\t\tline._scale = me._yScale;\r\n\t\t\tline._datasetIndex = me.index;\r\n\t\t\t// Data\r\n\t\t\tline._children = points;\r\n\t\t\t// Model\r\n\t\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\t\tline.pivot();\r\n\t\t}\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\tif (showLine && line._model.tension !== 0) {\r\n\t\t\tme.updateBezierControlPoints();\r\n\t\t}\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar datasetIndex = me.index;\r\n\t\tvar value = dataset.data[index];\r\n\t\tvar xScale = me._xScale;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar x, y;\r\n\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\r\n\t\tx = xScale.getPixelForValue(typeof value === 'object' ? value : NaN, index, datasetIndex);\r\n\t\ty = reset ? yScale.getBasePixel() : me.calculatePointY(value, index, datasetIndex);\r\n\r\n\t\t// Utility\r\n\t\tpoint._xScale = xScale;\r\n\t\tpoint._yScale = yScale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = datasetIndex;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x,\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$6(custom.tension, lineModel ? lineModel.tension : 0),\r\n\t\t\tsteppedLine: lineModel ? lineModel.steppedLine : false,\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function(element) {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar custom = element.custom || {};\r\n\t\tvar options = me.chart.options;\r\n\t\tvar lineOptions = options.elements.line;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\t// The default behavior of lines is to break at null values, according\r\n\t\t// to https://github.com/chartjs/Chart.js/issues/2435#issuecomment-216718158\r\n\t\t// This option gives lines the ability to span gaps\r\n\t\tvalues.spanGaps = valueOrDefault$6(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$6(config.lineTension, lineOptions.tension);\r\n\t\tvalues.steppedLine = resolve$2([custom.steppedLine, config.steppedLine, lineOptions.stepped]);\r\n\t\tvalues.clip = toClip(valueOrDefault$6(config.clip, defaultClip(me._xScale, me._yScale, values.borderWidth)));\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tcalculatePointY: function(value, index, datasetIndex) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar yScale = me._yScale;\r\n\t\tvar sumPos = 0;\r\n\t\tvar sumNeg = 0;\r\n\t\tvar i, ds, dsMeta, stackedRightValue, rightValue, metasets, ilen;\r\n\r\n\t\tif (yScale.options.stacked) {\r\n\t\t\trightValue = +yScale.getRightValue(value);\r\n\t\t\tmetasets = chart._getSortedVisibleDatasetMetas();\r\n\t\t\tilen = metasets.length;\r\n\r\n\t\t\tfor (i = 0; i < ilen; ++i) {\r\n\t\t\t\tdsMeta = metasets[i];\r\n\t\t\t\tif (dsMeta.index === datasetIndex) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tds = chart.data.datasets[dsMeta.index];\r\n\t\t\t\tif (dsMeta.type === 'line' && dsMeta.yAxisID === yScale.id) {\r\n\t\t\t\t\tstackedRightValue = +yScale.getRightValue(ds.data[index]);\r\n\t\t\t\t\tif (stackedRightValue < 0) {\r\n\t\t\t\t\t\tsumNeg += stackedRightValue || 0;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsumPos += stackedRightValue || 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (rightValue < 0) {\r\n\t\t\t\treturn yScale.getPixelForValue(sumNeg + rightValue);\r\n\t\t\t}\r\n\t\t\treturn yScale.getPixelForValue(sumPos + rightValue);\r\n\t\t}\r\n\t\treturn yScale.getPixelForValue(value);\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar lineModel = meta.dataset._model;\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (lineModel.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tif (lineModel.cubicInterpolationMode === 'monotone') {\r\n\t\t\thelpers$1.splineCurveMonotone(points);\r\n\t\t} else {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\t\thelpers$1.previousItem(points, i)._model,\r\n\t\t\t\t\tmodel,\r\n\t\t\t\t\thelpers$1.nextItem(points, i)._model,\r\n\t\t\t\t\tlineModel.tension\r\n\t\t\t\t);\r\n\t\t\t\tmodel.controlPointPreviousX = controlPoints.previous.x;\r\n\t\t\t\tmodel.controlPointPreviousY = controlPoints.previous.y;\r\n\t\t\t\tmodel.controlPointNextX = controlPoints.next.x;\r\n\t\t\t\tmodel.controlPointNextY = controlPoints.next.y;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (chart.options.elements.line.capBezierPoints) {\r\n\t\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\t\tmodel = points[i]._model;\r\n\t\t\t\tif (isPointInArea(model, area)) {\r\n\t\t\t\t\tif (i > 0 && isPointInArea(points[i - 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointPreviousX = capControlPoint(model.controlPointPreviousX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointPreviousY = capControlPoint(model.controlPointPreviousY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (i < points.length - 1 && isPointInArea(points[i + 1]._model, area)) {\r\n\t\t\t\t\t\tmodel.controlPointNextX = capControlPoint(model.controlPointNextX, area.left, area.right);\r\n\t\t\t\t\t\tmodel.controlPointNextY = capControlPoint(model.controlPointNextY, area.top, area.bottom);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tdraw: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar points = meta.data || [];\r\n\t\tvar area = chart.chartArea;\r\n\t\tvar canvas = chart.canvas;\r\n\t\tvar i = 0;\r\n\t\tvar ilen = points.length;\r\n\t\tvar clip;\r\n\r\n\t\tif (me._showLine) {\r\n\t\t\tclip = meta.dataset._model.clip;\r\n\r\n\t\t\thelpers$1.canvas.clipArea(chart.ctx, {\r\n\t\t\t\tleft: clip.left === false ? 0 : area.left - clip.left,\r\n\t\t\t\tright: clip.right === false ? canvas.width : area.right + clip.right,\r\n\t\t\t\ttop: clip.top === false ? 0 : area.top - clip.top,\r\n\t\t\t\tbottom: clip.bottom === false ? canvas.height : area.bottom + clip.bottom\r\n\t\t\t});\r\n\r\n\t\t\tmeta.dataset.draw();\r\n\r\n\t\t\thelpers$1.canvas.unclipArea(chart.ctx);\r\n\t\t}\r\n\r\n\t\t// Draw the points\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tpoints[i].draw(area);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$6(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$6(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$6(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$6(options.hoverRadius, options.radius);\r\n\t},\r\n});\n\nvar resolve$3 = helpers$1.options.resolve;\r\n\r\ncore_defaults._set('polarArea', {\r\n\tscale: {\r\n\t\ttype: 'radialLinear',\r\n\t\tangleLines: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tgridLines: {\r\n\t\t\tcircular: true\r\n\t\t},\r\n\t\tpointLabels: {\r\n\t\t\tdisplay: false\r\n\t\t},\r\n\t\tticks: {\r\n\t\t\tbeginAtZero: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Boolean - Whether to animate the rotation of the chart\r\n\tanimation: {\r\n\t\tanimateRotate: true,\r\n\t\tanimateScale: true\r\n\t},\r\n\r\n\tstartAngle: -0.5 * Math.PI,\r\n\tlegendCallback: function(chart) {\r\n\t\tvar list = document.createElement('ul');\r\n\t\tvar data = chart.data;\r\n\t\tvar datasets = data.datasets;\r\n\t\tvar labels = data.labels;\r\n\t\tvar i, ilen, listItem, listItemSpan;\r\n\r\n\t\tlist.setAttribute('class', chart.id + '-legend');\r\n\t\tif (datasets.length) {\r\n\t\t\tfor (i = 0, ilen = datasets[0].data.length; i < ilen; ++i) {\r\n\t\t\t\tlistItem = list.appendChild(document.createElement('li'));\r\n\t\t\t\tlistItemSpan = listItem.appendChild(document.createElement('span'));\r\n\t\t\t\tlistItemSpan.style.backgroundColor = datasets[0].backgroundColor[i];\r\n\t\t\t\tif (labels[i]) {\r\n\t\t\t\t\tlistItem.appendChild(document.createTextNode(labels[i]));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn list.outerHTML;\r\n\t},\r\n\tlegend: {\r\n\t\tlabels: {\r\n\t\t\tgenerateLabels: function(chart) {\r\n\t\t\t\tvar data = chart.data;\r\n\t\t\t\tif (data.labels.length && data.datasets.length) {\r\n\t\t\t\t\treturn data.labels.map(function(label, i) {\r\n\t\t\t\t\t\tvar meta = chart.getDatasetMeta(0);\r\n\t\t\t\t\t\tvar style = meta.controller.getStyle(i);\r\n\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\ttext: label,\r\n\t\t\t\t\t\t\tfillStyle: style.backgroundColor,\r\n\t\t\t\t\t\t\tstrokeStyle: style.borderColor,\r\n\t\t\t\t\t\t\tlineWidth: style.borderWidth,\r\n\t\t\t\t\t\t\thidden: isNaN(data.datasets[0].data[i]) || meta.data[i].hidden,\r\n\r\n\t\t\t\t\t\t\t// Extra data used for toggling the correct item\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tonClick: function(e, legendItem) {\r\n\t\t\tvar index = legendItem.index;\r\n\t\t\tvar chart = this.chart;\r\n\t\t\tvar i, ilen, meta;\r\n\r\n\t\t\tfor (i = 0, ilen = (chart.data.datasets || []).length; i < ilen; ++i) {\r\n\t\t\t\tmeta = chart.getDatasetMeta(i);\r\n\t\t\t\tmeta.data[index].hidden = !meta.data[index].hidden;\r\n\t\t\t}\r\n\r\n\t\t\tchart.update();\r\n\t\t}\r\n\t},\r\n\r\n\t// Need to override these to give a nice default\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn '';\r\n\t\t\t},\r\n\t\t\tlabel: function(item, data) {\r\n\t\t\t\treturn data.labels[item.index] + ': ' + item.yLabel;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_polarArea = core_datasetController.extend({\r\n\r\n\tdataElementType: elements.Arc,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderColor',\r\n\t\t'borderWidth',\r\n\t\t'borderAlign',\r\n\t\t'hoverBackgroundColor',\r\n\t\t'hoverBorderColor',\r\n\t\t'hoverBorderWidth',\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar start = me.chart.options.startAngle || 0;\r\n\t\tvar starts = me._starts = [];\r\n\t\tvar angles = me._angles = [];\r\n\t\tvar arcs = meta.data;\r\n\t\tvar i, ilen, angle;\r\n\r\n\t\tme._updateRadius();\r\n\r\n\t\tmeta.count = me.countVisibleElements();\r\n\r\n\t\tfor (i = 0, ilen = dataset.data.length; i < ilen; i++) {\r\n\t\t\tstarts[i] = start;\r\n\t\t\tangle = me._computeAngle(i);\r\n\t\t\tangles[i] = angle;\r\n\t\t\tstart += angle;\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = arcs.length; i < ilen; ++i) {\r\n\t\t\tarcs[i]._options = me._resolveDataElementOptions(arcs[i], i);\r\n\t\t\tme.updateElement(arcs[i], i, reset);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_updateRadius: function() {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar chartArea = chart.chartArea;\r\n\t\tvar opts = chart.options;\r\n\t\tvar minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\r\n\r\n\t\tchart.outerRadius = Math.max(minSize / 2, 0);\r\n\t\tchart.innerRadius = Math.max(opts.cutoutPercentage ? (chart.outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\r\n\t\tchart.radiusLength = (chart.outerRadius - chart.innerRadius) / chart.getVisibleDatasetCount();\r\n\r\n\t\tme.outerRadius = chart.outerRadius - (chart.radiusLength * me.index);\r\n\t\tme.innerRadius = me.outerRadius - chart.radiusLength;\r\n\t},\r\n\r\n\tupdateElement: function(arc, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar chart = me.chart;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar opts = chart.options;\r\n\t\tvar animationOpts = opts.animation;\r\n\t\tvar scale = chart.scale;\r\n\t\tvar labels = chart.data.labels;\r\n\r\n\t\tvar centerX = scale.xCenter;\r\n\t\tvar centerY = scale.yCenter;\r\n\r\n\t\t// var negHalfPI = -0.5 * Math.PI;\r\n\t\tvar datasetStartAngle = opts.startAngle;\r\n\t\tvar distance = arc.hidden ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar startAngle = me._starts[index];\r\n\t\tvar endAngle = startAngle + (arc.hidden ? 0 : me._angles[index]);\r\n\r\n\t\tvar resetRadius = animationOpts.animateScale ? 0 : scale.getDistanceFromCenterForValue(dataset.data[index]);\r\n\t\tvar options = arc._options || {};\r\n\r\n\t\thelpers$1.extend(arc, {\r\n\t\t\t// Utility\r\n\t\t\t_datasetIndex: me.index,\r\n\t\t\t_index: index,\r\n\t\t\t_scale: scale,\r\n\r\n\t\t\t// Desired view properties\r\n\t\t\t_model: {\r\n\t\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\t\tborderColor: options.borderColor,\r\n\t\t\t\tborderWidth: options.borderWidth,\r\n\t\t\t\tborderAlign: options.borderAlign,\r\n\t\t\t\tx: centerX,\r\n\t\t\t\ty: centerY,\r\n\t\t\t\tinnerRadius: 0,\r\n\t\t\t\touterRadius: reset ? resetRadius : distance,\r\n\t\t\t\tstartAngle: reset && animationOpts.animateRotate ? datasetStartAngle : startAngle,\r\n\t\t\t\tendAngle: reset && animationOpts.animateRotate ? datasetStartAngle : endAngle,\r\n\t\t\t\tlabel: helpers$1.valueAtIndexOrDefault(labels, index, labels[index])\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tarc.pivot();\r\n\t},\r\n\r\n\tcountVisibleElements: function() {\r\n\t\tvar dataset = this.getDataset();\r\n\t\tvar meta = this.getMeta();\r\n\t\tvar count = 0;\r\n\r\n\t\thelpers$1.each(meta.data, function(element, index) {\r\n\t\t\tif (!isNaN(dataset.data[index]) && !element.hidden) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn count;\r\n\t},\r\n\r\n\t/**\r\n\t * @protected\r\n\t */\r\n\tsetHoverStyle: function(arc) {\r\n\t\tvar model = arc._model;\r\n\t\tvar options = arc._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\t\tvar valueOrDefault = helpers$1.valueOrDefault;\r\n\r\n\t\tarc.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault(options.hoverBorderWidth, options.borderWidth);\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_computeAngle: function(index) {\r\n\t\tvar me = this;\r\n\t\tvar count = this.getMeta().count;\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar meta = me.getMeta();\r\n\r\n\t\tif (isNaN(dataset.data[index]) || meta.data[index].hidden) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Scriptable options\r\n\t\tvar context = {\r\n\t\t\tchart: me.chart,\r\n\t\t\tdataIndex: index,\r\n\t\t\tdataset: dataset,\r\n\t\t\tdatasetIndex: me.index\r\n\t\t};\r\n\r\n\t\treturn resolve$3([\r\n\t\t\tme.chart.options.elements.arc.angle,\r\n\t\t\t(2 * Math.PI) / count\r\n\t\t], context, index);\r\n\t}\r\n});\n\ncore_defaults._set('pie', helpers$1.clone(core_defaults.doughnut));\r\ncore_defaults._set('pie', {\r\n\tcutoutPercentage: 0\r\n});\r\n\r\n// Pie charts are Doughnut chart with different defaults\r\nvar controller_pie = controller_doughnut;\n\nvar valueOrDefault$7 = helpers$1.valueOrDefault;\r\n\r\ncore_defaults._set('radar', {\r\n\tspanGaps: false,\r\n\tscale: {\r\n\t\ttype: 'radialLinear'\r\n\t},\r\n\telements: {\r\n\t\tline: {\r\n\t\t\tfill: 'start',\r\n\t\t\ttension: 0 // no bezier in radar\r\n\t\t}\r\n\t}\r\n});\r\n\r\nvar controller_radar = core_datasetController.extend({\r\n\tdatasetElementType: elements.Line,\r\n\r\n\tdataElementType: elements.Point,\r\n\r\n\tlinkScales: helpers$1.noop,\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_datasetElementOptions: [\r\n\t\t'backgroundColor',\r\n\t\t'borderWidth',\r\n\t\t'borderColor',\r\n\t\t'borderCapStyle',\r\n\t\t'borderDash',\r\n\t\t'borderDashOffset',\r\n\t\t'borderJoinStyle',\r\n\t\t'fill'\r\n\t],\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_dataElementOptions: {\r\n\t\tbackgroundColor: 'pointBackgroundColor',\r\n\t\tborderColor: 'pointBorderColor',\r\n\t\tborderWidth: 'pointBorderWidth',\r\n\t\thitRadius: 'pointHitRadius',\r\n\t\thoverBackgroundColor: 'pointHoverBackgroundColor',\r\n\t\thoverBorderColor: 'pointHoverBorderColor',\r\n\t\thoverBorderWidth: 'pointHoverBorderWidth',\r\n\t\thoverRadius: 'pointHoverRadius',\r\n\t\tpointStyle: 'pointStyle',\r\n\t\tradius: 'pointRadius',\r\n\t\trotation: 'pointRotation'\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getIndexScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_getValueScaleId: function() {\r\n\t\treturn this.chart.scale.id;\r\n\t},\r\n\r\n\tupdate: function(reset) {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar line = meta.dataset;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar config = me._config;\r\n\t\tvar i, ilen;\r\n\r\n\t\t// Compatibility: If the properties are defined with only the old name, use those values\r\n\t\tif (config.tension !== undefined && config.lineTension === undefined) {\r\n\t\t\tconfig.lineTension = config.tension;\r\n\t\t}\r\n\r\n\t\t// Utility\r\n\t\tline._scale = scale;\r\n\t\tline._datasetIndex = me.index;\r\n\t\t// Data\r\n\t\tline._children = points;\r\n\t\tline._loop = true;\r\n\t\t// Model\r\n\t\tline._model = me._resolveDatasetElementOptions(line);\r\n\r\n\t\tline.pivot();\r\n\r\n\t\t// Update Points\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tme.updateElement(points[i], i, reset);\r\n\t\t}\r\n\r\n\t\t// Update bezier control points\r\n\t\tme.updateBezierControlPoints();\r\n\r\n\t\t// Now pivot the point for animation\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tpoints[i].pivot();\r\n\t\t}\r\n\t},\r\n\r\n\tupdateElement: function(point, index, reset) {\r\n\t\tvar me = this;\r\n\t\tvar custom = point.custom || {};\r\n\t\tvar dataset = me.getDataset();\r\n\t\tvar scale = me.chart.scale;\r\n\t\tvar pointPosition = scale.getPointPositionForValue(index, dataset.data[index]);\r\n\t\tvar options = me._resolveDataElementOptions(point, index);\r\n\t\tvar lineModel = me.getMeta().dataset._model;\r\n\t\tvar x = reset ? scale.xCenter : pointPosition.x;\r\n\t\tvar y = reset ? scale.yCenter : pointPosition.y;\r\n\r\n\t\t// Utility\r\n\t\tpoint._scale = scale;\r\n\t\tpoint._options = options;\r\n\t\tpoint._datasetIndex = me.index;\r\n\t\tpoint._index = index;\r\n\r\n\t\t// Desired view properties\r\n\t\tpoint._model = {\r\n\t\t\tx: x, // value not used in dataset scale, but we want a consistent API between scales\r\n\t\t\ty: y,\r\n\t\t\tskip: custom.skip || isNaN(x) || isNaN(y),\r\n\t\t\t// Appearance\r\n\t\t\tradius: options.radius,\r\n\t\t\tpointStyle: options.pointStyle,\r\n\t\t\trotation: options.rotation,\r\n\t\t\tbackgroundColor: options.backgroundColor,\r\n\t\t\tborderColor: options.borderColor,\r\n\t\t\tborderWidth: options.borderWidth,\r\n\t\t\ttension: valueOrDefault$7(custom.tension, lineModel ? lineModel.tension : 0),\r\n\r\n\t\t\t// Tooltip\r\n\t\t\thitRadius: options.hitRadius\r\n\t\t};\r\n\t},\r\n\r\n\t/**\r\n\t * @private\r\n\t */\r\n\t_resolveDatasetElementOptions: function() {\r\n\t\tvar me = this;\r\n\t\tvar config = me._config;\r\n\t\tvar options = me.chart.options;\r\n\t\tvar values = core_datasetController.prototype._resolveDatasetElementOptions.apply(me, arguments);\r\n\r\n\t\tvalues.spanGaps = valueOrDefault$7(config.spanGaps, options.spanGaps);\r\n\t\tvalues.tension = valueOrDefault$7(config.lineTension, options.elements.line.tension);\r\n\r\n\t\treturn values;\r\n\t},\r\n\r\n\tupdateBezierControlPoints: function() {\r\n\t\tvar me = this;\r\n\t\tvar meta = me.getMeta();\r\n\t\tvar area = me.chart.chartArea;\r\n\t\tvar points = meta.data || [];\r\n\t\tvar i, ilen, model, controlPoints;\r\n\r\n\t\t// Only consider points that are drawn in case the spanGaps option is used\r\n\t\tif (meta.dataset._model.spanGaps) {\r\n\t\t\tpoints = points.filter(function(pt) {\r\n\t\t\t\treturn !pt._model.skip;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfunction capControlPoint(pt, min, max) {\r\n\t\t\treturn Math.max(Math.min(pt, max), min);\r\n\t\t}\r\n\r\n\t\tfor (i = 0, ilen = points.length; i < ilen; ++i) {\r\n\t\t\tmodel = points[i]._model;\r\n\t\t\tcontrolPoints = helpers$1.splineCurve(\r\n\t\t\t\thelpers$1.previousItem(points, i, true)._model,\r\n\t\t\t\tmodel,\r\n\t\t\t\thelpers$1.nextItem(points, i, true)._model,\r\n\t\t\t\tmodel.tension\r\n\t\t\t);\r\n\r\n\t\t\t// Prevent the bezier going outside of the bounds of the graph\r\n\t\t\tmodel.controlPointPreviousX = capControlPoint(controlPoints.previous.x, area.left, area.right);\r\n\t\t\tmodel.controlPointPreviousY = capControlPoint(controlPoints.previous.y, area.top, area.bottom);\r\n\t\t\tmodel.controlPointNextX = capControlPoint(controlPoints.next.x, area.left, area.right);\r\n\t\t\tmodel.controlPointNextY = capControlPoint(controlPoints.next.y, area.top, area.bottom);\r\n\t\t}\r\n\t},\r\n\r\n\tsetHoverStyle: function(point) {\r\n\t\tvar model = point._model;\r\n\t\tvar options = point._options;\r\n\t\tvar getHoverColor = helpers$1.getHoverColor;\r\n\r\n\t\tpoint.$previousStyle = {\r\n\t\t\tbackgroundColor: model.backgroundColor,\r\n\t\t\tborderColor: model.borderColor,\r\n\t\t\tborderWidth: model.borderWidth,\r\n\t\t\tradius: model.radius\r\n\t\t};\r\n\r\n\t\tmodel.backgroundColor = valueOrDefault$7(options.hoverBackgroundColor, getHoverColor(options.backgroundColor));\r\n\t\tmodel.borderColor = valueOrDefault$7(options.hoverBorderColor, getHoverColor(options.borderColor));\r\n\t\tmodel.borderWidth = valueOrDefault$7(options.hoverBorderWidth, options.borderWidth);\r\n\t\tmodel.radius = valueOrDefault$7(options.hoverRadius, options.radius);\r\n\t}\r\n});\n\ncore_defaults._set('scatter', {\r\n\thover: {\r\n\t\tmode: 'single'\r\n\t},\r\n\r\n\tscales: {\r\n\t\txAxes: [{\r\n\t\t\tid: 'x-axis-1', // need an ID so datasets can reference the scale\r\n\t\t\ttype: 'linear', // scatter should not use a category axis\r\n\t\t\tposition: 'bottom'\r\n\t\t}],\r\n\t\tyAxes: [{\r\n\t\t\tid: 'y-axis-1',\r\n\t\t\ttype: 'linear',\r\n\t\t\tposition: 'left'\r\n\t\t}]\r\n\t},\r\n\r\n\ttooltips: {\r\n\t\tcallbacks: {\r\n\t\t\ttitle: function() {\r\n\t\t\t\treturn ''; // doesn't make sense for scatter since data are formatted as a point\r\n\t\t\t},\r\n\t\t\tlabel: function(item) {\r\n\t\t\t\treturn '(' + item.xLabel + ', ' + item.yLabel + ')';\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n});\r\n\r\ncore_defaults._set('global', {\r\n\tdatasets: {\r\n\t\tscatter: {\r\n\t\t\tshowLine: false\r\n\t\t}\r\n\t}\r\n});\r\n\r\n// Scatter charts use line controllers\r\nvar controller_scatter = controller_line;\n\n// NOTE export a map in which the key represents the controller type, not\r\n// the class, and so must be CamelCase in order to be correctly retrieved\r\n// by the controller in core.controller.js (`controllers[meta.type]`).\r\n\r\nvar controllers = {\r\n\tbar: controller_bar,\r\n\tbubble: controller_bubble,\r\n\tdoughnut: controller_doughnut,\r\n\thorizontalBar: controller_horizontalBar,\r\n\tline: controller_line,\r\n\tpolarArea: controller_polarArea,\r\n\tpie: controller_pie,\r\n\tradar: controller_radar,\r\n\tscatter: controller_scatter\r\n};\n\n/**\r\n * Helper function to get relative position for an event\r\n * @param {Event|IEvent} event - The event to get the position for\r\n * @param {Chart} chart - The chart\r\n * @returns {object} the event position\r\n */\r\nfunction getRelativePosition(e, chart) {\r\n\tif (e.native) {\r\n\t\treturn {\r\n\t\t\tx: e.x,\r\n\t\t\ty: e.y\r\n\t\t};\r\n\t}\r\n\r\n\treturn helpers$1.getRelativePosition(e, chart);\r\n}\r\n\r\n/**\r\n * Helper function to traverse all of the visible elements in the chart\r\n * @param {Chart} chart - the chart\r\n * @param {function} handler - the callback to execute for each visible item\r\n */\r\nfunction parseVisibleItems(chart, handler) {\r\n\tvar metasets = chart._getSortedVisibleDatasetMetas();\r\n\tvar metadata, i, j, ilen, jlen, element;\r\n\r\n\tfor (i = 0, ilen = metasets.length; i < ilen; ++i) {\r\n\t\tmetadata = metasets[i].data;\r\n\t\tfor (j = 0, jlen = metadata.length; j < jlen; ++j) {\r\n\t\t\telement = metadata[j];\r\n\t\t\tif (!element._view.skip) {\r\n\t\t\t\thandler(element);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Helper function to get the items that intersect the event position\r\n * @param {ChartElement[]} items - elements to filter\r\n * @param {object} position - the point to be nearest to\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getIntersectItems(chart, position) {\r\n\tvar elements = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * Helper function to get the items nearest to the event position considering all visible items in teh chart\r\n * @param {Chart} chart - the chart to look at elements from\r\n * @param {object} position - the point to be nearest to\r\n * @param {boolean} intersect - if true, only consider items that intersect the position\r\n * @param {function} distanceMetric - function to provide the distance between points\r\n * @return {ChartElement[]} the nearest items\r\n */\r\nfunction getNearestItems(chart, position, intersect, distanceMetric) {\r\n\tvar minDistance = Number.POSITIVE_INFINITY;\r\n\tvar nearestItems = [];\r\n\r\n\tparseVisibleItems(chart, function(element) {\r\n\t\tif (intersect && !element.inRange(position.x, position.y)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar center = element.getCenterPoint();\r\n\t\tvar distance = distanceMetric(position, center);\r\n\t\tif (distance < minDistance) {\r\n\t\t\tnearestItems = [element];\r\n\t\t\tminDistance = distance;\r\n\t\t} else if (distance === minDistance) {\r\n\t\t\t// Can have multiple items at the same distance in which case we sort by size\r\n\t\t\tnearestItems.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn nearestItems;\r\n}\r\n\r\n/**\r\n * Get a distance metric function for two points based on the\r\n * axis mode setting\r\n * @param {string} axis - the axis mode. x|y|xy\r\n */\r\nfunction getDistanceMetricForAxis(axis) {\r\n\tvar useX = axis.indexOf('x') !== -1;\r\n\tvar useY = axis.indexOf('y') !== -1;\r\n\r\n\treturn function(pt1, pt2) {\r\n\t\tvar deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\r\n\t\tvar deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\r\n\t\treturn Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\r\n\t};\r\n}\r\n\r\nfunction indexMode(chart, e, options) {\r\n\tvar position = getRelativePosition(e, chart);\r\n\t// Default axis for index mode is 'x' to match old behaviour\r\n\toptions.axis = options.axis || 'x';\r\n\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\tvar elements = [];\r\n\r\n\tif (!items.length) {\r\n\t\treturn [];\r\n\t}\r\n\r\n\tchart._getSortedVisibleDatasetMetas().forEach(function(meta) {\r\n\t\tvar element = meta.data[items[0]._index];\r\n\r\n\t\t// don't count items that are skipped (null data)\r\n\t\tif (element && !element._view.skip) {\r\n\t\t\telements.push(element);\r\n\t\t}\r\n\t});\r\n\r\n\treturn elements;\r\n}\r\n\r\n/**\r\n * @interface IInteractionOptions\r\n */\r\n/**\r\n * If true, only consider items that intersect the point\r\n * @name IInterfaceOptions#boolean\r\n * @type Boolean\r\n */\r\n\r\n/**\r\n * Contains interaction related functions\r\n * @namespace Chart.Interaction\r\n */\r\nvar core_interaction = {\r\n\t// Helper function for different modes\r\n\tmodes: {\r\n\t\tsingle: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar elements = [];\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\telements.push(element);\r\n\t\t\t\t\treturn elements;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn elements.slice(0, 1);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.label\r\n\t\t * @deprecated since version 2.4.0\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\tlabel: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items at the same index. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect mode is false, we find the nearest item and return the items at the same index as that item\r\n\t\t * @function Chart.Interaction.modes.index\r\n\t\t * @since v2.4.0\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tindex: indexMode,\r\n\r\n\t\t/**\r\n\t\t * Returns items in the same dataset. If the options.intersect parameter is true, we only return items if we intersect something\r\n\t\t * If the options.intersect is false, we find the nearest item and return the items in that dataset\r\n\t\t * @function Chart.Interaction.modes.dataset\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use during interaction\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tdataset: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\tvar items = options.intersect ? getIntersectItems(chart, position) : getNearestItems(chart, position, false, distanceMetric);\r\n\r\n\t\t\tif (items.length > 0) {\r\n\t\t\t\titems = chart.getDatasetMeta(items[0]._datasetIndex).data;\r\n\t\t\t}\r\n\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * @function Chart.Interaction.modes.x-axis\r\n\t\t * @deprecated since version 2.4.0. Use index mode and intersect == true\r\n\t\t * @todo remove at version 3\r\n\t\t * @private\r\n\t\t */\r\n\t\t'x-axis': function(chart, e) {\r\n\t\t\treturn indexMode(chart, e, {intersect: false});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Point mode returns all elements that hit test based on the event position\r\n\t\t * of the event\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tpoint: function(chart, e) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\treturn getIntersectItems(chart, position);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * nearest mode returns the element closest to the point\r\n\t\t * @function Chart.Interaction.modes.intersect\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tnearest: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\toptions.axis = options.axis || 'xy';\r\n\t\t\tvar distanceMetric = getDistanceMetricForAxis(options.axis);\r\n\t\t\treturn getNearestItems(chart, position, options.intersect, distanceMetric);\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * x mode returns the elements that hit-test at the current x coordinate\r\n\t\t * @function Chart.Interaction.modes.x\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\tx: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inXRange(position.x)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * y mode returns the elements that hit-test at the current y coordinate\r\n\t\t * @function Chart.Interaction.modes.y\r\n\t\t * @param {Chart} chart - the chart we are returning items from\r\n\t\t * @param {Event} e - the event we are find things at\r\n\t\t * @param {IInteractionOptions} options - options to use\r\n\t\t * @return {Chart.Element[]} Array of elements that are under the point. If none are found, an empty array is returned\r\n\t\t */\r\n\t\ty: function(chart, e, options) {\r\n\t\t\tvar position = getRelativePosition(e, chart);\r\n\t\t\tvar items = [];\r\n\t\t\tvar intersectsItem = false;\r\n\r\n\t\t\tparseVisibleItems(chart, function(element) {\r\n\t\t\t\tif (element.inYRange(position.y)) {\r\n\t\t\t\t\titems.push(element);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (element.inRange(position.x, position.y)) {\r\n\t\t\t\t\tintersectsItem = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// If we want to trigger on an intersect and we don't have any items\r\n\t\t\t// that intersect the position, return nothing\r\n\t\t\tif (options.intersect && !intersectsItem) {\r\n\t\t\t\titems = [];\r\n\t\t\t}\r\n\t\t\treturn items;\r\n\t\t}\r\n\t}\r\n};\n\nvar extend = helpers$1.extend;\r\n\r\nfunction filterByPosition(array, position) {\r\n\treturn helpers$1.where(array, function(v) {\r\n\t\treturn v.pos === position;\r\n\t});\r\n}\r\n\r\nfunction sortByWeight(array, reverse) {\r\n\treturn array.sort(function(a, b) {\r\n\t\tvar v0 = reverse ? b : a;\r\n\t\tvar v1 = reverse ? a : b;\r\n\t\treturn v0.weight === v1.weight ?\r\n\t\t\tv0.index - v1.index :\r\n\t\t\tv0.weight - v1.weight;\r\n\t});\r\n}\r\n\r\nfunction wrapBoxes(boxes) {\r\n\tvar layoutBoxes = [];\r\n\tvar i, ilen, box;\r\n\r\n\tfor (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\r\n\t\tbox = boxes[i];\r\n\t\tlayoutBoxes.push({\r\n\t\t\tindex: i,\r\n\t\t\tbox: box,\r\n\t\t\tpos: box.position,\r\n\t\t\thorizontal: box.isHorizontal(),\r\n\t\t\tweight: box.weight\r\n\t\t});\r\n\t}\r\n\treturn layoutBoxes;\r\n}\r\n\r\nfunction setLayoutDims(layouts, params) {\r\n\tvar i, ilen, layout;\r\n\tfor (i = 0, ilen = layouts.length; i < ilen; ++i) {\r\n\t\tlayout = layouts[i];\r\n\t\t// store width used instead of chartArea.w in fitBoxes\r\n\t\tlayout.width = layout.horizontal\r\n\t\t\t? layout.box.fullWidth && params.availableWidth\r\n\t\t\t: params.vBoxMaxWidth;\r\n\t\t// store height used instead of chartArea.h in fitBoxes\r\n\t\tlayout.height = layout.horizontal && params.hBoxMaxHeight;\r\n\t}\r\n}\r\n\r\nfunction buildLayoutBoxes(boxes) {\r\n\tvar layoutBoxes = wrapBoxes(boxes);\r\n\tvar left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\r\n\tvar right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\r\n\tvar top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\r\n\tvar bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\r\n\r\n\treturn {\r\n\t\tleftAndTop: left.concat(top),\r\n\t\trightAndBottom: right.concat(bottom),\r\n\t\tchartArea: filterByPosition(layoutBoxes, 'chartArea'),\r\n\t\tvertical: left.concat(right),\r\n\t\thorizontal: top.concat(bottom)\r\n\t};\r\n}\r\n\r\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\r\n\treturn Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\r\n}\r\n\r\nfunction updateDims(chartArea, params, layout) {\r\n\tvar box = layout.box;\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\tvar newWidth, newHeight;\r\n\r\n\tif (layout.size) {\r\n\t\t// this layout was already counted for, lets first reduce old size\r\n\t\tchartArea[layout.pos] -= layout.size;\r\n\t}\r\n\tlayout.size = layout.horizontal ? box.height : box.width;\r\n\tchartArea[layout.pos] += layout.size;\r\n\r\n\tif (box.getPadding) {\r\n\t\tvar boxPadding = box.getPadding();\r\n\t\tmaxPadding.top = Math.max(maxPadding.top, boxPadding.top);\r\n\t\tmaxPadding.left = Math.max(maxPadding.left, boxPadding.left);\r\n\t\tmaxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\r\n\t\tmaxPadding.right = Math.max(maxPadding.right, boxPadding.right);\r\n\t}\r\n\r\n\tnewWidth = params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right');\r\n\tnewHeight = params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom');\r\n\r\n\tif (newWidth !== chartArea.w || newHeight !== chartArea.h) {\r\n\t\tchartArea.w = newWidth;\r\n\t\tchartArea.h = newHeight;\r\n\r\n\t\t// return true if chart area changed in layout's direction\r\n\t\tvar sizes = layout.horizontal ? [newWidth, chartArea.w] : [newHeight, chartArea.h];\r\n\t\treturn sizes[0] !== sizes[1] && (!isNaN(sizes[0]) || !isNaN(sizes[1]));\r\n\t}\r\n}\r\n\r\nfunction handleMaxPadding(chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction updatePos(pos) {\r\n\t\tvar change = Math.max(maxPadding[pos] - chartArea[pos], 0);\r\n\t\tchartArea[pos] += change;\r\n\t\treturn change;\r\n\t}\r\n\tchartArea.y += updatePos('top');\r\n\tchartArea.x += updatePos('left');\r\n\tupdatePos('right');\r\n\tupdatePos('bottom');\r\n}\r\n\r\nfunction getMargins(horizontal, chartArea) {\r\n\tvar maxPadding = chartArea.maxPadding;\r\n\r\n\tfunction marginForPositions(positions) {\r\n\t\tvar margin = {left: 0, top: 0, right: 0, bottom: 0};\r\n\t\tpositions.forEach(function(pos) {\r\n\t\t\tmargin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\r\n\t\t});\r\n\t\treturn margin;\r\n\t}\r\n\r\n\treturn horizontal\r\n\t\t? marginForPositions(['left', 'right'])\r\n\t\t: marginForPositions(['top', 'bottom']);\r\n}\r\n\r\nfunction fitBoxes(boxes, chartArea, params) {\r\n\tvar refitBoxes = [];\r\n\tvar i, ilen, layout, box, refit, changed;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\r\n\t\tbox.update(\r\n\t\t\tlayout.width || chartArea.w,\r\n\t\t\tlayout.height || chartArea.h,\r\n\t\t\tgetMargins(layout.horizontal, chartArea)\r\n\t\t);\r\n\t\tif (updateDims(chartArea, params, layout)) {\r\n\t\t\tchanged = true;\r\n\t\t\tif (refitBoxes.length) {\r\n\t\t\t\t// Dimensions changed and there were non full width boxes before this\r\n\t\t\t\t// -> we have to refit those\r\n\t\t\t\trefit = true;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (!box.fullWidth) { // fullWidth boxes don't need to be re-fitted in any case\r\n\t\t\trefitBoxes.push(layout);\r\n\t\t}\r\n\t}\r\n\r\n\treturn refit ? fitBoxes(refitBoxes, chartArea, params) || changed : changed;\r\n}\r\n\r\nfunction placeBoxes(boxes, chartArea, params) {\r\n\tvar userPadding = params.padding;\r\n\tvar x = chartArea.x;\r\n\tvar y = chartArea.y;\r\n\tvar i, ilen, layout, box;\r\n\r\n\tfor (i = 0, ilen = boxes.length; i < ilen; ++i) {\r\n\t\tlayout = boxes[i];\r\n\t\tbox = layout.box;\r\n\t\tif (layout.horizontal) {\r\n\t\t\tbox.left = box.fullWidth ? userPadding.left : chartArea.left;\r\n\t\t\tbox.right = box.fullWidth ? params.outerWidth - userPadding.right : chartArea.left + chartArea.w;\r\n\t\t\tbox.top = y;\r\n\t\t\tbox.bottom = y + box.height;\r\n\t\t\tbox.width = box.right - box.left;\r\n\t\t\ty = box.bottom;\r\n\t\t} else {\r\n\t\t\tbox.left = x;\r\n\t\t\tbox.right = x + box.width;\r\n\t\t\tbox.top = chartArea.top;\r\n\t\t\tbox.bottom = chartArea.top + chartArea.h;\r\n\t\t\tbox.height = box.bottom - box.top;\r\n\t\t\tx = box.right;\r\n\t\t}\r\n\t}\r\n\r\n\tchartArea.x = x;\r\n\tchartArea.y = y;\r\n}\r\n\r\ncore_defaults._set('global', {\r\n\tlayout: {\r\n\t\tpadding: {\r\n\t\t\ttop: 0,\r\n\t\t\tright: 0,\r\n\t\t\tbottom: 0,\r\n\t\t\tleft: 0\r\n\t\t}\r\n\t}\r\n});\r\n\r\n/**\r\n * @interface ILayoutItem\r\n * @prop {string} position - The position of the item in the chart layout. Possible values are\r\n * 'left', 'top', 'right', 'bottom', and 'chartArea'\r\n * @prop {number} weight - The weight used to sort the item. Higher weights are further away from the chart area\r\n * @prop {boolean} fullWidth - if true, and the item is horizontal, then push vertical boxes down\r\n * @prop {function} isHorizontal - returns true if the layout item is horizontal (ie. top or bottom)\r\n * @prop {function} update - Takes two parameters: width and height. Returns size of item\r\n * @prop {function} getPadding - Returns an object with padding on the edges\r\n * @prop {number} width - Width of item. Must be valid after update()\r\n * @prop {number} height - Height of item. Must be valid after update()\r\n * @prop {number} left - Left edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} top - Top edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} right - Right edge of the item. Set by layout system and cannot be used in update\r\n * @prop {number} bottom - Bottom edge of the item. Set by layout system and cannot be used in update\r\n */\r\n\r\n// The layout service is very self explanatory. It's responsible for the layout within a chart.\r\n// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need\r\n// It is this service's responsibility of carrying out that layout.\r\nvar core_layouts = {\r\n\tdefaults: {},\r\n\r\n\t/**\r\n\t * Register a box to a chart.\r\n\t * A box is simply a reference to an object that requires layout. eg. Scales, Legend, Title.\r\n\t * @param {Chart} chart - the chart to use\r\n\t * @param {ILayoutItem} item - the item to add to be layed out\r\n\t */\r\n\taddBox: function(chart, item) {\r\n\t\tif (!chart.boxes) {\r\n\t\t\tchart.boxes = [];\r\n\t\t}\r\n\r\n\t\t// initialize item with default values\r\n\t\titem.fullWidth = item.fullWidth || false;\r\n\t\titem.position = item.position || 'top';\r\n\t\titem.weight = item.weight || 0;\r\n\t\titem._layers = item._layers || function() {\r\n\t\t\treturn [{\r\n\t\t\t\tz: 0,\r\n\t\t\t\tdraw: function() {\r\n\t\t\t\t\titem.draw.apply(item, arguments);\r\n\t\t\t\t}\r\n\t\t\t}];\r\n\t\t};\r\n\r\n\t\tchart.boxes.push(item);\r\n\t},\r\n\r\n\t/**\r\n\t * Remove a layoutItem from a chart\r\n\t * @param {Chart} chart - the chart to remove the box from\r\n\t * @param {ILayoutItem} layoutItem - the item to remove from the layout\r\n\t */\r\n\tremoveBox: function(chart, layoutItem) {\r\n\t\tvar index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\r\n\t\tif (index !== -1) {\r\n\t\t\tchart.boxes.splice(index, 1);\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Sets (or updates) options on the given `item`.\r\n\t * @param {Chart} chart - the chart in which the item lives (or will be added to)\r\n\t * @param {ILayoutItem} item - the item to configure with the given options\r\n\t * @param {object} options - the new item options.\r\n\t */\r\n\tconfigure: function(chart, item, options) {\r\n\t\tvar props = ['fullWidth', 'position', 'weight'];\r\n\t\tvar ilen = props.length;\r\n\t\tvar i = 0;\r\n\t\tvar prop;\r\n\r\n\t\tfor (; i < ilen; ++i) {\r\n\t\t\tprop = props[i];\r\n\t\t\tif (options.hasOwnProperty(prop)) {\r\n\t\t\t\titem[prop] = options[prop];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t/**\r\n\t * Fits boxes of the given chart into the given size by having each box measure itself\r\n\t * then running a fitting algorithm\r\n\t * @param {Chart} chart - the chart\r\n\t * @param {number} width - the width to fit into\r\n\t * @param {number} height - the height to fit into\r\n\t */\r\n\tupdate: function(chart, width, height) {\r\n\t\tif (!chart) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar layoutOptions = chart.options.layout || {};\r\n\t\tvar padding = helpers$1.options.toPadding(layoutOptions.padding);\r\n\r\n\t\tvar availableWidth = width - padding.width;\r\n\t\tvar availableHeight = height - padding.height;\r\n\t\tvar boxes = buildLayoutBoxes(chart.boxes);\r\n\t\tvar verticalBoxes = boxes.vertical;\r\n\t\tvar horizontalBoxes = boxes.horizontal;\r\n\r\n\t\t// Essentially we now have any number of boxes on each of the 4 sides.\r\n\t\t// Our canvas looks like the following.\r\n\t\t// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and\r\n\t\t// B1 is the bottom axis\r\n\t\t// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays\r\n\t\t// These locations are single-box locations only, when trying to register a chartArea location that is already taken,\r\n\t\t// an error will be thrown.\r\n\t\t//\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | T1 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | | | T2 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | C1 | | C2 | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | | |\r\n\t\t// | L1 | L2 | ChartArea (C0) | R1 |\r\n\t\t// | | | | |\r\n\t\t// | | |----| |----| |\r\n\t\t// | | | C3 | | C4 | |\r\n\t\t// | |----|-------------------------------------|----|\r\n\t\t// | | | B1 | |\r\n\t\t// |----------------------------------------------------|\r\n\t\t// | B2 (Full Width) |\r\n\t\t// |----------------------------------------------------|\r\n\t\t//\r\n\r\n\t\tvar params = Object.freeze({\r\n\t\t\touterWidth: width,\r\n\t\t\touterHeight: height,\r\n\t\t\tpadding: padding,\r\n\t\t\tavailableWidth: availableWidth,\r\n\t\t\tvBoxMaxWidth: availableWidth / 2 / verticalBoxes.length,\r\n\t\t\thBoxMaxHeight: availableHeight / 2\r\n\t\t});\r\n\t\tvar chartArea = extend({\r\n\t\t\tmaxPadding: extend({}, padding),\r\n\t\t\tw: availableWidth,\r\n\t\t\th: availableHeight,\r\n\t\t\tx: padding.left,\r\n\t\t\ty: padding.top\r\n\t\t}, padding);\r\n\r\n\t\tsetLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\r\n\r\n\t\t// First fit vertical boxes\r\n\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\r\n\t\t// Then fit horizontal boxes\r\n\t\tif (fitBoxes(horizontalBoxes, chartArea, params)) {\r\n\t\t\t// if the area changed, re-fit vertical boxes\r\n\t\t\tfitBoxes(verticalBoxes, chartArea, params);\r\n\t\t}\r\n\r\n\t\thandleMaxPadding(chartArea);\r\n\r\n\t\t// Finally place the boxes to correct coordinates\r\n\t\tplaceBoxes(boxes.leftAndTop, chartArea, params);\r\n\r\n\t\t// Move to opposite side of chart\r\n\t\tchartArea.x += chartArea.w;\r\n\t\tchartArea.y += chartArea.h;\r\n\r\n\t\tplaceBoxes(boxes.rightAndBottom, chartArea, params);\r\n\r\n\t\tchart.chartArea = {\r\n\t\t\tleft: chartArea.left,\r\n\t\t\ttop: chartArea.top,\r\n\t\t\tright: chartArea.left + chartArea.w,\r\n\t\t\tbottom: chartArea.top + chartArea.h\r\n\t\t};\r\n\r\n\t\t// Finally update boxes in chartArea (radial scale for example)\r\n\t\thelpers$1.each(boxes.chartArea, function(layout) {\r\n\t\t\tvar box = layout.box;\r\n\t\t\textend(box, chart.chartArea);\r\n\t\t\tbox.update(chartArea.w, chartArea.h);\r\n\t\t});\r\n\t}\r\n};\n\n/**\r\n * Platform fallback implementation (minimal).\r\n * @see https://github.com/chartjs/Chart.js/pull/4591#issuecomment-319575939\r\n */\r\n\r\nvar platform_basic = {\r\n\tacquireContext: function(item) {\r\n\t\tif (item && item.canvas) {\r\n\t\t\t// Support for any object associated to a canvas (including a context2d)\r\n\t\t\titem = item.canvas;\r\n\t\t}\r\n\r\n\t\treturn item && item.getContext('2d') || null;\r\n\t}\r\n};\n\nvar platform_dom = \"/*\\r\\n * DOM element rendering detection\\r\\n * https://davidwalsh.name/detect-node-insertion\\r\\n */\\r\\n@keyframes chartjs-render-animation {\\r\\n\\tfrom { opacity: 0.99; }\\r\\n\\tto { opacity: 1; }\\r\\n}\\r\\n\\r\\n.chartjs-render-monitor {\\r\\n\\tanimation: chartjs-render-animation 0.001s;\\r\\n}\\r\\n\\r\\n/*\\r\\n * DOM element resizing detection\\r\\n * https://github.com/marcj/css-element-queries\\r\\n */\\r\\n.chartjs-size-monitor,\\r\\n.chartjs-size-monitor-expand,\\r\\n.chartjs-size-monitor-shrink {\\r\\n\\tposition: absolute;\\r\\n\\tdirection: ltr;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n\\tright: 0;\\r\\n\\tbottom: 0;\\r\\n\\toverflow: hidden;\\r\\n\\tpointer-events: none;\\r\\n\\tvisibility: hidden;\\r\\n\\tz-index: -1;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-expand > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 1000000px;\\r\\n\\theight: 1000000px;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\\r\\n.chartjs-size-monitor-shrink > div {\\r\\n\\tposition: absolute;\\r\\n\\twidth: 200%;\\r\\n\\theight: 200%;\\r\\n\\tleft: 0;\\r\\n\\ttop: 0;\\r\\n}\\r\\n\";\n\nvar platform_dom$1 = /*#__PURE__*/Object.freeze({\n__proto__: null,\n'default': platform_dom\n});\n\nvar stylesheet = getCjsExportFromNamespace(platform_dom$1);\n\nvar EXPANDO_KEY = '$chartjs';\r\nvar CSS_PREFIX = 'chartjs-';\r\nvar CSS_SIZE_MONITOR = CSS_PREFIX + 'size-monitor';\r\nvar CSS_RENDER_MONITOR = CSS_PREFIX + 'render-monitor';\r\nvar CSS_RENDER_ANIMATION = CSS_PREFIX + 'render-animation';\r\nvar ANIMATION_START_EVENTS = ['animationstart', 'webkitAnimationStart'];\r\n\r\n/**\r\n * DOM event types -> Chart.js event types.\r\n * Note: only events with different types are mapped.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/Events\r\n */\r\nvar EVENT_TYPES = {\r\n\ttouchstart: 'mousedown',\r\n\ttouchmove: 'mousemove',\r\n\ttouchend: 'mouseup',\r\n\tpointerenter: 'mouseenter',\r\n\tpointerdown: 'mousedown',\r\n\tpointermove: 'mousemove',\r\n\tpointerup: 'mouseup',\r\n\tpointerleave: 'mouseout',\r\n\tpointerout: 'mouseout'\r\n};\r\n\r\n/**\r\n * The \"used\" size is the final value of a dimension property after all calculations have\r\n * been performed. This method uses the computed style of `element` but returns undefined\r\n * if the computed style is not expressed in pixels. That can happen in some cases where\r\n * `element` has a size relative to its parent and this last one is not yet displayed,\r\n * for example because of `display: none` on a parent node.\r\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\r\n * @returns {number} Size in pixels or undefined if unknown.\r\n */\r\nfunction readUsedSize(element, property) {\r\n\tvar value = helpers$1.getStyle(element, property);\r\n\tvar matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\r\n\treturn matches ? Number(matches[1]) : undefined;\r\n}\r\n\r\n/**\r\n * Initializes the canvas style and render size without modifying the canvas display size,\r\n * since responsiveness is handled by the controller.resize() method. The config is used\r\n * to determine the aspect ratio to apply in case no explicit height has been specified.\r\n */\r\nfunction initCanvas(canvas, config) {\r\n\tvar style = canvas.style;\r\n\r\n\t// NOTE(SB) canvas.getAttribute('width') !== canvas.width: in the first case it\r\n\t// returns null or '' if no explicit value has been set to the canvas attribute.\r\n\tvar renderHeight = canvas.getAttribute('height');\r\n\tvar renderWidth = canvas.getAttribute('width');\r\n\r\n\t// Chart.js modifies some canvas values that we want to restore on destroy\r\n\tcanvas[EXPANDO_KEY] = {\r\n\t\tinitial: {\r\n\t\t\theight: renderHeight,\r\n\t\t\twidth: renderWidth,\r\n\t\t\tstyle: {\r\n\t\t\t\tdisplay: style.display,\r\n\t\t\t\theight: style.height,\r\n\t\t\t\twidth: style.width\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t// Force canvas to display as block to avoid extra space caused by inline\r\n\t// elements, which would interfere with the responsive resize process.\r\n\t// https://github.com/chartjs/Chart.js/issues/2538\r\n\tstyle.display = style.display || 'block';\r\n\r\n\tif (renderWidth === null || renderWidth === '') {\r\n\t\tvar displayWidth = readUsedSize(canvas, 'width');\r\n\t\tif (displayWidth !== undefined) {\r\n\t\t\tcanvas.width = displayWidth;\r\n\t\t}\r\n\t}\r\n\r\n\tif (renderHeight === null || renderHeight === '') {\r\n\t\tif (canvas.style.height === '') {\r\n\t\t\t// If no explicit render height and style height, let's apply the aspect ratio,\r\n\t\t\t// which one can be specified by the user but also by charts as default option\r\n\t\t\t// (i.e. options.aspectRatio). If not specified, use canvas aspect ratio of 2.\r\n\t\t\tcanvas.height = canvas.width / (config.options.aspectRatio || 2);\r\n\t\t} else {\r\n\t\t\tvar displayHeight = readUsedSize(canvas, 'height');\r\n\t\t\tif (displayWidth !== undefined) {\r\n\t\t\t\tcanvas.height = displayHeight;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn canvas;\r\n}\r\n\r\n/**\r\n * Detects support for options object argument in addEventListener.\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\r\n * @private\r\n */\r\nvar supportsEventListenerOptions = (function() {\r\n\tvar supports = false;\r\n\ttry {\r\n\t\tvar options = Object.defineProperty({}, 'passive', {\r\n\t\t\t// eslint-disable-next-line getter-return\r\n\t\t\tget: function() {\r\n\t\t\t\tsupports = true;\r\n\t\t\t}\r\n\t\t});\r\n\t\twindow.addEventListener('e', null, options);\r\n\t} catch (e) {\r\n\t\t// continue regardless of error\r\n\t}\r\n\treturn supports;\r\n}());\r\n\r\n// Default passive to true as expected by Chrome for 'touchstart' and 'touchend' events.\r\n// https://github.com/chartjs/Chart.js/issues/4287\r\nvar eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\r\n\r\nfunction addListener(node, type, listener) {\r\n\tnode.addEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction removeListener(node, type, listener) {\r\n\tnode.removeEventListener(type, listener, eventListenerOptions);\r\n}\r\n\r\nfunction createEvent(type, chart, x, y, nativeEvent) {\r\n\treturn {\r\n\t\ttype: type,\r\n\t\tchart: chart,\r\n\t\tnative: nativeEvent || null,\r\n\t\tx: x !== undefined ? x : null,\r\n\t\ty: y !== undefined ? y : null,\r\n\t};\r\n}\r\n\r\nfunction fromNativeEvent(event, chart) {\r\n\tvar type = EVENT_TYPES[event.type] || event.type;\r\n\tvar pos = helpers$1.getRelativePosition(event, chart);\r\n\treturn createEvent(type, chart, pos.x, pos.y, event);\r\n}\r\n\r\nfunction throttled(fn, thisArg) {\r\n\tvar ticking = false;\r\n\tvar args = [];\r\n\r\n\treturn function() {\r\n\t\targs = Array.prototype.slice.call(arguments);\r\n\t\tthisArg = thisArg || this;\r\n\r\n\t\tif (!ticking) {\r\n\t\t\tticking = true;\r\n\t\t\thelpers$1.requestAnimFrame.call(window, function() {\r\n\t\t\t\tticking = false;\r\n\t\t\t\tfn.apply(thisArg, args);\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction createDiv(cls) {\r\n\tvar el = document.createElement('div');\r\n\tel.className = cls || '';\r\n\treturn el;\r\n}\r\n\r\n// Implementation based on https://github.com/marcj/css-element-queries\r\nfunction createResizer(handler) {\r\n\tvar maxSize = 1000000;\r\n\r\n\t// NOTE(SB) Don't use innerHTML because it could be considered unsafe.\r\n\t// https://github.com/chartjs/Chart.js/issues/5902\r\n\tvar resizer = createDiv(CSS_SIZE_MONITOR);\r\n\tvar expand = createDiv(CSS_SIZE_MONITOR + '-expand');\r\n\tvar shrink = createDiv(CSS_SIZE_MONITOR + '-shrink');\r\n\r\n\texpand.appendChild(createDiv());\r\n\tshrink.appendChild(createDiv());\r\n\r\n\tresizer.appendChild(expand);\r\n\tresizer.appendChild(shrink);\r\n\tresizer._reset = function() {\r\n\t\texpand.scrollLeft = maxSize;\r\n\t\texpand.scrollTop = maxSize;\r\n\t\tshrink.scrollLeft = maxSize;\r\n\t\tshrink.scrollTop = maxSize;\r\n\t};\r\n\r\n\tvar onScroll = function() {\r\n\t\tresizer._reset();\r\n\t\thandler();\r\n\t};\r\n\r\n\taddListener(expand, 'scroll', onScroll.bind(expand, 'expand'));\r\n\taddListener(shrink, 'scroll', onScroll.bind(shrink, 'shrink'));\r\n\r\n\treturn resizer;\r\n}\r\n\r\n// https://davidwalsh.name/detect-node-insertion\r\nfunction watchForRender(node, handler) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\tvar proxy = expando.renderProxy = function(e) {\r\n\t\tif (e.animationName === CSS_RENDER_ANIMATION) {\r\n\t\t\thandler();\r\n\t\t}\r\n\t};\r\n\r\n\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\taddListener(node, type, proxy);\r\n\t});\r\n\r\n\t// #4737: Chrome might skip the CSS animation when the CSS_RENDER_MONITOR class\r\n\t// is removed then added back immediately (same animation frame?). Accessing the\r\n\t// `offsetParent` property will force a reflow and re-evaluate the CSS animation.\r\n\t// https://gist.github.com/paulirish/5d52fb081b3570c81e3a#box-metrics\r\n\t// https://github.com/chartjs/Chart.js/issues/4737\r\n\texpando.reflow = !!node.offsetParent;\r\n\r\n\tnode.classList.add(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction unwatchForRender(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar proxy = expando.renderProxy;\r\n\r\n\tif (proxy) {\r\n\t\thelpers$1.each(ANIMATION_START_EVENTS, function(type) {\r\n\t\t\tremoveListener(node, type, proxy);\r\n\t\t});\r\n\r\n\t\tdelete expando.renderProxy;\r\n\t}\r\n\r\n\tnode.classList.remove(CSS_RENDER_MONITOR);\r\n}\r\n\r\nfunction addResizeListener(node, listener, chart) {\r\n\tvar expando = node[EXPANDO_KEY] || (node[EXPANDO_KEY] = {});\r\n\r\n\t// Let's keep track of this added resizer and thus avoid DOM query when removing it.\r\n\tvar resizer = expando.resizer = createResizer(throttled(function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = chart.options.maintainAspectRatio && node.parentNode;\r\n\t\t\tvar w = container ? container.clientWidth : 0;\r\n\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\tif (container && container.clientWidth < w && chart.canvas) {\r\n\t\t\t\t// If the container size shrank during chart resize, let's assume\r\n\t\t\t\t// scrollbar appeared. So we resize again with the scrollbar visible -\r\n\t\t\t\t// effectively making chart smaller and the scrollbar hidden again.\r\n\t\t\t\t// Because we are inside `throttled`, and currently `ticking`, scroll\r\n\t\t\t\t// events are ignored during this whole 2 resize process.\r\n\t\t\t\t// If we assumed wrong and something else happened, we are resizing\r\n\t\t\t\t// twice in a frame (potential performance issue)\r\n\t\t\t\tlistener(createEvent('resize', chart));\r\n\t\t\t}\r\n\t\t}\r\n\t}));\r\n\r\n\t// The resizer needs to be attached to the node parent, so we first need to be\r\n\t// sure that `node` is attached to the DOM before injecting the resizer element.\r\n\twatchForRender(node, function() {\r\n\t\tif (expando.resizer) {\r\n\t\t\tvar container = node.parentNode;\r\n\t\t\tif (container && container !== resizer.parentNode) {\r\n\t\t\t\tcontainer.insertBefore(resizer, container.firstChild);\r\n\t\t\t}\r\n\r\n\t\t\t// The container size might have changed, let's reset the resizer state.\r\n\t\t\tresizer._reset();\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction removeResizeListener(node) {\r\n\tvar expando = node[EXPANDO_KEY] || {};\r\n\tvar resizer = expando.resizer;\r\n\r\n\tdelete expando.resizer;\r\n\tunwatchForRender(node);\r\n\r\n\tif (resizer && resizer.parentNode) {\r\n\t\tresizer.parentNode.removeChild(resizer);\r\n\t}\r\n}\r\n\r\n/**\r\n * Injects CSS styles inline if the styles are not already present.\r\n * @param {HTMLDocument|ShadowRoot} rootNode - the node to contain the \" ).appendTo( body );\n\t\t}\n\n\t\t// We need to make sure to grab the zIndex before setting the\n\t\t// opacity, because setting the opacity to anything lower than 1\n\t\t// causes the zIndex to change from \"auto\" to 0.\n\t\tif ( o.zIndex ) { // zIndex option\n\t\t\tif ( this.helper.css( \"zIndex\" ) ) {\n\t\t\t\tthis._storedZIndex = this.helper.css( \"zIndex\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"zIndex\", o.zIndex );\n\t\t}\n\n\t\tif ( o.opacity ) { // opacity option\n\t\t\tif ( this.helper.css( \"opacity\" ) ) {\n\t\t\t\tthis._storedOpacity = this.helper.css( \"opacity\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"opacity\", o.opacity );\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"start\", event, this._uiHash() );\n\n\t\t//Recache the helper size\n\t\tif ( !this._preserveHelperProportions ) {\n\t\t\tthis._cacheHelperProportions();\n\t\t}\n\n\t\t//Post \"activate\" events to possible containers\n\t\tif ( !noActivation ) {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"activate\", event, this._uiHash( this ) );\n\t\t\t}\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tthis._addClass( this.helper, \"ui-sortable-helper\" );\n\n\t\t//Move the helper, if needed\n\t\tif ( !this.helper.parent().is( this.appendTo ) ) {\n\t\t\tthis.helper.detach().appendTo( this.appendTo );\n\n\t\t\t//Update position\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Generate the original position\n\t\tthis.position = this.originalPosition = this._generatePosition( event );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\t\tthis.lastPositionAbs = this.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\tthis._mouseDrag( event );\n\n\t\treturn true;\n\n\t},\n\n\t_scroll: function( event ) {\n\t\tvar o = this.options,\n\t\t\tscrolled = false;\n\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\n\t\t\tif ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -\n\t\t\t\t\tevent.pageY < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;\n\t\t\t} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;\n\t\t\t}\n\n\t\t\tif ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -\n\t\t\t\t\tevent.pageX < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;\n\t\t\t} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );\n\t\t\t} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <\n\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );\n\t\t\t}\n\n\t\t\tif ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\tthis.document.scrollLeft() - o.scrollSpeed\n\t\t\t\t);\n\t\t\t} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <\n\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\tthis.document.scrollLeft() + o.scrollSpeed\n\t\t\t\t);\n\t\t\t}\n\n\t\t}\n\n\t\treturn scrolled;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar i, item, itemElement, intersection,\n\t\t\to = this.options;\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Set the helper position\n\t\tif ( !this.options.axis || this.options.axis !== \"y\" ) {\n\t\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( !this.options.axis || this.options.axis !== \"x\" ) {\n\t\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\t\t}\n\n\t\t//Do scrolling\n\t\tif ( o.scroll ) {\n\t\t\tif ( this._scroll( event ) !== false ) {\n\n\t\t\t\t//Update item positions used in position checks\n\t\t\t\tthis._refreshItemPositions( true );\n\n\t\t\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.dragDirection = {\n\t\t\tvertical: this._getDragVerticalDirection(),\n\t\t\thorizontal: this._getDragHorizontalDirection()\n\t\t};\n\n\t\t//Rearrange\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\titem = this.items[ i ];\n\t\t\titemElement = item.item[ 0 ];\n\t\t\tintersection = this._intersectsWithPointer( item );\n\t\t\tif ( !intersection ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items from other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this, moving items in \"sub-sortables\" can cause\n\t\t\t// the placeholder to jitter between the outer and inner container.\n\t\t\tif ( item.instance !== this.currentContainer ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Cannot intersect with itself\n\t\t\t// no useless actions that have been done before\n\t\t\t// no action if the item moved is the parent of the item checked\n\t\t\tif ( itemElement !== this.currentItem[ 0 ] &&\n\t\t\t\tthis.placeholder[ intersection === 1 ?\n\t\t\t\t\"next\" : \"prev\" ]()[ 0 ] !== itemElement &&\n\t\t\t\t!$.contains( this.placeholder[ 0 ], itemElement ) &&\n\t\t\t\t( this.options.type === \"semi-dynamic\" ?\n\t\t\t\t\t!$.contains( this.element[ 0 ], itemElement ) :\n\t\t\t\t\ttrue\n\t\t\t\t)\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\n\n\t\t\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\t\t\t\tthis._intersectsWithSides( item ) ) {\n\t\t\t\t\tthis._rearrange( event, item );\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers( event );\n\n\t\t//Interconnect with droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"sort\", event, this._uiHash() );\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function( event, noPropagation ) {\n\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\tif ( this.options.revert ) {\n\t\t\tvar that = this,\n\t\t\t\tcur = this.placeholder.offset(),\n\t\t\t\taxis = this.options.axis,\n\t\t\t\tanimation = {};\n\n\t\t\tif ( !axis || axis === \"x\" ) {\n\t\t\t\tanimation.left = cur.left - this.offset.parent.left - this.margins.left +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollLeft\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tif ( !axis || axis === \"y\" ) {\n\t\t\t\tanimation.top = cur.top - this.offset.parent.top - this.margins.top +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollTop\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tthis.reverting = true;\n\t\t\t$( this.helper ).animate(\n\t\t\t\tanimation,\n\t\t\t\tparseInt( this.options.revert, 10 ) || 500,\n\t\t\t\tfunction() {\n\t\t\t\t\tthat._clear( event );\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tthis._clear( event, noPropagation );\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.dragging ) {\n\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: null } ) );\n\n\t\t\tif ( this.options.helper === \"original\" ) {\n\t\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t\t} else {\n\t\t\t\tthis.currentItem.show();\n\t\t\t}\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor ( var i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"deactivate\", null, this._uiHash( this ) );\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", null, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.placeholder ) {\n\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t\t// it unbinds ALL events from the original node!\n\t\t\tif ( this.placeholder[ 0 ].parentNode ) {\n\t\t\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\t\t\t}\n\t\t\tif ( this.options.helper !== \"original\" && this.helper &&\n\t\t\t\t\tthis.helper[ 0 ].parentNode ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\n\t\t\t$.extend( this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t} );\n\n\t\t\tif ( this.domPosition.prev ) {\n\t\t\t\t$( this.domPosition.prev ).after( this.currentItem );\n\t\t\t} else {\n\t\t\t\t$( this.domPosition.parent ).prepend( this.currentItem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tstr = [];\n\t\to = o || {};\n\n\t\t$( items ).each( function() {\n\t\t\tvar res = ( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" )\n\t\t\t\t.match( o.expression || ( /(.+)[\\-=_](.+)/ ) );\n\t\t\tif ( res ) {\n\t\t\t\tstr.push(\n\t\t\t\t\t( o.key || res[ 1 ] + \"[]\" ) +\n\t\t\t\t\t\"=\" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );\n\t\t\t}\n\t\t} );\n\n\t\tif ( !str.length && o.key ) {\n\t\t\tstr.push( o.key + \"=\" );\n\t\t}\n\n\t\treturn str.join( \"&\" );\n\n\t},\n\n\ttoArray: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tret = [];\n\n\t\to = o || {};\n\n\t\titems.each( function() {\n\t\t\tret.push( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" );\n\t\t} );\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function( item ) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height,\n\t\t\tl = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height,\n\t\t\tdyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) || ( ( y1 + dyClick ) > t &&\n\t\t\t\t( y1 + dyClick ) < b ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) || ( ( x1 + dxClick ) > l &&\n\t\t\t\t( x1 + dxClick ) < r ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\tthis.options.forcePointerForContainers ||\n\t\t\t( this.options.tolerance !== \"pointer\" &&\n\t\t\t\tthis.helperProportions[ this.floating ? \"width\" : \"height\" ] >\n\t\t\t\titem[ this.floating ? \"width\" : \"height\" ] )\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( this.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( this.helperProportions.height / 2 ) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function( item ) {\n\t\tvar verticalDirection, horizontalDirection,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.top + this.offset.click.top, item.top, item.height ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.left + this.offset.click.left, item.left, item.width ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( !isOverElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tverticalDirection = this.dragDirection.vertical;\n\t\thorizontalDirection = this.dragDirection.horizontal;\n\n\t\treturn this.floating ?\n\t\t\t( ( horizontalDirection === \"right\" || verticalDirection === \"down\" ) ? 2 : 1 ) :\n\t\t\t( verticalDirection && ( verticalDirection === \"down\" ? 2 : 1 ) );\n\n\t},\n\n\t_intersectsWithSides: function( item ) {\n\n\t\tvar isOverBottomHalf = this._isOverAxis( this.positionAbs.top +\n\t\t\t\tthis.offset.click.top, item.top + ( item.height / 2 ), item.height ),\n\t\t\tisOverRightHalf = this._isOverAxis( this.positionAbs.left +\n\t\t\t\tthis.offset.click.left, item.left + ( item.width / 2 ), item.width ),\n\t\t\tverticalDirection = this.dragDirection.vertical,\n\t\t\thorizontalDirection = this.dragDirection.horizontal;\n\n\t\tif ( this.floating && horizontalDirection ) {\n\t\t\treturn ( ( horizontalDirection === \"right\" && isOverRightHalf ) ||\n\t\t\t\t( horizontalDirection === \"left\" && !isOverRightHalf ) );\n\t\t} else {\n\t\t\treturn verticalDirection && ( ( verticalDirection === \"down\" && isOverBottomHalf ) ||\n\t\t\t\t( verticalDirection === \"up\" && !isOverBottomHalf ) );\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta !== 0 && ( delta > 0 ? \"down\" : \"up\" );\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta !== 0 && ( delta > 0 ? \"right\" : \"left\" );\n\t},\n\n\trefresh: function( event ) {\n\t\tthis._refreshItems( event );\n\t\tthis._setHandleClassName();\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor === String ?\n\t\t\t[ options.connectWith ] :\n\t\t\toptions.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function( connected ) {\n\n\t\tvar i, j, cur, inst,\n\t\t\titems = [],\n\t\t\tqueries = [],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif ( connectWith && connected ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ typeof inst.options.items === \"function\" ?\n\t\t\t\t\t\t\tinst.options.items.call( inst.element ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-placeholder\" ), inst ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tqueries.push( [ typeof this.options.items === \"function\" ?\n\t\t\tthis.options.items\n\t\t\t\t.call( this.element, null, { options: this.options, item: this.currentItem } ) :\n\t\t\t$( this.options.items, this.element )\n\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t.not( \".ui-sortable-placeholder\" ), this ] );\n\n\t\tfunction addItems() {\n\t\t\titems.push( this );\n\t\t}\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\tqueries[ i ][ 0 ].each( addItems );\n\t\t}\n\n\t\treturn $( items );\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find( \":data(\" + this.widgetName + \"-item)\" );\n\n\t\tthis.items = $.grep( this.items, function( item ) {\n\t\t\tfor ( var j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === item.item[ 0 ] ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} );\n\n\t},\n\n\t_refreshItems: function( event ) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [ this ];\n\n\t\tvar i, j, cur, inst, targetData, _queries, item, queriesLength,\n\t\t\titems = this.items,\n\t\t\tqueries = [ [ typeof this.options.items === \"function\" ?\n\t\t\t\tthis.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t$( this.options.items, this.element ), this ] ],\n\t\t\tconnectWith = this._connectWith();\n\n\t\t//Shouldn't be run the first time through due to massive slow-down\n\t\tif ( connectWith && this.ready ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ typeof inst.options.items === \"function\" ?\n\t\t\t\t\t\t\tinst.options.items\n\t\t\t\t\t\t\t\t.call( inst.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element ), inst ] );\n\t\t\t\t\t\tthis.containers.push( inst );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\ttargetData = queries[ i ][ 1 ];\n\t\t\t_queries = queries[ i ][ 0 ];\n\n\t\t\tfor ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {\n\t\t\t\titem = $( _queries[ j ] );\n\n\t\t\t\t// Data for target checking (mouse manager)\n\t\t\t\titem.data( this.widgetName + \"-item\", targetData );\n\n\t\t\t\titems.push( {\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t},\n\n\t_refreshItemPositions: function( fast ) {\n\t\tvar i, item, t, p;\n\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\titem = this.items[ i ];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif ( this.currentContainer && item.instance !== this.currentContainer &&\n\t\t\t\t\titem.item[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tt = this.options.toleranceElement ?\n\t\t\t\t$( this.options.toleranceElement, item.item ) :\n\t\t\t\titem.item;\n\n\t\t\tif ( !fast ) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tp = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t}\n\t},\n\n\trefreshPositions: function( fast ) {\n\n\t\t// Determine whether items are being displayed horizontally\n\t\tthis.floating = this.items.length ?\n\t\t\tthis.options.axis === \"x\" || this._isFloating( this.items[ 0 ].item ) :\n\t\t\tfalse;\n\n\t\t// This has to be redone because due to the item being moved out/into the offsetParent,\n\t\t// the offsetParent's position will change\n\t\tif ( this.offsetParent && this.helper ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tthis._refreshItemPositions( fast );\n\n\t\tvar i, p;\n\n\t\tif ( this.options.custom && this.options.custom.refreshContainers ) {\n\t\t\tthis.options.custom.refreshContainers.call( this );\n\t\t} else {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tp = this.containers[ i ].element.offset();\n\t\t\t\tthis.containers[ i ].containerCache.left = p.left;\n\t\t\t\tthis.containers[ i ].containerCache.top = p.top;\n\t\t\t\tthis.containers[ i ].containerCache.width =\n\t\t\t\t\tthis.containers[ i ].element.outerWidth();\n\t\t\t\tthis.containers[ i ].containerCache.height =\n\t\t\t\t\tthis.containers[ i ].element.outerHeight();\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function( that ) {\n\t\tthat = that || this;\n\t\tvar className, nodeName,\n\t\t\to = that.options;\n\n\t\tif ( !o.placeholder || o.placeholder.constructor === String ) {\n\t\t\tclassName = o.placeholder;\n\t\t\tnodeName = that.currentItem[ 0 ].nodeName.toLowerCase();\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar element = $( \"<\" + nodeName + \">\", that.document[ 0 ] );\n\n\t\t\t\t\tthat._addClass( element, \"ui-sortable-placeholder\",\n\t\t\t\t\t\t\tclassName || that.currentItem[ 0 ].className )\n\t\t\t\t\t\t._removeClass( element, \"ui-sortable-helper\" );\n\n\t\t\t\t\tif ( nodeName === \"tbody\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder(\n\t\t\t\t\t\t\tthat.currentItem.find( \"tr\" ).eq( 0 ),\n\t\t\t\t\t\t\t$( \"\", that.document[ 0 ] ).appendTo( element )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( nodeName === \"tr\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder( that.currentItem, element );\n\t\t\t\t\t} else if ( nodeName === \"img\" ) {\n\t\t\t\t\t\telement.attr( \"src\", that.currentItem.attr( \"src\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !className ) {\n\t\t\t\t\t\telement.css( \"visibility\", \"hidden\" );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn element;\n\t\t\t\t},\n\t\t\t\tupdate: function( container, p ) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes -\n\t\t\t\t\t// the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a\n\t\t\t\t\t// class name is specified\n\t\t\t\t\tif ( className && !o.forcePlaceholderSize ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the element doesn't have a actual height or width by itself (without\n\t\t\t\t\t// styles coming from a stylesheet), it receives the inline height and width\n\t\t\t\t\t// from the dragged item. Or, if it's a tbody or tr, it's going to have a height\n\t\t\t\t\t// anyway since we're populating them with s above, but they're unlikely to\n\t\t\t\t\t// be the correct height on their own if the row heights are dynamic, so we'll\n\t\t\t\t\t// always assign the height of the dragged item given forcePlaceholderSize\n\t\t\t\t\t// is true.\n\t\t\t\t\tif ( !p.height() || ( o.forcePlaceholderSize &&\n\t\t\t\t\t\t\t( nodeName === \"tbody\" || nodeName === \"tr\" ) ) ) {\n\t\t\t\t\t\tp.height(\n\t\t\t\t\t\t\tthat.currentItem.innerHeight() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingTop\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingBottom\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t\tif ( !p.width() ) {\n\t\t\t\t\t\tp.width(\n\t\t\t\t\t\t\tthat.currentItem.innerWidth() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingLeft\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingRight\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after( that.placeholder );\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update( that, that.placeholder );\n\n\t},\n\n\t_createTrPlaceholder: function( sourceTr, targetTr ) {\n\t\tvar that = this;\n\n\t\tsourceTr.children().each( function() {\n\t\t\t$( \" \", that.document[ 0 ] )\n\t\t\t\t.attr( \"colspan\", $( this ).attr( \"colspan\" ) || 1 )\n\t\t\t\t.appendTo( targetTr );\n\t\t} );\n\t},\n\n\t_contactContainers: function( event ) {\n\t\tvar i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,\n\t\t\tfloating, axis,\n\t\t\tinnermostContainer = null,\n\t\t\tinnermostIndex = null;\n\n\t\t// Get innermost container that intersects with item\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\n\t\t\t// Never consider a container that's located within the item itself\n\t\t\tif ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( this._intersectsWith( this.containers[ i ].containerCache ) ) {\n\n\t\t\t\t// If we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif ( innermostContainer &&\n\t\t\t\t\t\t$.contains(\n\t\t\t\t\t\t\tthis.containers[ i ].element[ 0 ],\n\t\t\t\t\t\t\tinnermostContainer.element[ 0 ] ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tinnermostContainer = this.containers[ i ];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", event, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// If no intersecting containers found, return\n\t\tif ( !innermostContainer ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Move the item into the container if it's not there already\n\t\tif ( this.containers.length === 1 ) {\n\t\t\tif ( !this.containers[ innermostIndex ].containerCache.over ) {\n\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t\t}\n\t\t} else {\n\n\t\t\t// When entering a new container, we will find the item with the least distance and\n\t\t\t// append our item near it\n\t\t\tdist = 10000;\n\t\t\titemWithLeastDistance = null;\n\t\t\tfloating = innermostContainer.floating || this._isFloating( this.currentItem );\n\t\t\tposProperty = floating ? \"left\" : \"top\";\n\t\t\tsizeProperty = floating ? \"width\" : \"height\";\n\t\t\taxis = floating ? \"pageX\" : \"pageY\";\n\n\t\t\tfor ( j = this.items.length - 1; j >= 0; j-- ) {\n\t\t\t\tif ( !$.contains(\n\t\t\t\t\t\tthis.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcur = this.items[ j ].item.offset()[ posProperty ];\n\t\t\t\tnearBottom = false;\n\t\t\t\tif ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t}\n\n\t\t\t\tif ( Math.abs( event[ axis ] - cur ) < dist ) {\n\t\t\t\t\tdist = Math.abs( event[ axis ] - cur );\n\t\t\t\t\titemWithLeastDistance = this.items[ j ];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\" : \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Check if dropOnEmpty is enabled\n\t\t\tif ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.currentContainer === this.containers[ innermostIndex ] ) {\n\t\t\t\tif ( !this.currentContainer.containerCache.over ) {\n\t\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash() );\n\t\t\t\t\tthis.currentContainer.containerCache.over = 1;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( itemWithLeastDistance ) {\n\t\t\t\tthis._rearrange( event, itemWithLeastDistance, null, true );\n\t\t\t} else {\n\t\t\t\tthis._rearrange( event, null, this.containers[ innermostIndex ].element, true );\n\t\t\t}\n\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"change\", event, this._uiHash( this ) );\n\t\t\tthis.currentContainer = this.containers[ innermostIndex ];\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update( this.currentContainer, this.placeholder );\n\n\t\t\t//Update scrollParent\n\t\t\tthis.scrollParent = this.placeholder.scrollParent();\n\n\t\t\t//Update overflowOffset\n\t\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t\t}\n\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t}\n\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelper = typeof o.helper === \"function\" ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem );\n\n\t\t//Add the helper to the DOM if that didn't happen already\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\tthis.appendTo[ 0 ].appendChild( helper[ 0 ] );\n\t\t}\n\n\t\tif ( helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tthis._storedCSS = {\n\t\t\t\twidth: this.currentItem[ 0 ].style.width,\n\t\t\t\theight: this.currentItem[ 0 ].style.height,\n\t\t\t\tposition: this.currentItem.css( \"position\" ),\n\t\t\t\ttop: this.currentItem.css( \"top\" ),\n\t\t\t\tleft: this.currentItem.css( \"left\" )\n\t\t\t};\n\t\t}\n\n\t\tif ( !helper[ 0 ].style.width || o.forceHelperSize ) {\n\t\t\thelper.width( this.currentItem.width() );\n\t\t}\n\t\tif ( !helper[ 0 ].style.height || o.forceHelperSize ) {\n\t\t\thelper.height( this.currentItem.height() );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( Array.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\t// This needs to be actually done for all browsers, since pageX/pageY includes this\n\t\t// information with an ugly IE fix\n\t\tif ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||\n\t\t\t\t( this.offsetParent[ 0 ].tagName &&\n\t\t\t\tthis.offsetParent[ 0 ].tagName.toLowerCase() === \"html\" && $.ui.ie ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif ( this.cssPosition === \"relative\" ) {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.currentItem.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.currentItem.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar ce, co, over,\n\t\t\to = this.options;\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\t\tif ( o.containment === \"document\" || o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\to.containment === \"document\" ?\n\t\t\t\t\tthis.document.width() :\n\t\t\t\t\tthis.window.width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( o.containment === \"document\" ?\n\t\t\t\t\t( this.document.height() || document.body.parentNode.scrollHeight ) :\n\t\t\t\t\tthis.window.height() || this.document[ 0 ].body.parentNode.scrollHeight\n\t\t\t\t) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t\tif ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {\n\t\t\tce = $( o.containment )[ 0 ];\n\t\t\tco = $( o.containment ).offset();\n\t\t\tover = ( $( ce ).css( \"overflow\" ) !== \"hidden\" );\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + ( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingLeft\" ), 10 ) || 0 ) - this.margins.left,\n\t\t\t\tco.top + ( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingTop\" ), 10 ) || 0 ) - this.margins.top,\n\t\t\t\tco.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\tco.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :\n\t\t\t\t\tscroll.scrollLeft() ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event ) {\n\n\t\tvar top, left,\n\t\t\to = this.options,\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif ( this.cssPosition === \"relative\" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif ( this.originalPosition ) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {\n\t\t\t\t\tpageX = this.containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {\n\t\t\t\t\tpageY = this.containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {\n\t\t\t\t\tpageX = this.containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {\n\t\t\t\t\tpageY = this.containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\t\t\t\ttop = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /\n\t\t\t\t\to.grid[ 1 ] ) * o.grid[ 1 ];\n\t\t\t\tpageY = this.containment ?\n\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] &&\n\t\t\t\t\t\ttop - this.offset.click.top <= this.containment[ 3 ] ) ?\n\t\t\t\t\t\t\ttop :\n\t\t\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?\n\t\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :\n\t\t\t\t\t\t\t\ttop;\n\n\t\t\t\tleft = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /\n\t\t\t\t\to.grid[ 0 ] ) * o.grid[ 0 ];\n\t\t\t\tpageX = this.containment ?\n\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] &&\n\t\t\t\t\t\tleft - this.offset.click.left <= this.containment[ 2 ] ) ?\n\t\t\t\t\t\t\tleft :\n\t\t\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?\n\t\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :\n\t\t\t\t\t\t\t\tleft;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() :\n\t\t\t\t\tscrollIsRootNode ? 0 : scroll.scrollLeft() ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function( event, i, a, hardRefresh ) {\n\n\t\tif ( a ) {\n\t\t\ta[ 0 ].appendChild( this.placeholder[ 0 ] );\n\t\t} else {\n\t\t\ti.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],\n\t\t\t\t( this.direction === \"down\" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );\n\t\t}\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout,\n\t\t// if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay( function() {\n\t\t\tif ( counter === this.counter ) {\n\n\t\t\t\t//Precompute after each DOM insertion, NOT on mousemove\n\t\t\t\tthis.refreshPositions( !hardRefresh );\n\t\t\t}\n\t\t} );\n\n\t},\n\n\t_clear: function( event, noPropagation ) {\n\n\t\tthis.reverting = false;\n\n\t\t// We delay all events that have to be triggered to after the point where the placeholder\n\t\t// has been removed and everything else normalized again\n\t\tvar i,\n\t\t\tdelayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets\n\t\t// reappended (see #4088)\n\t\tif ( !this._noFinalSort && this.currentItem.parent().length ) {\n\t\t\tthis.placeholder.before( this.currentItem );\n\t\t}\n\t\tthis._noFinalSort = null;\n\n\t\tif ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tfor ( i in this._storedCSS ) {\n\t\t\t\tif ( this._storedCSS[ i ] === \"auto\" || this._storedCSS[ i ] === \"static\" ) {\n\t\t\t\t\tthis._storedCSS[ i ] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif ( this.fromOutside && !noPropagation ) {\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"receive\", event, this._uiHash( this.fromOutside ) );\n\t\t\t} );\n\t\t}\n\t\tif ( ( this.fromOutside ||\n\t\t\t\tthis.domPosition.prev !==\n\t\t\t\tthis.currentItem.prev().not( \".ui-sortable-helper\" )[ 0 ] ||\n\t\t\t\tthis.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {\n\n\t\t\t// Trigger update callback if the DOM position has changed\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"update\", event, this._uiHash() );\n\t\t\t} );\n\t\t}\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif ( this !== this.currentContainer ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\t\tthis._trigger( \"remove\", event, this._uiHash() );\n\t\t\t\t} );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"receive\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"update\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tfunction delayEvent( type, instance, container ) {\n\t\t\treturn function( event ) {\n\t\t\t\tcontainer._trigger( type, event, instance._uiHash( instance ) );\n\t\t\t};\n\t\t}\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"deactivate\", this, this.containers[ i ] ) );\n\t\t\t}\n\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"out\", this, this.containers[ i ] ) );\n\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif ( this.storedCursor ) {\n\t\t\tthis.document.find( \"body\" ).css( \"cursor\", this.storedCursor );\n\t\t\tthis.storedStylesheet.remove();\n\t\t}\n\t\tif ( this._storedOpacity ) {\n\t\t\tthis.helper.css( \"opacity\", this._storedOpacity );\n\t\t}\n\t\tif ( this._storedZIndex ) {\n\t\t\tthis.helper.css( \"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex );\n\t\t}\n\n\t\tthis.dragging = false;\n\n\t\tif ( !noPropagation ) {\n\t\t\tthis._trigger( \"beforeStop\", event, this._uiHash() );\n\t\t}\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t// it unbinds ALL events from the original node!\n\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\n\t\tif ( !this.cancelHelperRemoval ) {\n\t\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\t\t\tthis.helper = null;\n\t\t}\n\n\t\tif ( !noPropagation ) {\n\t\t\tfor ( i = 0; i < delayedTriggers.length; i++ ) {\n\n\t\t\t\t// Trigger all delayed events\n\t\t\t\tdelayedTriggers[ i ].call( this, event );\n\t\t\t}\n\t\t\tthis._trigger( \"stop\", event, this._uiHash() );\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn !this.cancelHelperRemoval;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function( _inst ) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $( [] ),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n} );\n\n} );\n","/*!\n * jQuery UI Tooltip 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Tooltip\n//>>group: Widgets\n//>>description: Shows additional information for any element on hover or focus.\n//>>docs: http://api.jqueryui.com/tooltip/\n//>>demos: http://jqueryui.com/tooltip/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/tooltip.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../keycode\",\n\t\t\t\"../position\",\n\t\t\t\"../unique-id\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.widget( \"ui.tooltip\", {\n\tversion: \"1.13.2\",\n\toptions: {\n\t\tclasses: {\n\t\t\t\"ui-tooltip\": \"ui-corner-all ui-widget-shadow\"\n\t\t},\n\t\tcontent: function() {\n\t\t\tvar title = $( this ).attr( \"title\" );\n\n\t\t\t// Escape title, since we're going from an attribute to raw HTML\n\t\t\treturn $( \"\" ).text( title ).html();\n\t\t},\n\t\thide: true,\n\n\t\t// Disabled elements have inconsistent behavior across browsers (#8661)\n\t\titems: \"[title]:not([disabled])\",\n\t\tposition: {\n\t\t\tmy: \"left top+15\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"flipfit flip\"\n\t\t},\n\t\tshow: true,\n\t\ttrack: false,\n\n\t\t// Callbacks\n\t\tclose: null,\n\t\topen: null\n\t},\n\n\t_addDescribedBy: function( elem, id ) {\n\t\tvar describedby = ( elem.attr( \"aria-describedby\" ) || \"\" ).split( /\\s+/ );\n\t\tdescribedby.push( id );\n\t\telem\n\t\t\t.data( \"ui-tooltip-id\", id )\n\t\t\t.attr( \"aria-describedby\", String.prototype.trim.call( describedby.join( \" \" ) ) );\n\t},\n\n\t_removeDescribedBy: function( elem ) {\n\t\tvar id = elem.data( \"ui-tooltip-id\" ),\n\t\t\tdescribedby = ( elem.attr( \"aria-describedby\" ) || \"\" ).split( /\\s+/ ),\n\t\t\tindex = $.inArray( id, describedby );\n\n\t\tif ( index !== -1 ) {\n\t\t\tdescribedby.splice( index, 1 );\n\t\t}\n\n\t\telem.removeData( \"ui-tooltip-id\" );\n\t\tdescribedby = String.prototype.trim.call( describedby.join( \" \" ) );\n\t\tif ( describedby ) {\n\t\t\telem.attr( \"aria-describedby\", describedby );\n\t\t} else {\n\t\t\telem.removeAttr( \"aria-describedby\" );\n\t\t}\n\t},\n\n\t_create: function() {\n\t\tthis._on( {\n\t\t\tmouseover: \"open\",\n\t\t\tfocusin: \"open\"\n\t\t} );\n\n\t\t// IDs of generated tooltips, needed for destroy\n\t\tthis.tooltips = {};\n\n\t\t// IDs of parent tooltips where we removed the title attribute\n\t\tthis.parents = {};\n\n\t\t// Append the aria-live region so tooltips announce correctly\n\t\tthis.liveRegion = $( \"
    \" )\n\t\t\t.attr( {\n\t\t\t\trole: \"log\",\n\t\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\t\"aria-relevant\": \"additions\"\n\t\t\t} )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\t\tthis._addClass( this.liveRegion, null, \"ui-helper-hidden-accessible\" );\n\n\t\tthis.disabledTitles = $( [] );\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tvar that = this;\n\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"content\" ) {\n\t\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\t\tthat._updateContent( tooltipData.element );\n\t\t\t} );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis[ value ? \"_disable\" : \"_enable\" ]();\n\t},\n\n\t_disable: function() {\n\t\tvar that = this;\n\n\t\t// Close open tooltips\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\t\t\tvar event = $.Event( \"blur\" );\n\t\t\tevent.target = event.currentTarget = tooltipData.element[ 0 ];\n\t\t\tthat.close( event, true );\n\t\t} );\n\n\t\t// Remove title attributes to prevent native tooltips\n\t\tthis.disabledTitles = this.disabledTitles.add(\n\t\t\tthis.element.find( this.options.items ).addBack()\n\t\t\t\t.filter( function() {\n\t\t\t\t\tvar element = $( this );\n\t\t\t\t\tif ( element.is( \"[title]\" ) ) {\n\t\t\t\t\t\treturn element\n\t\t\t\t\t\t\t.data( \"ui-tooltip-title\", element.attr( \"title\" ) )\n\t\t\t\t\t\t\t.removeAttr( \"title\" );\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t);\n\t},\n\n\t_enable: function() {\n\n\t\t// restore title attributes\n\t\tthis.disabledTitles.each( function() {\n\t\t\tvar element = $( this );\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t}\n\t\t} );\n\t\tthis.disabledTitles = $( [] );\n\t},\n\n\topen: function( event ) {\n\t\tvar that = this,\n\t\t\ttarget = $( event ? event.target : this.element )\n\n\t\t\t\t// we need closest here due to mouseover bubbling,\n\t\t\t\t// but always pointing at the same event target\n\t\t\t\t.closest( this.options.items );\n\n\t\t// No element to show a tooltip for or the tooltip is already open\n\t\tif ( !target.length || target.data( \"ui-tooltip-id\" ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( target.attr( \"title\" ) ) {\n\t\t\ttarget.data( \"ui-tooltip-title\", target.attr( \"title\" ) );\n\t\t}\n\n\t\ttarget.data( \"ui-tooltip-open\", true );\n\n\t\t// Kill parent tooltips, custom or native, for hover\n\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\ttarget.parents().each( function() {\n\t\t\t\tvar parent = $( this ),\n\t\t\t\t\tblurEvent;\n\t\t\t\tif ( parent.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\tblurEvent = $.Event( \"blur\" );\n\t\t\t\t\tblurEvent.target = blurEvent.currentTarget = this;\n\t\t\t\t\tthat.close( blurEvent, true );\n\t\t\t\t}\n\t\t\t\tif ( parent.attr( \"title\" ) ) {\n\t\t\t\t\tparent.uniqueId();\n\t\t\t\t\tthat.parents[ this.id ] = {\n\t\t\t\t\t\telement: this,\n\t\t\t\t\t\ttitle: parent.attr( \"title\" )\n\t\t\t\t\t};\n\t\t\t\t\tparent.attr( \"title\", \"\" );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\tthis._registerCloseHandlers( event, target );\n\t\tthis._updateContent( target, event );\n\t},\n\n\t_updateContent: function( target, event ) {\n\t\tvar content,\n\t\t\tcontentOption = this.options.content,\n\t\t\tthat = this,\n\t\t\teventType = event ? event.type : null;\n\n\t\tif ( typeof contentOption === \"string\" || contentOption.nodeType ||\n\t\t\t\tcontentOption.jquery ) {\n\t\t\treturn this._open( event, target, contentOption );\n\t\t}\n\n\t\tcontent = contentOption.call( target[ 0 ], function( response ) {\n\n\t\t\t// IE may instantly serve a cached response for ajax requests\n\t\t\t// delay this call to _open so the other call to _open runs first\n\t\t\tthat._delay( function() {\n\n\t\t\t\t// Ignore async response if tooltip was closed already\n\t\t\t\tif ( !target.data( \"ui-tooltip-open\" ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// JQuery creates a special event for focusin when it doesn't\n\t\t\t\t// exist natively. To improve performance, the native event\n\t\t\t\t// object is reused and the type is changed. Therefore, we can't\n\t\t\t\t// rely on the type being correct after the event finished\n\t\t\t\t// bubbling, so we set it back to the previous value. (#8740)\n\t\t\t\tif ( event ) {\n\t\t\t\t\tevent.type = eventType;\n\t\t\t\t}\n\t\t\t\tthis._open( event, target, response );\n\t\t\t} );\n\t\t} );\n\t\tif ( content ) {\n\t\t\tthis._open( event, target, content );\n\t\t}\n\t},\n\n\t_open: function( event, target, content ) {\n\t\tvar tooltipData, tooltip, delayedShow, a11yContent,\n\t\t\tpositionOption = $.extend( {}, this.options.position );\n\n\t\tif ( !content ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Content can be updated multiple times. If the tooltip already\n\t\t// exists, then just update the content and bail.\n\t\ttooltipData = this._find( target );\n\t\tif ( tooltipData ) {\n\t\t\ttooltipData.tooltip.find( \".ui-tooltip-content\" ).html( content );\n\t\t\treturn;\n\t\t}\n\n\t\t// If we have a title, clear it to prevent the native tooltip\n\t\t// we have to check first to avoid defining a title if none exists\n\t\t// (we don't want to cause an element to start matching [title])\n\t\t//\n\t\t// We use removeAttr only for key events, to allow IE to export the correct\n\t\t// accessible attributes. For mouse events, set to empty string to avoid\n\t\t// native tooltip showing up (happens only when removing inside mouseover).\n\t\tif ( target.is( \"[title]\" ) ) {\n\t\t\tif ( event && event.type === \"mouseover\" ) {\n\t\t\t\ttarget.attr( \"title\", \"\" );\n\t\t\t} else {\n\t\t\t\ttarget.removeAttr( \"title\" );\n\t\t\t}\n\t\t}\n\n\t\ttooltipData = this._tooltip( target );\n\t\ttooltip = tooltipData.tooltip;\n\t\tthis._addDescribedBy( target, tooltip.attr( \"id\" ) );\n\t\ttooltip.find( \".ui-tooltip-content\" ).html( content );\n\n\t\t// Support: Voiceover on OS X, JAWS on IE <= 9\n\t\t// JAWS announces deletions even when aria-relevant=\"additions\"\n\t\t// Voiceover will sometimes re-read the entire log region's contents from the beginning\n\t\tthis.liveRegion.children().hide();\n\t\ta11yContent = $( \"
    \" ).html( tooltip.find( \".ui-tooltip-content\" ).html() );\n\t\ta11yContent.removeAttr( \"name\" ).find( \"[name]\" ).removeAttr( \"name\" );\n\t\ta11yContent.removeAttr( \"id\" ).find( \"[id]\" ).removeAttr( \"id\" );\n\t\ta11yContent.appendTo( this.liveRegion );\n\n\t\tfunction position( event ) {\n\t\t\tpositionOption.of = event;\n\t\t\tif ( tooltip.is( \":hidden\" ) ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttooltip.position( positionOption );\n\t\t}\n\t\tif ( this.options.track && event && /^mouse/.test( event.type ) ) {\n\t\t\tthis._on( this.document, {\n\t\t\t\tmousemove: position\n\t\t\t} );\n\n\t\t\t// trigger once to override element-relative positioning\n\t\t\tposition( event );\n\t\t} else {\n\t\t\ttooltip.position( $.extend( {\n\t\t\t\tof: target\n\t\t\t}, this.options.position ) );\n\t\t}\n\n\t\ttooltip.hide();\n\n\t\tthis._show( tooltip, this.options.show );\n\n\t\t// Handle tracking tooltips that are shown with a delay (#8644). As soon\n\t\t// as the tooltip is visible, position the tooltip using the most recent\n\t\t// event.\n\t\t// Adds the check to add the timers only when both delay and track options are set (#14682)\n\t\tif ( this.options.track && this.options.show && this.options.show.delay ) {\n\t\t\tdelayedShow = this.delayedShow = setInterval( function() {\n\t\t\t\tif ( tooltip.is( \":visible\" ) ) {\n\t\t\t\t\tposition( positionOption.of );\n\t\t\t\t\tclearInterval( delayedShow );\n\t\t\t\t}\n\t\t\t}, 13 );\n\t\t}\n\n\t\tthis._trigger( \"open\", event, { tooltip: tooltip } );\n\t},\n\n\t_registerCloseHandlers: function( event, target ) {\n\t\tvar events = {\n\t\t\tkeyup: function( event ) {\n\t\t\t\tif ( event.keyCode === $.ui.keyCode.ESCAPE ) {\n\t\t\t\t\tvar fakeEvent = $.Event( event );\n\t\t\t\t\tfakeEvent.currentTarget = target[ 0 ];\n\t\t\t\t\tthis.close( fakeEvent, true );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// Only bind remove handler for delegated targets. Non-delegated\n\t\t// tooltips will handle this in destroy.\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tevents.remove = function() {\n\t\t\t\tvar targetElement = this._find( target );\n\t\t\t\tif ( targetElement ) {\n\t\t\t\t\tthis._removeTooltip( targetElement.tooltip );\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tif ( !event || event.type === \"mouseover\" ) {\n\t\t\tevents.mouseleave = \"close\";\n\t\t}\n\t\tif ( !event || event.type === \"focusin\" ) {\n\t\t\tevents.focusout = \"close\";\n\t\t}\n\t\tthis._on( true, target, events );\n\t},\n\n\tclose: function( event ) {\n\t\tvar tooltip,\n\t\t\tthat = this,\n\t\t\ttarget = $( event ? event.currentTarget : this.element ),\n\t\t\ttooltipData = this._find( target );\n\n\t\t// The tooltip may already be closed\n\t\tif ( !tooltipData ) {\n\n\t\t\t// We set ui-tooltip-open immediately upon open (in open()), but only set the\n\t\t\t// additional data once there's actually content to show (in _open()). So even if the\n\t\t\t// tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in\n\t\t\t// the period between open() and _open().\n\t\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\t\treturn;\n\t\t}\n\n\t\ttooltip = tooltipData.tooltip;\n\n\t\t// Disabling closes the tooltip, so we need to track when we're closing\n\t\t// to avoid an infinite loop in case the tooltip becomes disabled on close\n\t\tif ( tooltipData.closing ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Clear the interval for delayed tracking tooltips\n\t\tclearInterval( this.delayedShow );\n\n\t\t// Only set title if we had one before (see comment in _open())\n\t\t// If the title attribute has changed since open(), don't restore\n\t\tif ( target.data( \"ui-tooltip-title\" ) && !target.attr( \"title\" ) ) {\n\t\t\ttarget.attr( \"title\", target.data( \"ui-tooltip-title\" ) );\n\t\t}\n\n\t\tthis._removeDescribedBy( target );\n\n\t\ttooltipData.hiding = true;\n\t\ttooltip.stop( true );\n\t\tthis._hide( tooltip, this.options.hide, function() {\n\t\t\tthat._removeTooltip( $( this ) );\n\t\t} );\n\n\t\ttarget.removeData( \"ui-tooltip-open\" );\n\t\tthis._off( target, \"mouseleave focusout keyup\" );\n\n\t\t// Remove 'remove' binding only on delegated targets\n\t\tif ( target[ 0 ] !== this.element[ 0 ] ) {\n\t\t\tthis._off( target, \"remove\" );\n\t\t}\n\t\tthis._off( this.document, \"mousemove\" );\n\n\t\tif ( event && event.type === \"mouseleave\" ) {\n\t\t\t$.each( this.parents, function( id, parent ) {\n\t\t\t\t$( parent.element ).attr( \"title\", parent.title );\n\t\t\t\tdelete that.parents[ id ];\n\t\t\t} );\n\t\t}\n\n\t\ttooltipData.closing = true;\n\t\tthis._trigger( \"close\", event, { tooltip: tooltip } );\n\t\tif ( !tooltipData.hiding ) {\n\t\t\ttooltipData.closing = false;\n\t\t}\n\t},\n\n\t_tooltip: function( element ) {\n\t\tvar tooltip = $( \"
    \" ).attr( \"role\", \"tooltip\" ),\n\t\t\tcontent = $( \"
    \" ).appendTo( tooltip ),\n\t\t\tid = tooltip.uniqueId().attr( \"id\" );\n\n\t\tthis._addClass( content, \"ui-tooltip-content\" );\n\t\tthis._addClass( tooltip, \"ui-tooltip\", \"ui-widget ui-widget-content\" );\n\n\t\ttooltip.appendTo( this._appendTo( element ) );\n\n\t\treturn this.tooltips[ id ] = {\n\t\t\telement: element,\n\t\t\ttooltip: tooltip\n\t\t};\n\t},\n\n\t_find: function( target ) {\n\t\tvar id = target.data( \"ui-tooltip-id\" );\n\t\treturn id ? this.tooltips[ id ] : null;\n\t},\n\n\t_removeTooltip: function( tooltip ) {\n\n\t\t// Clear the interval for delayed tracking tooltips\n\t\tclearInterval( this.delayedShow );\n\n\t\ttooltip.remove();\n\t\tdelete this.tooltips[ tooltip.attr( \"id\" ) ];\n\t},\n\n\t_appendTo: function( target ) {\n\t\tvar element = target.closest( \".ui-front, dialog\" );\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_destroy: function() {\n\t\tvar that = this;\n\n\t\t// Close open tooltips\n\t\t$.each( this.tooltips, function( id, tooltipData ) {\n\n\t\t\t// Delegate to close method to handle common cleanup\n\t\t\tvar event = $.Event( \"blur\" ),\n\t\t\t\telement = tooltipData.element;\n\t\t\tevent.target = event.currentTarget = element[ 0 ];\n\t\t\tthat.close( event, true );\n\n\t\t\t// Remove immediately; destroying an open tooltip doesn't use the\n\t\t\t// hide animation\n\t\t\t$( \"#\" + id ).remove();\n\n\t\t\t// Restore the title\n\t\t\tif ( element.data( \"ui-tooltip-title\" ) ) {\n\n\t\t\t\t// If the title attribute has changed since open(), don't restore\n\t\t\t\tif ( !element.attr( \"title\" ) ) {\n\t\t\t\t\telement.attr( \"title\", element.data( \"ui-tooltip-title\" ) );\n\t\t\t\t}\n\t\t\t\telement.removeData( \"ui-tooltip-title\" );\n\t\t\t}\n\t\t} );\n\t\tthis.liveRegion.remove();\n\t}\n} );\n\n// DEPRECATED\n// TODO: Switch return back to widget declaration at top of file when this is removed\nif ( $.uiBackCompat !== false ) {\n\n\t// Backcompat for tooltipClass option\n\t$.widget( \"ui.tooltip\", $.ui.tooltip, {\n\t\toptions: {\n\t\t\ttooltipClass: null\n\t\t},\n\t\t_tooltip: function() {\n\t\t\tvar tooltipData = this._superApply( arguments );\n\t\t\tif ( this.options.tooltipClass ) {\n\t\t\t\ttooltipData.tooltip.addClass( this.options.tooltipClass );\n\t\t\t}\n\t\t\treturn tooltipData;\n\t\t}\n\t} );\n}\n\nreturn $.ui.tooltip;\n\n} );\n","(function($, undefined) {\n\n/**\n * Unobtrusive scripting adapter for jQuery\n * https://github.com/rails/jquery-ujs\n *\n * Requires jQuery 1.8.0 or later.\n *\n * Released under the MIT license\n *\n */\n\n // Cut down on the number of issues from people inadvertently including jquery_ujs twice\n // by detecting and raising an error when it happens.\n 'use strict';\n\n if ( $.rails !== undefined ) {\n $.error('jquery-ujs has already been loaded!');\n }\n\n // Shorthand to make it a little easier to call public rails functions from within rails.js\n var rails;\n var $document = $(document);\n\n $.rails = rails = {\n // Link elements bound by jquery-ujs\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n\n // Button elements bound by jquery-ujs\n buttonClickSelector: 'button[data-remote]:not([form]):not(form button), button[data-confirm]:not([form]):not(form button)',\n\n // Select elements bound by jquery-ujs\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n\n // Form elements bound by jquery-ujs\n formSubmitSelector: 'form',\n\n // Form input elements bound by jquery-ujs\n formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n\n // Form input elements disabled during form submission\n disableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n\n // Form input elements re-enabled after form submission\n enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n\n // Form required input elements\n requiredInputSelector: 'input[name][required]:not([disabled]), textarea[name][required]:not([disabled])',\n\n // Form file input elements\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n\n // Link onClick disable selector with possible reenable after remote submission\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n\n // Button onClick disable selector with possible reenable after remote submission\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]',\n\n // Up-to-date Cross-Site Request Forgery token\n csrfToken: function() {\n return $('meta[name=csrf-token]').attr('content');\n },\n\n // URL param that must contain the CSRF token\n csrfParam: function() {\n return $('meta[name=csrf-param]').attr('content');\n },\n\n // Make sure that every Ajax request sends the CSRF token\n CSRFProtection: function(xhr) {\n var token = rails.csrfToken();\n if (token) xhr.setRequestHeader('X-CSRF-Token', token);\n },\n\n // Make sure that all forms have actual up-to-date tokens (cached forms contain old ones)\n refreshCSRFTokens: function(){\n $('form input[name=\"' + rails.csrfParam() + '\"]').val(rails.csrfToken());\n },\n\n // Triggers an event on an element and returns false if the event result is false\n fire: function(obj, name, data) {\n var event = $.Event(name);\n obj.trigger(event, data);\n return event.result !== false;\n },\n\n // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm\n confirm: function(message) {\n return confirm(message);\n },\n\n // Default ajax function, may be overridden with custom function in $.rails.ajax\n ajax: function(options) {\n return $.ajax(options);\n },\n\n // Default way to get an element's href. May be overridden at $.rails.href.\n href: function(element) {\n return element[0].href;\n },\n\n // Checks \"data-remote\" if true to handle the request through a XHR request.\n isRemote: function(element) {\n return element.data('remote') !== undefined && element.data('remote') !== false;\n },\n\n // Submits \"remote\" forms and links with ajax\n handleRemote: function(element) {\n var method, url, data, withCredentials, dataType, options;\n\n if (rails.fire(element, 'ajax:before')) {\n withCredentials = element.data('with-credentials') || null;\n dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);\n\n if (element.is('form')) {\n method = element.data('ujs:submit-button-formmethod') || element.attr('method');\n url = element.data('ujs:submit-button-formaction') || element.attr('action');\n data = $(element[0]).serializeArray();\n // memoized value from clicked submit button\n var button = element.data('ujs:submit-button');\n if (button) {\n data.push(button);\n element.data('ujs:submit-button', null);\n }\n element.data('ujs:submit-button-formmethod', null);\n element.data('ujs:submit-button-formaction', null);\n } else if (element.is(rails.inputChangeSelector)) {\n method = element.data('method');\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + '&' + element.data('params');\n } else if (element.is(rails.buttonClickSelector)) {\n method = element.data('method') || 'get';\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + '&' + element.data('params');\n } else {\n method = element.data('method');\n url = rails.href(element);\n data = element.data('params') || null;\n }\n\n options = {\n type: method || 'GET', data: data, dataType: dataType,\n // stopping the \"ajax:beforeSend\" event will cancel the ajax request\n beforeSend: function(xhr, settings) {\n if (settings.dataType === undefined) {\n xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);\n }\n if (rails.fire(element, 'ajax:beforeSend', [xhr, settings])) {\n element.trigger('ajax:send', xhr);\n } else {\n return false;\n }\n },\n success: function(data, status, xhr) {\n element.trigger('ajax:success', [data, status, xhr]);\n },\n complete: function(xhr, status) {\n element.trigger('ajax:complete', [xhr, status]);\n },\n error: function(xhr, status, error) {\n element.trigger('ajax:error', [xhr, status, error]);\n },\n crossDomain: rails.isCrossDomain(url)\n };\n\n // There is no withCredentials for IE6-8 when\n // \"Enable native XMLHTTP support\" is disabled\n if (withCredentials) {\n options.xhrFields = {\n withCredentials: withCredentials\n };\n }\n\n // Only pass url to `ajax` options if not blank\n if (url) { options.url = url; }\n\n return rails.ajax(options);\n } else {\n return false;\n }\n },\n\n // Determines if the request is a cross domain request.\n isCrossDomain: function(url) {\n var originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n var urlAnchor = document.createElement('a');\n\n try {\n urlAnchor.href = url;\n // This is a workaround to a IE bug.\n urlAnchor.href = urlAnchor.href;\n\n // If URL protocol is false or is a string containing a single colon\n // *and* host are false, assume it is not a cross-domain request\n // (should only be the case for IE7 and IE compatibility mode).\n // Otherwise, evaluate protocol and host of the URL against the origin\n // protocol and host.\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) ||\n (originAnchor.protocol + '//' + originAnchor.host ===\n urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain.\n return true;\n }\n },\n\n // Handles \"data-method\" on links such as:\n // Delete\n handleMethod: function(link) {\n var href = rails.href(link),\n method = link.data('method'),\n target = link.attr('target'),\n csrfToken = rails.csrfToken(),\n csrfParam = rails.csrfParam(),\n form = $('
    '),\n metadataInput = '';\n\n if (csrfParam !== undefined && csrfToken !== undefined && !rails.isCrossDomain(href)) {\n metadataInput += '';\n }\n\n if (target) { form.attr('target', target); }\n\n form.hide().append(metadataInput).appendTo('body');\n form.submit();\n },\n\n // Helper function that returns form elements that match the specified CSS selector\n // If form is actually a \"form\" element this will return associated elements outside the from that have\n // the html form attribute set\n formElements: function(form, selector) {\n return form.is('form') ? $(form[0].elements).filter(selector) : form.find(selector);\n },\n\n /* Disables form elements:\n - Caches element value in 'ujs:enable-with' data store\n - Replaces element text with value of 'data-disable-with' attribute\n - Sets disabled property to true\n */\n disableFormElements: function(form) {\n rails.formElements(form, rails.disableSelector).each(function() {\n rails.disableFormElement($(this));\n });\n },\n\n disableFormElement: function(element) {\n var method, replacement;\n\n method = element.is('button') ? 'html' : 'val';\n replacement = element.data('disable-with');\n\n if (replacement !== undefined) {\n element.data('ujs:enable-with', element[method]());\n element[method](replacement);\n }\n\n element.prop('disabled', true);\n element.data('ujs:disabled', true);\n },\n\n /* Re-enables disabled form elements:\n - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)\n - Sets disabled property to false\n */\n enableFormElements: function(form) {\n rails.formElements(form, rails.enableSelector).each(function() {\n rails.enableFormElement($(this));\n });\n },\n\n enableFormElement: function(element) {\n var method = element.is('button') ? 'html' : 'val';\n if (element.data('ujs:enable-with') !== undefined) {\n element[method](element.data('ujs:enable-with'));\n element.removeData('ujs:enable-with'); // clean up cache\n }\n element.prop('disabled', false);\n element.removeData('ujs:disabled');\n },\n\n /* For 'data-confirm' attribute:\n - Fires `confirm` event\n - Shows the confirmation dialog\n - Fires the `confirm:complete` event\n\n Returns `true` if no function stops the chain and user chose yes; `false` otherwise.\n Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.\n Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function\n return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.\n */\n allowAction: function(element) {\n var message = element.data('confirm'),\n answer = false, callback;\n if (!message) { return true; }\n\n if (rails.fire(element, 'confirm')) {\n try {\n answer = rails.confirm(message);\n } catch (e) {\n (console.error || console.log).call(console, e.stack || e);\n }\n callback = rails.fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n },\n\n // Helper function which checks for blank inputs in a form that match the specified CSS selector\n blankInputs: function(form, specifiedSelector, nonBlank) {\n var foundInputs = $(),\n input,\n valueToCheck,\n radiosForNameWithNoneSelected,\n radioName,\n selector = specifiedSelector || 'input,textarea',\n requiredInputs = form.find(selector),\n checkedRadioButtonNames = {};\n\n requiredInputs.each(function() {\n input = $(this);\n if (input.is('input[type=radio]')) {\n\n // Don't count unchecked required radio as blank if other radio with same name is checked,\n // regardless of whether same-name radio input has required attribute or not. The spec\n // states https://www.w3.org/TR/html5/forms.html#the-required-attribute\n radioName = input.attr('name');\n\n // Skip if we've already seen the radio with this name.\n if (!checkedRadioButtonNames[radioName]) {\n\n // If none checked\n if (form.find('input[type=radio]:checked[name=\"' + radioName + '\"]').length === 0) {\n radiosForNameWithNoneSelected = form.find(\n 'input[type=radio][name=\"' + radioName + '\"]');\n foundInputs = foundInputs.add(radiosForNameWithNoneSelected);\n }\n\n // We only need to check each name once.\n checkedRadioButtonNames[radioName] = radioName;\n }\n } else {\n valueToCheck = input.is('input[type=checkbox],input[type=radio]') ? input.is(':checked') : !!input.val();\n if (valueToCheck === nonBlank) {\n foundInputs = foundInputs.add(input);\n }\n }\n });\n return foundInputs.length ? foundInputs : false;\n },\n\n // Helper function which checks for non-blank inputs in a form that match the specified CSS selector\n nonBlankInputs: function(form, specifiedSelector) {\n return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank\n },\n\n // Helper function, needed to provide consistent behavior in IE\n stopEverything: function(e) {\n $(e.target).trigger('ujs:everythingStopped');\n e.stopImmediatePropagation();\n return false;\n },\n\n // Replace element's html with the 'data-disable-with' after storing original html\n // and prevent clicking on it\n disableElement: function(element) {\n var replacement = element.data('disable-with');\n\n if (replacement !== undefined) {\n element.data('ujs:enable-with', element.html()); // store enabled state\n element.html(replacement);\n }\n\n element.bind('click.railsDisable', function(e) { // prevent further clicking\n return rails.stopEverything(e);\n });\n element.data('ujs:disabled', true);\n },\n\n // Restore element to its original state which was disabled by 'disableElement' above\n enableElement: function(element) {\n if (element.data('ujs:enable-with') !== undefined) {\n element.html(element.data('ujs:enable-with')); // set to old enabled state\n element.removeData('ujs:enable-with'); // clean up cache\n }\n element.unbind('click.railsDisable'); // enable element\n element.removeData('ujs:disabled');\n }\n };\n\n if (rails.fire($document, 'rails:attachBindings')) {\n\n $.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }});\n\n // This event works the same as the load event, except that it fires every\n // time the page is loaded.\n //\n // See https://github.com/rails/jquery-ujs/issues/357\n // See https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching\n $(window).on('pageshow.rails', function () {\n $($.rails.enableSelector).each(function () {\n var element = $(this);\n\n if (element.data('ujs:disabled')) {\n $.rails.enableFormElement(element);\n }\n });\n\n $($.rails.linkDisableSelector).each(function () {\n var element = $(this);\n\n if (element.data('ujs:disabled')) {\n $.rails.enableElement(element);\n }\n });\n });\n\n $document.on('ajax:complete', rails.linkDisableSelector, function() {\n rails.enableElement($(this));\n });\n\n $document.on('ajax:complete', rails.buttonDisableSelector, function() {\n rails.enableFormElement($(this));\n });\n\n $document.on('click.rails', rails.linkClickSelector, function(e) {\n var link = $(this), method = link.data('method'), data = link.data('params'), metaClick = e.metaKey || e.ctrlKey;\n if (!rails.allowAction(link)) return rails.stopEverything(e);\n\n if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link);\n\n if (rails.isRemote(link)) {\n if (metaClick && (!method || method === 'GET') && !data) { return true; }\n\n var handleRemote = rails.handleRemote(link);\n // Response from rails.handleRemote() will either be false or a deferred object promise.\n if (handleRemote === false) {\n rails.enableElement(link);\n } else {\n handleRemote.fail( function() { rails.enableElement(link); } );\n }\n return false;\n\n } else if (method) {\n rails.handleMethod(link);\n return false;\n }\n });\n\n $document.on('click.rails', rails.buttonClickSelector, function(e) {\n var button = $(this);\n\n if (!rails.allowAction(button) || !rails.isRemote(button)) return rails.stopEverything(e);\n\n if (button.is(rails.buttonDisableSelector)) rails.disableFormElement(button);\n\n var handleRemote = rails.handleRemote(button);\n // Response from rails.handleRemote() will either be false or a deferred object promise.\n if (handleRemote === false) {\n rails.enableFormElement(button);\n } else {\n handleRemote.fail( function() { rails.enableFormElement(button); } );\n }\n return false;\n });\n\n $document.on('change.rails', rails.inputChangeSelector, function(e) {\n var link = $(this);\n if (!rails.allowAction(link) || !rails.isRemote(link)) return rails.stopEverything(e);\n\n rails.handleRemote(link);\n return false;\n });\n\n $document.on('submit.rails', rails.formSubmitSelector, function(e) {\n var form = $(this),\n remote = rails.isRemote(form),\n blankRequiredInputs,\n nonBlankFileInputs;\n\n if (!rails.allowAction(form)) return rails.stopEverything(e);\n\n // Skip other logic when required values are missing or file upload is present\n if (form.attr('novalidate') === undefined) {\n if (form.data('ujs:formnovalidate-button') === undefined) {\n blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector, false);\n if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {\n return rails.stopEverything(e);\n }\n } else {\n // Clear the formnovalidate in case the next button click is not on a formnovalidate button\n // Not strictly necessary to do here, since it is also reset on each button click, but just to be certain\n form.data('ujs:formnovalidate-button', undefined);\n }\n }\n\n if (remote) {\n nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);\n if (nonBlankFileInputs) {\n // Slight timeout so that the submit button gets properly serialized\n // (make it easy for event handler to serialize form without disabled values)\n setTimeout(function(){ rails.disableFormElements(form); }, 13);\n var aborted = rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);\n\n // Re-enable form elements if event bindings return false (canceling normal form submission)\n if (!aborted) { setTimeout(function(){ rails.enableFormElements(form); }, 13); }\n\n return aborted;\n }\n\n rails.handleRemote(form);\n return false;\n\n } else {\n // Slight timeout so that the submit button gets properly serialized\n setTimeout(function(){ rails.disableFormElements(form); }, 13);\n }\n });\n\n $document.on('click.rails', rails.formInputClickSelector, function(event) {\n var button = $(this);\n\n if (!rails.allowAction(button)) return rails.stopEverything(event);\n\n // Register the pressed submit button\n var name = button.attr('name'),\n data = name ? {name:name, value:button.val()} : null;\n\n var form = button.closest('form');\n if (form.length === 0) {\n form = $('#' + button.attr('form'));\n }\n form.data('ujs:submit-button', data);\n\n // Save attributes from button\n form.data('ujs:formnovalidate-button', button.attr('formnovalidate'));\n form.data('ujs:submit-button-formaction', button.attr('formaction'));\n form.data('ujs:submit-button-formmethod', button.attr('formmethod'));\n });\n\n $document.on('ajax:send.rails', rails.formSubmitSelector, function(event) {\n if (this === event.target) rails.disableFormElements($(this));\n });\n\n $document.on('ajax:complete.rails', rails.formSubmitSelector, function(event) {\n if (this === event.target) rails.enableFormElements($(this));\n });\n\n $(function(){\n rails.refreshCSRFTokens();\n });\n }\n\n})( jQuery );\n","(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define([\"jquery\"], function ($) {\n return (root.returnExportsGlobal = factory($));\n });\n } else if (typeof exports === 'object') {\n // Node. Does not work with strict CommonJS, but\n // only CommonJS-like enviroments that support module.exports,\n // like Node.\n module.exports = factory(require(\"jquery\"));\n } else {\n factory(jQuery);\n }\n}(this, function ($) {\n\n/*\n Implement Github like autocomplete mentions\n http://ichord.github.com/At.js\n\n Copyright (c) 2013 chord.luo@gmail.com\n Licensed under the MIT license.\n*/\n\n/*\n本插件操作 textarea 或者 input 内的插入符\n只实现了获得插入符在文本框中的位置,我设置\n插入符的位置.\n*/\n\n\"use strict\";\nvar EditableCaret, InputCaret, Mirror, Utils, discoveryIframeOf, methods, oDocument, oFrame, oWindow, pluginName, setContextBy;\n\npluginName = 'caret';\n\nEditableCaret = (function() {\n function EditableCaret($inputor) {\n this.$inputor = $inputor;\n this.domInputor = this.$inputor[0];\n }\n\n EditableCaret.prototype.setPos = function(pos) {\n var fn, found, offset, sel;\n if (sel = oWindow.getSelection()) {\n offset = 0;\n found = false;\n (fn = function(pos, parent) {\n var node, range, _i, _len, _ref, _results;\n _ref = parent.childNodes;\n _results = [];\n for (_i = 0, _len = _ref.length; _i < _len; _i++) {\n node = _ref[_i];\n if (found) {\n break;\n }\n if (node.nodeType === 3) {\n if (offset + node.length >= pos) {\n found = true;\n range = oDocument.createRange();\n range.setStart(node, pos - offset);\n sel.removeAllRanges();\n sel.addRange(range);\n break;\n } else {\n _results.push(offset += node.length);\n }\n } else {\n _results.push(fn(pos, node));\n }\n }\n return _results;\n })(pos, this.domInputor);\n }\n return this.domInputor;\n };\n\n EditableCaret.prototype.getIEPosition = function() {\n return this.getPosition();\n };\n\n EditableCaret.prototype.getPosition = function() {\n var inputor_offset, offset;\n offset = this.getOffset();\n inputor_offset = this.$inputor.offset();\n offset.left -= inputor_offset.left;\n offset.top -= inputor_offset.top;\n return offset;\n };\n\n EditableCaret.prototype.getOldIEPos = function() {\n var preCaretTextRange, textRange;\n textRange = oDocument.selection.createRange();\n preCaretTextRange = oDocument.body.createTextRange();\n preCaretTextRange.moveToElementText(this.domInputor);\n preCaretTextRange.setEndPoint(\"EndToEnd\", textRange);\n return preCaretTextRange.text.length;\n };\n\n EditableCaret.prototype.getPos = function() {\n var clonedRange, pos, range;\n if (range = this.range()) {\n clonedRange = range.cloneRange();\n clonedRange.selectNodeContents(this.domInputor);\n clonedRange.setEnd(range.endContainer, range.endOffset);\n pos = clonedRange.toString().length;\n clonedRange.detach();\n return pos;\n } else if (oDocument.selection) {\n return this.getOldIEPos();\n }\n };\n\n EditableCaret.prototype.getOldIEOffset = function() {\n var range, rect;\n range = oDocument.selection.createRange().duplicate();\n range.moveStart(\"character\", -1);\n rect = range.getBoundingClientRect();\n return {\n height: rect.bottom - rect.top,\n left: rect.left,\n top: rect.top\n };\n };\n\n EditableCaret.prototype.getOffset = function(pos) {\n var clonedRange, offset, range, rect, shadowCaret;\n if (oWindow.getSelection && (range = this.range())) {\n if (range.endOffset - 1 > 0 && range.endContainer !== this.domInputor) {\n clonedRange = range.cloneRange();\n clonedRange.setStart(range.endContainer, range.endOffset - 1);\n clonedRange.setEnd(range.endContainer, range.endOffset);\n rect = clonedRange.getBoundingClientRect();\n offset = {\n height: rect.height,\n left: rect.left + rect.width,\n top: rect.top\n };\n clonedRange.detach();\n }\n if (!offset || (offset != null ? offset.height : void 0) === 0) {\n clonedRange = range.cloneRange();\n shadowCaret = $(oDocument.createTextNode(\"|\"));\n clonedRange.insertNode(shadowCaret[0]);\n clonedRange.selectNode(shadowCaret[0]);\n rect = clonedRange.getBoundingClientRect();\n offset = {\n height: rect.height,\n left: rect.left,\n top: rect.top\n };\n shadowCaret.remove();\n clonedRange.detach();\n }\n } else if (oDocument.selection) {\n offset = this.getOldIEOffset();\n }\n if (offset) {\n offset.top += $(oWindow).scrollTop();\n offset.left += $(oWindow).scrollLeft();\n }\n return offset;\n };\n\n EditableCaret.prototype.range = function() {\n var sel;\n if (!oWindow.getSelection) {\n return;\n }\n sel = oWindow.getSelection();\n if (sel.rangeCount > 0) {\n return sel.getRangeAt(0);\n } else {\n return null;\n }\n };\n\n return EditableCaret;\n\n})();\n\nInputCaret = (function() {\n function InputCaret($inputor) {\n this.$inputor = $inputor;\n this.domInputor = this.$inputor[0];\n }\n\n InputCaret.prototype.getIEPos = function() {\n var endRange, inputor, len, normalizedValue, pos, range, textInputRange;\n inputor = this.domInputor;\n range = oDocument.selection.createRange();\n pos = 0;\n if (range && range.parentElement() === inputor) {\n normalizedValue = inputor.value.replace(/\\r\\n/g, \"\\n\");\n len = normalizedValue.length;\n textInputRange = inputor.createTextRange();\n textInputRange.moveToBookmark(range.getBookmark());\n endRange = inputor.createTextRange();\n endRange.collapse(false);\n if (textInputRange.compareEndPoints(\"StartToEnd\", endRange) > -1) {\n pos = len;\n } else {\n pos = -textInputRange.moveStart(\"character\", -len);\n }\n }\n return pos;\n };\n\n InputCaret.prototype.getPos = function() {\n if (oDocument.selection) {\n return this.getIEPos();\n } else {\n return this.domInputor.selectionStart;\n }\n };\n\n InputCaret.prototype.setPos = function(pos) {\n var inputor, range;\n inputor = this.domInputor;\n if (oDocument.selection) {\n range = inputor.createTextRange();\n range.move(\"character\", pos);\n range.select();\n } else if (inputor.setSelectionRange) {\n inputor.setSelectionRange(pos, pos);\n }\n return inputor;\n };\n\n InputCaret.prototype.getIEOffset = function(pos) {\n var h, textRange, x, y;\n textRange = this.domInputor.createTextRange();\n pos || (pos = this.getPos());\n textRange.move('character', pos);\n x = textRange.boundingLeft;\n y = textRange.boundingTop;\n h = textRange.boundingHeight;\n return {\n left: x,\n top: y,\n height: h\n };\n };\n\n InputCaret.prototype.getOffset = function(pos) {\n var $inputor, offset, position;\n $inputor = this.$inputor;\n if (oDocument.selection) {\n offset = this.getIEOffset(pos);\n offset.top += $(oWindow).scrollTop() + $inputor.scrollTop();\n offset.left += $(oWindow).scrollLeft() + $inputor.scrollLeft();\n return offset;\n } else {\n offset = $inputor.offset();\n position = this.getPosition(pos);\n return offset = {\n left: offset.left + position.left - $inputor.scrollLeft(),\n top: offset.top + position.top - $inputor.scrollTop(),\n height: position.height\n };\n }\n };\n\n InputCaret.prototype.getPosition = function(pos) {\n var $inputor, at_rect, end_range, format, html, mirror, start_range;\n $inputor = this.$inputor;\n format = function(value) {\n value = value.replace(/<|>|`|\"|&/g, '?').replace(/\\r\\n|\\r|\\n/g, \"
    \");\n if (/firefox/i.test(navigator.userAgent)) {\n value = value.replace(/\\s/g, ' ');\n }\n return value;\n };\n if (pos === void 0) {\n pos = this.getPos();\n }\n start_range = $inputor.val().slice(0, pos);\n end_range = $inputor.val().slice(pos);\n html = \"\" + format(start_range) + \"\";\n html += \"|\";\n html += \"\" + format(end_range) + \"\";\n mirror = new Mirror($inputor);\n return at_rect = mirror.create(html).rect();\n };\n\n InputCaret.prototype.getIEPosition = function(pos) {\n var h, inputorOffset, offset, x, y;\n offset = this.getIEOffset(pos);\n inputorOffset = this.$inputor.offset();\n x = offset.left - inputorOffset.left;\n y = offset.top - inputorOffset.top;\n h = offset.height;\n return {\n left: x,\n top: y,\n height: h\n };\n };\n\n return InputCaret;\n\n})();\n\nMirror = (function() {\n Mirror.prototype.css_attr = [\"borderBottomWidth\", \"borderLeftWidth\", \"borderRightWidth\", \"borderTopStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderLeftStyle\", \"borderTopWidth\", \"boxSizing\", \"fontFamily\", \"fontSize\", \"fontWeight\", \"height\", \"letterSpacing\", \"lineHeight\", \"marginBottom\", \"marginLeft\", \"marginRight\", \"marginTop\", \"outlineWidth\", \"overflow\", \"overflowX\", \"overflowY\", \"paddingBottom\", \"paddingLeft\", \"paddingRight\", \"paddingTop\", \"textAlign\", \"textOverflow\", \"textTransform\", \"whiteSpace\", \"wordBreak\", \"wordWrap\"];\n\n function Mirror($inputor) {\n this.$inputor = $inputor;\n }\n\n Mirror.prototype.mirrorCss = function() {\n var css,\n _this = this;\n css = {\n position: 'absolute',\n left: -9999,\n top: 0,\n zIndex: -20000\n };\n if (this.$inputor.prop('tagName') === 'TEXTAREA') {\n this.css_attr.push('width');\n }\n $.each(this.css_attr, function(i, p) {\n return css[p] = _this.$inputor.css(p);\n });\n return css;\n };\n\n Mirror.prototype.create = function(html) {\n this.$mirror = $('
    ');\n this.$mirror.css(this.mirrorCss());\n this.$mirror.html(html);\n this.$inputor.after(this.$mirror);\n return this;\n };\n\n Mirror.prototype.rect = function() {\n var $flag, pos, rect;\n $flag = this.$mirror.find(\"#caret\");\n pos = $flag.position();\n rect = {\n left: pos.left,\n top: pos.top,\n height: $flag.height()\n };\n this.$mirror.remove();\n return rect;\n };\n\n return Mirror;\n\n})();\n\nUtils = {\n contentEditable: function($inputor) {\n return !!($inputor[0].contentEditable && $inputor[0].contentEditable === 'true');\n }\n};\n\nmethods = {\n pos: function(pos) {\n if (pos || pos === 0) {\n return this.setPos(pos);\n } else {\n return this.getPos();\n }\n },\n position: function(pos) {\n if (oDocument.selection) {\n return this.getIEPosition(pos);\n } else {\n return this.getPosition(pos);\n }\n },\n offset: function(pos) {\n var offset;\n offset = this.getOffset(pos);\n return offset;\n }\n};\n\noDocument = null;\n\noWindow = null;\n\noFrame = null;\n\nsetContextBy = function(settings) {\n var iframe;\n if (iframe = settings != null ? settings.iframe : void 0) {\n oFrame = iframe;\n oWindow = iframe.contentWindow;\n return oDocument = iframe.contentDocument || oWindow.document;\n } else {\n oFrame = void 0;\n oWindow = window;\n return oDocument = document;\n }\n};\n\ndiscoveryIframeOf = function($dom) {\n var error;\n oDocument = $dom[0].ownerDocument;\n oWindow = oDocument.defaultView || oDocument.parentWindow;\n try {\n return oFrame = oWindow.frameElement;\n } catch (_error) {\n error = _error;\n }\n};\n\n$.fn.caret = function(method, value, settings) {\n var caret;\n if (methods[method]) {\n if ($.isPlainObject(value)) {\n setContextBy(value);\n value = void 0;\n } else {\n setContextBy(settings);\n }\n caret = Utils.contentEditable(this) ? new EditableCaret(this) : new InputCaret(this);\n return methods[method].apply(caret, [value]);\n } else {\n return $.error(\"Method \" + method + \" does not exist on jQuery.caret\");\n }\n};\n\n$.fn.caret.EditableCaret = EditableCaret;\n\n$.fn.caret.InputCaret = InputCaret;\n\n$.fn.caret.Utils = Utils;\n\n$.fn.caret.apis = methods;\n\n\n}));\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"